Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wZ60o-000lmH-0V for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jun 2026 12:01:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wZ60m-00Bn4N-2h for pgsql-hackers@arkaria.postgresql.org; Mon, 15 Jun 2026 12:01:52 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wYNRh-003d8N-2N for pgsql-hackers@lists.postgresql.org; Sat, 13 Jun 2026 12:26:42 +0000 Received: from meldrar.postgresql.org ([2a02:c0:301:0:ffff::31]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1wYNRg-00000000B3D-0nXt for pgsql-hackers@postgresql.org; Sat, 13 Jun 2026 12:26:41 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=postgresql.org; s=20171124; h=Content-Transfer-Encoding:Content-Type: Mime-Version:References:In-Reply-To:From:Subject:Cc:To:Message-Id:Date:Sender :Reply-To:Content-ID:Content-Description; bh=fsd5w6ICakssSURwhvS7lqhLCEDNQ9E9oBsKWnT2/58=; b=bAj5yFUqfnQozZauPj0yd3x16u WBYsNCu9DeRrG9kNNnzWrfMDRmWZ9hks+VZVOF/6V0qrcP5FeVY3pFaLnU/kXGnMnwMc+NIDK9dIt HA2me8w1bSWBkRpiNTltE1Lex5iLLs2pY02M4jNIW8tGZyBOHMNJzaE5sF+LMXBlPvYEYoqQBTUWG kguQ3Sue8do7RP3A5KULZHsS3DaQDq8Pp/m9URTB8DzjEgrwfmmCALjhwqr8gAqj66obxxG1WPQZO Q56+nxtmXxsR1b9CoLtNIh8Rr3GKyfps/XeeGSEn1URlP56rbPXSvyfI103QyAbaYjxJGoP7Dtdwx MQH6rm9Q==; Received: from [2409:11:4120:300:e841:640c:7c4a:cfbf] (helo=localhost) by meldrar.postgresql.org with esmtpsa (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wYNQs-000Qis-1O; Sat, 13 Jun 2026 12:26:31 +0000 Date: Sat, 13 Jun 2026 21:25:30 +0900 (JST) Message-Id: <20260613.212530.63949290085162247.ishii@postgresql.org> To: assam258@gmail.com Cc: jian.universality@gmail.com, zsolt.parragi@percona.com, sjjang112233@gmail.com, vik@postgresfriends.org, er@xs4all.nl, jacob.champion@enterprisedb.com, david.g.johnston@gmail.com, peter@eisentraut.org, li.evan.chao@gmail.com, pgsql-hackers@postgresql.org Subject: Re: Row pattern recognition From: Tatsuo Ishii In-Reply-To: References: X-Mailer: Mew version 6.8 on Emacs 29.3 Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Sat_Jun_13_21_25_30_2026_756)--" Content-Transfer-Encoding: 7bit X-Host-Lookup-Failed: Reverse DNS lookup failed for 2409:11:4120:300:e841:640c:7c4a:cfbf (failed) List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, > Hi hackers, > > This refreshes the v48 series [1]: Jian He's review of the v47-000x > cleanup patches [2] (my point-by-point reply [3]) is now applied as > nocfbot-0069..0077. nocfbot-0001..0068 are unchanged from the last post > [1] (rebase only), except nocfbot-0039, which is voided here (see below). I have created v48 RPR (Row pattern recognition) patches based on the attached incremental patches against v47 patches. I have briefly looked through all the incremental patches. If I have missed something, I will follow up later. The patches are based on the commit 3e3d7875e95 on the master branch. The series of patches are to implement the row pattern recognition (SQL/RPR) feature. Currently the implementation is a subset of SQL/RPR (ISO/IEC 19075-2:2016). Namely, implementation of some features of R020 (WINDOW clause). R010 (MATCH_RECOGNIZE) is out of the scope of the patches. Regards, -- Tatsuo Ishii SRA OSS K.K. English: http://www.sraoss.co.jp/index_en/ Japanese:http://www.sraoss.co.jp ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0001-Row-pattern-recognition-patch-for-raw-parser-v48.patch" RnJvbSBhNTM5NzgxOWEzNGRkYzY4ZGM0NjRhYTgzNWZmYjkyNGRjMTEzZjU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg MS85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCBmb3IgcmF3IHBhcnNlciB2NDguCgpU aGUgc2VyaWVzIG9mIHBhdGNoZXMgYXJlIHRvIGltcGxlbWVudCB0aGUgcm93IHBhdHRlcm4gcmVj b2duaXRpb24KKFNRTC9SUFIpIGZlYXR1cmUuIEN1cnJlbnRseSB0aGUgaW1wbGVtZW50YXRpb24g aXMgYSBzdWJzZXQgb2YgU1FML1JQUgooSVNPL0lFQyAxOTA3NS0yOjIwMTYpLiBOYW1lbHksIGlt cGxlbWVudGF0aW9uIG9mIHNvbWUgZmVhdHVyZXMgb2YKUjAyMCAoV0lORE9XIGNsYXVzZSkuIFIw MTAgKE1BVENIX1JFQ09HTklaRSkgaXMgb3V0IG9mIHRoZSBzY29wZSBvZgp0aGUgcGF0Y2hlcy4K CkN1cnJlbnRseSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkIGluIHRoZSBwYXRj aGVzLgoKLSBQQVRURVJOCi0gUEFUVEVSTiByZWd1bGFyIGV4cHJlc3Npb25zICgrLCAqLCA/KQog IGFsdGVybmF0aW9uICh8KSwgZ3JvdXBpbmcgKCkgLCB7bn0sIHtuLH0sIHtuLG19LCB7LG19CiAg cmVsdWN0YW50IHF1YW50aWZpZXJzICgqPyBldGMuKSwKICBFbXB0eSBwYXR0ZXJuICgiUEFUVEVS TiAoKSIpIGFyZSBub3QgcGVybWl0dGVkIGJ5IHRoZSBzdGFuZGFyZAogIEFuY2hvcnMgKF4sICQp IGFyZSBub3QgcGVybWl0dGVkIGluIFIwMjAgYnkgdGhlIHN0YW5kYXJkCi0gREVGSU5FCi0gSU5J VElBTAotIEFGVEVSIE1BVENIIFNLSVAgVE8gUEFTVCBMQVNUIFJPVwotIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKLSBSb3cgcGF0dGVybiBuYXZpZ2F0aW9uIChGSVJTVCwgTEFTVCwgUFJF ViwgTkVYVCBhbmQgdGhlaXIgY29tcG91bmQgZm9ybXMpCgpDdXJyZW50bHkgZm9sbG93aW5nIGZl YXR1cmVzIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIHBhdGNoZXMuCgotIE1FQVNVUkVTCi0g UGF0dGVybiB2YXJpYWJsZSBuYW1lIHF1YWxpZmllZCBjb2x1bW4gcmVmZXJlbmNlIChlLmcuIEEu cHJpY2UpCi0gU1VCU0VUCi0gU0VFSwotIEFGVEVSIE1BVENIIFNLSVAgVE8KLSBBRlRFUiBNQVRD SCBTS0lQIFRPIEZJUlNUCi0gQUZURVIgTUFUQ0ggU0tJUCBUTyBMQVNUCi0gUEFUVEVSTiByZWd1 bGFyIGV4cHJlc3Npb24gIHstIGFuZCAtfQotIFBFUk1VVEUKLSBDTEFTU0lGSUVSCgpBdXRob3I6 IFRhdHN1byBJc2hpaSA8aXNoaWlAcG9zdGdyZXNxbC5vcmc+CkF1dGhvcjogSGVuc29uIENob2kg PGFzc2FtMjU4QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFZpayBGZWFyaW5nIDx2aWtAcG9zdGdy ZXNmcmllbmRzLm9yZz4KUmV2aWV3ZWQtYnk6IEphY29iIENoYW1waW9uIDxqY2hhbXBpb25AdGlt ZXNjYWxlLmNvbT4KUmV2aWV3ZWQtYnk6IFBldGVyIEVpc2VudHJhdXQgPHBldGVyQGVpc2VudHJh dXQub3JnPgpSZXZpZXdlZC1ieTogTklOR1dFSSBDSEVOIDxjaGVuQHNyYW9zcy5jby5qcD4KUmV2 aWV3ZWQtYnk6ICJEYXZpZCBHLiBKb2huc3RvbiIgPGRhdmlkLmcuam9obnN0b25AZ21haWwuY29t PgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQt Ynk6IFN1bmdKdW4gSmFuZyA8c2pqYW5nMTEyMjMzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFpz b2x0IFBhcnJhZ2kgPHpzb2x0LnBhcnJhZ2lAcGVyY29uYS5jb20+ClJldmlld2VkLWJ5OiBqaWFu IGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+CgpEaXNjdXNzaW9uOiBodHRwczovL3Bv c3Rnci5lcy9tLzIwMjMwNjI1LjIxMDUwOS4xMjc2NzMzNDExNjc3NTc3ODQxLnQtaXNoaWklNDBz cmFuaG0uc3JhLmNvLmpwCgpNYWpvciBjaGFuZ2VzIHNpbmNlIHY0NyBpbmNsdWRlOgoKLSBEaXNh bGxvdyBNb3ZlIERFRklORSBjbGF1c2Ugdm9sYXRpbGUgZXhwcmVzc2lvbiBwcm9oaWJpdGluZyBj aGVjayBmcm9tIHBhcnNlCiAgYW5hbHlzaXMgdG8gcGxhbm5lci4KCi0gUmVqZWN0IGVtcHR5IHBh dHRlcm4gIlBBVFRFUk4gKCkiIHBlciB0aGUgc3RhbmRhcmQKCi0gTm93IHVwIHRvIDI0MCBwYXR0 ZXJuIHZhcmlhYmxlcyBhcmUgYWxsb3dlZCAocHJldmlvdXNseSAyNTIpCgotIEZpeCBtdWx0aXBs ZSBjb3JuZXIgY2FzZSBidWdzCgotIFByZXZlbnQgdW5zYWZlIEFTVCBvcHRpbWl6YXRpb24KLS0t CiBzcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55ICAgICAgIHwgNjE0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKystCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggIHwgIDkxICsr KysrCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgIHwgICA1ICsKIHNyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9ub2RlLmggfCAgIDIgKwogNCBmaWxlcyBjaGFuZ2VkLCA2OTYgaW5zZXJ0 aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2Vy L2dyYW0ueSBiL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKaW5kZXggZmY0ZTEzODhjNTUuLjRh ZTk1MWFhZWJhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKQEAgLTIxMCw2ICsyMTAsMTEgQEAgc3RhdGljIHZvaWQg cHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LAog c3RhdGljIHZvaWQgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpzcGVjX2xpc3Qs CiAJCQkJCQkJCSAgIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKTsKIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKm1ha2VSUFJTZXFPclNpbmdsZShMaXN0ICpj aGlsZHJlbiwgaW50IGxvY2F0aW9uKTsKK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqc3BsaXRSUFJU cmFpbGluZ0FsdChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIp Oworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICptYWtlUlBSUXVhbnRpZmllcihpbnQzMiBtaW4sIGlu dDMyIG1heCwgYm9vbCByZWx1Y3RhbnQsCisJCQkJCQkJCQkJIGludCBsb2NhdGlvbik7CitzdGF0 aWMgY29uc3QgY2hhciAqcnByX2ludmFsaWRfcXVhbnRpZmllcl90b2tlbihjb25zdCBjaGFyICp0 b2spOwogCiAlfQogCkBAIC03MTgsNiArNzIzLDE1IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJz aXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7 CiAJCQkJbGFiZWxfdGVybQogJXR5cGUgPHN0cj4JCW9wdF9jb2xpZAogCisldHlwZSA8dGFyZ2V0 Pglyb3dfcGF0dGVybl9kZWZpbml0aW9uCisldHlwZSA8bm9kZT4Jb3B0X3Jvd19wYXR0ZXJuX2Nv bW1vbl9zeW50YXgKKwkJCQlyb3dfcGF0dGVybiByb3dfcGF0dGVybl9hbHQgcm93X3BhdHRlcm5f c2VxCisJCQkJcm93X3BhdHRlcm5fdGVybSByb3dfcGF0dGVybl9wcmltYXJ5CisJCQkJcm93X3Bh dHRlcm5fcXVhbnRpZmllcl9vcHQKKyV0eXBlIDxsaXN0Pglyb3dfcGF0dGVybl9kZWZpbml0aW9u X2xpc3QKKyV0eXBlIDxpdmFsPglvcHRfcm93X3BhdHRlcm5fc2tpcF90bworJXR5cGUgPGJvb2xl YW4+CW9wdF9yb3dfcGF0dGVybl9pbml0aWFsX29yX3NlZWsKKwogLyoKICAqIE5vbi1rZXl3b3Jk IHRva2VuIHR5cGVzLiAgVGhlc2UgYXJlIGhhcmQtd2lyZWQgaW50byB0aGUgImZsZXgiIGxleGVy LgogICogVGhleSBtdXN0IGJlIGxpc3RlZCBmaXJzdCBzbyB0aGF0IHRoZWlyIG51bWVyaWMgY29k ZXMgZG8gbm90IGRlcGVuZCBvbgpAQCAtNzYwLDcgKzc3NCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJQ1VSUkVOVF9USU1FIENVUlJFTlRfVElNRVNUQU1QIENVUlJFTlRfVVNFUiBDVVJT T1IgQ1lDTEUKIAogCURBVEFfUCBEQVRBQkFTRSBEQVlfUCBERUFMTE9DQVRFIERFQyBERUNJTUFM X1AgREVDTEFSRSBERUZBVUxUIERFRkFVTFRTCi0JREVGRVJSQUJMRSBERUZFUlJFRCBERUZJTkVS IERFTEVURV9QIERFTElNSVRFUiBERUxJTUlURVJTIERFUEVORFMgREVQVEggREVTQyBERVNUSU5B VElPTgorCURFRkVSUkFCTEUgREVGRVJSRUQgREVGSU5FIERFRklORVIgREVMRVRFX1AgREVMSU1J VEVSIERFTElNSVRFUlMgREVQRU5EUyBERVBUSCBERVNDIERFU1RJTkFUSU9OCiAJREVUQUNIIERJ Q1RJT05BUlkgRElTQUJMRV9QIERJU0NBUkQgRElTVElOQ1QgRE8gRE9DVU1FTlRfUCBET01BSU5f UAogCURPVUJMRV9QIERST1AKIApAQCAtNzc2LDcgKzc5MCw3IEBAIHN0YXRpYyBOb2RlICptYWtl UmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpx dWVyeSk7CiAJSEFORExFUiBIQVZJTkcgSEVBREVSX1AgSE9MRCBIT1VSX1AKIAogCUlERU5USVRZ X1AgSUZfUCBJR05PUkVfUCBJTElLRSBJTU1FRElBVEUgSU1NVVRBQkxFIElNUExJQ0lUX1AgSU1Q T1JUX1AgSU5fUCBJTkNMVURFCi0JSU5DTFVESU5HIElOQ1JFTUVOVCBJTkRFTlQgSU5ERVggSU5E RVhFUyBJTkhFUklUIElOSEVSSVRTIElOSVRJQUxMWSBJTkxJTkVfUAorCUlOQ0xVRElORyBJTkNS RU1FTlQgSU5ERU5UIElOREVYIElOREVYRVMgSU5IRVJJVCBJTkhFUklUUyBJTklUSUFMIElOSVRJ QUxMWSBJTkxJTkVfUAogCUlOTkVSX1AgSU5PVVQgSU5QVVRfUCBJTlNFTlNJVElWRSBJTlNFUlQg SU5TVEVBRCBJTlRfUCBJTlRFR0VSCiAJSU5URVJTRUNUIElOVEVSVkFMIElOVE8gSU5WT0tFUiBJ UyBJU05VTEwgSVNPTEFUSU9OCiAKQEAgLTgwMSw4ICs4MTUsOCBAQCBzdGF0aWMgTm9kZSAqbWFr ZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlzdCAqYWxpYXNlcywgTm9kZSAq cXVlcnkpOwogCU9SREVSIE9SRElOQUxJVFkgT1RIRVJTIE9VVF9QIE9VVEVSX1AKIAlPVkVSIE9W RVJMQVBTIE9WRVJMQVkgT1ZFUlJJRElORyBPV05FRCBPV05FUgogCi0JUEFSQUxMRUwgUEFSQU1F VEVSIFBBUlNFUiBQQVJUSUFMIFBBUlRJVElPTiBQQVJUSVRJT05TIFBBU1NJTkcgUEFTU1dPUkQg UEFUSAotCVBFUklPRCBQTEFDSU5HIFBMQU4gUExBTlMgUE9MSUNZIFBPUlRJT04KKwlQQVJBTExF TCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBUlRJVElPTlMgUEFTU0lORyBQ QVNTV09SRCBQQVNUIFBBVEgKKwlQQVRURVJOX1AgUEVSSU9EIFBMQUNJTkcgUExBTiBQTEFOUyBQ T0xJQ1kgUE9SVElPTgogCVBPU0lUSU9OIFBSRUNFRElORyBQUkVDSVNJT04gUFJFU0VSVkUgUFJF UEFSRSBQUkVQQVJFRCBQUklNQVJZCiAJUFJJT1IgUFJJVklMRUdFUyBQUk9DRURVUkFMIFBST0NF RFVSRSBQUk9DRURVUkVTIFBST0dSQU0gUFJPUEVSVElFUyBQUk9QRVJUWSBQVUJMSUNBVElPTgog CkBAIC04MTMsNyArODI3LDcgQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0 KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKIAlSRVNFVCBSRVNQ RUNUX1AgUkVTVEFSVCBSRVNUUklDVCBSRVRVUk4gUkVUVVJOSU5HIFJFVFVSTlMgUkVWT0tFIFJJ R0hUIFJPTEUgUk9MTEJBQ0sgUk9MTFVQCiAJUk9VVElORSBST1VUSU5FUyBST1cgUk9XUyBSVUxF CiAKLQlTQVZFUE9JTlQgU0NBTEFSIFNDSEVNQSBTQ0hFTUFTIFNDUk9MTCBTRUFSQ0ggU0VDT05E X1AgU0VDVVJJVFkgU0VMRUNUCisJU0FWRVBPSU5UIFNDQUxBUiBTQ0hFTUEgU0NIRU1BUyBTQ1JP TEwgU0VBUkNIIFNFQ09ORF9QIFNFQ1VSSVRZIFNFRUsgU0VMRUNUCiAJU0VRVUVOQ0UgU0VRVUVO Q0VTCiAJU0VSSUFMSVpBQkxFIFNFUlZFUiBTRVNTSU9OIFNFU1NJT05fVVNFUiBTRVQgU0VUUyBT RVRPRiBTSEFSRSBTSE9XCiAJU0lNSUxBUiBTSU1QTEUgU0tJUCBTTUFMTElOVCBTTkFQU0hPVCBT T01FIFNQTElUIFNPVVJDRSBTUUxfUCBTVEFCTEUgU1RBTkRBTE9ORV9QCkBAIC04OTYsOCArOTEw LDggQEAgc3RhdGljIE5vZGUgKm1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUs IExpc3QgKmFsaWFzZXMsIE5vZGUgKnF1ZXJ5KTsKICAqIHJlZmVyZW5jZSBwb2ludCBmb3IgYSBw cmVjZWRlbmNlIGxldmVsIHRoYXQgd2UgY2FuIGFzc2lnbiB0byBvdGhlcgogICoga2V5d29yZHMg dGhhdCBsYWNrIGEgbmF0dXJhbCBwcmVjZWRlbmNlIGxldmVsLgogICoKLSAqIFdlIG5lZWQgdG8g ZG8gdGhpcyBmb3IgUEFSVElUSU9OLCBSQU5HRSwgUk9XUywgYW5kIEdST1VQUyB0byBzdXBwb3J0 Ci0gKiBvcHRfZXhpc3Rpbmdfd2luZG93X25hbWUgKHNlZSBjb21tZW50IHRoZXJlKS4KKyAqIFdl IG5lZWQgdG8gZG8gdGhpcyBmb3IgUEFSVElUSU9OLCBSQU5HRSwgUk9XUywgR1JPVVBTLCBBRlRF UiwgSU5JVElBTCwKKyAqIFNFRUssIFBBVFRFUk5fUCB0byBzdXBwb3J0IG9wdF9leGlzdGluZ193 aW5kb3dfbmFtZSAoc2VlIGNvbW1lbnQgdGhlcmUpLgogICoKICAqIFRoZSBmcmFtZV9ib3VuZCBw cm9kdWN0aW9ucyBVTkJPVU5ERUQgUFJFQ0VESU5HIGFuZCBVTkJPVU5ERUQgRk9MTE9XSU5HCiAg KiBhcmUgZXZlbiBtZXNzaWVyOiBzaW5jZSBVTkJPVU5ERUQgaXMgYW4gdW5yZXNlcnZlZCBrZXl3 b3JkIChwZXIgc3BlYyEpLApAQCAtOTMwLDYgKzk0NCw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVj dXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVy eSk7CiAlbm9uYXNzb2MJVU5CT1VOREVEIE5FU1RFRCAvKiBpZGVhbGx5IHdvdWxkIGhhdmUgc2Ft ZSBwcmVjZWRlbmNlIGFzIElERU5UICovCiAlbm9uYXNzb2MJSURFTlQgUEFSVElUSU9OIFJBTkdF IFJPV1MgR1JPVVBTIFBSRUNFRElORyBGT0xMT1dJTkcgQ1VCRSBST0xMVVAKIAkJCVNFVCBLRVlT IE9CSkVDVF9QIFNDQUxBUiBUTyBVU0lORyBWQUxVRV9QIFdJVEggV0lUSE9VVCBQQVRICisJCQlB RlRFUiBJTklUSUFMIFNFRUsgUEFUVEVSTl9QCiAlbGVmdAkJT3AgT1BFUkFUT1IgUklHSFRfQVJS T1cgJ3wnCS8qIG11bHRpLWNoYXJhY3RlciBvcHMgYW5kIHVzZXItZGVmaW5lZCBvcGVyYXRvcnMg Ki8KICVsZWZ0CQknKycgJy0nCiAlbGVmdAkJJyonICcvJyAnJScKQEAgLTE3MzM1LDYgKzE3MzUw LDggQEAgb3Zlcl9jbGF1c2U6IE9WRVIgd2luZG93X3NwZWNpZmljYXRpb24KIAkJCQkJbi0+c3Rh cnRPZmZzZXQgPSBOVUxMOwogCQkJCQluLT5lbmRPZmZzZXQgPSBOVUxMOwogCQkJCQluLT5sb2Nh dGlvbiA9IEAyOworCQkJCQluLT5mcmFtZUxvY2F0aW9uID0gLTE7CisJCQkJCW4tPmV4Y2x1ZGVM b2NhdGlvbiA9IC0xOwogCQkJCQkkJCA9IG47CiAJCQkJfQogCQkJfCAvKkVNUFRZKi8KQEAgLTE3 MzQyLDcgKzE3MzU5LDggQEAgb3Zlcl9jbGF1c2U6IE9WRVIgd2luZG93X3NwZWNpZmljYXRpb24K IAkJOwogCiB3aW5kb3dfc3BlY2lmaWNhdGlvbjogJygnIG9wdF9leGlzdGluZ193aW5kb3dfbmFt ZSBvcHRfcGFydGl0aW9uX2NsYXVzZQotCQkJCQkJb3B0X3NvcnRfY2xhdXNlIG9wdF9mcmFtZV9j bGF1c2UgJyknCisJCQkJCQlvcHRfc29ydF9jbGF1c2Ugb3B0X2ZyYW1lX2NsYXVzZQorCQkJCQkJ b3B0X3Jvd19wYXR0ZXJuX2NvbW1vbl9zeW50YXggJyknCiAJCQkJewogCQkJCQlXaW5kb3dEZWYg ICpuID0gbWFrZU5vZGUoV2luZG93RGVmKTsKIApAQCAtMTczNTQsMjAgKzE3MzcyLDIzIEBAIHdp bmRvd19zcGVjaWZpY2F0aW9uOiAnKCcgb3B0X2V4aXN0aW5nX3dpbmRvd19uYW1lIG9wdF9wYXJ0 aXRpb25fY2xhdXNlCiAJCQkJCW4tPmZyYW1lT3B0aW9ucyA9ICQ1LT5mcmFtZU9wdGlvbnM7CiAJ CQkJCW4tPnN0YXJ0T2Zmc2V0ID0gJDUtPnN0YXJ0T2Zmc2V0OwogCQkJCQluLT5lbmRPZmZzZXQg PSAkNS0+ZW5kT2Zmc2V0OworCQkJCQluLT5mcmFtZUxvY2F0aW9uID0gJDUtPmZyYW1lTG9jYXRp b247CisJCQkJCW4tPmV4Y2x1ZGVMb2NhdGlvbiA9ICQ1LT5leGNsdWRlTG9jYXRpb247CisJCQkJ CW4tPnJwQ29tbW9uU3ludGF4ID0gKFJQQ29tbW9uU3ludGF4ICopJDY7CiAJCQkJCW4tPmxvY2F0 aW9uID0gQDE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCTsKIAogLyoKLSAqIElmIHdlIHNlZSBQ QVJUSVRJT04sIFJBTkdFLCBST1dTIG9yIEdST1VQUyBhcyB0aGUgZmlyc3QgdG9rZW4gYWZ0ZXIg dGhlICcoJwotICogb2YgYSB3aW5kb3dfc3BlY2lmaWNhdGlvbiwgd2Ugd2FudCB0aGUgYXNzdW1w dGlvbiB0byBiZSB0aGF0IHRoZXJlIGlzCi0gKiBubyBleGlzdGluZ193aW5kb3dfbmFtZTsgYnV0 IHRob3NlIGtleXdvcmRzIGFyZSB1bnJlc2VydmVkIGFuZCBzbyBjb3VsZAotICogYmUgQ29sSWRz LiAgV2UgZml4IHRoaXMgYnkgbWFraW5nIHRoZW0gaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlIGFz IElERU5UCi0gKiBhbmQgZ2l2aW5nIHRoZSBlbXB0eSBwcm9kdWN0aW9uIGhlcmUgYSBzbGlnaHRs eSBoaWdoZXIgcHJlY2VkZW5jZSwgc28KLSAqIHRoYXQgdGhlIHNoaWZ0L3JlZHVjZSBjb25mbGlj dCBpcyByZXNvbHZlZCBpbiBmYXZvciBvZiByZWR1Y2luZyB0aGUgcnVsZS4KLSAqIFRoZXNlIGtl eXdvcmRzIGFyZSB0aHVzIHByZWNsdWRlZCBmcm9tIGJlaW5nIGFuIGV4aXN0aW5nX3dpbmRvd19u YW1lIGJ1dAotICogYXJlIG5vdCByZXNlcnZlZCBmb3IgYW55IG90aGVyIHB1cnBvc2UuCisgKiBJ ZiB3ZSBzZWUgUEFSVElUSU9OLCBSQU5HRSwgUk9XUywgR1JPVVBTLCBBRlRFUiwgSU5JVElBTCwg U0VFSyBvciBQQVRURVJOX1AKKyAqIGFzIHRoZSBmaXJzdCB0b2tlbiBhZnRlciB0aGUgJygnIG9m IGEgd2luZG93X3NwZWNpZmljYXRpb24sIHdlIHdhbnQgdGhlCisgKiBhc3N1bXB0aW9uIHRvIGJl IHRoYXQgdGhlcmUgaXMgbm8gZXhpc3Rpbmdfd2luZG93X25hbWU7IGJ1dCB0aG9zZSBrZXl3b3Jk cworICogYXJlIHVucmVzZXJ2ZWQgYW5kIHNvIGNvdWxkIGJlIENvbElkcy4gIFdlIGZpeCB0aGlz IGJ5IG1ha2luZyB0aGVtIGhhdmUgdGhlCisgKiBzYW1lIHByZWNlZGVuY2UgYXMgSURFTlQgYW5k IGdpdmluZyB0aGUgZW1wdHkgcHJvZHVjdGlvbiBoZXJlIGEgc2xpZ2h0bHkKKyAqIGhpZ2hlciBw cmVjZWRlbmNlLCBzbyB0aGF0IHRoZSBzaGlmdC9yZWR1Y2UgY29uZmxpY3QgaXMgcmVzb2x2ZWQg aW4gZmF2b3IKKyAqIG9mIHJlZHVjaW5nIHRoZSBydWxlLiAgVGhlc2Uga2V5d29yZHMgYXJlIHRo dXMgcHJlY2x1ZGVkIGZyb20gYmVpbmcgYW4KKyAqIGV4aXN0aW5nX3dpbmRvd19uYW1lIGJ1dCBh cmUgbm90IHJlc2VydmVkIGZvciBhbnkgb3RoZXIgcHVycG9zZS4KICAqLwogb3B0X2V4aXN0aW5n X3dpbmRvd19uYW1lOiBDb2xJZAkJCQkJCXsgJCQgPSAkMTsgfQogCQkJfCAvKkVNUFRZKi8JCQkJ JXByZWMgT3AJCXsgJCQgPSBOVUxMOyB9CkBAIC0xNzM4OCw2ICsxNzQwOSw5IEBAIG9wdF9mcmFt ZV9jbGF1c2U6CiAKIAkJCQkJbi0+ZnJhbWVPcHRpb25zIHw9IEZSQU1FT1BUSU9OX05PTkRFRkFV TFQgfCBGUkFNRU9QVElPTl9SQU5HRTsKIAkJCQkJbi0+ZnJhbWVPcHRpb25zIHw9ICQzOworCQkJ CQluLT5mcmFtZUxvY2F0aW9uID0gQDE7CisJCQkJCS8qIC0xIHdoZW4gbm8gRVhDTFVERSBjbGF1 c2UgKG9wdF93aW5kb3dfZXhjbHVzaW9uX2NsYXVzZSByZXR1cm5zIDApICovCisJCQkJCW4tPmV4 Y2x1ZGVMb2NhdGlvbiA9ICgkMyAhPSAwKSA/IEAzIDogLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9 CiAJCQl8IFJPV1MgZnJhbWVfZXh0ZW50IG9wdF93aW5kb3dfZXhjbHVzaW9uX2NsYXVzZQpAQCAt MTczOTYsNiArMTc0MjAsOSBAQCBvcHRfZnJhbWVfY2xhdXNlOgogCiAJCQkJCW4tPmZyYW1lT3B0 aW9ucyB8PSBGUkFNRU9QVElPTl9OT05ERUZBVUxUIHwgRlJBTUVPUFRJT05fUk9XUzsKIAkJCQkJ bi0+ZnJhbWVPcHRpb25zIHw9ICQzOworCQkJCQluLT5mcmFtZUxvY2F0aW9uID0gQDE7CisJCQkJ CS8qIC0xIHdoZW4gbm8gRVhDTFVERSBjbGF1c2UgKG9wdF93aW5kb3dfZXhjbHVzaW9uX2NsYXVz ZSByZXR1cm5zIDApICovCisJCQkJCW4tPmV4Y2x1ZGVMb2NhdGlvbiA9ICgkMyAhPSAwKSA/IEAz IDogLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IEdST1VQUyBmcmFtZV9leHRlbnQgb3B0 X3dpbmRvd19leGNsdXNpb25fY2xhdXNlCkBAIC0xNzQwNCw2ICsxNzQzMSw5IEBAIG9wdF9mcmFt ZV9jbGF1c2U6CiAKIAkJCQkJbi0+ZnJhbWVPcHRpb25zIHw9IEZSQU1FT1BUSU9OX05PTkRFRkFV TFQgfCBGUkFNRU9QVElPTl9HUk9VUFM7CiAJCQkJCW4tPmZyYW1lT3B0aW9ucyB8PSAkMzsKKwkJ CQkJbi0+ZnJhbWVMb2NhdGlvbiA9IEAxOworCQkJCQkvKiAtMSB3aGVuIG5vIEVYQ0xVREUgY2xh dXNlIChvcHRfd2luZG93X2V4Y2x1c2lvbl9jbGF1c2UgcmV0dXJucyAwKSAqLworCQkJCQluLT5l eGNsdWRlTG9jYXRpb24gPSAoJDMgIT0gMCkgPyBAMyA6IC0xOwogCQkJCQkkJCA9IG47CiAJCQkJ fQogCQkJfCAvKkVNUFRZKi8KQEAgLTE3NDEzLDYgKzE3NDQzLDggQEAgb3B0X2ZyYW1lX2NsYXVz ZToKIAkJCQkJbi0+ZnJhbWVPcHRpb25zID0gRlJBTUVPUFRJT05fREVGQVVMVFM7CiAJCQkJCW4t PnN0YXJ0T2Zmc2V0ID0gTlVMTDsKIAkJCQkJbi0+ZW5kT2Zmc2V0ID0gTlVMTDsKKwkJCQkJbi0+ ZnJhbWVMb2NhdGlvbiA9IC0xOworCQkJCQluLT5leGNsdWRlTG9jYXRpb24gPSAtMTsKIAkJCQkJ JCQgPSBuOwogCQkJCX0KIAkJOwpAQCAtMTc0ODgsNiArMTc1MjAsOCBAQCBmcmFtZV9ib3VuZDoK IAkJCQkJbi0+ZnJhbWVPcHRpb25zID0gRlJBTUVPUFRJT05fU1RBUlRfVU5CT1VOREVEX1BSRUNF RElORzsKIAkJCQkJbi0+c3RhcnRPZmZzZXQgPSBOVUxMOwogCQkJCQluLT5lbmRPZmZzZXQgPSBO VUxMOworCQkJCQluLT5mcmFtZUxvY2F0aW9uID0gLTE7CisJCQkJCW4tPmV4Y2x1ZGVMb2NhdGlv biA9IC0xOwogCQkJCQkkJCA9IG47CiAJCQkJfQogCQkJfCBVTkJPVU5ERUQgRk9MTE9XSU5HCkBA IC0xNzQ5Nyw2ICsxNzUzMSw4IEBAIGZyYW1lX2JvdW5kOgogCQkJCQluLT5mcmFtZU9wdGlvbnMg PSBGUkFNRU9QVElPTl9TVEFSVF9VTkJPVU5ERURfRk9MTE9XSU5HOwogCQkJCQluLT5zdGFydE9m ZnNldCA9IE5VTEw7CiAJCQkJCW4tPmVuZE9mZnNldCA9IE5VTEw7CisJCQkJCW4tPmZyYW1lTG9j YXRpb24gPSAtMTsKKwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gbjsK IAkJCQl9CiAJCQl8IENVUlJFTlRfUCBST1cKQEAgLTE3NTA2LDYgKzE3NTQyLDggQEAgZnJhbWVf Ym91bmQ6CiAJCQkJCW4tPmZyYW1lT3B0aW9ucyA9IEZSQU1FT1BUSU9OX1NUQVJUX0NVUlJFTlRf Uk9XOwogCQkJCQluLT5zdGFydE9mZnNldCA9IE5VTEw7CiAJCQkJCW4tPmVuZE9mZnNldCA9IE5V TEw7CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSAtMTsKKwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9u ID0gLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCQl8IGFfZXhwciBQUkVDRURJTkcKQEAgLTE3 NTE1LDYgKzE3NTUzLDggQEAgZnJhbWVfYm91bmQ6CiAJCQkJCW4tPmZyYW1lT3B0aW9ucyA9IEZS QU1FT1BUSU9OX1NUQVJUX09GRlNFVF9QUkVDRURJTkc7CiAJCQkJCW4tPnN0YXJ0T2Zmc2V0ID0g JDE7CiAJCQkJCW4tPmVuZE9mZnNldCA9IE5VTEw7CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSAt MTsKKwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9uID0gLTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJ CQl8IGFfZXhwciBGT0xMT1dJTkcKQEAgLTE3NTI0LDYgKzE3NTY0LDggQEAgZnJhbWVfYm91bmQ6 CiAJCQkJCW4tPmZyYW1lT3B0aW9ucyA9IEZSQU1FT1BUSU9OX1NUQVJUX09GRlNFVF9GT0xMT1dJ Tkc7CiAJCQkJCW4tPnN0YXJ0T2Zmc2V0ID0gJDE7CiAJCQkJCW4tPmVuZE9mZnNldCA9IE5VTEw7 CisJCQkJCW4tPmZyYW1lTG9jYXRpb24gPSAtMTsKKwkJCQkJbi0+ZXhjbHVkZUxvY2F0aW9uID0g LTE7CiAJCQkJCSQkID0gbjsKIAkJCQl9CiAJCTsKQEAgLTE3NTM2LDYgKzE3NTc4LDQxNCBAQCBv cHRfd2luZG93X2V4Y2x1c2lvbl9jbGF1c2U6CiAJCQl8IC8qRU1QVFkqLwkJCQl7ICQkID0gMDsg fQogCQk7CiAKK29wdF9yb3dfcGF0dGVybl9jb21tb25fc3ludGF4Ogorb3B0X3Jvd19wYXR0ZXJu X3NraXBfdG8gb3B0X3Jvd19wYXR0ZXJuX2luaXRpYWxfb3Jfc2VlaworCQkJCVBBVFRFUk5fUCAn KCcgcm93X3BhdHRlcm4gJyknCisJCQkJREVGSU5FIHJvd19wYXR0ZXJuX2RlZmluaXRpb25fbGlz dAorCQkJeworCQkJCVJQQ29tbW9uU3ludGF4ICpuID0gbWFrZU5vZGUoUlBDb21tb25TeW50YXgp OworCQkJCW4tPnJwU2tpcFRvID0gJDE7CisJCQkJbi0+aW5pdGlhbCA9ICQyOworCQkJCW4tPnJw UGF0dGVybiA9IChSUFJQYXR0ZXJuTm9kZSAqKSAkNTsKKwkJCQluLT5ycERlZnMgPSAkODsKKwkJ CQluLT5sb2NhdGlvbiA9IEAzOworCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCX0KKwkJCXwgLypF TVBUWSovCQl7ICQkID0gTlVMTDsgfQorCQk7CisKK29wdF9yb3dfcGF0dGVybl9za2lwX3RvOgor CQkJQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworCQkJCXsKKwkJCQkJJCQgPSBTVF9ORVhU X1JPVzsKKwkJCQl9CisJCQl8IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUX1AgUk9XCisJCQkJ eworCQkJCQkkJCA9IFNUX1BBU1RfTEFTVF9ST1c7CisJCQkJfQorCQkJfCAvKkVNUFRZKi8KKwkJ CQl7CisJCQkJCSQkID0gU1RfUEFTVF9MQVNUX1JPVzsKKwkJCQl9CisJCTsKKworb3B0X3Jvd19w YXR0ZXJuX2luaXRpYWxfb3Jfc2VlazoKKwkJCUlOSVRJQUwJCXsgJCQgPSB0cnVlOyB9CisJCQl8 IFNFRUsKKwkJCQl7CisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShFUlJDT0RF X0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQkJCQkJZXJybXNnKCJTRUVLIGlzIG5vdCBzdXBw b3J0ZWQiKSwKKwkJCQkJCQllcnJoaW50KCJVc2UgSU5JVElBTCBpbnN0ZWFkLiIpLAorCQkJCQkJ CXBhcnNlcl9lcnJwb3NpdGlvbihAMSkpOworCQkJCX0KKwkJCXwgLypFTVBUWSovCQl7ICQkID0g dHJ1ZTsgfQorCQk7CisKK3Jvd19wYXR0ZXJuOgorCQkJcm93X3BhdHRlcm5fYWx0CQkJCQkJeyAk JCA9ICQxOyB9CisJCTsKKworcm93X3BhdHRlcm5fYWx0OgorCQkJcm93X3BhdHRlcm5fc2VxCisJ CQkJeworCQkJCQkkJCA9IChOb2RlICopIHNwbGl0UlBSVHJhaWxpbmdBbHQoKFJQUlBhdHRlcm5O b2RlICopICQxLAorCQkJCQkJCQkJCQkJCSB5eXNjYW5uZXIpOworCQkJCX0KKwkJCXwgcm93X3Bh dHRlcm5fYWx0ICd8JyByb3dfcGF0dGVybl9zZXEKKwkJCQl7CisJCQkJCVJQUlBhdHRlcm5Ob2Rl ICpuOworCQkJCQlSUFJQYXR0ZXJuTm9kZSAqcmhzID0gc3BsaXRSUFJUcmFpbGluZ0FsdCgoUlBS UGF0dGVybk5vZGUgKikgJDMsCisJCQkJCQkJCQkJCQkJCQkgeXlzY2FubmVyKTsKKworCQkJCQkv KiBJZiBsZWZ0IHNpZGUgaXMgYWxyZWFkeSBBTFQsIGFwcGVuZCB0byBpdCAqLworCQkJCQlpZiAo SXNBKCQxLCBSUFJQYXR0ZXJuTm9kZSkgJiYKKwkJCQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJDEp LT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9BTFQpCisJCQkJCXsKKwkJCQkJCW4gPSAoUlBSUGF0 dGVybk5vZGUgKikgJDE7CisJCQkJCQluLT5jaGlsZHJlbiA9IGxhcHBlbmQobi0+Y2hpbGRyZW4s IHJocyk7CisJCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQl7 CisJCQkJCQluID0gbWFrZU5vZGUoUlBSUGF0dGVybk5vZGUpOworCQkJCQkJbi0+bm9kZVR5cGUg PSBSUFJfUEFUVEVSTl9BTFQ7CisJCQkJCQluLT5jaGlsZHJlbiA9IGxpc3RfbWFrZTIoJDEsIHJo cyk7CisJCQkJCQluLT5taW4gPSAxOworCQkJCQkJbi0+bWF4ID0gMTsKKwkJCQkJCW4tPnJlbHVj dGFudCA9IGZhbHNlOworCQkJCQkJbi0+bG9jYXRpb24gPSBAMTsKKwkJCQkJCSQkID0gKE5vZGUg KikgbjsKKwkJCQkJfQorCQkJCX0KKwkJOworCityb3dfcGF0dGVybl9zZXE6CisJCQlyb3dfcGF0 dGVybl90ZXJtCQkJCQl7ICQkID0gJDE7IH0KKwkJCXwgcm93X3BhdHRlcm5fc2VxIHJvd19wYXR0 ZXJuX3Rlcm0KKwkJCQl7CisJCQkJCVJQUlBhdHRlcm5Ob2RlICpuOworCisJCQkJCS8qCisJCQkJ CSAqIElmIGxlZnQgc2lkZSBpcyBhbHJlYWR5IFNFUSwgYXBwZW5kIHRvIGl0LiAgQSBnbHVlZAor CQkJCQkgKiBxdWFudGlmaWVyJ3MgdHJhaWxpbmdfYWx0IHN0YXlzIG9uIHRoZSBjaGlsZCB0ZXJt OworCQkJCQkgKiByb3dfcGF0dGVybl9hbHQgc3BsaXRzIG9uIGl0IG9uY2UgdGhlIHNlcSBpcyBj b21wbGV0ZS4KKwkJCQkJICovCisJCQkJCWlmIChJc0EoJDEsIFJQUlBhdHRlcm5Ob2RlKSAmJgor CQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAkMSktPm5vZGVUeXBlID09IFJQUl9QQVRURVJOX1NF USkKKwkJCQkJeworCQkJCQkJbiA9IChSUFJQYXR0ZXJuTm9kZSAqKSAkMTsKKwkJCQkJCW4tPmNo aWxkcmVuID0gbGFwcGVuZChuLT5jaGlsZHJlbiwgJDIpOworCQkJCQkJJCQgPSAoTm9kZSAqKSBu OworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJeworCQkJCQkJbiA9IG1ha2VOb2RlKFJQUlBhdHRl cm5Ob2RlKTsKKwkJCQkJCW4tPm5vZGVUeXBlID0gUlBSX1BBVFRFUk5fU0VROworCQkJCQkJbi0+ Y2hpbGRyZW4gPSBsaXN0X21ha2UyKCQxLCAkMik7CisJCQkJCQluLT5taW4gPSAxOworCQkJCQkJ bi0+bWF4ID0gMTsKKwkJCQkJCW4tPnJlbHVjdGFudCA9IGZhbHNlOworCQkJCQkJbi0+bG9jYXRp b24gPSBAMTsKKwkJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQkJfQorCQkJCX0KKwkJOworCity b3dfcGF0dGVybl90ZXJtOgorCQkJcm93X3BhdHRlcm5fcHJpbWFyeSByb3dfcGF0dGVybl9xdWFu dGlmaWVyX29wdAorCQkJCXsKKwkJCQkJUlBSUGF0dGVybk5vZGUgKm4gPSAoUlBSUGF0dGVybk5v ZGUgKikgJDE7CisJCQkJCVJQUlBhdHRlcm5Ob2RlICpxID0gKFJQUlBhdHRlcm5Ob2RlICopICQy OworCisJCQkJCW4tPm1pbiA9IHEtPm1pbjsKKwkJCQkJbi0+bWF4ID0gcS0+bWF4OworCQkJCQlu LT5yZWx1Y3RhbnQgPSBxLT5yZWx1Y3RhbnQ7CisJCQkJCW4tPnRyYWlsaW5nX2FsdCA9IHEtPnRy YWlsaW5nX2FsdDsKKwkJCQkJJCQgPSAoTm9kZSAqKSBuOworCQkJCX0KKwkJOworCityb3dfcGF0 dGVybl9wcmltYXJ5OgorCQkJQ29sSWQKKwkJCQl7CisJCQkJCVJQUlBhdHRlcm5Ob2RlICpuID0g bWFrZU5vZGUoUlBSUGF0dGVybk5vZGUpOworCQkJCQluLT5ub2RlVHlwZSA9IFJQUl9QQVRURVJO X1ZBUjsKKwkJCQkJbi0+dmFyTmFtZSA9ICQxOworCQkJCQluLT5taW4gPSAxOworCQkJCQluLT5t YXggPSAxOworCQkJCQluLT5yZWx1Y3RhbnQgPSBmYWxzZTsKKwkJCQkJbi0+Y2hpbGRyZW4gPSBO SUw7CisJCQkJCW4tPmxvY2F0aW9uID0gQDE7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9 CisJCQl8ICcoJyByb3dfcGF0dGVybiAnKScKKwkJCQl7CisJCQkJCVJQUlBhdHRlcm5Ob2RlICpp bm5lciA9IChSUFJQYXR0ZXJuTm9kZSAqKSAkMjsKKwkJCQkJUlBSUGF0dGVybk5vZGUgKm4gPSBt YWtlTm9kZShSUFJQYXR0ZXJuTm9kZSk7CisJCQkJCW4tPm5vZGVUeXBlID0gUlBSX1BBVFRFUk5f R1JPVVA7CisJCQkJCW4tPmNoaWxkcmVuID0gbGlzdF9tYWtlMShpbm5lcik7CisJCQkJCW4tPm1p biA9IDE7CisJCQkJCW4tPm1heCA9IDE7CisJCQkJCW4tPnJlbHVjdGFudCA9IGZhbHNlOworCQkJ CQluLT5sb2NhdGlvbiA9IEAxOworCQkJCQkkJCA9IChOb2RlICopIG47CisJCQkJfQorCQk7CisK K3Jvd19wYXR0ZXJuX3F1YW50aWZpZXJfb3B0OgorCQkJLyogRU1QVFkgLSBubyBxdWFudGlmaWVy IG1lYW5zIGV4YWN0bHkgb25jZTsgQCQgaXMgdW51c2VkIHNpbmNlCisJCQkgKiBtaW49bWF4PTEg bmV2ZXIgcHJvZHVjZXMgYW4gZXJyb3IgKi8KKwkJCQl7CisJCQkJCSQkID0gKE5vZGUgKikgbWFr ZVJQUlF1YW50aWZpZXIoMSwgMSwgZmFsc2UsIEAkKTsKKwkJCQl9CisJCQl8ICcqJworCQkJCXsK KwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCBQR19JTlQzMl9NQVgsIGZh bHNlLCBAMSk7CisJCQkJfQorCQkJfCAnKycKKwkJCQl7CisJCQkJCSQkID0gKE5vZGUgKikgbWFr ZVJQUlF1YW50aWZpZXIoMSwgUEdfSU5UMzJfTUFYLCBmYWxzZSwgQDEpOworCQkJCX0KKwkJCXwg T3AKKwkJCQl7CisJCQkJCS8qIEhhbmRsZSBzaW5nbGUgT3A6ID8gb3IgcmVsdWN0YW50IHF1YW50 aWZpZXJzICo/LCArPywgPz8gKi8KKwkJCQkJaWYgKHN0cmNtcCgkMSwgIj8iKSA9PSAwKQorCQkJ CQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAxLCBmYWxzZSwgQDEpOworCQkJ CQllbHNlIGlmIChzdHJjbXAoJDEsICIqPyIpID09IDApCisJCQkJCQkkJCA9IChOb2RlICopIG1h a2VSUFJRdWFudGlmaWVyKDAsIFBHX0lOVDMyX01BWCwgdHJ1ZSwgQDEpOworCQkJCQllbHNlIGlm IChzdHJjbXAoJDEsICIrPyIpID09IDApCisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFu dGlmaWVyKDEsIFBHX0lOVDMyX01BWCwgdHJ1ZSwgQDEpOworCQkJCQllbHNlIGlmIChzdHJjbXAo JDEsICI/PyIpID09IDApCisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAs IDEsIHRydWUsIEAxKTsKKwkJCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAiKnwiKSA9PSAwKQorCQkJ CQl7CisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDAsIFBHX0lOVDMyX01B WCwgZmFsc2UsIEAxKTsKKwkJCQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJCQpLT50cmFpbGluZ19h bHQgPSB0cnVlOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIit8IikgPT0gMCkK KwkJCQkJeworCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigxLCBQR19JTlQz Ml9NQVgsIGZhbHNlLCBAMSk7CisJCQkJCQkoKFJQUlBhdHRlcm5Ob2RlICopICQkKS0+dHJhaWxp bmdfYWx0ID0gdHJ1ZTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdHJjbXAoJDEsICI/fCIpID09 IDApCisJCQkJCXsKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgMSwg ZmFsc2UsIEAxKTsKKwkJCQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJCQpLT50cmFpbGluZ19hbHQg PSB0cnVlOworCQkJCQl9CisJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMSwgIio/fCIpID09IDApCisJ CQkJCXsKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgUEdfSU5UMzJf TUFYLCB0cnVlLCBAMSk7CisJCQkJCQkoKFJQUlBhdHRlcm5Ob2RlICopICQkKS0+dHJhaWxpbmdf YWx0ID0gdHJ1ZTsKKwkJCQkJfQorCQkJCQllbHNlIGlmIChzdHJjbXAoJDEsICIrP3wiKSA9PSAw KQorCQkJCQl7CisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKDEsIFBHX0lO VDMyX01BWCwgdHJ1ZSwgQDEpOworCQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAkJCktPnRyYWls aW5nX2FsdCA9IHRydWU7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoc3RyY21wKCQxLCAiPz98Iikg PT0gMCkKKwkJCQkJeworCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigwLCAx LCB0cnVlLCBAMSk7CisJCQkJCQkoKFJQUlBhdHRlcm5Ob2RlICopICQkKS0+dHJhaWxpbmdfYWx0 ID0gdHJ1ZTsKKwkJCQkJfQorCQkJCQllbHNlCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJ1bnN1cHBv cnRlZCBxdWFudGlmaWVyIFwiJXNcIiIsICQxKSwKKwkJCQkJCQkJZXJyaGludCgiVmFsaWQgcXVh bnRpZmllcnMgYXJlOiAqLCArLCA/LCAqPywgKz8sID8/LCB7bn0sIHtuLH0sIHssbX0sIHtuLG19 IGFuZCB0aGVpciByZWx1Y3RhbnQgdmVyc2lvbnMuIiksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3Np dGlvbihAMSkpOworCQkJCX0KKwkJCS8qIFJFTFVDVEFOVCBxdWFudGlmaWVycyAod2hlbiBsZXhl ciBzZXBhcmF0ZXMgdG9rZW5zKSAqLworCQkJfCAnKicgT3AKKwkJCQl7CisJCQkJCWlmIChzdHJj bXAoJDIsICI/IikgPT0gMCkKKwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIo MCwgUEdfSU5UMzJfTUFYLCB0cnVlLCBAMSk7CisJCQkJCWVsc2UgaWYgKHN0cmNtcCgkMiwgIj98 IikgPT0gMCkKKwkJCQkJeworCQkJCQkJLyogIkEqID98QiIgPSByZWx1Y3RhbnQgIkEqPyIgcGx1 cyBhbHRlcm5hdGlvbiAqLworCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigw LCBQR19JTlQzMl9NQVgsIHRydWUsIEAxKTsKKwkJCQkJCSgoUlBSUGF0dGVybk5vZGUgKikgJCQp LT50cmFpbGluZ19hbHQgPSB0cnVlOworCQkJCQl9CisJCQkJCWVsc2UKKwkJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQll cnJtc2coImludmFsaWQgdG9rZW4gXCIlc1wiIGFmdGVyIFwiKlwiIHF1YW50aWZpZXIiLCBycHJf aW52YWxpZF9xdWFudGlmaWVyX3Rva2VuKCQyKSksCisJCQkJCQkJCWVycmhpbnQoIkRpZCB5b3Ug bWVhbiBcIio/XCIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPyIpLAorCQkJCQkJCQlwYXJzZXJf ZXJycG9zaXRpb24oQDIpKTsKKwkJCQl9CisJCQl8ICcrJyBPcAorCQkJCXsKKwkJCQkJaWYgKHN0 cmNtcCgkMiwgIj8iKSA9PSAwKQorCQkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmll cigxLCBQR19JTlQzMl9NQVgsIHRydWUsIEAxKTsKKwkJCQkJZWxzZSBpZiAoc3RyY21wKCQyLCAi P3wiKSA9PSAwKQorCQkJCQl7CisJCQkJCQkvKiAiQSsgP3xCIiA9IHJlbHVjdGFudCAiQSs/IiBw bHVzIGFsdGVybmF0aW9uICovCisJCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVy KDEsIFBHX0lOVDMyX01BWCwgdHJ1ZSwgQDEpOworCQkJCQkJKChSUFJQYXR0ZXJuTm9kZSAqKSAk JCktPnRyYWlsaW5nX2FsdCA9IHRydWU7CisJCQkJCX0KKwkJCQkJZWxzZQorCQkJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJ CWVycm1zZygiaW52YWxpZCB0b2tlbiBcIiVzXCIgYWZ0ZXIgXCIrXCIgcXVhbnRpZmllciIsIHJw cl9pbnZhbGlkX3F1YW50aWZpZXJfdG9rZW4oJDIpKSwKKwkJCQkJCQkJZXJyaGludCgiRGlkIHlv dSBtZWFuIFwiKz9cIiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/IiksCisJCQkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihAMikpOworCQkJCX0KKwkJCXwgT3AgT3AKKwkJCQl7CisJCQkJCWlmIChz dHJjbXAoJDEsICI/IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNv ZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coImludmFsaWQgcXVhbnRp ZmllciBjb21iaW5hdGlvbjogXCIlcyVzXCIiLCAkMSwgJDIpLAorCQkJCQkJCQllcnJoaW50KCJE aWQgeW91IG1lYW4gXCI/P1wiIGZvciByZWx1Y3RhbnQgcXVhbnRpZmllcj8iKSwKKwkJCQkJCQkJ cGFyc2VyX2VycnBvc2l0aW9uKEAxKSk7CisJCQkJCWlmIChzdHJjbXAoJDIsICI/IikgPT0gMCkK KwkJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgMSwgdHJ1ZSwgQDEpOwor CQkJCQllbHNlIGlmIChzdHJjbXAoJDIsICI/fCIpID09IDApCisJCQkJCXsKKwkJCQkJCS8qICJB PyA/fEIiID0gcmVsdWN0YW50ICJBPz8iIHBsdXMgYWx0ZXJuYXRpb24gKi8KKwkJCQkJCSQkID0g KE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgMSwgdHJ1ZSwgQDEpOworCQkJCQkJKChSUFJQ YXR0ZXJuTm9kZSAqKSAkJCktPnRyYWlsaW5nX2FsdCA9IHRydWU7CisJCQkJCX0KKwkJCQkJZWxz ZQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9F UlJPUiksCisJCQkJCQkJCWVycm1zZygiaW52YWxpZCBxdWFudGlmaWVyIGNvbWJpbmF0aW9uIiks CisJCQkJCQkJCWVycmhpbnQoIkRpZCB5b3UgbWVhbiBcIj8/XCIgZm9yIHJlbHVjdGFudCBxdWFu dGlmaWVyPyIpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDEpKTsKKwkJCQl9CisJCQkv KiB7bn0sIHtuLH0sIHssbX0sIHtuLG19IHF1YW50aWZpZXJzICovCisJCQl8ICd7JyBJY29uc3Qg J30nCisJCQkJeworCQkJCQlpZiAoJDIgPD0gMCB8fCAkMiA+PSBQR19JTlQzMl9NQVgpCisJCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwK KwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAl ZCIsIFBHX0lOVDMyX01BWCAtIDEpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDIpKTsK KwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigkMiwgJDIsIGZhbHNlLCBAMSk7 CisJCQkJfQorCQkJfCAneycgSWNvbnN0ICcsJyAnfScKKwkJCQl7CisJCQkJCWlmICgkMiA8IDAg fHwgJDIgPj0gUEdfSU5UMzJfTUFYKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJy Y29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBi b3VuZCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJWQiLCBQR19JTlQzMl9NQVggLSAxKSwKKwkJCQkJ CQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CisJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1 YW50aWZpZXIoJDIsIFBHX0lOVDMyX01BWCwgZmFsc2UsIEAxKTsKKwkJCQl9CisJCQl8ICd7JyAn LCcgSWNvbnN0ICd9JworCQkJCXsKKwkJCQkJaWYgKCQzIDw9IDAgfHwgJDMgPj0gUEdfSU5UMzJf TUFYKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdl ZW4gMSBhbmQgJWQiLCBQR19JTlQzMl9NQVggLSAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKEAzKSk7CisJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgJDMsIGZh bHNlLCBAMSk7CisJCQkJfQorCQkJfCAneycgSWNvbnN0ICcsJyBJY29uc3QgJ30nCisJCQkJewor CQkJCQlpZiAoJDIgPCAwIHx8ICQ0IDw9IDAgfHwgJDIgPj0gUEdfSU5UMzJfTUFYIHx8ICQ0ID49 IFBHX0lOVDMyX01BWCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJS Q09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coInF1YW50aWZpZXIgYm91bmRzIG11 c3QgYmUgYmV0d2VlbiAwIGFuZCAlZCB3aXRoIG1heCA+PSAxIiwgUEdfSU5UMzJfTUFYIC0gMSks CisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikpOworCQkJCQlpZiAoJDIgPiAkNCkKKwkJ CQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1Ip LAorCQkJCQkJCQllcnJtc2coInF1YW50aWZpZXIgbWluaW11bSBib3VuZCBtdXN0IG5vdCBleGNl ZWQgbWF4aW11bSIpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDIpKTsKKwkJCQkJJCQg PSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigkMiwgJDQsIGZhbHNlLCBAMSk7CisJCQkJfQor CQkJLyogUmVsdWN0YW50IHZlcnNpb25zOiB7bn0/LCB7bix9PywgeyxtfT8sIHtuLG19PyAqLwor CQkJfCAneycgSWNvbnN0ICd9JyBPcAorCQkJCXsKKwkJCQkJaWYgKHN0cmNtcCgkNCwgIj8iKSAh PSAwICYmIHN0cmNtcCgkNCwgIj98IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coImludmFs aWQgdG9rZW4gXCIlc1wiIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiLCBycHJfaW52YWxpZF9xdWFu dGlmaWVyX3Rva2VuKCQ0KSksCisJCQkJCQkJCWVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dl ZCBhZnRlciB7bn0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuIiksCisJCQkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihANCkpOworCQkJCQlpZiAoJDIgPD0gMCB8fCAkMiA+PSBQR19JTlQzMl9NQVgpCisJ CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQkJCQkJZXJybXNnKCJxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFu ZCAlZCIsIFBHX0lOVDMyX01BWCAtIDEpLAorCQkJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oQDIp KTsKKwkJCQkJJCQgPSAoTm9kZSAqKSBtYWtlUlBSUXVhbnRpZmllcigkMiwgJDIsIHRydWUsIEAx KTsKKwkJCQkJaWYgKHN0cmNtcCgkNCwgIj98IikgPT0gMCkKKwkJCQkJCSgoUlBSUGF0dGVybk5v ZGUgKikgJCQpLT50cmFpbGluZ19hbHQgPSB0cnVlOworCQkJCX0KKwkJCXwgJ3snIEljb25zdCAn LCcgJ30nIE9wCisJCQkJeworCQkJCQlpZiAoc3RyY21wKCQ1LCAiPyIpICE9IDAgJiYgc3RyY21w KCQ1LCAiP3wiKSAhPSAwKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygiaW52YWxpZCB0b2tlbiBcIiVz XCIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllciIsIHJwcl9pbnZhbGlkX3F1YW50aWZpZXJfdG9rZW4o JDUpKSwKKwkJCQkJCQkJZXJyaGludCgiT25seSBcIj9cIiBpcyBhbGxvd2VkIGFmdGVyIHtuLH0g b3IgeyxtfSB0byBtYWtlIGl0IHJlbHVjdGFudC4iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKEA1KSk7CisJCQkJCWlmICgkMiA8IDAgfHwgJDIgPj0gUEdfSU5UMzJfTUFYKQorCQkJCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJ CQkJCQkJCWVycm1zZygicXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgJWQi LCBQR19JTlQzMl9NQVggLSAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CisJ CQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoJDIsIFBHX0lOVDMyX01BWCwgdHJ1 ZSwgQDEpOworCQkJCQlpZiAoc3RyY21wKCQ1LCAiP3wiKSA9PSAwKQorCQkJCQkJKChSUFJQYXR0 ZXJuTm9kZSAqKSAkJCktPnRyYWlsaW5nX2FsdCA9IHRydWU7CisJCQkJfQorCQkJfCAneycgJywn IEljb25zdCAnfScgT3AKKwkJCQl7CisJCQkJCWlmIChzdHJjbXAoJDUsICI/IikgIT0gMCAmJiBz dHJjbXAoJDUsICI/fCIpICE9IDApCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJj b2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNnKCJpbnZhbGlkIHRva2Vu IFwiJXNcIiBhZnRlciByYW5nZSBxdWFudGlmaWVyIiwgcnByX2ludmFsaWRfcXVhbnRpZmllcl90 b2tlbigkNSkpLAorCQkJCQkJCQllcnJoaW50KCJPbmx5IFwiP1wiIGlzIGFsbG93ZWQgYWZ0ZXIg e24sfSBvciB7LG19IHRvIG1ha2UgaXQgcmVsdWN0YW50LiIpLAorCQkJCQkJCQlwYXJzZXJfZXJy cG9zaXRpb24oQDUpKTsKKwkJCQkJaWYgKCQzIDw9IDAgfHwgJDMgPj0gUEdfSU5UMzJfTUFYKQor CQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJP UiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBh bmQgJWQiLCBQR19JTlQzMl9NQVggLSAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAz KSk7CisJCQkJCSQkID0gKE5vZGUgKikgbWFrZVJQUlF1YW50aWZpZXIoMCwgJDMsIHRydWUsIEAx KTsKKwkJCQkJaWYgKHN0cmNtcCgkNSwgIj98IikgPT0gMCkKKwkJCQkJCSgoUlBSUGF0dGVybk5v ZGUgKikgJCQpLT50cmFpbGluZ19hbHQgPSB0cnVlOworCQkJCX0KKwkJCXwgJ3snIEljb25zdCAn LCcgSWNvbnN0ICd9JyBPcAorCQkJCXsKKwkJCQkJaWYgKHN0cmNtcCgkNiwgIj8iKSAhPSAwICYm IHN0cmNtcCgkNiwgIj98IikgIT0gMCkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coImludmFsaWQgdG9r ZW4gXCIlc1wiIGFmdGVyIHJhbmdlIHF1YW50aWZpZXIiLCBycHJfaW52YWxpZF9xdWFudGlmaWVy X3Rva2VuKCQ2KSksCisJCQkJCQkJCWVycmhpbnQoIk9ubHkgXCI/XCIgaXMgYWxsb3dlZCBhZnRl ciB7bixtfSB0byBtYWtlIGl0IHJlbHVjdGFudC4iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKEA2KSk7CisJCQkJCWlmICgkMiA8IDAgfHwgJDQgPD0gMCB8fCAkMiA+PSBQR19JTlQzMl9N QVggfHwgJDQgPj0gUEdfSU5UMzJfTUFYKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJ ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmll ciBib3VuZHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kICVkIHdpdGggbWF4ID49IDEiLCBQR19JTlQz Ml9NQVggLSAxKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKEAyKSk7CisJCQkJCWlmICgk MiA+ICQ0KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZ TlRBWF9FUlJPUiksCisJCQkJCQkJCWVycm1zZygicXVhbnRpZmllciBtaW5pbXVtIGJvdW5kIG11 c3Qgbm90IGV4Y2VlZCBtYXhpbXVtIiksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihAMikp OworCQkJCQkkJCA9IChOb2RlICopIG1ha2VSUFJRdWFudGlmaWVyKCQyLCAkNCwgdHJ1ZSwgQDEp OworCQkJCQlpZiAoc3RyY21wKCQ2LCAiP3wiKSA9PSAwKQorCQkJCQkJKChSUFJQYXR0ZXJuTm9k ZSAqKSAkJCktPnRyYWlsaW5nX2FsdCA9IHRydWU7CisJCQkJfQorCQk7CisKK3Jvd19wYXR0ZXJu X2RlZmluaXRpb25fbGlzdDoKKwkJCXJvd19wYXR0ZXJuX2RlZmluaXRpb24JCQkJCQkJCQkJeyAk JCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHJvd19wYXR0ZXJuX2RlZmluaXRpb25fbGlzdCAn LCcgcm93X3BhdHRlcm5fZGVmaW5pdGlvbgl7ICQkID0gbGFwcGVuZCgkMSwgJDMpOyB9CisJCTsK Kworcm93X3BhdHRlcm5fZGVmaW5pdGlvbjoKKwkJCUNvbElkIEFTIGFfZXhwcgorCQkJCXsKKwkJ CQkJJCQgPSBtYWtlTm9kZShSZXNUYXJnZXQpOworCQkJCQkkJC0+bmFtZSA9ICQxOworCQkJCQkk JC0+aW5kaXJlY3Rpb24gPSBOSUw7CisJCQkJCSQkLT52YWwgPSAoTm9kZSAqKSAkMzsKKwkJCQkJ JCQtPmxvY2F0aW9uID0gQDE7CisJCQkJfQorCQk7CiAKIC8qCiAgKiBTdXBwb3J0aW5nIG5vbnRl cm1pbmFscyBmb3IgZXhwcmVzc2lvbnMuCkBAIC0xODg4NSw2ICsxOTMzNSw3IEBAIHVucmVzZXJ2 ZWRfa2V5d29yZDoKIAkJCXwgREVDTEFSRQogCQkJfCBERUZBVUxUUwogCQkJfCBERUZFUlJFRAor CQkJfCBERUZJTkUKIAkJCXwgREVGSU5FUgogCQkJfCBERUxFVEVfUAogCQkJfCBERUxJTUlURVIK QEAgLTE4OTUzLDYgKzE5NDA0LDcgQEAgdW5yZXNlcnZlZF9rZXl3b3JkOgogCQkJfCBJTkRFWEVT CiAJCQl8IElOSEVSSVQKIAkJCXwgSU5IRVJJVFMKKwkJCXwgSU5JVElBTAogCQkJfCBJTkxJTkVf UAogCQkJfCBJTlBVVF9QCiAJCQl8IElOU0VOU0lUSVZFCkBAIC0xOTAyOSw3ICsxOTQ4MSw5IEBA IHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFSVElUSU9OUwogCQkJfCBQQVNTSU5HCiAJCQl8 IFBBU1NXT1JECisJCQl8IFBBU1QKIAkJCXwgUEFUSAorCQkJfCBQQVRURVJOX1AKIAkJCXwgUEVS SU9ECiAJCQl8IFBMQU4KIAkJCXwgUExBTlMKQEAgLTE5MDg4LDYgKzE5NTQyLDcgQEAgdW5yZXNl cnZlZF9rZXl3b3JkOgogCQkJfCBTRUFSQ0gKIAkJCXwgU0VDT05EX1AKIAkJCXwgU0VDVVJJVFkK KwkJCXwgU0VFSwogCQkJfCBTRVFVRU5DRQogCQkJfCBTRVFVRU5DRVMKIAkJCXwgU0VSSUFMSVpB QkxFCkBAIC0xOTQ3Nyw2ICsxOTkzMiw3IEBAIGJhcmVfbGFiZWxfa2V5d29yZDoKIAkJCXwgREVG QVVMVFMKIAkJCXwgREVGRVJSQUJMRQogCQkJfCBERUZFUlJFRAorCQkJfCBERUZJTkUKIAkJCXwg REVGSU5FUgogCQkJfCBERUxFVEVfUAogCQkJfCBERUxJTUlURVIKQEAgLTE5NTU5LDYgKzIwMDE1 LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJfCBJTkRFWEVTCiAJCQl8IElOSEVSSVQKIAkJ CXwgSU5IRVJJVFMKKwkJCXwgSU5JVElBTAogCQkJfCBJTklUSUFMTFkKIAkJCXwgSU5MSU5FX1AK IAkJCXwgSU5ORVJfUApAQCAtMTk2NzMsNyArMjAxMzAsOSBAQCBiYXJlX2xhYmVsX2tleXdvcmQ6 CiAJCQl8IFBBUlRJVElPTlMKIAkJCXwgUEFTU0lORwogCQkJfCBQQVNTV09SRAorCQkJfCBQQVNU CiAJCQl8IFBBVEgKKwkJCXwgUEFUVEVSTl9QCiAJCQl8IFBFUklPRAogCQkJfCBQTEFDSU5HCiAJ CQl8IFBMQU4KQEAgLTE5NzM3LDYgKzIwMTk2LDcgQEAgYmFyZV9sYWJlbF9rZXl3b3JkOgogCQkJ fCBTQ1JPTEwKIAkJCXwgU0VBUkNICiAJCQl8IFNFQ1VSSVRZCisJCQl8IFNFRUsKIAkJCXwgU0VM RUNUCiAJCQl8IFNFUVVFTkNFCiAJCQl8IFNFUVVFTkNFUwpAQCAtMjA5MzEsNiArMjEzOTEsMTI4 IEBAIG1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMs IE5vZGUgKnF1ZXJ5KQogCXJldHVybiAoTm9kZSAqKSBzOwogfQogCisvKgorICogbWFrZVJQUlF1 YW50aWZpZXIKKyAqCQlDcmVhdGUgYW4gUlBSUGF0dGVybk5vZGUgd2l0aCBzcGVjaWZpZWQgcXVh bnRpZmllciBib3VuZHMuCisgKi8KK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCittYWtlUlBSUXVh bnRpZmllcihpbnQzMiBtaW4sIGludDMyIG1heCwgYm9vbCByZWx1Y3RhbnQsIGludCBsb2NhdGlv bikKK3sKKwlSUFJQYXR0ZXJuTm9kZSAqbiA9IG1ha2VOb2RlKFJQUlBhdHRlcm5Ob2RlKTsKKwor CW4tPm1pbiA9IG1pbjsKKwluLT5tYXggPSBtYXg7CisJbi0+cmVsdWN0YW50ID0gcmVsdWN0YW50 OworCW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisJcmV0dXJuIG47Cit9CisKKy8qCisgKiBCdWls ZCBhIFNFUSBub2RlIGZyb20gY2hpbGRyZW4sIG9yIHJldHVybiB0aGUgbG9uZSBjaGlsZCB1bmNo YW5nZWQuCisgKi8KK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCittYWtlUlBSU2VxT3JTaW5nbGUo TGlzdCAqY2hpbGRyZW4sIGludCBsb2NhdGlvbikKK3sKKwlSUFJQYXR0ZXJuTm9kZSAqbjsKKwor CWlmIChsaXN0X2xlbmd0aChjaGlsZHJlbikgPT0gMSkKKwkJcmV0dXJuIChSUFJQYXR0ZXJuTm9k ZSAqKSBsaW5pdGlhbChjaGlsZHJlbik7CisKKwluID0gbWFrZU5vZGUoUlBSUGF0dGVybk5vZGUp OworCW4tPm5vZGVUeXBlID0gUlBSX1BBVFRFUk5fU0VROworCW4tPmNoaWxkcmVuID0gY2hpbGRy ZW47CisJbi0+bWluID0gMTsKKwluLT5tYXggPSAxOworCW4tPnJlbHVjdGFudCA9IGZhbHNlOwor CW4tPmxvY2F0aW9uID0gbG9jYXRpb247CisJcmV0dXJuIG47Cit9CisKKy8qCisgKiBBIGdsdWVk IHF1YW50aWZpZXIgc3VjaCBhcyAiQSp8IiBsZWF2ZXMgdHJhaWxpbmdfYWx0IHNldCBvbiBpdHMg dGVybSB3aGlsZQorICogdGhlIGVuY2xvc2luZyBzZXF1ZW5jZSBpcyBidWlsdC4gIE9uY2UgdGhl IHNlcXVlbmNlIGlzIGNvbXBsZXRlLCBzcGxpdCBpdCBhdAorICogdGhlIGZsYWdnZWQgdGVybSBp bnRvIGFsdChsZWZ0LCByaWdodCksIHdoZXJlIHRoZSByaWdodCBvcGVyYW5kIGlzIHRoZSB3aG9s ZQorICogcmVtYWluaW5nIHNlcXVlbmNlIC0tIHRoaXMga2VlcHMgInwiIGFzIHRoZSBsb3dlc3Qt cHJlY2VkZW5jZSBvcGVyYXRvciwgc28KKyAqICJBKnxCIEMiIHBhcnNlcyBhcyAiQSogfCAoQiBD KSIsIGlkZW50aWNhbCB0byB0aGUgc3BhY2VkIGZvcm0uICBBIGZsYWcgd2l0aAorICogbm90aGlu ZyB0byBpdHMgcmlnaHQgaXMgYSBkYW5nbGluZyAifCIgYW5kIGlzIHJlamVjdGVkLgorICovCitz dGF0aWMgUlBSUGF0dGVybk5vZGUgKgorc3BsaXRSUFJUcmFpbGluZ0FsdChSUFJQYXR0ZXJuTm9k ZSAqbm9kZSwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCit7CisJTGlzdENlbGwgICAqbGM7CisJ aW50CQkJaSA9IDA7CisKKwlpZiAobm9kZS0+bm9kZVR5cGUgIT0gUlBSX1BBVFRFUk5fU0VRKQor CXsKKwkJaWYgKG5vZGUtPnRyYWlsaW5nX2FsdCkKKwkJeworCQkJbm9kZS0+dHJhaWxpbmdfYWx0 ID0gZmFsc2U7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFY X0VSUk9SKSwKKwkJCQkJZXJybXNnKCJhbHRlcm5hdGlvbiBvcGVyYXRvciBcInxcIiByZXF1aXJl cyBhIHBhdHRlcm4gb24gYm90aCBzaWRlcyIpLAorCQkJCQlwYXJzZXJfZXJycG9zaXRpb24obm9k ZS0+bG9jYXRpb24pKTsKKwkJfQorCQlyZXR1cm4gbm9kZTsKKwl9CisKKwlmb3JlYWNoKGxjLCBu b2RlLT5jaGlsZHJlbikKKwl7CisJCVJQUlBhdHRlcm5Ob2RlICpjaGlsZCA9IChSUFJQYXR0ZXJu Tm9kZSAqKSBsZmlyc3QobGMpOworCisJCWlmIChjaGlsZC0+dHJhaWxpbmdfYWx0KQorCQl7CisJ CQlMaXN0CSAgICpsZWZ0aGFsZiA9IGxpc3RfY29weV9oZWFkKG5vZGUtPmNoaWxkcmVuLCBpICsg MSk7CisJCQlMaXN0CSAgICpyaWdodGhhbGYgPSBsaXN0X2NvcHlfdGFpbChub2RlLT5jaGlsZHJl biwgaSArIDEpOworCQkJUlBSUGF0dGVybk5vZGUgKmFsdG47CisJCQlSUFJQYXR0ZXJuTm9kZSAq cmlnaHRub2RlOworCisJCQljaGlsZC0+dHJhaWxpbmdfYWx0ID0gZmFsc2U7CisJCQlpZiAocmln aHRoYWxmID09IE5JTCkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShFUlJDT0RF X1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coImFsdGVybmF0aW9uIG9wZXJhdG9yIFwifFwi IHJlcXVpcmVzIGEgcGF0dGVybiBvbiBib3RoIHNpZGVzIiksCisJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24obm9kZS0+bG9jYXRpb24pKTsKKworCQkJLyogdGhlIHJpZ2h0IGJyYW5jaCBzdGFydHMg YXQgaXRzIG93biBmaXJzdCBlbGVtZW50LCBub3QgdGhlIHNlcSBzdGFydCAqLworCQkJcmlnaHRu b2RlID0gc3BsaXRSUFJUcmFpbGluZ0FsdChtYWtlUlBSU2VxT3JTaW5nbGUocmlnaHRoYWxmLAor CQkJCQkJCQkJCQkJCQkJICAgKChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChyaWdodGhhbGYp KS0+bG9jYXRpb24pLAorCQkJCQkJCQkJCQl5eXNjYW5uZXIpOworCQkJYWx0biA9IG1ha2VOb2Rl KFJQUlBhdHRlcm5Ob2RlKTsKKwkJCWFsdG4tPm5vZGVUeXBlID0gUlBSX1BBVFRFUk5fQUxUOwor CQkJYWx0bi0+Y2hpbGRyZW4gPSBsaXN0X21ha2UyKG1ha2VSUFJTZXFPclNpbmdsZShsZWZ0aGFs Ziwgbm9kZS0+bG9jYXRpb24pLAorCQkJCQkJCQkJCXJpZ2h0bm9kZSk7CisJCQlhbHRuLT5taW4g PSAxOworCQkJYWx0bi0+bWF4ID0gMTsKKwkJCWFsdG4tPnJlbHVjdGFudCA9IGZhbHNlOworCQkJ YWx0bi0+bG9jYXRpb24gPSBub2RlLT5sb2NhdGlvbjsKKwkJCXJldHVybiBhbHRuOworCQl9CisJ CWkrKzsKKwl9CisJcmV0dXJuIG5vZGU7Cit9CisKKy8qCisgKiBycHJfaW52YWxpZF9xdWFudGlm aWVyX3Rva2VuCisgKgkJUmV0dXJuIHRoZSBvZmZlbmRpbmcgcGFydCBvZiBhbiBpbnZhbGlkIHRv a2VuIGZvbGxvd2luZyBhIHF1YW50aWZpZXIuCisgKgorICogVGhlIGxleGVyIGdsdWVzIGEgcXVh bnRpZmllciBhbmQgYSB0cmFpbGluZyBhbHRlcm5hdGlvbiBvcGVyYXRvciBpbnRvIGEKKyAqIHNp bmdsZSB0b2tlbiAoZm9yIGV4YW1wbGUgIip8IikuICBXaGVuIHN1Y2ggYSBnbHVlZCB0b2tlbiBh cHBlYXJzIGluIGFuCisgKiBpbnZhbGlkIHBvc2l0aW9uLCBkcm9wIHRoZSB0cmFpbGluZyAnfCc6 IGl0IGlzIHRoZSBhbHRlcm5hdGlvbiBvcGVyYXRvciwKKyAqIG5vdCBwYXJ0IG9mIHRoZSBvZmZl bmRpbmcgcXVhbnRpZmllciwgc28gIip8IiByZXBvcnRzICcqJyBhbmQgIio/fCIKKyAqIHJlcG9y dHMgIio/Ii4gIFRva2VucyB3aXRob3V0IGEgdHJhaWxpbmcgJ3wnIChzdWNoIGFzICI/PyIgb3Ig Ij8rIikgYXJlCisgKiByZXBvcnRlZCB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyBjb25zdCBjaGFy ICoKK3Jwcl9pbnZhbGlkX3F1YW50aWZpZXJfdG9rZW4oY29uc3QgY2hhciAqdG9rKQoreworCXNp emVfdAkJbGVuID0gc3RybGVuKHRvayk7CisKKwlpZiAobGVuID4gMSAmJiB0b2tbbGVuIC0gMV0g PT0gJ3wnKQorCQlyZXR1cm4gcG5zdHJkdXAodG9rLCBsZW4gLSAxKTsKKwlyZXR1cm4gdG9rOwor fQorCiAvKiBwYXJzZXJfaW5pdCgpCiAgKiBJbml0aWFsaXplIHRvIHBhcnNlIG9uZSBxdWVyeSBz dHJpbmcKICAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oIGIv c3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCmluZGV4IDkxMzc3YTZjZGUzLi4zMjY2YzEx YTcxMSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaApAQCAtNTgxLDYgKzU4MSw4MSBAQCB0eXBlZGVm IHN0cnVjdCBTb3J0QnkKIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIG9wZXJhdG9yIGxvY2F0aW9u LCBvciAtMSBpZiBub25lL3Vua25vd24gKi8KIH0gU29ydEJ5OwogCisvKgorICogQUZURVIgTUFU Q0ggcm93IHBhdHRlcm4gc2tpcCB0byB0eXBlcyBpbiByb3cgcGF0dGVybiBjb21tb24gc3ludGF4 CisgKi8KK3R5cGVkZWYgZW51bSBSUFNraXBUbworeworCVNUX05PTkUsCQkJCQkvKiBubyBBRlRF UiBNQVRDSCBjbGF1c2U7IGRlZmF1bHQgZm9yIG5vbi1SUFIKKwkJCQkJCQkJICogd2luZG93cyAq LworCVNUX05FWFRfUk9XLAkJCQkvKiBTS0lQIFRPIE5FWFQgUk9XICovCisJU1RfUEFTVF9MQVNU X1JPVywJCQkvKiBTS0lQIFRPIFBBU1QgTEFTVCBST1cgKi8KK30gUlBTa2lwVG87CisKKy8qCisg KiBSUFJOYXZPZmZzZXRLaW5kIC0gc3RhdHVzIG9mIG5hdmlnYXRpb24gb2Zmc2V0IGZvciB0dXBs ZXN0b3JlIHRyaW0uCisgKgorICogVGhlIHBsYW5uZXIgY29tcHV0ZXMgbmF2TWF4T2Zmc2V0L25h dkZpcnN0T2Zmc2V0IGZvciB0dXBsZXN0b3JlIG1hcmsKKyAqIG9wdGltaXphdGlvbi4gIFRoaXMg ZW51bSB0cmFja3Mgd2hldGhlciB0aGUgdmFsdWUgaXMgYSByZXNvbHZlZCBjb25zdGFudCwKKyAq IG5lZWRzIHJ1bnRpbWUgZXZhbHVhdGlvbiwgb3IgY2Fubm90IGJlIGRldGVybWluZWQgKHJldGFp biBhbGwgcm93cykuCisgKi8KK3R5cGVkZWYgZW51bSBSUFJOYXZPZmZzZXRLaW5kCit7CisJUlBS X05BVl9PRkZTRVRfRklYRUQsCQkvKiByZXNvbHZlZCBjb25zdGFudDsgdXNlIHRoZSBvZmZzZXQg dmFsdWUgKi8KKwlSUFJfTkFWX09GRlNFVF9ORUVEU19FVkFMLAkvKiBub24tY29uc3RhbnQgb2Zm c2V0OyBldmFsdWF0ZSBhdCBleGVjdXRvcgorCQkJCQkJCQkgKiBpbml0ICovCisJUlBSX05BVl9P RkZTRVRfUkVUQUlOX0FMTCwJLyogY2Fubm90IGRldGVybWluZTsgcmV0YWluIGFsbCByb3dzIChu byB0cmltKSAqLworfSBSUFJOYXZPZmZzZXRLaW5kOworCisvKgorICogUlBSUGF0dGVybk5vZGVU eXBlIC0gUm93IFBhdHRlcm4gUmVjb2duaXRpb24gcGF0dGVybiBub2RlIHR5cGVzCisgKi8KK3R5 cGVkZWYgZW51bSBSUFJQYXR0ZXJuTm9kZVR5cGUKK3sKKwlSUFJfUEFUVEVSTl9WQVIsCQkJLyog dmFyaWFibGUgcmVmZXJlbmNlICovCisJUlBSX1BBVFRFUk5fU0VRLAkJCS8qIHNlcXVlbmNlIChj b25jYXRlbmF0aW9uKSAqLworCVJQUl9QQVRURVJOX0FMVCwJCQkvKiBhbHRlcm5hdGlvbiAofCkg Ki8KKwlSUFJfUEFUVEVSTl9HUk9VUCwJCQkvKiBncm91cCAocGFyZW50aGVzZXMpICovCit9IFJQ UlBhdHRlcm5Ob2RlVHlwZTsKKworLyoKKyAqIFJQUlBhdHRlcm5Ob2RlIC0gUm93IFBhdHRlcm4g UmVjb2duaXRpb24gcGF0dGVybiBBU1Qgbm9kZQorICovCit0eXBlZGVmIHN0cnVjdCBSUFJQYXR0 ZXJuTm9kZQoreworCU5vZGVUYWcJCXR5cGU7CQkJLyogVF9SUFJQYXR0ZXJuTm9kZSAqLworCVJQ UlBhdHRlcm5Ob2RlVHlwZSBub2RlVHlwZTsJLyogVkFSLCBTRVEsIEFMVCwgR1JPVVAgKi8KKwlp bnQzMgkJbWluOwkJCS8qIG1pbmltdW0gcmVwZXRpdGlvbnMgKDAgZm9yICosID8pICovCisJaW50 MzIJCW1heDsJCQkvKiBtYXhpbXVtIHJlcGV0aXRpb25zIChQR19JTlQzMl9NQVggZm9yICosICsp ICovCisJYm9vbAkJcmVsdWN0YW50OwkJLyogdHJ1ZSBmb3IgcmVsdWN0YW50IChub24tZ3JlZWR5 KSAqLworCVBhcnNlTG9jCWxvY2F0aW9uOwkJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xICovCisJ Y2hhcgkgICAqdmFyTmFtZTsJCS8qIFZBUjogdmFyaWFibGUgbmFtZSAqLworCUxpc3QJICAgKmNo aWxkcmVuOwkJLyogU0VRLCBBTFQsIEdST1VQOiBjaGlsZCBub2RlcyAqLworCisJLyoKKwkgKiBU cmFuc2llbnQgcGFyc2UgZmxhZywgY2xlYXJlZCBieSBzcGxpdFJQUlRyYWlsaW5nQWx0IGJlZm9y ZSB0aGUgdHJlZSBpcworCSAqIGZpbmFsaXplZDogYSBnbHVlZCBxdWFudGlmaWVyIHN1Y2ggYXMg Iip8IiBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieQorCSAqIHRoZSBhbHRlcm5hdGlvbiBvcGVy YXRvciAnfCcuICBJdCBpcyBhbHdheXMgZmFsc2UgaW4gYSBmaW5hbGl6ZWQgdHJlZSwKKwkgKiBz byBpdCBoYXMgbm8gZWZmZWN0IG9uIHRoZSBwZ19zdGF0X3N0YXRlbWVudHMgcXVlcnlpZC4KKwkg Ki8KKwlib29sCQl0cmFpbGluZ19hbHQ7Cit9IFJQUlBhdHRlcm5Ob2RlOworCisvKgorICogUm93 UGF0dGVybkNvbW1vblN5bnRheCAtIHJhdyByZXByZXNlbnRhdGlvbiBvZiByb3cgcGF0dGVybiBj b21tb24gc3ludGF4CisgKi8KK3R5cGVkZWYgc3RydWN0IFJQQ29tbW9uU3ludGF4Cit7CisJTm9k ZVRhZwkJdHlwZTsKKwlSUFNraXBUbwlycFNraXBUbzsJCS8qIFJvdyBQYXR0ZXJuIEFGVEVSIE1B VENIIFNLSVAgdHlwZSAqLworCWJvb2wJCWluaXRpYWw7CQkvKiB0cnVlIGlmIDxyb3cgcGF0dGVy biBpbml0aWFsIG9yIHNlZWs+IGlzCisJCQkJCQkJCSAqIGluaXRpYWwgKi8KKwlSUFJQYXR0ZXJu Tm9kZSAqcnBQYXR0ZXJuOwkvKiBQQVRURVJOIGNsYXVzZSBBU1QgKi8KKwlMaXN0CSAgICpycERl ZnM7CQkJLyogcm93IHBhdHRlcm4gZGVmaW5pdGlvbnMgY2xhdXNlIChsaXN0IG9mCisJCQkJCQkJ CSAqIFJlc1RhcmdldCkgKi8KKwlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIFBBVFRFUk4ga2V5d29y ZCBsb2NhdGlvbiwgb3IgLTEgKi8KK30gUlBDb21tb25TeW50YXg7CisKIC8qCiAgKiBXaW5kb3dE ZWYgLSByYXcgcmVwcmVzZW50YXRpb24gb2YgV0lORE9XIGFuZCBPVkVSIGNsYXVzZXMKICAqCkBA IC01OTYsMTAgKzY3MSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dEZWYKIAljaGFyCSAgICpy ZWZuYW1lOwkJLyogcmVmZXJlbmNlZCB3aW5kb3cgbmFtZSwgaWYgYW55ICovCiAJTGlzdAkgICAq cGFydGl0aW9uQ2xhdXNlOwkvKiBQQVJUSVRJT04gQlkgZXhwcmVzc2lvbiBsaXN0ICovCiAJTGlz dAkgICAqb3JkZXJDbGF1c2U7CS8qIE9SREVSIEJZIChsaXN0IG9mIFNvcnRCeSkgKi8KKwlSUENv bW1vblN5bnRheCAqcnBDb21tb25TeW50YXg7IC8qIHJvdyBwYXR0ZXJuIGNvbW1vbiBzeW50YXgg Ki8KIAlpbnQJCQlmcmFtZU9wdGlvbnM7CS8qIGZyYW1lX2NsYXVzZSBvcHRpb25zLCBzZWUgYmVs b3cgKi8KIAlOb2RlCSAgICpzdGFydE9mZnNldDsJLyogZXhwcmVzc2lvbiBmb3Igc3RhcnRpbmcg Ym91bmQsIGlmIGFueSAqLwogCU5vZGUJICAgKmVuZE9mZnNldDsJCS8qIGV4cHJlc3Npb24gZm9y IGVuZGluZyBib3VuZCwgaWYgYW55ICovCiAJUGFyc2VMb2MJbG9jYXRpb247CQkvKiBwYXJzZSBs b2NhdGlvbiwgb3IgLTEgaWYgbm9uZS91bmtub3duICovCisJUGFyc2VMb2MJZnJhbWVMb2NhdGlv bjsJLyogUk9XUy9SQU5HRS9HUk9VUFMgbG9jYXRpb24sIG9yIC0xICovCisJUGFyc2VMb2MJZXhj bHVkZUxvY2F0aW9uOwkvKiBFWENMVURFIGxvY2F0aW9uLCBvciAtMSAqLwogfSBXaW5kb3dEZWY7 CiAKIC8qCkBAIC0xNjQ4LDYgKzE3MjYsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgR3JvdXBpbmdTZXQK ICAqIHRoZSBvcmRlckNsYXVzZSBtaWdodCBvciBtaWdodCBub3QgYmUgY29waWVkIChzZWUgY29w aWVkT3JkZXIpOyB0aGUgZnJhbWluZwogICogb3B0aW9ucyBhcmUgbmV2ZXIgY29waWVkLCBwZXIg c3BlYy4KICAqCisgKiAiZGVmaW5lQ2xhdXNlIiBpcyBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBE RUZJTkUgY2xhdXNlIChsaXN0IG9mCisgKiBUYXJnZXRFbnRyeSkuIFRhcmdldEVudHJ5LnJlc25h bWUgcmVwcmVzZW50cyByb3cgcGF0dGVybiBkZWZpbml0aW9uCisgKiB2YXJpYWJsZSBuYW1lLiAi cnBQYXR0ZXJuIiByZXByZXNlbnRzIFBBVFRFUk4gY2xhdXNlIGFzIGFuIEFTVCB0cmVlCisgKiAo UlBSUGF0dGVybk5vZGUpLgorICoKICAqIFRoZSBpbmZvcm1hdGlvbiByZWxldmFudCBmb3IgdGhl IHF1ZXJ5IGp1bWJsaW5nIGlzIHRoZSBwYXJ0aXRpb24gY2xhdXNlCiAgKiB0eXBlIGFuZCBpdHMg Ym91bmRzLgogICovCkBAIC0xNjc3LDYgKzE3NjAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93 Q2xhdXNlCiAJSW5kZXgJCXdpbnJlZjsJCQkvKiBJRCByZWZlcmVuY2VkIGJ5IHdpbmRvdyBmdW5j dGlvbnMgKi8KIAkvKiBkaWQgd2UgY29weSBvcmRlckNsYXVzZSBmcm9tIHJlZm5hbWU/ICovCiAJ Ym9vbAkJY29waWVkT3JkZXIgcGdfbm9kZV9hdHRyKHF1ZXJ5X2p1bWJsZV9pZ25vcmUpOworCS8q IFJvdyBQYXR0ZXJuIEFGVEVSIE1BVENIIFNLSVAgY2xhdXNlICovCisJUlBTa2lwVG8JcnBTa2lw VG87CQkvKiBSb3cgUGF0dGVybiBTa2lwIFRvIHR5cGUgKi8KKwlib29sCQlpbml0aWFsOwkJLyog dHJ1ZSBpZiA8cm93IHBhdHRlcm4gaW5pdGlhbCBvciBzZWVrPiBpcworCQkJCQkJCQkgKiBpbml0 aWFsICovCisJLyogUm93IFBhdHRlcm4gREVGSU5FIGNsYXVzZSAobGlzdCBvZiBUYXJnZXRFbnRy eSkgKi8KKwlMaXN0CSAgICpkZWZpbmVDbGF1c2U7CisJLyogUm93IFBhdHRlcm4gUEFUVEVSTiBj bGF1c2UgQVNUICovCisJUlBSUGF0dGVybk5vZGUgKnJwUGF0dGVybjsKIH0gV2luZG93Q2xhdXNl OwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oIGIvc3JjL2lu Y2x1ZGUvcGFyc2VyL2t3bGlzdC5oCmluZGV4IDUxZWFkNTRmMDE1Li4zODk0ZmFkOTAyMyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Bh cnNlci9rd2xpc3QuaApAQCAtMTI5LDYgKzEyOSw3IEBAIFBHX0tFWVdPUkQoImRlZmF1bHQiLCBE RUZBVUxULCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZGVmYXVs dHMiLCBERUZBVUxUUywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09S RCgiZGVmZXJyYWJsZSIsIERFRkVSUkFCTEUsIFJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwp CiBQR19LRVlXT1JEKCJkZWZlcnJlZCIsIERFRkVSUkVELCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJB UkVfTEFCRUwpCitQR19LRVlXT1JEKCJkZWZpbmUiLCBERUZJTkUsIFVOUkVTRVJWRURfS0VZV09S RCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImRlZmluZXIiLCBERUZJTkVSLCBVTlJFU0VSVkVE X0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJkZWxldGUiLCBERUxFVEVfUCwgVU5S RVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiZGVsaW1pdGVyIiwgREVM SU1JVEVSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCkBAIC0yMjEsNiArMjIyLDcg QEAgUEdfS0VZV09SRCgiaW5kZXgiLCBJTkRFWCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQogUEdfS0VZV09SRCgiaW5kZXhlcyIsIElOREVYRVMsIFVOUkVTRVJWRURfS0VZV09SRCwg QkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoImluaGVyaXQiLCBJTkhFUklULCBVTlJFU0VSVkVEX0tF WVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJpbmhlcml0cyIsIElOSEVSSVRTLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJpbml0aWFsIiwgSU5JVElB TCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgiaW5pdGlhbGx5 IiwgSU5JVElBTExZLCBSRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgi aW5saW5lIiwgSU5MSU5FX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoImlubmVyIiwgSU5ORVJfUCwgVFlQRV9GVU5DX05BTUVfS0VZV09SRCwgQkFSRV9MQUJF TCkKQEAgLTM0Nyw3ICszNDksOSBAQCBQR19LRVlXT1JEKCJwYXJ0aXRpb24iLCBQQVJUSVRJT04s IFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBhcnRpdGlvbnMi LCBQQVJUSVRJT05TLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JE KCJwYXNzaW5nIiwgUEFTU0lORywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdf S0VZV09SRCgicGFzc3dvcmQiLCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xB QkVMKQorUEdfS0VZV09SRCgicGFzdCIsIFBBU1QsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9M QUJFTCkKIFBHX0tFWVdPUkQoInBhdGgiLCBQQVRILCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVf TEFCRUwpCitQR19LRVlXT1JEKCJwYXR0ZXJuIiwgUEFUVEVSTl9QLCBVTlJFU0VSVkVEX0tFWVdP UkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwZXJpb2QiLCBQRVJJT0QsIFVOUkVTRVJWRURf S0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBsYWNpbmciLCBQTEFDSU5HLCBSRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGxhbiIsIFBMQU4sIFVOUkVT RVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKQEAgLTQxNSw2ICs0MTksNyBAQCBQR19LRVlXT1JE KCJzY3JvbGwiLCBTQ1JPTEwsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tF WVdPUkQoInNlYXJjaCIsIFNFQVJDSCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQog UEdfS0VZV09SRCgic2Vjb25kIiwgU0VDT05EX1AsIFVOUkVTRVJWRURfS0VZV09SRCwgQVNfTEFC RUwpCiBQR19LRVlXT1JEKCJzZWN1cml0eSIsIFNFQ1VSSVRZLCBVTlJFU0VSVkVEX0tFWVdPUkQs IEJBUkVfTEFCRUwpCitQR19LRVlXT1JEKCJzZWVrIiwgU0VFSywgVU5SRVNFUlZFRF9LRVlXT1JE LCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic2VsZWN0IiwgU0VMRUNULCBSRVNFUlZFRF9LRVlX T1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic2VxdWVuY2UiLCBTRVFVRU5DRSwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgic2VxdWVuY2VzIiwgU0VRVUVO Q0VTLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS9wYXJzZXIvcGFyc2Vfbm9kZS5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aAppbmRleCBmN2Y0YmE2YzJhOC4uY2I5ZDAyYzAwYzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3BhcnNlci9wYXJzZV9ub2RlLmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX25vZGUu aApAQCAtNTEsNiArNTEsNyBAQCB0eXBlZGVmIGVudW0gUGFyc2VFeHByS2luZAogCUVYUFJfS0lO RF9XSU5ET1dfRlJBTUVfUkFOR0UsCS8qIHdpbmRvdyBmcmFtZSBjbGF1c2Ugd2l0aCBSQU5HRSAq LwogCUVYUFJfS0lORF9XSU5ET1dfRlJBTUVfUk9XUywJLyogd2luZG93IGZyYW1lIGNsYXVzZSB3 aXRoIFJPV1MgKi8KIAlFWFBSX0tJTkRfV0lORE9XX0ZSQU1FX0dST1VQUywJLyogd2luZG93IGZy YW1lIGNsYXVzZSB3aXRoIEdST1VQUyAqLworCUVYUFJfS0lORF9SUFJfREVGSU5FLAkJLyogREVG SU5FICovCiAJRVhQUl9LSU5EX1NFTEVDVF9UQVJHRVQsCS8qIFNFTEVDVCB0YXJnZXQgbGlzdCBp dGVtICovCiAJRVhQUl9LSU5EX0lOU0VSVF9UQVJHRVQsCS8qIElOU0VSVCB0YXJnZXQgbGlzdCBp dGVtICovCiAJRVhQUl9LSU5EX1VQREFURV9TT1VSQ0UsCS8qIFVQREFURSBhc3NpZ25tZW50IHNv dXJjZSBpdGVtICovCkBAIC0yMzAsNiArMjMxLDcgQEAgc3RydWN0IFBhcnNlU3RhdGUKIAlQYXJz ZU5hbWVzcGFjZUl0ZW0gKnBfZ3JvdXBpbmdfbnNpdGVtOwkvKiBOU0l0ZW0gZm9yIGdyb3VwaW5n LCBvciBOVUxMICovCiAJTGlzdAkgICAqcF93aW5kb3dkZWZzOwkvKiByYXcgcmVwcmVzZW50YXRp b25zIG9mIHdpbmRvdyBjbGF1c2VzICovCiAJUGFyc2VFeHByS2luZCBwX2V4cHJfa2luZDsJLyog d2hhdCBraW5kIG9mIGV4cHJlc3Npb24gd2UncmUgcGFyc2luZyAqLworCUxpc3QJICAgKnBfcnBy X3BhdHRlcm5fdmFyczsgLyogUlBSIHZhcmlhYmxlIG5hbWVzIGZvciBERUZJTkUgY2xhdXNlICov CiAJaW50CQkJcF9uZXh0X3Jlc25vOwkvKiBuZXh0IHRhcmdldGxpc3QgcmVzbm8gdG8gYXNzaWdu ICovCiAJTGlzdAkgICAqcF9tdWx0aWFzc2lnbl9leHByczsJLyoganVuayB0bGlzdCBlbnRyaWVz IGZvciBtdWx0aWFzc2lnbiAqLwogCUxpc3QJICAgKnBfbG9ja2luZ19jbGF1c2U7CS8qIHJhdyBG T1IgVVBEQVRFL0ZPUiBTSEFSRSBpbmZvICovCi0tIAoyLjQzLjAKCg== ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0002-Row-pattern-recognition-patch-parse-analysis.patch" RnJvbSAyMGU1OTRiYWFhZWQ2OTYwY2NjYzM1MmU2NDlhZjBjNzQ1NzZmODRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg Mi85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAocGFyc2UvYW5hbHlzaXMpLgoKLS0t CiBzcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYyAgICAgfCAgMjcgKysKIHNyYy9iYWNrZW5k L25vZGVzL2VxdWFsZnVuY3MuYyAgICB8ICAzNSArKwogc3JjL2JhY2tlbmQvbm9kZXMvb3V0ZnVu Y3MuYyAgICAgIHwgIDUxICsrKwogc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNzLmMgICAgIHwg IDg1ICsrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZSAgICAgICB8ICAgMSArCiBzcmMv YmFja2VuZC9wYXJzZXIvUkVBRE1FICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2Vy L21lc29uLmJ1aWxkICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyAg ICB8ICAgOSArLQogc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2NsYXVzZS5jIHwgICA4ICstCiBz cmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY3RlLmMgICAgfCAgNTYgKysrCiBzcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfZXhwci5jICAgfCAxMDMgKysrKysKIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJz ZV9mdW5jLmMgICB8ICA4NiArKystCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfcnByLmMgICAg fCA2ODEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9ub2Rlcy9w cmltbm9kZXMuaCAgICAgfCAgNTQgKysrCiBzcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcnByLmgg ICAgfCAgMjIgKwogMTUgZmlsZXMgY2hhbmdlZCwgMTIxNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIu YwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ycHIuaAoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL25vZGVzL2NvcHlmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9k ZXMvY29weWZ1bmNzLmMKaW5kZXggZmYyMmEwNGFiZTUuLjE3ZDQ1OTMwZDdiIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9ub2Rlcy9jb3B5ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9j b3B5ZnVuY3MuYwpAQCAtMTYsNiArMTYsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIKICNpbmNs dWRlICJ1dGlscy9kYXR1bS5oIgogCiAKQEAgLTE2Niw2ICsxNjcsMzIgQEAgX2NvcHlCaXRtYXBz ZXQoY29uc3QgQml0bWFwc2V0ICpmcm9tKQogCXJldHVybiBibXNfY29weShmcm9tKTsKIH0KIAor c3RhdGljIFJQUlBhdHRlcm4gKgorX2NvcHlSUFJQYXR0ZXJuKGNvbnN0IFJQUlBhdHRlcm4gKmZy b20pCit7CisJUlBSUGF0dGVybiAqbmV3bm9kZSA9IG1ha2VOb2RlKFJQUlBhdHRlcm4pOworCisJ Q09QWV9TQ0FMQVJfRklFTEQobnVtVmFycyk7CisJQ09QWV9TQ0FMQVJfRklFTEQobWF4RGVwdGgp OworCUNPUFlfU0NBTEFSX0ZJRUxEKG51bUVsZW1lbnRzKTsKKworCS8qIERlZXAgY29weSB0aGUg dmFyTmFtZXMgYXJyYXkgKERFRklORSBjbGF1c2UgaXMgcmVxdWlyZWQpICovCisJQXNzZXJ0KGZy b20tPm51bVZhcnMgPiAwKTsKKwluZXdub2RlLT52YXJOYW1lcyA9IHBhbGxvYzBfYXJyYXkoY2hh ciAqLCBmcm9tLT5udW1WYXJzKTsKKwlmb3IgKGludCBpID0gMDsgaSA8IGZyb20tPm51bVZhcnM7 IGkrKykKKwkJbmV3bm9kZS0+dmFyTmFtZXNbaV0gPSBwc3RyZHVwKGZyb20tPnZhck5hbWVzW2ld KTsKKworCS8qIERlZXAgY29weSB0aGUgZWxlbWVudHMgYXJyYXkgKGFsd2F5cyBoYXMgYXQgbGVh c3Qgb25lIGVsZW1lbnQgKyBGSU4pICovCisJQXNzZXJ0KGZyb20tPm51bUVsZW1lbnRzID49IDIp OworCW5ld25vZGUtPmVsZW1lbnRzID0gcGFsbG9jX2FycmF5KFJQUlBhdHRlcm5FbGVtZW50LCBm cm9tLT5udW1FbGVtZW50cyk7CisJbWVtY3B5KG5ld25vZGUtPmVsZW1lbnRzLCBmcm9tLT5lbGVt ZW50cywKKwkJICAgZnJvbS0+bnVtRWxlbWVudHMgKiBzaXplb2YoUlBSUGF0dGVybkVsZW1lbnQp KTsKKworCUNPUFlfU0NBTEFSX0ZJRUxEKGlzQWJzb3JiYWJsZSk7CisKKwlyZXR1cm4gbmV3bm9k ZTsKK30KKwogCiAvKgogICogY29weU9iamVjdEltcGwgLS0gaW1wbGVtZW50YXRpb24gb2YgY29w eU9iamVjdCgpOyBzZWUgbm9kZXMvbm9kZXMuaApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9k ZXMvZXF1YWxmdW5jcy5jIGIvc3JjL2JhY2tlbmQvbm9kZXMvZXF1YWxmdW5jcy5jCmluZGV4IDNk MWExYWRmODZlLi4zMjgxOTk5MThiOCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvZXF1 YWxmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25vZGVzL2VxdWFsZnVuY3MuYwpAQCAtMjAsNiAr MjAsNyBAQAogI2luY2x1ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIK KyNpbmNsdWRlICJub2Rlcy9wbGFubm9kZXMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgog CiAKQEAgLTE0OSw2ICsxNTAsNDAgQEAgX2VxdWFsQml0bWFwc2V0KGNvbnN0IEJpdG1hcHNldCAq YSwgY29uc3QgQml0bWFwc2V0ICpiKQogCXJldHVybiBibXNfZXF1YWwoYSwgYik7CiB9CiAKK3N0 YXRpYyBib29sCitfZXF1YWxSUFJQYXR0ZXJuKGNvbnN0IFJQUlBhdHRlcm4gKmEsIGNvbnN0IFJQ UlBhdHRlcm4gKmIpCit7CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQobnVtVmFycyk7CisJQ09NUEFS RV9TQ0FMQVJfRklFTEQobWF4RGVwdGgpOworCUNPTVBBUkVfU0NBTEFSX0ZJRUxEKG51bUVsZW1l bnRzKTsKKworCS8qIENvbXBhcmUgdmFyTmFtZXMgYXJyYXkgKi8KKwlpZiAoYS0+bnVtVmFycyA+ IDApCisJeworCQlpZiAoYS0+dmFyTmFtZXMgPT0gTlVMTCB8fCBiLT52YXJOYW1lcyA9PSBOVUxM KQorCQkJcmV0dXJuIGZhbHNlOworCQlmb3IgKGludCBpID0gMDsgaSA8IGEtPm51bVZhcnM7IGkr KykKKwkJeworCQkJaWYgKHN0cmNtcChhLT52YXJOYW1lc1tpXSwgYi0+dmFyTmFtZXNbaV0pICE9 IDApCisJCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJLyogQ29tcGFyZSBlbGVtZW50cyBh cnJheSAqLworCWlmIChhLT5udW1FbGVtZW50cyA+IDApCisJeworCQlpZiAoYS0+ZWxlbWVudHMg PT0gTlVMTCB8fCBiLT5lbGVtZW50cyA9PSBOVUxMKQorCQkJcmV0dXJuIGZhbHNlOworCQlpZiAo bWVtY21wKGEtPmVsZW1lbnRzLCBiLT5lbGVtZW50cywKKwkJCQkgICBhLT5udW1FbGVtZW50cyAq IHNpemVvZihSUFJQYXR0ZXJuRWxlbWVudCkpICE9IDApCisJCQlyZXR1cm4gZmFsc2U7CisJfQor CisJQ09NUEFSRV9TQ0FMQVJfRklFTEQoaXNBYnNvcmJhYmxlKTsKKworCXJldHVybiB0cnVlOwor fQorCiAvKgogICogTGlzdHMgYXJlIGhhbmRsZWQgc3BlY2lhbGx5CiAgKi8KZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL25vZGVzL291dGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5j cy5jCmluZGV4IDk1M2M1Nzk3YzVkLi5lNmVhOWNlMjJkOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvbm9kZXMvb3V0ZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9ub2Rlcy9vdXRmdW5jcy5jCkBA IC0yMyw2ICsyMyw3IEBACiAjaW5jbHVkZSAibm9kZXMvYml0bWFwc2V0LmgiCiAjaW5jbHVkZSAi bm9kZXMvbm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9wZ19saXN0LmgiCisjaW5jbHVkZSAibm9k ZXMvcGxhbm5vZGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvZGF0dW0uaCIKIAogLyogU3RhdGUgZmxh ZyB0aGF0IGRldGVybWluZXMgaG93IG5vZGVUb1N0cmluZ0ludGVybmFsKCkgc2hvdWxkIHRyZWF0 IGxvY2F0aW9uIGZpZWxkcyAqLwpAQCAtNzI3LDYgKzcyOCw1NiBAQCBfb3V0QV9Db25zdChTdHJp bmdJbmZvIHN0ciwgY29uc3QgQV9Db25zdCAqbm9kZSkKIAlXUklURV9MT0NBVElPTl9GSUVMRChs b2NhdGlvbik7CiB9CiAKK3N0YXRpYyB2b2lkCitfb3V0UlBSUGF0dGVybihTdHJpbmdJbmZvIHN0 ciwgY29uc3QgUlBSUGF0dGVybiAqbm9kZSkKK3sKKwlXUklURV9OT0RFX1RZUEUoIlJQUlBBVFRF Uk4iKTsKKworCVdSSVRFX0lOVF9GSUVMRChudW1WYXJzKTsKKwlXUklURV9JTlRfRklFTEQobWF4 RGVwdGgpOworCVdSSVRFX0lOVF9GSUVMRChudW1FbGVtZW50cyk7CisKKwkvKiBXcml0ZSB2YXJO YW1lcyBhcnJheSBhcyBsaXN0IG9mIHN0cmluZ3MgKi8KKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5n KHN0ciwgIiA6dmFyTmFtZXMiKTsKKwlpZiAobm9kZS0+bnVtVmFycyA+IDAgJiYgbm9kZS0+dmFy TmFtZXMgIT0gTlVMTCkKKwl7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoc3RyLCAiICgiKTsK KwkJZm9yIChpbnQgaSA9IDA7IGkgPCBub2RlLT5udW1WYXJzOyBpKyspCisJCXsKKwkJCWlmIChp ID4gMCkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihzdHIsICcgJyk7CisJCQlvdXRUb2tlbihz dHIsIG5vZGUtPnZhck5hbWVzW2ldKTsKKwkJfQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihzdHIs ICcpJyk7CisJfQorCWVsc2UKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhzdHIsICIgPD4iKTsK KworCS8qIFdyaXRlIGVsZW1lbnRzIGFycmF5ICovCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhz dHIsICIgOmVsZW1lbnRzIik7CisJaWYgKG5vZGUtPm51bUVsZW1lbnRzID4gMCAmJiBub2RlLT5l bGVtZW50cyAhPSBOVUxMKQorCXsKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoc3RyLCAnICcpOwor CQlmb3IgKGludCBpID0gMDsgaSA8IG5vZGUtPm51bUVsZW1lbnRzOyBpKyspCisJCXsKKwkJCWNv bnN0IFJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJm5vZGUtPmVsZW1lbnRzW2ldOworCisJCQlh cHBlbmRTdHJpbmdJbmZvKHN0ciwgIiglZCAlZCAldSAlZCAlZCAlZCAlZCkiLAorCQkJCQkJCSAo aW50KSBlbGVtLT52YXJJZCwKKwkJCQkJCQkgKGludCkgZWxlbS0+ZGVwdGgsCisJCQkJCQkJICh1 bnNpZ25lZCkgZWxlbS0+ZmxhZ3MsCisJCQkJCQkJIChpbnQpIGVsZW0tPm1pbiwKKwkJCQkJCQkg KGludCkgZWxlbS0+bWF4LAorCQkJCQkJCSAoaW50KSBlbGVtLT5uZXh0LAorCQkJCQkJCSAoaW50 KSBlbGVtLT5qdW1wKTsKKwkJfQorCX0KKwllbHNlCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmco c3RyLCAiIDw+Iik7CisKKwlXUklURV9CT09MX0ZJRUxEKGlzQWJzb3JiYWJsZSk7Cit9CisKIAog LyoKICAqIG91dE5vZGUgLQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvcmVhZGZ1bmNz LmMgYi9zcmMvYmFja2VuZC9ub2Rlcy9yZWFkZnVuY3MuYwppbmRleCBiNmIyY2U2Yzc5Mi4uNmMz OWM2ZmUwNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCisrKyBi L3NyYy9iYWNrZW5kL25vZGVzL3JlYWRmdW5jcy5jCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpbmNs dWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9iaXRtYXBzZXQuaCIKKyNpbmNsdWRl ICJub2Rlcy9wbGFubm9kZXMuaCIKICNpbmNsdWRlICJub2Rlcy9yZWFkZnVuY3MuaCIKIAogCkBA IC01NjcsNiArNTY4LDkwIEBAIF9yZWFkRXh0ZW5zaWJsZU5vZGUodm9pZCkKIAlSRUFEX0RPTkUo KTsKIH0KIAorc3RhdGljIFJQUlBhdHRlcm4gKgorX3JlYWRSUFJQYXR0ZXJuKHZvaWQpCit7CisJ UkVBRF9MT0NBTFMoUlBSUGF0dGVybik7CisKKwlSRUFEX0lOVF9GSUVMRChudW1WYXJzKTsKKwlS RUFEX0lOVF9GSUVMRChtYXhEZXB0aCk7CisJUkVBRF9JTlRfRklFTEQobnVtRWxlbWVudHMpOwor CisJLyogUmVhZCB2YXJOYW1lcyBhcnJheSAqLworCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgp OyAvKiBza2lwIDp2YXJOYW1lcyAqLworCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBn ZXQgJygnIG9yICc8PicgKi8KKwlpZiAobG9jYWxfbm9kZS0+bnVtVmFycyA+IDAgJiYgdG9rZW5b MF0gPT0gJygnKQorCXsKKwkJbG9jYWxfbm9kZS0+dmFyTmFtZXMgPSBwYWxsb2NfYXJyYXkoY2hh ciAqLCBsb2NhbF9ub2RlLT5udW1WYXJzKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhbF9u b2RlLT5udW1WYXJzOyBpKyspCisJCXsKKwkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOwor CQkJbG9jYWxfbm9kZS0+dmFyTmFtZXNbaV0gPSBkZWJhY2tzbGFzaCh0b2tlbiwgbGVuZ3RoKTsK KwkJfQorCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgLyogc2tpcCAnKScgKi8KKwl9CisJ ZWxzZQorCXsKKwkJbG9jYWxfbm9kZS0+dmFyTmFtZXMgPSBOVUxMOworCX0KKworCS8qIFJlYWQg ZWxlbWVudHMgYXJyYXkgKi8KKwl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgLyogc2tpcCA6 ZWxlbWVudHMgKi8KKwl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgLyogZ2V0ICcoJyBvciAn PD4nICovCisJaWYgKGxvY2FsX25vZGUtPm51bUVsZW1lbnRzID4gMCAmJiB0b2tlblswXSA9PSAn KCcpCisJeworCQlsb2NhbF9ub2RlLT5lbGVtZW50cyA9IHBhbGxvYzBfYXJyYXkoUlBSUGF0dGVy bkVsZW1lbnQsIGxvY2FsX25vZGUtPm51bUVsZW1lbnRzKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkg PCBsb2NhbF9ub2RlLT5udW1FbGVtZW50czsgaSsrKQorCQl7CisJCQlSUFJQYXR0ZXJuRWxlbWVu dCAqZWxlbSA9ICZsb2NhbF9ub2RlLT5lbGVtZW50c1tpXTsKKwkJCWludAkJCXZhcklkLAorCQkJ CQkJZmxhZ3MsCisJCQkJCQlkZXB0aCwKKwkJCQkJCW1pbiwKKwkJCQkJCW1heCwKKwkJCQkJCW5l eHQsCisJCQkJCQlqdW1wOworCisJCQkvKiBQYXJzZSAiKHZhcklkIGRlcHRoIGZsYWdzIG1pbiBt YXggbmV4dCBqdW1wKSIgKi8KKwkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOworCQkJdmFy SWQgPSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOworCQkJZGVw dGggPSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOworCQkJZmxh Z3MgPSBhdG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOworCQkJbWlu ID0gYXRvaSh0b2tlbik7CisJCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsKKwkJCW1heCA9 IGF0b2kodG9rZW4pOworCQkJdG9rZW4gPSBwZ19zdHJ0b2soJmxlbmd0aCk7CisJCQluZXh0ID0g YXRvaSh0b2tlbik7CisJCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsKKwkJCWp1bXAgPSBh dG9pKHRva2VuKTsKKwkJCXRva2VuID0gcGdfc3RydG9rKCZsZW5ndGgpOyAvKiBza2lwICcpJyAq LworCisJCQllbGVtLT52YXJJZCA9IChSUFJWYXJJZCkgdmFySWQ7CisJCQllbGVtLT5mbGFncyA9 IChSUFJFbGVtRmxhZ3MpIGZsYWdzOworCQkJZWxlbS0+ZGVwdGggPSAoUlBSRGVwdGgpIGRlcHRo OworCQkJZWxlbS0+bWluID0gKFJQUlF1YW50aXR5KSBtaW47CisJCQllbGVtLT5tYXggPSAoUlBS UXVhbnRpdHkpIG1heDsKKwkJCWVsZW0tPm5leHQgPSAoUlBSRWxlbUlkeCkgbmV4dDsKKwkJCWVs ZW0tPmp1bXAgPSAoUlBSRWxlbUlkeCkganVtcDsKKworCQkJLyogUmVhZCBuZXh0IGVsZW1lbnQn cyAnKCcgb3IgZW5kICovCisJCQlpZiAoaSA8IGxvY2FsX25vZGUtPm51bUVsZW1lbnRzIC0gMSkK KwkJCQl0b2tlbiA9IHBnX3N0cnRvaygmbGVuZ3RoKTsgLyogZ2V0ICcoJyAqLworCQl9CisJfQor CWVsc2UKKwl7CisJCWxvY2FsX25vZGUtPmVsZW1lbnRzID0gTlVMTDsKKwl9CisKKwlSRUFEX0JP T0xfRklFTEQoaXNBYnNvcmJhYmxlKTsKKworCVJFQURfRE9ORSgpOworfQorCiAKIC8qCiAgKiBw YXJzZU5vZGVTdHJpbmcKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZSBi L3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQppbmRleCA4YjVhNGFmNmJmMi4uNTFlNmIxYWRm YjggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9NYWtlZmlsZQorKysgYi9zcmMvYmFj a2VuZC9wYXJzZXIvTWFrZWZpbGUKQEAgLTMwLDYgKzMwLDcgQEAgT0JKUyA9IFwKIAlwYXJzZV9v cGVyLm8gXAogCXBhcnNlX3BhcmFtLm8gXAogCXBhcnNlX3JlbGF0aW9uLm8gXAorCXBhcnNlX3Jw ci5vIFwKIAlwYXJzZV90YXJnZXQubyBcCiAJcGFyc2VfdHlwZS5vIFwKIAlwYXJzZV91dGlsY21k Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL1JFQURNRSBiL3NyYy9iYWNrZW5k L3BhcnNlci9SRUFETUUKaW5kZXggZTI2ZWI0MzdhOWYuLjIyYTVlOTFjOGNmIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9wYXJzZXIvUkVBRE1FCisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9SRUFE TUUKQEAgLTI2LDYgKzI2LDcgQEAgcGFyc2Vfbm9kZS5jCWNyZWF0ZSBub2RlcyBmb3IgdmFyaW91 cyBzdHJ1Y3R1cmVzCiBwYXJzZV9vcGVyLmMJaGFuZGxlIG9wZXJhdG9ycyBpbiBleHByZXNzaW9u cwogcGFyc2VfcGFyYW0uYwloYW5kbGUgUGFyYW1zIChmb3IgdGhlIGNhc2VzIHVzZWQgaW4gdGhl IGNvcmUgYmFja2VuZCkKIHBhcnNlX3JlbGF0aW9uLmMgc3VwcG9ydCByb3V0aW5lcyBmb3IgdGFi bGVzIGFuZCBjb2x1bW4gaGFuZGxpbmcKK3BhcnNlX3Jwci5jCWhhbmRsZSBSb3cgUGF0dGVybiBS ZWNvZ25pdGlvbgogcGFyc2VfdGFyZ2V0LmMJaGFuZGxlIHRoZSByZXN1bHQgbGlzdCBvZiB0aGUg cXVlcnkKIHBhcnNlX3R5cGUuYwlzdXBwb3J0IHJvdXRpbmVzIGZvciBkYXRhIHR5cGUgaGFuZGxp bmcKIHBhcnNlX3V0aWxjbWQuYwlwYXJzZSBhbmFseXNpcyBmb3IgdXRpbGl0eSBjb21tYW5kcyAo ZG9uZSBhdCBleGVjdXRpb24gdGltZSkKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9t ZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5idWlsZAppbmRleCA4NmMwOWIy OWVjMi4uODJmZTg2ZTEwZGIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9tZXNvbi5i dWlsZAorKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvbWVzb24uYnVpbGQKQEAgLTE3LDYgKzE3LDcg QEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGFyc2Vfb3Blci5jJywKICAgJ3BhcnNl X3BhcmFtLmMnLAogICAncGFyc2VfcmVsYXRpb24uYycsCisgICdwYXJzZV9ycHIuYycsCiAgICdw YXJzZV90YXJnZXQuYycsCiAgICdwYXJzZV90eXBlLmMnLAogICAncGFyc2VfdXRpbGNtZC5jJywK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYyBiL3NyYy9iYWNrZW5k L3BhcnNlci9wYXJzZV9hZ2cuYwppbmRleCBhY2I5MzMzOTJkZS4uYjE2ZTU0ZDZlMzEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9hZ2cuYworKysgYi9zcmMvYmFja2VuZC9w YXJzZXIvcGFyc2VfYWdnLmMKQEAgLTU5Nyw3ICs1OTcsMTAgQEAgY2hlY2tfYWdnbGV2ZWxzX2Fu ZF9jb25zdHJhaW50cyhQYXJzZVN0YXRlICpwc3RhdGUsIE5vZGUgKmV4cHIpCiAJCQkJZXJyID0g XygiYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gcHJvcGVydHkgZGVmaW5p dGlvbiBleHByZXNzaW9ucyIpOwogCQkJZWxzZQogCQkJCWVyciA9IF8oImdyb3VwaW5nIG9wZXJh dGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIHByb3BlcnR5IGRlZmluaXRpb24gZXhwcmVzc2lvbnMi KTsKKwkJCWJyZWFrOwogCisJCWNhc2UgRVhQUl9LSU5EX1JQUl9ERUZJTkU6CisJCQllcnJraW5k ID0gdHJ1ZTsKIAkJCWJyZWFrOwogCiAJCQkvKgpAQCAtMTA0NSw2ICsxMDQ4LDkgQEAgdHJhbnNm b3JtV2luZG93RnVuY0NhbGwoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dGdW5jICp3ZnVuYywK IAkJY2FzZSBFWFBSX0tJTkRfRk9SX1BPUlRJT046CiAJCQllcnIgPSBfKCJ3aW5kb3cgZnVuY3Rp b25zIGFyZSBub3QgYWxsb3dlZCBpbiBGT1IgUE9SVElPTiBPRiBleHByZXNzaW9ucyIpOwogCQkJ YnJlYWs7CisJCWNhc2UgRVhQUl9LSU5EX1JQUl9ERUZJTkU6CisJCQllcnJraW5kID0gdHJ1ZTsK KwkJCWJyZWFrOwogCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50ZW50aW9uYWxseSBubyBkZWZh dWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCkBAIC0xMTI1LDcgKzExMzEsOCBAQCB0cmFuc2Zv cm1XaW5kb3dGdW5jQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIFdpbmRvd0Z1bmMgKndmdW5jLAog CQkJCWVxdWFsKHJlZndpbi0+b3JkZXJDbGF1c2UsIHdpbmRlZi0+b3JkZXJDbGF1c2UpICYmCiAJ CQkJcmVmd2luLT5mcmFtZU9wdGlvbnMgPT0gd2luZGVmLT5mcmFtZU9wdGlvbnMgJiYKIAkJCQll cXVhbChyZWZ3aW4tPnN0YXJ0T2Zmc2V0LCB3aW5kZWYtPnN0YXJ0T2Zmc2V0KSAmJgotCQkJCWVx dWFsKHJlZndpbi0+ZW5kT2Zmc2V0LCB3aW5kZWYtPmVuZE9mZnNldCkpCisJCQkJZXF1YWwocmVm d2luLT5lbmRPZmZzZXQsIHdpbmRlZi0+ZW5kT2Zmc2V0KSAmJgorCQkJCWVxdWFsKHJlZndpbi0+ cnBDb21tb25TeW50YXgsIHdpbmRlZi0+cnBDb21tb25TeW50YXgpKQogCQkJewogCQkJCS8qIGZv dW5kIGEgZHVwbGljYXRlIHdpbmRvdyBzcGVjaWZpY2F0aW9uICovCiAJCQkJd2Z1bmMtPndpbnJl ZiA9IHdpbnJlZjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2Uu YyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwppbmRleCA1ZmU1MjU3YjAxOS4u NTUwZWE0ZWI5YzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2Uu YworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNlLmMKQEAgLTM5LDYgKzM5LDcg QEAKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZ3JhcGh0YWJsZS5oIgogI2luY2x1ZGUgInBhcnNl ci9wYXJzZV9vcGVyLmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3JlbGF0aW9uLmgiCisjaW5j bHVkZSAicGFyc2VyL3BhcnNlX3Jwci5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJzZV90YXJnZXQu aCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdHlwZS5oIgogI2luY2x1ZGUgInBhcnNlci9wYXJz ZXIuaCIKQEAgLTEwMSw3ICsxMDIsNiBAQCBzdGF0aWMgTm9kZSAqdHJhbnNmb3JtRnJhbWVPZmZz ZXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBpbnQgZnJhbWVPcHRpb25zLAogCQkJCQkJCQkgIE9pZCBy YW5nZW9wZmFtaWx5LCBPaWQgcmFuZ2VvcGNpbnR5cGUsIE9pZCAqaW5SYW5nZUZ1bmMsCiAJCQkJ CQkJCSAgTm9kZSAqY2xhdXNlKTsKIAotCiAvKgogICogdHJhbnNmb3JtRnJvbUNsYXVzZSAtCiAg KgkgIFByb2Nlc3MgdGhlIEZST00gY2xhdXNlIGFuZCBhZGQgaXRlbXMgdG8gdGhlIHF1ZXJ5J3Mg cmFuZ2UgdGFibGUsCkBAIC0zMDM1LDYgKzMwMzUsOCBAQCB0cmFuc2Zvcm1XaW5kb3dEZWZpbml0 aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCSAqIEFuZCBwcmVwYXJlIHRoZSBuZXcgV2luZG93 Q2xhdXNlLgogCQkgKi8KIAkJd2MgPSBtYWtlTm9kZShXaW5kb3dDbGF1c2UpOworCQl3Yy0+cnBT a2lwVG8gPSBTVF9OT05FOyAvKiBTVF9OT05FIG1hcmtzIHRoaXMgYXMgYSBub24tUlBSIHdpbmRv dzsKKwkJCQkJCQkJICogb3ZlcnJpZGRlbiBieSB0cmFuc2Zvcm1SUFIoKSBpZiBSUFIgaXMgdXNl ZCAqLwogCQl3Yy0+bmFtZSA9IHdpbmRlZi0+bmFtZTsKIAkJd2MtPnJlZm5hbWUgPSB3aW5kZWYt PnJlZm5hbWU7CiAKQEAgLTMxNjMsNiArMzE2NSwxMCBAQCB0cmFuc2Zvcm1XaW5kb3dEZWZpbml0 aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJCQkJCQkJCQkJCSByYW5nZW9wZmFtaWx5LCByYW5n ZW9wY2ludHlwZSwKIAkJCQkJCQkJCQkJICZ3Yy0+ZW5kSW5SYW5nZUZ1bmMsCiAJCQkJCQkJCQkJ CSB3aW5kZWYtPmVuZE9mZnNldCk7CisKKwkJLyogUHJvY2VzcyBSb3cgUGF0dGVybiBSZWNvZ25p dGlvbiByZWxhdGVkIGNsYXVzZXMgKi8KKwkJdHJhbnNmb3JtUlBSKHBzdGF0ZSwgd2MsIHdpbmRl ZiwgdGFyZ2V0bGlzdCk7CisKIAkJd2MtPndpbnJlZiA9IHdpbnJlZjsKIAogCQlyZXN1bHQgPSBs YXBwZW5kKHJlc3VsdCwgd2MpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X2N0ZS5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5jCmluZGV4IGNjZGUxOTkzMTlh Li4zZTQ5M2JlYmEwYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2N0ZS5j CisrKyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jdGUuYwpAQCAtOTYsNiArOTYsMTQgQEAg c3RhdGljIHZvaWQgY2hlY2tXZWxsRm9ybWVkUmVjdXJzaW9uKEN0ZVN0YXRlICpjc3RhdGUpOwog c3RhdGljIGJvb2wgY2hlY2tXZWxsRm9ybWVkUmVjdXJzaW9uV2Fsa2VyKE5vZGUgKm5vZGUsIEN0 ZVN0YXRlICpjc3RhdGUpOwogc3RhdGljIHZvaWQgY2hlY2tXZWxsRm9ybWVkU2VsZWN0U3RtdChT ZWxlY3RTdG10ICpzdG10LCBDdGVTdGF0ZSAqY3N0YXRlKTsKIAorLyogUmVjdXJzaXZlLVdJVEgg UlBSIHJlamVjdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlQYXJzZUxvYwlsb2NhdGlvbjsJ CS8qIGxvY2F0aW9uIG9mIGZpcnN0IFJQUiB3aW5kb3csIG9yIC0xICovCit9IENvbnRhaW5SUFJD b250ZXh0OworCitzdGF0aWMgYm9vbCBjb250YWluX3Jwcl93YWxrZXIoTm9kZSAqbm9kZSwgdm9p ZCAqY29udGV4dCk7CisKIAogLyoKICAqIHRyYW5zZm9ybVdpdGhDbGF1c2UgLQpAQCAtMTY0LDYg KzE3MiwyOCBAQCB0cmFuc2Zvcm1XaXRoQ2xhdXNlKFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2l0aENs YXVzZSAqd2l0aENsYXVzZSkKIAkJQ3RlU3RhdGUJY3N0YXRlOwogCQlpbnQJCQlpOwogCisJCS8q CisJCSAqIFBlciBJU08vSUVDIDkwNzUtMjoyMDE2IDcuMTcgU3ludGF4IFJ1bGUgMyllKWYpLCBl dmVyeSA8d2l0aCBsaXN0CisJCSAqIGVsZW1lbnQ+IGluIGEgV0lUSCBSRUNVUlNJVkUgY2xhdXNl IGlzICJwb3RlbnRpYWxseSByZWN1cnNpdmUiIGFuZAorCQkgKiBzaGFsbCBub3QgY29udGFpbiBh IDxyb3cgcGF0dGVybiBjb21tb24gc3ludGF4Pi4gIChQb3N0Z3JlU1FMIGRvZXMKKwkJICogbm90 IGltcGxlbWVudCA8cm93IHBhdHRlcm4gbWVhc3VyZXM+LCBzbyBvbmx5IHRoZSBjb21tb24gc3lu dGF4CisJCSAqIG5lZWRzIHRvIGJlIGNoZWNrZWQuKSAgSVNPL0lFQyAxOTA3NS01IDYuMTcuNSAo UjAyMCkgYW5kIDQuMTguNQorCQkgKiAoUjAxMCkgcmVzdGF0ZSB0aGUgcHJvaGliaXRpb24gZm9y IENSRUFURSBSRUNVUlNJVkUgVklFVywgd2hpY2ggaXMKKwkJICogcmV3cml0dGVuIHRvIFdJVEgg UkVDVVJTSVZFIGJ5IG1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KCkgYW5kIHNvCisJCSAqIGZsb3dz IHRocm91Z2ggaGVyZSBhcyB3ZWxsLgorCQkgKi8KKwkJZm9yZWFjaF9ub2RlKENvbW1vblRhYmxl RXhwciwgY3RlLCB3aXRoQ2xhdXNlLT5jdGVzKQorCQl7CisJCQlDb250YWluUlBSQ29udGV4dCBj dHg7CisKKwkJCWN0eC5sb2NhdGlvbiA9IC0xOworCQkJaWYgKGNvbnRhaW5fcnByX3dhbGtlcihj dGUtPmN0ZXF1ZXJ5LCAmY3R4KSkKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQllcnJtc2coImNhbm5vdCB1c2Ugcm93IHBhdHRl cm4gcmVjb2duaXRpb24gaW4gYSByZWN1cnNpdmUgcXVlcnkiKSwKKwkJCQkJCXBhcnNlcl9lcnJw b3NpdGlvbihwc3RhdGUsIGN0eC5sb2NhdGlvbikpOworCQl9CisKIAkJY3N0YXRlLnBzdGF0ZSA9 IHBzdGF0ZTsKIAkJY3N0YXRlLm51bWl0ZW1zID0gbGlzdF9sZW5ndGgod2l0aENsYXVzZS0+Y3Rl cyk7CiAJCWNzdGF0ZS5pdGVtcyA9IChDdGVJdGVtICopIHBhbGxvYzAoY3N0YXRlLm51bWl0ZW1z ICogc2l6ZW9mKEN0ZUl0ZW0pKTsKQEAgLTEyNjgsMyArMTI5OCwyOSBAQCBjaGVja1dlbGxGb3Jt ZWRTZWxlY3RTdG10KFNlbGVjdFN0bXQgKnN0bXQsIEN0ZVN0YXRlICpjc3RhdGUpCiAJCX0KIAl9 CiB9CisKKworLyoKKyAqIGNvbnRhaW5fcnByX3dhbGtlcgorICoJICBSZXR1cm5zIHRydWUgaWYg dGhlIHJhdyBwYXJzZSB0cmVlIGNvbnRhaW5zIGFueSA8cm93IHBhdHRlcm4gY29tbW9uCisgKgkg IHN5bnRheD4gLS0gaS5lLiwgYW55IFdpbmRvd0RlZiB3aXRoIFBBVFRFUk4vREVGSU5FIGF0dGFj aGVkLiAgVXNlZAorICoJICBieSB0cmFuc2Zvcm1XaXRoQ2xhdXNlKCkgdG8gZW5mb3JjZSBJU08v SUVDIDkwNzUtMjoyMDE2IDcuMTcgU1IgMylmKQorICoJICBvbiBXSVRIIFJFQ1VSU0lWRSBlbGVt ZW50cy4KKyAqLworc3RhdGljIGJvb2wKK2NvbnRhaW5fcnByX3dhbGtlcihOb2RlICpub2RlLCB2 b2lkICpjb250ZXh0KQoreworCWlmIChub2RlID09IE5VTEwpCisJCXJldHVybiBmYWxzZTsKKwlp ZiAoSXNBKG5vZGUsIFdpbmRvd0RlZikpCisJeworCQlXaW5kb3dEZWYgICp3ZCA9IChXaW5kb3dE ZWYgKikgbm9kZTsKKworCQlpZiAod2QtPnJwQ29tbW9uU3ludGF4ICE9IE5VTEwpCisJCXsKKwkJ CSgoQ29udGFpblJQUkNvbnRleHQgKikgY29udGV4dCktPmxvY2F0aW9uID0gd2QtPnJwQ29tbW9u U3ludGF4LT5sb2NhdGlvbjsKKwkJCXJldHVybiB0cnVlOworCQl9CisJfQorCXJldHVybiByYXdf ZXhwcmVzc2lvbl90cmVlX3dhbGtlcihub2RlLCBjb250YWluX3Jwcl93YWxrZXIsIGNvbnRleHQp OworfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggOWFkYzlkNGMwZjYuLjZlNTk5MjY0MmFi IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTU3OSw2ICs1NzksNyBAQCB0cmFuc2Zvcm1D b2x1bW5SZWYoUGFyc2VTdGF0ZSAqcHN0YXRlLCBDb2x1bW5SZWYgKmNyZWYpCiAJCWNhc2UgRVhQ Ul9LSU5EX0dFTkVSQVRFRF9DT0xVTU46CiAJCWNhc2UgRVhQUl9LSU5EX0NZQ0xFX01BUks6CiAJ CWNhc2UgRVhQUl9LSU5EX1BST1BHUkFQSF9QUk9QRVJUWToKKwkJY2FzZSBFWFBSX0tJTkRfUlBS X0RFRklORToKIAkJCS8qIG9rYXkgKi8KIAkJCWJyZWFrOwogCkBAIC02MjcsNiArNjI4LDU3IEBA IHRyYW5zZm9ybUNvbHVtblJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikK IAlpZiAobm9kZSAhPSBOVUxMKQogCQlyZXR1cm4gbm9kZTsKIAorCS8qLS0tLS0tLS0tLQorCSAq IFF1YWxpZmllZCByZWZlcmVuY2VzIGluIERFRklORSBuZWVkIGEgdHJpLWNsYXNzaWZpY2F0aW9u OgorCSAqCisJICoJICBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllciAoZS5nLiBVUC5wcmljZSk6 IHZhbGlkIHBlcgorCSAqCSAgSVNPL0lFQyAxOTA3NS01IDYuMTUgLyA0LjE2IGJ1dCBub3QgeWV0 IGltcGxlbWVudGVkIC0tCisJICoJICByYWlzZSBGRUFUVVJFX05PVF9TVVBQT1JURUQuCisJICoK KwkgKgkgIEZST00tY2xhdXNlIHJhbmdlIHZhcmlhYmxlIHF1YWxpZmllcjogcHJvaGliaXRlZCBi eQorCSAqCSAgSVNPL0lFQyAxOTA3NS01IDYuNSAtLSByYWlzZSBTWU5UQVhfRVJST1IuCisJICoK KwkgKgkgIGFueSBvdGhlciBxdWFsaWZpZXIgKHR5cG8sIHVuZGVmaW5lZCBuYW1lKTogZmFsbCB0 aHJvdWdoIGFuZCBsZXQKKwkgKgkgIG5vcm1hbCBjb2x1bW4gcmVzb2x1dGlvbiBwcm9kdWNlIGEg c2Vuc2libGUgZXJyb3IuCisJICoKKwkgKiBUaGUgcXVvdGVkIHRleHQgcmVmbGVjdHMgb25seSB0 aGUgQ29sdW1uUmVmIHBvcnRpb247IGEgdHJhaWxpbmcgZmllbGQKKwkgKiBzZWxlY3Rpb24gb24g YSBjb21wb3NpdGUgdHlwZSAoZS5nLiAiLmFtb3VudCIgaW4gIihBLml0ZW1zKS5hbW91bnQiKQor CSAqIGxpdmVzIGluIHRoZSBzdXJyb3VuZGluZyBBX0luZGlyZWN0aW9uIG5vZGUgYW5kIGlzIG5v dCBpbmNsdWRlZCBoZXJlLgorCSAqIFRoYXQgY2FuIGJlIHJldmlzaXRlZCB3aGVuIE1FQVNVUkVT IHN1cHBvcnQgYWRkcyBpbmRpcmVjdGlvbi1hd2FyZQorCSAqIHRyYXZlcnNhbC4KKwkgKi0tLS0t LS0tLS0KKwkgKi8KKwlpZiAocHN0YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfUlBSX0RF RklORSAmJgorCQlsaXN0X2xlbmd0aChjcmVmLT5maWVsZHMpICE9IDEpCisJeworCQljaGFyCSAg ICpxdWFsaWZpZXIgPSBzdHJWYWwobGluaXRpYWwoY3JlZi0+ZmllbGRzKSk7CisJCWJvb2wJCWlz X3BhdHRlcm5fdmFyID0gZmFsc2U7CisKKwkJZm9yZWFjaF9ub2RlKFN0cmluZywgcHYsIHBzdGF0 ZS0+cF9ycHJfcGF0dGVybl92YXJzKQorCQl7CisJCQlpZiAoc3RyY21wKHN0clZhbChwdiksIHF1 YWxpZmllcikgPT0gMCkKKwkJCXsKKwkJCQlpc19wYXR0ZXJuX3ZhciA9IHRydWU7CisJCQkJYnJl YWs7CisJCQl9CisJCX0KKworCQlpZiAoaXNfcGF0dGVybl92YXIpCisJCQllcmVwb3J0KEVSUk9S LAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJZXJy bXNnKCJwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uIFwiJXNcIiBpcyBub3Qg c3VwcG9ydGVkIGluIERFRklORSBjbGF1c2UiLAorCQkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhj cmVmLT5maWVsZHMpKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9j YXRpb24pKTsKKwkJZWxzZSBpZiAocmVmbmFtZU5hbWVzcGFjZUl0ZW0ocHN0YXRlLCBOVUxMLCBx dWFsaWZpZXIsCisJCQkJCQkJCQkgIGNyZWYtPmxvY2F0aW9uLCBOVUxMKSAhPSBOVUxMKQorCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJ CWVycm1zZygicmFuZ2UgdmFyaWFibGUgcXVhbGlmaWVkIGV4cHJlc3Npb24gXCIlc1wiIGlzIG5v dCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UiLAorCQkJCQkJICAgTmFtZUxpc3RUb1N0cmluZyhj cmVmLT5maWVsZHMpKSwKKwkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgY3JlZi0+bG9j YXRpb24pKTsKKwkJLyogZWxzZTogdW5rbm93biBxdWFsaWZpZXIgLS0gZmFsbCB0aHJvdWdoIHRv IG5vcm1hbCByZXNvbHV0aW9uICovCisJfQorCiAJLyotLS0tLS0tLS0tCiAJICogVGhlIGFsbG93 ZWQgc3ludGF4ZXMgYXJlOgogCSAqCkBAIC04OTQsNiArOTQ2LDMwIEBAIHRyYW5zZm9ybUNvbHVt blJlZihQYXJzZVN0YXRlICpwc3RhdGUsIENvbHVtblJlZiAqY3JlZikKIAkJfQogCX0KIAorCS8q CisJICogUmVzdHJpY3QgY29sdW1uIHJlZmVyZW5jZXMgaW4gYSByb3cgcGF0dGVybiBERUZJTkUg Y2xhdXNlLiAgbm9kZSBpcyBub3cKKwkgKiBhIHN1Y2Nlc3NmdWxseSByZXNvbHZlZCByZWZlcmVu Y2UsIHNvIHJlamVjdCB0aGUgdHdvIGZvcm1zIFJQUiBkb2VzIG5vdAorCSAqIGFsbG93OiBhIGNv cnJlbGF0ZWQgcmVmZXJlbmNlIHRvIGFuIG91dGVyIHF1ZXJ5J3MgY29sdW1uLCBhbmQgYQorCSAq IHNjaGVtYS9jYXRhbG9nLXF1YWxpZmllZCByZWZlcmVuY2UgKHRocmVlIG9yIG1vcmUgbmFtZSBw YXJ0cykuICBTaW1wbGUKKwkgKiB0d28tcGFydCBxdWFsaWZpZXJzIChwYXR0ZXJuIG9yIHJhbmdl IHZhcmlhYmxlKSBhcmUgaGFuZGxlZCBlYXJsaWVyLAorCSAqIGJlZm9yZSByZXNvbHV0aW9uLgor CSAqLworCWlmIChwc3RhdGUtPnBfZXhwcl9raW5kID09IEVYUFJfS0lORF9SUFJfREVGSU5FKQor CXsKKwkJaWYgKElzQShub2RlLCBWYXIpICYmICgoVmFyICopIG5vZGUpLT52YXJsZXZlbHN1cCA+ IDApCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1Rf U1VQUE9SVEVEKSwKKwkJCQkJZXJybXNnKCJjYW5ub3QgdXNlIG91dGVyIHF1ZXJ5IGNvbHVtbiBp biBERUZJTkUgY2xhdXNlIiksCisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYt PmxvY2F0aW9uKSk7CisKKwkJaWYgKGxpc3RfbGVuZ3RoKGNyZWYtPmZpZWxkcykgPj0gMykKKwkJ CWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJ CQllcnJtc2coInF1YWxpZmllZCBleHByZXNzaW9uIFwiJXNcIiBpcyBub3QgYWxsb3dlZCBpbiBE RUZJTkUgY2xhdXNlIiwKKwkJCQkJCSAgIE5hbWVMaXN0VG9TdHJpbmcoY3JlZi0+ZmllbGRzKSks CisJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGNyZWYtPmxvY2F0aW9uKSk7CisJfQor CiAJcmV0dXJuIG5vZGU7CiB9CiAKQEAgLTE4OTMsNiArMTk2OSwzMSBAQCB0cmFuc2Zvcm1TdWJM aW5rKFBhcnNlU3RhdGUgKnBzdGF0ZSwgU3ViTGluayAqc3VibGluaykKIAkJCWVyciA9IF8oImNh bm5vdCB1c2Ugc3VicXVlcnkgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbiIpOwogCQkJYnJl YWs7CiAKKwkJCS8qLS0tLS0tLS0tLQorCQkJICogWFhYIFNRTC9SUFIgKElTTy9JRUMgMTkwNzUt NSA2LjE3LjQgLyA0LjE4LjQ7IFIwMjAgLyBSMDEwKQorCQkJICogcGVybWl0cyBhIHN1YnF1ZXJ5 IG5lc3RlZCBpbiBhIERFRklORSBleHByZXNzaW9uIHByb3ZpZGVkCisJCQkgKiB0aGF0OgorCQkJ ICogICAoYSkgdGhlIHN1YnF1ZXJ5IGRvZXMgbm90IGl0c2VsZiBwZXJmb3JtIHJvdyBwYXR0ZXJu CisJCQkgKiAgICAgICByZWNvZ25pdGlvbiwgYW5kCisJCQkgKiAgIChiKSB0aGUgc3VicXVlcnkg ZG9lcyBub3QgcmVmZXJlbmNlIGEgcm93IHBhdHRlcm4gdmFyaWFibGUKKwkJCSAqICAgICAgIG9m IHRoZSBvdXRlciBxdWVyeS4KKwkJCSAqCisJCQkgKiBXZSByZWplY3QgYWxsIHN1YnF1ZXJpZXMg aGVyZSBmb3Igbm93LiAgSW1wbGVtZW50aW5nIHRoZQorCQkJICogY2FzZSBkaXN0aW5jdGlvbiB3 b3VsZCBtZWFuIHdhbGtpbmcgdGhlIGFuYWx5emVkIHN1YnF1ZXJ5CisJCQkgKiBRdWVyeSB0cmVl IGZvciBuZXN0ZWQgUlBSIHdpbmRvdyBjbGF1c2VzIHRvIGVuZm9yY2UgKGEpLAorCQkJICogYW5k IHdhbGtpbmcgaXQgZm9yIENvbHVtblJlZiBxdWFsaWZpZXJzIG1hdGNoaW5nIGFueQorCQkJICog YW5jZXN0b3IncyBwX3Jwcl9wYXR0ZXJuX3ZhcnMgdG8gZW5mb3JjZSAoYikuICBCb3RoIGNoZWNr cworCQkJICogYXJlIGRvYWJsZSB3aXRoIHRoZSBleGlzdGluZyBpbmZyYXN0cnVjdHVyZSAtLSB0 aGV5IGFyZQorCQkJICogbGVmdCBhcyBmdXR1cmUgd29yaywgbm90IGJsb2NrZWQgb24gYW55IG90 aGVyIGZlYXR1cmUuCisJCQkgKiBVbnRpbCB0aGVuIHRoaXMgYmxhbmtldCByZWplY3Rpb24gaXMg aW50ZW50aW9uYWwKKwkJCSAqIG92ZXItcmVqZWN0aW9uLCBub3QgYSBzdGFuZGFyZCBmaXQ7IGl0 IHN1YnN1bWVzIGJvdGggKGEpCisJCQkgKiBhbmQgKGIpIGJ5IG1ha2luZyB0aGUgc3VicXVlcnkg aXRzZWxmIHVucmVhY2hhYmxlLgorCQkJICotLS0tLS0tLS0tCisJCQkgKi8KKwkJY2FzZSBFWFBS X0tJTkRfUlBSX0RFRklORToKKwkJCWVyciA9IF8oImNhbm5vdCB1c2Ugc3VicXVlcnkgaW4gREVG SU5FIGV4cHJlc3Npb24iKTsKKwkJCWJyZWFrOworCiAJCQkvKgogCQkJICogVGhlcmUgaXMgaW50 ZW50aW9uYWxseSBubyBkZWZhdWx0OiBjYXNlIGhlcmUsIHNvIHRoYXQgdGhlCiAJCQkgKiBjb21w aWxlciB3aWxsIHdhcm4gaWYgd2UgYWRkIGEgbmV3IFBhcnNlRXhwcktpbmQgd2l0aG91dApAQCAt MzI1NSw2ICszMzU2LDggQEAgUGFyc2VFeHByS2luZE5hbWUoUGFyc2VFeHByS2luZCBleHByS2lu ZCkKIAkJCXJldHVybiAicHJvcGVydHkgZGVmaW5pdGlvbiBleHByZXNzaW9uIjsKIAkJY2FzZSBF WFBSX0tJTkRfRk9SX1BPUlRJT046CiAJCQlyZXR1cm4gIkZPUiBQT1JUSU9OIE9GIjsKKwkJY2Fz ZSBFWFBSX0tJTkRfUlBSX0RFRklORToKKwkJCXJldHVybiAiREVGSU5FIjsKIAogCQkJLyoKIAkJ CSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2FzZSBoZXJlLCBzbyB0aGF0 IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggMmU0Y2MxZGU1MGQuLjliOTMyOTU5OGJj IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBiL3NyYy9i YWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJw YXJzZXIvcGFyc2VfdGFyZ2V0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX3R5cGUuaCIKICNp bmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgorI2luY2x1ZGUgInV0aWxzL2ZtZ3JvaWRzLmgiCiAj aW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvc3lzY2FjaGUuaCIK IApAQCAtNzU2LDggKzc1Nyw4OCBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRlICpwc3Rh dGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0ICpmYXJncywKIAlpZiAocmV0c2V0KQogCQljaGVja19z cmZfY2FsbF9wbGFjZW1lbnQocHN0YXRlLCBsYXN0X3NyZiwgbG9jYXRpb24pOwogCisJLyoKKwkg KiBSUFIgbmF2aWdhdGlvbiBmdW5jdGlvbnMgKFBSRVYvTkVYVC9GSVJTVC9MQVNUKSBhcmUgb25s eSBtZWFuaW5nZnVsCisJICogaW5zaWRlIGEgV0lORE9XIERFRklORSBjbGF1c2UuCisJICoKKwkg KiBPdXRzaWRlIERFRklORSwgdGhlc2UgcG9seW1vcnBoaWMgcGxhY2Vob2xkZXJzIGNhbiBzaGFk b3cgY29sdW1uIGFjY2VzcworCSAqIHZpYSBmdW5jdGlvbmFsIG5vdGF0aW9uIChlLmcuLCBsYXN0 KGYpIG1lYW5pbmcgZi5sYXN0KS4gRm9yIHRoZSAxLWFyZworCSAqIGZvcm0sIHRyeSBjb2x1bW4g cHJvamVjdGlvbiBmaXJzdDsgaWYgdGhhdCBzdWNjZWVkcywgdXNlIGl0IGluc3RlYWQuCisJICog T3RoZXJ3aXNlLCByZXBvcnQgYSBjbGVhciBwYXJzZXIgZXJyb3IuCisJICovCisJaWYgKGZkcmVz dWx0ID09IEZVTkNERVRBSUxfTk9STUFMICYmCisJCXBzdGF0ZS0+cF9leHByX2tpbmQgIT0gRVhQ Ul9LSU5EX1JQUl9ERUZJTkUgJiYKKwkJKGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxFTUVOVCB8fCBm dW5jaWQgPT0gRl9ORVhUX0FOWUVMRU1FTlQgfHwKKwkJIGZ1bmNpZCA9PSBGX1BSRVZfQU5ZRUxF TUVOVF9JTlQ4IHx8IGZ1bmNpZCA9PSBGX05FWFRfQU5ZRUxFTUVOVF9JTlQ4IHx8CisJCSBmdW5j aWQgPT0gRl9GSVJTVF9BTllFTEVNRU5UIHx8IGZ1bmNpZCA9PSBGX0xBU1RfQU5ZRUxFTUVOVCB8 fAorCQkgZnVuY2lkID09IEZfRklSU1RfQU5ZRUxFTUVOVF9JTlQ4IHx8IGZ1bmNpZCA9PSBGX0xB U1RfQU5ZRUxFTUVOVF9JTlQ4KSkKKwl7CisJCS8qIDEtYXJnIGZvcm06IHRyeSBjb2x1bW4gcHJv amVjdGlvbiBiZWZvcmUgZXJyb3Jpbmcgb3V0ICovCisJCWlmIChuYXJncyA9PSAxICYmICFhZ2df c3RhciAmJiAhYWdnX2Rpc3RpbmN0ICYmIG92ZXIgPT0gTlVMTCAmJgorCQkJbGlzdF9sZW5ndGgo ZnVuY25hbWUpID09IDEpCisJCXsKKwkJCU5vZGUJICAgKnByb2plY3Rpb247CisKKwkJCXByb2pl Y3Rpb24gPSBQYXJzZUNvbXBsZXhQcm9qZWN0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJCQkJCXN0clZh bChsaW5pdGlhbChmdW5jbmFtZSkpLAorCQkJCQkJCQkJCQkJbGluaXRpYWwoZmFyZ3MpLAorCQkJ CQkJCQkJCQkJbG9jYXRpb24pOworCQkJaWYgKHByb2plY3Rpb24pCisJCQkJcmV0dXJuIHByb2pl Y3Rpb247CisJCX0KKworCQkvKiBOb3QgYSBjb2x1bW4gcHJvamVjdGlvbiAtLSByZXBvcnQgZXJy b3IgKi8KKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9S KSwKKwkJCQllcnJtc2coImNhbm5vdCB1c2UgJXMgb3V0c2lkZSBhIERFRklORSBjbGF1c2UiLAor CQkJCQkgICBOYW1lTGlzdFRvU3RyaW5nKGZ1bmNuYW1lKSksCisJCQkJcGFyc2VyX2VycnBvc2l0 aW9uKHBzdGF0ZSwgbG9jYXRpb24pKTsKKwl9CisKIAkvKiBidWlsZCB0aGUgYXBwcm9wcmlhdGUg b3V0cHV0IHN0cnVjdHVyZSAqLwotCWlmIChmZHJlc3VsdCA9PSBGVU5DREVUQUlMX05PUk1BTCB8 fCBmZHJlc3VsdCA9PSBGVU5DREVUQUlMX1BST0NFRFVSRSkKKwlpZiAoZmRyZXN1bHQgPT0gRlVO Q0RFVEFJTF9OT1JNQUwgJiYKKwkJcHN0YXRlLT5wX2V4cHJfa2luZCA9PSBFWFBSX0tJTkRfUlBS X0RFRklORSAmJgorCQkoZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UIHx8IGZ1bmNpZCA9PSBG X05FWFRfQU5ZRUxFTUVOVCB8fAorCQkgZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UX0lOVDgg fHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDggfHwKKwkJIGZ1bmNpZCA9PSBGX0ZJ UlNUX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfTEFTVF9BTllFTEVNRU5UIHx8CisJCSBmdW5j aWQgPT0gRl9GSVJTVF9BTllFTEVNRU5UX0lOVDggfHwgZnVuY2lkID09IEZfTEFTVF9BTllFTEVN RU5UX0lOVDgpKQorCXsKKwkJLyoKKwkJICogUlBSIG5hdmlnYXRpb24gZnVuY3Rpb25zIChQUkVW L05FWFQvRklSU1QvTEFTVCkgYXJlIGNvbXBpbGVkIGludG8KKwkJICogRUVPUF9SUFJfTkFWX1NF VCAvIEVFT1BfUlBSX05BVl9SRVNUT1JFIG9wY29kZXMgaW5zdGVhZCBvZiBhIG5vcm1hbAorCQkg KiBmdW5jdGlvbiBjYWxsLiAgUmVwcmVzZW50IHRoZW0gYXMgUlBSTmF2RXhwciBub2RlcyBzbyB0 aGF0IGxhdGVyCisJCSAqIHN0YWdlcyBjYW4gaWRlbnRpZnkgdGhlbSB3aXRob3V0IHJlbHlpbmcg b24gZnVuY2lkIGNvbXBhcmlzb25zLgorCQkgKi8KKwkJUlBSTmF2S2luZAlraW5kOworCQlib29s CQloYXNfb2Zmc2V0OworCQlSUFJOYXZFeHByICpuYXZleHByOworCisJCWlmIChmdW5jaWQgPT0g Rl9QUkVWX0FOWUVMRU1FTlQgfHwgZnVuY2lkID09IEZfUFJFVl9BTllFTEVNRU5UX0lOVDgpCisJ CQlraW5kID0gUlBSX05BVl9QUkVWOworCQllbHNlIGlmIChmdW5jaWQgPT0gRl9ORVhUX0FOWUVM RU1FTlQgfHwgZnVuY2lkID09IEZfTkVYVF9BTllFTEVNRU5UX0lOVDgpCisJCQlraW5kID0gUlBS X05BVl9ORVhUOworCQllbHNlIGlmIChmdW5jaWQgPT0gRl9GSVJTVF9BTllFTEVNRU5UIHx8IGZ1 bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlRfSU5UOCkKKwkJCWtpbmQgPSBSUFJfTkFWX0ZJUlNU OworCQllbHNlCisJCQlraW5kID0gUlBSX05BVl9MQVNUOworCisJCWhhc19vZmZzZXQgPSAoZnVu Y2lkID09IEZfUFJFVl9BTllFTEVNRU5UX0lOVDggfHwKKwkJCQkJICBmdW5jaWQgPT0gRl9ORVhU X0FOWUVMRU1FTlRfSU5UOCB8fAorCQkJCQkgIGZ1bmNpZCA9PSBGX0ZJUlNUX0FOWUVMRU1FTlRf SU5UOCB8fAorCQkJCQkgIGZ1bmNpZCA9PSBGX0xBU1RfQU5ZRUxFTUVOVF9JTlQ4KTsKKworCQlu YXZleHByID0gbWFrZU5vZGUoUlBSTmF2RXhwcik7CisKKwkJbmF2ZXhwci0+a2luZCA9IGtpbmQ7 CisJCW5hdmV4cHItPmFyZyA9IChFeHByICopIGxpbml0aWFsKGZhcmdzKTsKKwkJbmF2ZXhwci0+ b2Zmc2V0X2FyZyA9IGhhc19vZmZzZXQgPyAoRXhwciAqKSBsc2Vjb25kKGZhcmdzKSA6IE5VTEw7 CisJCW5hdmV4cHItPnJlc3VsdHR5cGUgPSByZXR0eXBlOworCQkvKiByZXN1bHRjb2xsaWQgd2ls bCBiZSBzZXQgYnkgcGFyc2VfY29sbGF0ZS5jICovCisJCW5hdmV4cHItPmxvY2F0aW9uID0gbG9j YXRpb247CisKKwkJcmV0dmFsID0gKE5vZGUgKikgbmF2ZXhwcjsKKwl9CisJZWxzZSBpZiAoZmRy ZXN1bHQgPT0gRlVOQ0RFVEFJTF9OT1JNQUwgfHwgZmRyZXN1bHQgPT0gRlVOQ0RFVEFJTF9QUk9D RURVUkUpCiAJewogCQlGdW5jRXhwciAgICpmdW5jZXhwciA9IG1ha2VOb2RlKEZ1bmNFeHByKTsK IApAQCAtMjc5MCw2ICsyODcxLDkgQEAgY2hlY2tfc3JmX2NhbGxfcGxhY2VtZW50KFBhcnNlU3Rh dGUgKnBzdGF0ZSwgTm9kZSAqbGFzdF9zcmYsIGludCBsb2NhdGlvbikKIAkJY2FzZSBFWFBSX0tJ TkRfRk9SX1BPUlRJT046CiAJCQllcnIgPSBfKCJzZXQtcmV0dXJuaW5nIGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gRk9SIFBPUlRJT04gT0YgZXhwcmVzc2lvbnMiKTsKIAkJCWJyZWFrOwor CQljYXNlIEVYUFJfS0lORF9SUFJfREVGSU5FOgorCQkJZXJya2luZCA9IHRydWU7CisJCQlicmVh azsKIAogCQkJLyoKIAkJCSAqIFRoZXJlIGlzIGludGVudGlvbmFsbHkgbm8gZGVmYXVsdDogY2Fz ZSBoZXJlLCBzbyB0aGF0IHRoZQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNl X3Jwci5jIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX3Jwci5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zZWFlYTJiZTc1MAotLS0gL2Rldi9udWxsCisrKyBiL3Ny Yy9iYWNrZW5kL3BhcnNlci9wYXJzZV9ycHIuYwpAQCAtMCwwICsxLDY4MSBAQAorLyotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgKgorICogcGFyc2VfcnByLmMKKyAqCSAgSGFuZGxlIFJvdyBQYXR0ZXJuIFJl Y29nbml0aW9uIGNsYXVzZXMgaW4gcGFyc2VyLgorICoKKyAqIFRoaXMgZmlsZSB0cmFuc2Zvcm1z IFJQUi1yZWxhdGVkIGNsYXVzZXMgZnJvbSByYXcgcGFyc2UgdHJlZSB0byBwbGFubmVyCisgKiBz dHJ1Y3R1cmVzIGR1cmluZyBxdWVyeSBhbmFseXNpczoKKyAqICAgLSBWYWxpZGF0ZXMgZnJhbWUg b3B0aW9ucyAobXVzdCBzdGFydCBhdCBDVVJSRU5UIFJPVywgbm8gRVhDTFVERSkKKyAqICAgLSBW YWxpZGF0ZXMgUEFUVEVSTiB2YXJpYWJsZSBjb3VudCAobWF4IFJQUl9WQVJJRF9NQVggKyAxKQor ICogICAtIFRyYW5zZm9ybXMgREVGSU5FIGNsYXVzZQorICogICAtIFN0b3JlcyB0aGUgUEFUVEVS TiBBU1QgYW5kIHRoZSBTS0lQIFRPL0lOSVRJQUwgZmxhZ3MKKyAqCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAK KyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0 eSBvZiBDYWxpZm9ybmlhCisgKgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNr ZW5kL3BhcnNlci9wYXJzZV9ycHIuYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNp bmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAibWlzY2FkbWluLmgiCisjaW5jbHVkZSAi bm9kZXMvbWFrZWZ1bmNzLmgiCisjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVk ZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgIm9wdGltaXplci9ycHIuaCIKKyNp bmNsdWRlICJwYXJzZXIvcGFyc2VfY29lcmNlLmgiCisjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2Nv bGxhdGUuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfZXhwci5oIgorI2luY2x1ZGUgInBhcnNl ci9wYXJzZV9ycHIuaCIKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2VfdGFyZ2V0LmgiCisKKy8qIERF RklORSBjbGF1c2Ugd2Fsa2VyIGNvbnRleHQgLS0gc2VlIGRlZmluZV93YWxrZXIgZm9yIHVzYWdl LiAqLwordHlwZWRlZiBlbnVtCit7CisJREVGSU5FX1BIQVNFX0JPRFksCQkJLyogdG9wLWxldmVs IERFRklORSBleHByZXNzaW9uICovCisJREVGSU5FX1BIQVNFX05BVl9BUkcsCQkvKiBpbnNpZGUg YW4gb3V0ZXIgbmF2J3MgYXJnIHN1YnRyZWUgKi8KKwlERUZJTkVfUEhBU0VfTkFWX09GRlNFVCwJ LyogaW5zaWRlIGFuIG91dGVyIG5hdidzIG9mZnNldF9hcmcgLworCQkJCQkJCQkgKiBjb21wb3Vu ZF9vZmZzZXRfYXJnICovCit9IERlZmluZVBoYXNlOworCit0eXBlZGVmIHN0cnVjdAoreworCVBh cnNlU3RhdGUgKnBzdGF0ZTsKKwlEZWZpbmVQaGFzZSBwaGFzZTsKKwlpbnQJCQluYXZfY291bnQ7 CQkvKiBSUFJOYXZFeHByIG5vZGVzIHNlZW4gaW4gY3VycmVudCBuYXYuYXJnICovCisJYm9vbAkJ aGFzX2NvbHVtbl9yZWY7IC8qIFZhciBzZWVuIGluIGN1cnJlbnQgbmF2IHNjb3BlICovCisJUlBS TmF2S2luZAlpbm5lcl9raW5kOwkJLyoga2luZCBvZiBmaXJzdCBuZXN0ZWQgbmF2IGluIGN1cnJl bnQgYXJnICovCit9IERlZmluZVdhbGtDdHg7CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zICov CitzdGF0aWMgdm9pZCB2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChQYXJzZVN0YXRlICpwc3Rh dGUsIFJQUlBhdHRlcm5Ob2RlICpub2RlLAorCQkJCQkJCQkJICAgTGlzdCAqcnBEZWZzLCBMaXN0 ICoqdmFyTmFtZXMpOworc3RhdGljIExpc3QgKnRyYW5zZm9ybURlZmluZUNsYXVzZShQYXJzZVN0 YXRlICpwc3RhdGUsIFdpbmRvd0NsYXVzZSAqd2MsCisJCQkJCQkJCSAgIFdpbmRvd0RlZiAqd2lu ZGVmLCBMaXN0ICoqdGFyZ2V0bGlzdCk7CitzdGF0aWMgYm9vbCBkZWZpbmVfd2Fsa2VyKE5vZGUg Km5vZGUsIHZvaWQgKmNvbnRleHQpOworCisvKgorICogdHJhbnNmb3JtUlBSCisgKgkJUHJvY2Vz cyBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiByZWxhdGVkIGNsYXVzZXMuCisgKgorICogVmFsaWRh dGVzIGFuZCB0cmFuc2Zvcm1zIFJQUiBjbGF1c2VzIGZyb20gcGFyc2UgdHJlZSB0byBwbGFubmVy IHN0cnVjdHVyZXM6CisgKiAgIC0gVmFsaWRhdGVzIGZyYW1lIG9wdGlvbnMgKG11c3Qgc3RhcnQg YXQgQ1VSUkVOVCBST1csIG5vIEVYQ0xVREUpCisgKiAgIC0gU2V0IEFGVEVSIE1BVENIIFNLSVAg VE8gZmxhZworICogICAtIFNldCBTRUVLL0lOSVRJQUwgZmxhZworICogICAtIFRyYW5zZm9ybXMg REVGSU5FIGNsYXVzZSBpbnRvIFRhcmdldEVudHJ5IGxpc3QKKyAqICAgLSBTdG9yZXMgUEFUVEVS TiBBU1QgZm9yIGRlcGFyc2luZyAob3B0aW1pemF0aW9uIGhhcHBlbnMgaW4gcGxhbm5lcikKKyAq CisgKiBSZXR1cm5zIGVhcmx5IGlmIHdpbmRlZiBoYXMgbm8gcnBDb21tb25TeW50YXggKG5vbi1S UFIgd2luZG93KS4KKyAqLwordm9pZAordHJhbnNmb3JtUlBSKFBhcnNlU3RhdGUgKnBzdGF0ZSwg V2luZG93Q2xhdXNlICp3YywgV2luZG93RGVmICp3aW5kZWYsCisJCQkgTGlzdCAqKnRhcmdldGxp c3QpCit7CisJLyogV2luZG93IGRlZmluaXRpb24gbXVzdCBleGlzdCB3aGVuIGNhbGxlZCAqLwor CUFzc2VydCh3aW5kZWYgIT0gTlVMTCk7CisKKwkvKgorCSAqIFJvdyBQYXR0ZXJuIENvbW1vbiBT eW50YXggY2xhdXNlIGV4aXN0cz8KKwkgKi8KKwlpZiAod2luZGVmLT5ycENvbW1vblN5bnRheCA9 PSBOVUxMKQorCQlyZXR1cm47CisKKwkvKiBDaGVjayBGcmFtZSBvcHRpb25zICovCisKKwkvKiBG cmFtZSB0eXBlIG11c3QgYmUgIlJPVyIgKi8KKwlpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1F T1BUSU9OX0dST1VQUykKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfV0lO RE9XSU5HX0VSUk9SKSwKKwkJCQllcnJtc2coImNhbm5vdCB1c2UgRlJBTUUgb3B0aW9uIEdST1VQ UyB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIiksCisJCQkJZXJyaGludCgiVXNlIFJPV1Mg aW5zdGVhZC4iKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLAorCQkJCQkJCQkgICB3 aW5kZWYtPmZyYW1lTG9jYXRpb24gPj0gMCA/CisJCQkJCQkJCSAgIHdpbmRlZi0+ZnJhbWVMb2Nh dGlvbiA6IHdpbmRlZi0+bG9jYXRpb24pKTsKKwlpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1F T1BUSU9OX1JBTkdFKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9XSU5E T1dJTkdfRVJST1IpLAorCQkJCWVycm1zZygiY2Fubm90IHVzZSBGUkFNRSBvcHRpb24gUkFOR0Ug d2l0aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbiIpLAorCQkJCWVycmhpbnQoIlVzZSBST1dTIGlu c3RlYWQuIiksCisJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwKKwkJCQkJCQkJICAgd2lu ZGVmLT5mcmFtZUxvY2F0aW9uID49IDAgPworCQkJCQkJCQkgICB3aW5kZWYtPmZyYW1lTG9jYXRp b24gOiB3aW5kZWYtPmxvY2F0aW9uKSk7CisKKwkvKiBGcmFtZSBtdXN0IHN0YXJ0IGF0IGN1cnJl bnQgcm93ICovCisJaWYgKCh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fU1RBUlRfQ1VS UkVOVF9ST1cpID09IDApCisJeworCQljb25zdCBjaGFyICpmcmFtZVR5cGUgPSAiUk9XUyI7CisJ CWNvbnN0IGNoYXIgKnN0YXJ0Qm91bmQgPSAidW5rbm93biI7CisKKwkJLyogRGV0ZXJtaW5lIGN1 cnJlbnQgc3RhcnQgYm91bmQgKi8KKwkJaWYgKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElP Tl9TVEFSVF9VTkJPVU5ERURfUFJFQ0VESU5HKQorCQkJc3RhcnRCb3VuZCA9ICJVTkJPVU5ERUQg UFJFQ0VESU5HIjsKKwkJZWxzZSBpZiAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NU QVJUX09GRlNFVF9QUkVDRURJTkcpCisJCQlzdGFydEJvdW5kID0gIm9mZnNldCBQUkVDRURJTkci OworCQllbHNlIGlmICh3Yy0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fU1RBUlRfT0ZGU0VU X0ZPTExPV0lORykKKwkJCXN0YXJ0Qm91bmQgPSAib2Zmc2V0IEZPTExPV0lORyI7CisKKwkJLyog QXQgbGVhc3Qgb25lIHZhbGlkIGZyYW1lIHN0YXJ0IG9wdGlvbiBzaG91bGQgYmUgc2V0ICovCisJ CUFzc2VydCgod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJUX1VOQk9VTkRFRF9Q UkVDRURJTkcpIHx8CisJCQkgICAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX1NUQVJU X09GRlNFVF9QUkVDRURJTkcpIHx8CisJCQkgICAod2MtPmZyYW1lT3B0aW9ucyAmIEZSQU1FT1BU SU9OX1NUQVJUX09GRlNFVF9GT0xMT1dJTkcpKTsKKworCQllcmVwb3J0KEVSUk9SLAorCQkJCWVy cmNvZGUoRVJSQ09ERV9XSU5ET1dJTkdfRVJST1IpLAorCQkJCWVycm1zZygiRlJBTUUgbXVzdCBz dGFydCBhdCBDVVJSRU5UIFJPVyB3aGVuIHVzaW5nIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIiks CisJCQkJZXJyZGV0YWlsKCJDdXJyZW50IGZyYW1lIHN0YXJ0cyB3aXRoICVzLiIsIHN0YXJ0Qm91 bmQpLAorCQkJCWVycmhpbnQoIlVzZTogJXMgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgLi4uIiwg ZnJhbWVUeXBlKSwKKwkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCB3aW5kZWYtPmZyYW1l TG9jYXRpb24gPj0gMCA/IHdpbmRlZi0+ZnJhbWVMb2NhdGlvbiA6IHdpbmRlZi0+bG9jYXRpb24p KTsKKwl9CisKKwkvKiBFWENMVURFIG9wdGlvbnMgYXJlIG5vdCBwZXJtaXR0ZWQgKi8KKwlpZiAo KHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FWENMVVNJT04pICE9IDApCisJeworCQlj b25zdCBjaGFyICpleGNsdWRlVHlwZSA9ICJFWENMVURFIjsKKworCQkvKiBEZXRlcm1pbmUgd2hp Y2ggRVhDTFVERSBvcHRpb24gd2FzIHVzZWQgKi8KKwkJaWYgKHdjLT5mcmFtZU9wdGlvbnMgJiBG UkFNRU9QVElPTl9FWENMVURFX0NVUlJFTlRfUk9XKQorCQkJZXhjbHVkZVR5cGUgPSAiRVhDTFVE RSBDVVJSRU5UIFJPVyI7CisJCWVsc2UgaWYgKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElP Tl9FWENMVURFX0dST1VQKQorCQkJZXhjbHVkZVR5cGUgPSAiRVhDTFVERSBHUk9VUCI7CisJCWVs c2UgaWYgKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FWENMVURFX1RJRVMpCisJCQll eGNsdWRlVHlwZSA9ICJFWENMVURFIFRJRVMiOworCisJCS8qIEF0IGxlYXN0IG9uZSB2YWxpZCBl eGNsdWRlIG9wdGlvbiBzaG91bGQgYmUgc2V0ICovCisJCUFzc2VydCgod2MtPmZyYW1lT3B0aW9u cyAmIEZSQU1FT1BUSU9OX0VYQ0xVREVfQ1VSUkVOVF9ST1cpIHx8CisJCQkgICAod2MtPmZyYW1l T3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xVREVfR1JPVVApIHx8CisJCQkgICAod2MtPmZyYW1l T3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VYQ0xVREVfVElFUykpOworCisJCWVyZXBvcnQoRVJST1Is CisJCQkJZXJyY29kZShFUlJDT0RFX1dJTkRPV0lOR19FUlJPUiksCisJCQkJZXJybXNnKCJjYW5u b3QgdXNlIEVYQ0xVREUgb3B0aW9ucyB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIiksCisJ CQkJZXJyZGV0YWlsKCJGcmFtZSBkZWZpbml0aW9uIGluY2x1ZGVzICVzLiIsIGV4Y2x1ZGVUeXBl KSwKKwkJCQllcnJoaW50KCJSZW1vdmUgdGhlIEVYQ0xVREUgY2xhdXNlIGZyb20gdGhlIHdpbmRv dyBkZWZpbml0aW9uLiIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIHdpbmRlZi0+ ZXhjbHVkZUxvY2F0aW9uID49IDAgPyB3aW5kZWYtPmV4Y2x1ZGVMb2NhdGlvbiA6IHdpbmRlZi0+ bG9jYXRpb24pKTsKKwl9CisKKwkvKgorCSAqIFRoZSBzdGFuZGFyZCBhbGxvd3Mgb25seSBVTkJP VU5ERUQgRk9MTE9XSU5HIG9yIGEgcG9zaXRpdmUgb2Zmc2V0CisJICogRk9MTE9XSU5HIGFzIHRo ZSBmcmFtZSBlbmQuICBUaGUgZXF1aXZhbGVudCAwIEZPTExPV0lORyBzcGVsbGluZyBpcworCSAq IGNhdWdodCBhdCBydW50aW1lIGluIGNhbGN1bGF0ZV9mcmFtZV9vZmZzZXRzKCkuCisJICovCisJ aWYgKHdjLT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FTkRfQ1VSUkVOVF9ST1cpCisJCWVy ZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX1dJTkRPV0lOR19FUlJPUiksCisJCQkJ ZXJybXNnKCJjYW5ub3QgdXNlIENVUlJFTlQgUk9XIGFzIGZyYW1lIGVuZCB3aXRoIHJvdyBwYXR0 ZXJuIHJlY29nbml0aW9uIiksCisJCQkJZXJyaGludCgiVXNlIFVOQk9VTkRFRCBGT0xMT1dJTkcg b3IgYSBwb3NpdGl2ZSBvZmZzZXQgRk9MTE9XSU5HLiIpLAorCQkJCXBhcnNlcl9lcnJwb3NpdGlv bihwc3RhdGUsCisJCQkJCQkJCSAgIHdpbmRlZi0+ZnJhbWVMb2NhdGlvbiA+PSAwID8KKwkJCQkJ CQkJICAgd2luZGVmLT5mcmFtZUxvY2F0aW9uIDogd2luZGVmLT5sb2NhdGlvbikpOworCisJLyog QXNzaWduIEFGVEVSIE1BVENIIFNLSVAgVE8gZmxhZyAqLworCXdjLT5ycFNraXBUbyA9IHdpbmRl Zi0+cnBDb21tb25TeW50YXgtPnJwU2tpcFRvOworCisJLyogQXNzaWduIElOSVRJQUwgZmxhZyAq LworCXdjLT5pbml0aWFsID0gd2luZGVmLT5ycENvbW1vblN5bnRheC0+aW5pdGlhbDsKKworCS8q IFRyYW5zZm9ybSBERUZJTkUgY2xhdXNlIGludG8gbGlzdCBvZiBUYXJnZXRFbnRyeSdzICovCisJ d2MtPmRlZmluZUNsYXVzZSA9IHRyYW5zZm9ybURlZmluZUNsYXVzZShwc3RhdGUsIHdjLCB3aW5k ZWYsIHRhcmdldGxpc3QpOworCisJLyogU3RvcmUgUEFUVEVSTiBBU1QgZm9yIGRlcGFyc2luZyAq LworCXdjLT5ycFBhdHRlcm4gPSB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycFBhdHRlcm47Cit9 CisKKy8qCisgKiB2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudAorICoJCVZhbGlkYXRlIHRoYXQg UEFUVEVSTiB2YXJpYWJsZSBjb3VudCBmaXRzIHRoZSB2YXJJZCByYW5nZS4KKyAqCisgKiBSZWN1 cnNpdmVseSB0cmF2ZXJzZXMgdGhlIHBhdHRlcm4gdHJlZSwgY29sbGVjdGluZyB1bmlxdWUgdmFy aWFibGUgbmFtZXMuCisgKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIG51bWJlciBvZiB1bmlxdWUg dmFyaWFibGVzIHdvdWxkIHJlcXVpcmUgYSB2YXJJZAorICogZ3JlYXRlciB0aGFuIFJQUl9WQVJJ RF9NQVguCisgKgorICogSWYgcnBEZWZzIGlzIG5vbi1OVUxMLCBlYWNoIERFRklORSB2YXJpYWJs ZSBuYW1lIGlzIGFsc28gdmFsaWRhdGVkIGFnYWluc3QKKyAqIHZhck5hbWVzOyBhbnkgREVGSU5F IG5hbWUgbm90IHByZXNlbnQgaW4gUEFUVEVSTiBpcyByZWplY3RlZCB3aXRoIGFuIGVycm9yLgor ICogdmFyTmFtZXMgaXRzZWxmIGlzIG5vdCBleHRlbmRlZCBieSB0aGlzIHN0ZXAgLS0gaXQgY2Fy cmllcyBvbmx5IFBBVFRFUk4KKyAqIHZhcmlhYmxlIG5hbWVzLCB3aGljaCBpcyB3aGF0IHRyYW5z Zm9ybUNvbHVtblJlZiBjaGVja3MgdmlhCisgKiBwX3Jwcl9wYXR0ZXJuX3ZhcnMgdG8gaWRlbnRp ZnkgcGF0dGVybiB2YXJpYWJsZSBxdWFsaWZpZXJzLgorICovCitzdGF0aWMgdm9pZAordmFsaWRh dGVSUFJQYXR0ZXJuVmFyQ291bnQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBSUFJQYXR0ZXJuTm9kZSAq bm9kZSwKKwkJCQkJCSAgIExpc3QgKnJwRGVmcywgTGlzdCAqKnZhck5hbWVzKQoreworCS8qIFBh dHRlcm4gbm9kZSBtdXN0IGV4aXN0IC0gcGFyc2VyIGFsd2F5cyBwcm92aWRlcyBub24tTlVMTCBy b290ICovCisJQXNzZXJ0KG5vZGUgIT0gTlVMTCk7CisKKwkvKgorCSAqIHRyYWlsaW5nX2FsdCBp cyBhIHRyYW5zaWVudCBncmFtbWFyIGZsYWc7IHNwbGl0UlBSVHJhaWxpbmdBbHQgbXVzdCBoYXZl CisJICogY2xlYXJlZCBpdCBvbiBldmVyeSBub2RlIGJlZm9yZSB0aGUgcGF0dGVybiByZWFjaGVz IHBhcnNlIGFuYWx5c2lzLgorCSAqLworCUFzc2VydCghbm9kZS0+dHJhaWxpbmdfYWx0KTsKKwor CWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwlzd2l0Y2ggKG5vZGUtPm5vZGVUeXBlKQorCXsKKwkJ Y2FzZSBSUFJfUEFUVEVSTl9WQVI6CisJCQkvKiBBZGQgdmFyaWFibGUgbmFtZSBpZiBub3QgYWxy ZWFkeSBpbiBsaXN0ICovCisJCQl7CisJCQkJYm9vbAkJZm91bmQgPSBmYWxzZTsKKworCQkJCWZv cmVhY2hfbm9kZShTdHJpbmcsIHZhcm5hbWUsICp2YXJOYW1lcykKKwkJCQl7CisJCQkJCWlmIChz dHJjbXAoc3RyVmFsKHZhcm5hbWUpLCBub2RlLT52YXJOYW1lKSA9PSAwKQorCQkJCQl7CisJCQkJ CQlmb3VuZCA9IHRydWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCQlpZiAoIWZv dW5kKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogQ2hlY2sgYWdhaW5zdCBSUFJfVkFSSURfTUFY IGJlZm9yZSBhZGRpbmcuICB2YXJJZAorCQkJCQkgKiB2YWx1ZXMgcnVuIDAgdG8gUlBSX1ZBUklE X01BWCBpbmNsdXNpdmUsIHNvIHRoZSBuZXh0CisJCQkJCSAqIHZhcklkIHRvIGJlIGFzc2lnbmVk ICh0aGUgY3VycmVudCBsaXN0IGxlbmd0aCkgbXVzdCBub3QKKwkJCQkJICogZXhjZWVkIGl0Lgor CQkJCQkgKi8KKwkJCQkJaWYgKGxpc3RfbGVuZ3RoKCp2YXJOYW1lcykgPiBSUFJfVkFSSURfTUFY KQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1BST0dSQU1f TElNSVRfRVhDRUVERUQpLAorCQkJCQkJCQllcnJtc2coInRvbyBtYW55IHBhdHRlcm4gdmFyaWFi bGVzIiksCisJCQkJCQkJCWVycmRldGFpbCgiTWF4aW11bSBpcyAlZC4iLCBSUFJfVkFSSURfTUFY ICsgMSksCisJCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsCisJCQkJCQkJCQkJCQkg ICBleHByTG9jYXRpb24oKE5vZGUgKikgbm9kZSkpKTsKKworCQkJCQkqdmFyTmFtZXMgPSBsYXBw ZW5kKCp2YXJOYW1lcywgbWFrZVN0cmluZyhwc3RyZHVwKG5vZGUtPnZhck5hbWUpKSk7CisJCQkJ fQorCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfUEFUVEVSTl9TRVE6CisJCWNhc2UgUlBS X1BBVFRFUk5fQUxUOgorCQljYXNlIFJQUl9QQVRURVJOX0dST1VQOgorCQkJLyogUmVjdXJzZSBp bnRvIGNoaWxkcmVuICovCisJCQlmb3JlYWNoX25vZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkLCBu b2RlLT5jaGlsZHJlbikKKwkJCXsKKwkJCQl2YWxpZGF0ZVJQUlBhdHRlcm5WYXJDb3VudChwc3Rh dGUsIGNoaWxkLCBOVUxMLCB2YXJOYW1lcyk7CisJCQl9CisJCQlicmVhazsKKwl9CisKKwkvKgor CSAqIEFmdGVyIHRoZSB0b3AtbGV2ZWwgY2FsbCwgdmFsaWRhdGUgdGhhdCBldmVyeSBERUZJTkUg dmFyaWFibGUgbmFtZSBpcworCSAqIHByZXNlbnQgaW4gdGhlIFBBVFRFUk4gdmFyaWFibGUgbGlz dDsgcmVqZWN0IG5hbWVzIG5vdCB1c2VkIGluIFBBVFRFUk4uCisJICogVGhpcyBpcyBvbmx5IGRv bmUgb25jZSBhdCB0aGUgb3V0ZXJtb3N0IHJlY3Vyc2lvbiBsZXZlbCwgZGV0ZWN0ZWQgYnkKKwkg KiBycERlZnMgYmVpbmcgbm9uLU5VTEwgKHJlY3Vyc2l2ZSBjYWxscyBwYXNzIE5VTEwpLgorCSAq LworCWlmIChycERlZnMpCisJeworCQlmb3JlYWNoX25vZGUoUmVzVGFyZ2V0LCBydCwgcnBEZWZz KQorCQl7CisJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCQlmb3JlYWNoX25vZGUoU3RyaW5n LCB2YXJuYW1lLCAqdmFyTmFtZXMpCisJCQl7CisJCQkJaWYgKHN0cmNtcChzdHJWYWwodmFybmFt ZSksIHJ0LT5uYW1lKSA9PSAwKQorCQkJCXsKKwkJCQkJZm91bmQgPSB0cnVlOworCQkJCQlicmVh azsKKwkJCQl9CisJCQl9CisJCQlpZiAoIWZvdW5kKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJ CQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiREVGSU5FIHZh cmlhYmxlIFwiJXNcIiBpcyBub3QgdXNlZCBpbiBQQVRURVJOIiwKKwkJCQkJCQkgICBydC0+bmFt ZSksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBydC0+bG9jYXRpb24pKTsKKwkJ fQorCX0KK30KKworLyoKKyAqIHRyYW5zZm9ybURlZmluZUNsYXVzZQorICoJCVByb2Nlc3MgREVG SU5FIGNsYXVzZSBhbmQgdHJhbnNmb3JtIFJlc1RhcmdldCBpbnRvIGxpc3Qgb2YgVGFyZ2V0RW50 cnkuCisgKgorICogRmlyc3Q6CisgKiAgIDEuIFZhbGlkYXRlcyBQQVRURVJOIHZhcmlhYmxlIGNv dW50IGFuZCBjb2xsZWN0cyBSUFIgdmFyaWFibGUgbmFtZXMKKyAqCisgKiBUaGVuIGZvciBlYWNo IERFRklORSB2YXJpYWJsZToKKyAqICAgMi4gQ2hlY2tzIGZvciBkdXBsaWNhdGUgdmFyaWFibGUg bmFtZXMgaW4gREVGSU5FIGNsYXVzZQorICogICAzLiBUcmFuc2Zvcm1zIGV4cHJlc3Npb24gdmlh IHRyYW5zZm9ybUV4cHIoKSBhbmQgZW5zdXJlcyByZWZlcmVuY2VkCisgKiAgICAgIFZhciBub2Rl cyBhcmUgcHJlc2VudCBpbiB0aGUgcXVlcnkgdGFyZ2V0bGlzdCAodmlhIHB1bGxfdmFyX2NsYXVz ZSkKKyAqICAgNC4gQ3JlYXRlcyBkZWZpbmVDbGF1c2UgZW50cnkgd2l0aCBwcm9wZXIgcmVzbmFt ZSAocGF0dGVybiB2YXJpYWJsZSBuYW1lKQorICogICA1LiBDb2VyY2VzIGV4cHJlc3Npb25zIHRv IGJvb2xlYW4gdHlwZQorICogICA2LiBNYXJrcyBjb2x1bW4gb3JpZ2lucyBhbmQgYXNzaWducyBj b2xsYXRpb24gaW5mb3JtYXRpb24KKyAqCisgKiBOb3RlOiBWYXJpYWJsZXMgbm90IGluIERFRklO RSBhcmUgZXZhbHVhdGVkIGFzIFRSVUUgYnkgdGhlIGV4ZWN1dG9yLgorICogVmFyaWFibGVzIGlu IERFRklORSBidXQgbm90IGluIFBBVFRFUk4gYXJlIHJlamVjdGVkIGFzIGFuIGVycm9yLgorICoK KyAqIFhYWCBQYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9ucyBpbiBERUZJTkUg KGUuZy4gIkEucHJpY2UiKQorICogYXJlIG5vdCB5ZXQgc3VwcG9ydGVkLiAgQ3VycmVudGx5IHJl amVjdGVkIGJ5IHRyYW5zZm9ybUNvbHVtblJlZiBpbgorICogcGFyc2VfZXhwci5jIHZpYSB0aGUg cF9ycHJfcGF0dGVybl92YXJzIGNoZWNrLgorICovCitzdGF0aWMgTGlzdCAqCit0cmFuc2Zvcm1E ZWZpbmVDbGF1c2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLCBXaW5kb3dE ZWYgKndpbmRlZiwKKwkJCQkJICBMaXN0ICoqdGFyZ2V0bGlzdCkKK3sKKwlMaXN0CSAgICpyZXN0 YXJnZXRzOworCUxpc3QJICAgKmRlZmluZUNsYXVzZSA9IE5JTDsKKwljaGFyCSAgICpuYW1lOwor CUxpc3QJICAgKnBhdHRlcm5WYXJOYW1lcyA9IE5JTDsKKworCS8qCisJICogSWYgUm93IERlZmlu aXRpb24gQ29tbW9uIFN5bnRheCBleGlzdHMsIERFRklORSBjbGF1c2UgbXVzdCBleGlzdC4gKHRo ZQorCSAqIHJhdyBwYXJzZXIgc2hvdWxkIGhhdmUgYWxyZWFkeSBjaGVja2VkIGl0LikKKwkgKi8K KwlBc3NlcnQod2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBEZWZzICE9IE5VTEwpOworCisJLyoK KwkgKiBWYWxpZGF0ZSBQQVRURVJOIHZhcmlhYmxlIGNvdW50LCByZWplY3QgREVGSU5FIHZhcmlh YmxlcyBub3QgdXNlZCBpbgorCSAqIFBBVFRFUk4sIGFuZCBjb2xsZWN0IFBBVFRFUk4gdmFyaWFi bGUgbmFtZXMgZm9yIHRyYW5zZm9ybUNvbHVtblJlZi4KKwkgKi8KKwl2YWxpZGF0ZVJQUlBhdHRl cm5WYXJDb3VudChwc3RhdGUsIHdpbmRlZi0+cnBDb21tb25TeW50YXgtPnJwUGF0dGVybiwKKwkJ CQkJCQkgICB3aW5kZWYtPnJwQ29tbW9uU3ludGF4LT5ycERlZnMsCisJCQkJCQkJICAgJnBhdHRl cm5WYXJOYW1lcyk7CisJcHN0YXRlLT5wX3Jwcl9wYXR0ZXJuX3ZhcnMgPSBwYXR0ZXJuVmFyTmFt ZXM7CisKKwkvKgorCSAqIENoZWNrIGZvciBkdXBsaWNhdGUgcm93IHBhdHRlcm4gZGVmaW5pdGlv biB2YXJpYWJsZXMuICBUaGUgc3RhbmRhcmQKKwkgKiByZXF1aXJlcyB0aGF0IG5vIHR3byByb3cg cGF0dGVybiBkZWZpbml0aW9uIHZhcmlhYmxlIG5hbWVzIHNoYWxsIGJlCisJICogZXF1aXZhbGVu dC4KKwkgKi8KKwlyZXN0YXJnZXRzID0gTklMOworCWZvcmVhY2hfbm9kZShSZXNUYXJnZXQsIHJl c3RhcmdldCwgd2luZGVmLT5ycENvbW1vblN5bnRheC0+cnBEZWZzKQorCXsKKwkJVGFyZ2V0RW50 cnkgKnRlRGVmaW5lOworCisJCW5hbWUgPSByZXN0YXJnZXQtPm5hbWU7CisKKwkJZm9yZWFjaF9u b2RlKFJlc1RhcmdldCwgciwgcmVzdGFyZ2V0cykKKwkJeworCQkJY2hhcgkgICAqbjsKKworCQkJ biA9IHItPm5hbWU7CisKKwkJCWlmICghc3RyY21wKG4sIG5hbWUpKQorCQkJCWVyZXBvcnQoRVJS T1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygi REVGSU5FIHZhcmlhYmxlIFwiJXNcIiBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIiwKKwkJCQkJCQkg ICBuYW1lKSwKKwkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihwc3RhdGUsIGV4cHJMb2NhdGlvbigo Tm9kZSAqKSByKSkpOworCQl9CisKKwkJcmVzdGFyZ2V0cyA9IGxhcHBlbmQocmVzdGFyZ2V0cywg cmVzdGFyZ2V0KTsKKworCQkvKgorCQkgKiBUcmFuc2Zvcm0gdGhlIERFRklORSBleHByZXNzaW9u LiAgV2UgbXVzdCBOT1QgYWRkIHRoZSB3aG9sZQorCQkgKiBleHByZXNzaW9uIHRvIHRoZSBxdWVy eSB0YXJnZXRsaXN0LCBiZWNhdXNlIGl0IG1heSBjb250YWluCisJCSAqIFJQUk5hdkV4cHIgbm9k ZXMgKFBSRVYvTkVYVC9GSVJTVC9MQVNUKSB0aGF0IGNhbiBvbmx5IGJlIGV2YWx1YXRlZAorCQkg KiBpbnNpZGUgdGhlIG93bmluZyBXaW5kb3dBZ2cuCisJCSAqCisJCSAqIEluc3RlYWQsIHdlIHRy YW5zZm9ybSB0aGUgZXhwcmVzc2lvbiBkaXJlY3RseSBhbmQgb25seSBlbnN1cmUgdGhhdAorCQkg KiB0aGUgaW5kaXZpZHVhbCBWYXIgbm9kZXMgaXQgcmVmZXJlbmNlcyBhcmUgcHJlc2VudCBpbiB0 aGUKKwkJICogdGFyZ2V0bGlzdCwgc28gdGhlIHBsYW5uZXIgY2FuIHByb3BhZ2F0ZSB0aGUgcmVm ZXJlbmNlZCBjb2x1bW5zLgorCQkgKi8KKwkJeworCQkJTm9kZQkgICAqZXhwcjsKKwkJCUxpc3QJ ICAgKnZhcnM7CisKKwkJCWV4cHIgPSB0cmFuc2Zvcm1FeHByKHBzdGF0ZSwgcmVzdGFyZ2V0LT52 YWwsCisJCQkJCQkJCSBFWFBSX0tJTkRfUlBSX0RFRklORSk7CisKKwkJCS8qCisJCQkgKiBQdWxs IG91dCBWYXIgbm9kZXMgZnJvbSB0aGUgdHJhbnNmb3JtZWQgZXhwcmVzc2lvbiBhbmQgZW5zdXJl CisJCQkgKiBlYWNoIG9uZSBpcyBwcmVzZW50IGluIHRoZSB0YXJnZXRsaXN0LiAgVGhpcyBpcyBu ZWVkZWQgc28gdGhlCisJCQkgKiBwbGFubmVyIHByb3BhZ2F0ZXMgdGhlIHJlZmVyZW5jZWQgY29s dW1ucyB0aHJvdWdoIHRoZSBwbGFuCisJCQkgKiB0cmVlLCBtYWtpbmcgdGhlbSBhdmFpbGFibGUg dG8gdGhlIFdpbmRvd0FnZydzIERFRklORQorCQkJICogZXZhbHVhdGlvbi4KKwkJCSAqLworCQkJ dmFycyA9IHB1bGxfdmFyX2NsYXVzZShleHByLCAwKTsKKwkJCWZvcmVhY2hfbm9kZShWYXIsIHZh ciwgdmFycykKKwkJCXsKKwkJCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCQkJZm9yZWFjaF9u b2RlKFRhcmdldEVudHJ5LCB0bGUsICp0YXJnZXRsaXN0KQorCQkJCXsKKwkJCQkJaWYgKElzQSh0 bGUtPmV4cHIsIFZhcikgJiYKKwkJCQkJCSgoVmFyICopIHRsZS0+ZXhwciktPnZhcm5vID09IHZh ci0+dmFybm8gJiYKKwkJCQkJCSgoVmFyICopIHRsZS0+ZXhwciktPnZhcmF0dG5vID09IHZhci0+ dmFyYXR0bm8pCisJCQkJCXsKKwkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCWJyZWFrOworCQkJ CQl9CisJCQkJfQorCQkJCWlmICghZm91bmQpCisJCQkJeworCQkJCQlUYXJnZXRFbnRyeSAqbmV3 dGxlOworCisJCQkJCW5ld3RsZSA9IG1ha2VUYXJnZXRFbnRyeSgoRXhwciAqKSBjb3B5T2JqZWN0 KHZhciksCisJCQkJCQkJCQkJCSBsaXN0X2xlbmd0aCgqdGFyZ2V0bGlzdCkgKyAxLAorCQkJCQkJ CQkJCQkgTlVMTCwKKwkJCQkJCQkJCQkJIHRydWUpOworCQkJCQkqdGFyZ2V0bGlzdCA9IGxhcHBl bmQoKnRhcmdldGxpc3QsIG5ld3RsZSk7CisJCQkJfQorCQkJfQorCQkJbGlzdF9mcmVlKHZhcnMp OworCisJCQkvKiBCdWlsZCB0aGUgZGVmaW5lQ2xhdXNlIGVudHJ5IGRpcmVjdGx5IGZyb20gdGhl IHRyYW5zZm9ybWVkIGV4cHIgKi8KKwkJCXRlRGVmaW5lID0gbWFrZVRhcmdldEVudHJ5KChFeHBy ICopIGV4cHIsCisJCQkJCQkJCQkgICBsaXN0X2xlbmd0aChkZWZpbmVDbGF1c2UpICsgMSwKKwkJ CQkJCQkJCSAgIHBzdHJkdXAobmFtZSksCisJCQkJCQkJCQkgICB0cnVlKTsKKwkJfQorCisJCS8q IGJ1aWxkIHRyYW5zZm9ybWVkIERFRklORSBjbGF1c2UgKGxpc3Qgb2YgVGFyZ2V0RW50cnkpICov CisJCWRlZmluZUNsYXVzZSA9IGxhcHBlbmQoZGVmaW5lQ2xhdXNlLCB0ZURlZmluZSk7CisJfQor CWxpc3RfZnJlZShyZXN0YXJnZXRzKTsKKwlwc3RhdGUtPnBfcnByX3BhdHRlcm5fdmFycyA9IE5J TDsKKworCS8qCisJICogTWFrZSBzdXJlIHRoYXQgdGhlIHJvdyBwYXR0ZXJuIGRlZmluaXRpb24g c2VhcmNoIGNvbmRpdGlvbiBpcyBhIGJvb2xlYW4KKwkgKiBleHByZXNzaW9uLgorCSAqLworCWZv cmVhY2hfcHRyKFRhcmdldEVudHJ5LCB0ZSwgZGVmaW5lQ2xhdXNlKQorCQl0ZS0+ZXhwciA9IChF eHByICopIGNvZXJjZV90b19ib29sZWFuKHBzdGF0ZSwgKE5vZGUgKikgdGUtPmV4cHIsICJERUZJ TkUiKTsKKworCS8qCisJICogVmFsaWRhdGUgREVGSU5FIGV4cHJlc3Npb25zOiBuZXN0ZWQgUFJF Vi9ORVhULCBjb2x1bW4gcmVmZXJlbmNlcywKKwkgKiBjb21wb3VuZCBmbGF0dGVuLCB2b2xhdGls ZSBjYWxsZWVzIC0tIGFsbCBpbiBhIHNpbmdsZSB3YWxrIHBlcgorCSAqIHZhcmlhYmxlLgorCSAq LworCWZvcmVhY2hfcHRyKFRhcmdldEVudHJ5LCB0ZSwgZGVmaW5lQ2xhdXNlKQorCXsKKwkJRGVm aW5lV2Fsa0N0eCBjdHg7CisKKwkJY3R4LnBzdGF0ZSA9IHBzdGF0ZTsKKwkJY3R4LnBoYXNlID0g REVGSU5FX1BIQVNFX0JPRFk7CisJCWN0eC5uYXZfY291bnQgPSAwOworCQljdHguaGFzX2NvbHVt bl9yZWYgPSBmYWxzZTsKKwkJY3R4LmlubmVyX2tpbmQgPSAwOworCQkodm9pZCkgZGVmaW5lX3dh bGtlcigoTm9kZSAqKSB0ZS0+ZXhwciwgJmN0eCk7CisJfQorCisJLyogbWFyayBjb2x1bW4gb3Jp Z2lucyAqLworCW1hcmtUYXJnZXRMaXN0T3JpZ2lucyhwc3RhdGUsIGRlZmluZUNsYXVzZSk7CisK KwkvKiBtYXJrIGFsbCBub2RlcyBpbiB0aGUgREVGSU5FIGNsYXVzZSB0cmVlIHdpdGggY29sbGF0 aW9uIGluZm9ybWF0aW9uICovCisJYXNzaWduX2V4cHJfY29sbGF0aW9ucyhwc3RhdGUsIChOb2Rl ICopIGRlZmluZUNsYXVzZSk7CisKKwlyZXR1cm4gZGVmaW5lQ2xhdXNlOworfQorCisvKgorICog U2luZ2xlLXBhc3MgREVGSU5FIGNsYXVzZSB2YWxpZGF0b3IuCisgKgorICogT25lIHdhbGtlciBm dW5jdGlvbiAoZGVmaW5lX3dhbGtlcikgdmlzaXRzIGV2ZXJ5IG5vZGUgaW4gYSBERUZJTkUKKyAq IGV4cHJlc3Npb24gZXhhY3RseSBvbmNlIGFuZCBlbmZvcmNlcyBldmVyeSBydWxlOgorICogICAt IEZvciBlYWNoIG91dGVyIFJQUk5hdkV4cHIgKHBlciBJU08vSUVDIDE5MDc1LTUgNS42LjQgbmVz dGluZyBydWxlcyk6CisgKiAgICAgKiBhcmcgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjb2x1 bW4gcmVmZXJlbmNlCisgKiAgICAgKiBQUkVWL05FWFQgd3JhcHBpbmcgRklSU1QvTEFTVCBmbGF0 dGVucyB0byBhIGNvbXBvdW5kIGtpbmQKKyAqICAgICAqIE90aGVyIG5lc3RpbmdzIGFyZSByZWpl Y3RlZCAoRklSU1QoUFJFVigpKSwgUFJFVihQUkVWKCkpLCAuLi4pCisgKiAgICAgKiBvZmZzZXRf YXJnIC8gY29tcG91bmRfb2Zmc2V0X2FyZyBtdXN0IG5vdCBjb250YWluIGNvbHVtbiByZWZzCisg KgorICogVm9sYXRpbGUgY2FsbGVlcyAoYW5kIHNlcXVlbmNlIG9wZXJhdGlvbnMpIGFyZSByZWpl Y3RlZCBsYXRlciBpbiB0aGUKKyAqIHBsYW5uZXIgdmlhIHZhbGlkYXRlX3Jwcl9kZWZpbmVfdm9s YXRpbGl0eSgpOyBzZWUgb3B0aW1pemVyL3BsYW4vcnByLmMuCisgKgorICogVGhlIHdhbGtlciB1 c2VzIGEgcGhhc2UgdGFnIHRvIGtub3cgd2hpY2ggc3VidHJlZSBpdCBpcyBpbjogREVGSU5FCisg KiBib2R5ICh0b3AtbGV2ZWwpLCBpbnNpZGUgYSBuYXYuYXJnLCBvciBpbnNpZGUgYSBuYXYub2Zm c2V0X2FyZyAvCisgKiBjb21wb3VuZF9vZmZzZXRfYXJnLiAgV2hlbiBlbnRlcmluZyBhbiBvdXRl ciBuYXYgKFBIQVNFX0JPRFkpLCBpdAorICogd2Fsa3MgbmF2LmFyZyBpbiBQSEFTRV9OQVZfQVJH IHRvIGNvbGxlY3QgbmVzdGluZy9jb2x1bW4tcmVmIHN0YXRlLAorICogYXBwbGllcyBjb21wb3Vu ZCBmbGF0dGVuIG9yIHJhaXNlcyBhIG5lc3RpbmcgZXJyb3IsIHRoZW4gd2Fsa3MgdGhlCisgKiAo cG9zdC1mbGF0dGVuKSBvZmZzZXQocykgaW4gUEhBU0VfTkFWX09GRlNFVCB0byBlbmZvcmNlIHRo ZQorICogY29uc3RhbnQtb2Zmc2V0IHJ1bGUuICBObyBzdWJ0cmVlIGlzIHdhbGtlZCB0d2ljZS4K KyAqLworCisvKgorICogZGVmaW5lX3dhbGtlcgorICoJCVNpbmdsZS1wYXNzIERFRklORSBjbGF1 c2UgdmFsaWRhdG9yLiAgQXQgZWFjaCBub2RlLCBlbmZvcmNlczoKKyAqCisgKgkJICBbMV0gZm9y IGVhY2ggb3V0ZXIgUlBSTmF2RXhwciAoUEhBU0VfQk9EWSAtPiBQSEFTRV9OQVZfQVJHKToKKyAq CQkJICAtIG5hdi5hcmcgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNl CisgKgkJCSAgLSBQUkVWL05FWFQgd3JhcHBpbmcgRklSU1QvTEFTVCBpcyBmbGF0dGVuZWQgaW4g cGxhY2UKKyAqCQkJCXRvIGEgY29tcG91bmQga2luZCAoUFJFVl9GSVJTVCwgUFJFVl9MQVNULCBO RVhUX0ZJUlNULAorICoJCQkJTkVYVF9MQVNUKQorICoJCQkgIC0gYW55IG90aGVyIG5lc3Rpbmcg aXMgcmVqZWN0ZWQgKEZJUlNUKFBSRVYoKSksCisgKgkJCQlQUkVWKFBSRVYoKSksIEZJUlNUKEZJ UlNUKCkpLCB0aHJlZS1vci1tb3JlIGRlZXApCisgKgkJICBbMl0gZm9yIGVhY2ggbmF2IG9mZnNl dCAoUEhBU0VfTkFWX09GRlNFVCk6CisgKgkJCSAgLSBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3Rh bnQgKG5vIGNvbHVtbiByZWZlcmVuY2VzKQorICoKKyAqIFZhciBzaWdodGluZ3MgZmVlZCB0aGUg Y29sdW1uLXJlZiBydWxlIGZvciB0aGUgZW5jbG9zaW5nIG5hdiBzY29wZTsKKyAqIFJQUk5hdkV4 cHIgc2lnaHRpbmdzIGluc2lkZSBQSEFTRV9OQVZfQVJHIGZlZWQgdGhlIG5lc3RpbmcgZGVjaXNp b24uCisgKiBTZWUgdGhlIGNvbW1lbnQgYmxvY2sgYWJvdmUgRGVmaW5lUGhhc2UgZm9yIHRoZSBv dmVyYWxsIGRlc2lnbiBhbmQKKyAqIGhvdyBlYWNoIHN1YnRyZWUgaXMgd2Fsa2VkIGV4YWN0bHkg b25jZS4KKyAqLworc3RhdGljIGJvb2wKK2RlZmluZV93YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAq Y29udGV4dCkKK3sKKwlEZWZpbmVXYWxrQ3R4ICpjdHggPSAoRGVmaW5lV2Fsa0N0eCAqKSBjb250 ZXh0OworCisJaWYgKG5vZGUgPT0gTlVMTCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogVmFyIHNp Z2h0aW5nIGZlZWRzIHRoZSBjb2x1bW4tcmVmIHJ1bGUgZm9yIHRoZSBlbmNsb3NpbmcgbmF2IHNj b3BlLiAqLworCWlmIChJc0Eobm9kZSwgVmFyKSAmJgorCQkoY3R4LT5waGFzZSA9PSBERUZJTkVf UEhBU0VfTkFWX0FSRyB8fAorCQkgY3R4LT5waGFzZSA9PSBERUZJTkVfUEhBU0VfTkFWX09GRlNF VCkpCisJCWN0eC0+aGFzX2NvbHVtbl9yZWYgPSB0cnVlOworCisJaWYgKElzQShub2RlLCBSUFJO YXZFeHByKSkKKwl7CisJCVJQUk5hdkV4cHIgKm5hdiA9IChSUFJOYXZFeHByICopIG5vZGU7CisK KwkJaWYgKGN0eC0+cGhhc2UgPT0gREVGSU5FX1BIQVNFX05BVl9BUkcpCisJCXsKKwkJCS8qCisJ CQkgKiBOZXN0ZWQgbmF2IGluc2lkZSBhbiBvdXRlciBuYXYuYXJnOiByZWNvcmQgZm9yIHRoZSBv dXRlcidzCisJCQkgKiBjb21wb3VuZCAvIG5lc3RpbmcgZGVjaXNpb24sIHRoZW4ga2VlcCByZWN1 cnNpbmcgc28gZGVlcGVyIFZhcnMKKwkJCSAqIGFuZCB2b2xhdGlsZSBjYWxsZWVzIGFyZSBzdGls bCBvYnNlcnZlZC4KKwkJCSAqLworCQkJaWYgKGN0eC0+bmF2X2NvdW50ID09IDApCisJCQkJY3R4 LT5pbm5lcl9raW5kID0gbmF2LT5raW5kOworCQkJY3R4LT5uYXZfY291bnQrKzsKKwkJCXJldHVy biBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGRlZmluZV93YWxrZXIsIGN0eCk7CisJCX0K KworCQlpZiAoY3R4LT5waGFzZSA9PSBERUZJTkVfUEhBU0VfTkFWX09GRlNFVCkKKwkJeworCQkJ LyoKKwkJCSAqIE5hdnMgaW5zaWRlIG9mZnNldF9hcmcgYXJlIHVudXN1YWwgYnV0IG5vdCBkaXJl Y3RseSBiYW5uZWQ7IHRoZQorCQkJICogY29uc3RhbnQtb2Zmc2V0IHJ1bGUgd2lsbCBjYXRjaCBh bnkgVmFyIG9yIHZvbGF0aWxlIHRoZXkKKwkJCSAqIGNvbnRhaW4uCisJCQkgKi8KKwkJCXJldHVy biBleHByZXNzaW9uX3RyZWVfd2Fsa2VyKG5vZGUsIGRlZmluZV93YWxrZXIsIGN0eCk7CisJCX0K KworCQkvKgorCQkgKiBQSEFTRV9CT0RZOiB0aGlzIGlzIGFuIG91dGVyIG5hdiBhdCB0b3AgbGV2 ZWwuICBXYWxrIGFyZyBmaXJzdCB0bworCQkgKiBjb2xsZWN0IG5lc3RpbmcgLyBjb2x1bW4tcmVm IHN0YXRlLCB0aGVuIHZhbGlkYXRlIGFuZCAoZm9yIGNvbXBvdW5kCisJCSAqIGZvcm1zKSBmbGF0 dGVuLCB0aGVuIHdhbGsgb2Zmc2V0KHMpLgorCQkgKi8KKwkJeworCQkJRGVmaW5lV2Fsa0N0eCBz YXZlZCA9ICpjdHg7CisJCQlib29sCQlvdXRlcl9waHlzID0gKG5hdi0+a2luZCA9PSBSUFJfTkFW X1BSRVYgfHwKKwkJCQkJCQkJCSAgbmF2LT5raW5kID09IFJQUl9OQVZfTkVYVCk7CisJCQlib29s CQlmbGF0dGVuZWQgPSBmYWxzZTsKKworCQkJY3R4LT5waGFzZSA9IERFRklORV9QSEFTRV9OQVZf QVJHOworCQkJY3R4LT5uYXZfY291bnQgPSAwOworCQkJY3R4LT5oYXNfY29sdW1uX3JlZiA9IGZh bHNlOworCQkJY3R4LT5pbm5lcl9raW5kID0gMDsKKwkJCSh2b2lkKSBkZWZpbmVfd2Fsa2VyKChO b2RlICopIG5hdi0+YXJnLCBjdHgpOworCisJCQlpZiAoY3R4LT5uYXZfY291bnQgPiAwKQorCQkJ eworCQkJCWJvb2wJCWlubmVyX3BoeXMgPSAoY3R4LT5pbm5lcl9raW5kID09IFJQUl9OQVZfUFJF ViB8fAorCQkJCQkJCQkJCSAgY3R4LT5pbm5lcl9raW5kID09IFJQUl9OQVZfTkVYVCk7CisKKwkJ CQlpZiAob3V0ZXJfcGh5cyAmJiAhaW5uZXJfcGh5cykKKwkJCQl7CisJCQkJCVJQUk5hdkV4cHIg KmlubmVyOworCisJCQkJCS8qIFJlamVjdCB0cmlwbGUtb3ItZGVlcGVyIG5lc3RpbmcgKi8KKwkJ CQkJaWYgKGN0eC0+bmF2X2NvdW50ID4gMSkKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ CWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJST1IpLAorCQkJCQkJCQllcnJtc2coImNhbm5vdCBu ZXN0IHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gbW9yZSB0aGFuIHR3byBsZXZlbHMgZGVlcCIpLAor CQkJCQkJCQllcnJoaW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChG SVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwK KwkJCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSk7 CisKKwkJCQkJaWYgKCFJc0EobmF2LT5hcmcsIFJQUk5hdkV4cHIpKQorCQkJCQkJZXJlcG9ydChF UlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJCWVy cm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBiZSBhIGRpcmVjdCBh cmd1bWVudCBvZiB0aGUgb3V0ZXIgbmF2aWdhdGlvbiIpLAorCQkJCQkJCQllcnJoaW50KCJPbmx5 IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFT VCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSk7CisKKwkJCQkJaW5uZXIgPSAoUlBS TmF2RXhwciAqKSBuYXYtPmFyZzsKKworCQkJCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJF ViAmJiBpbm5lci0+a2luZCA9PSBSUFJfTkFWX0ZJUlNUKQorCQkJCQkJbmF2LT5raW5kID0gUlBS X05BVl9QUkVWX0ZJUlNUOworCQkJCQllbHNlIGlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9QUkVW ICYmIGlubmVyLT5raW5kID09IFJQUl9OQVZfTEFTVCkKKwkJCQkJCW5hdi0+a2luZCA9IFJQUl9O QVZfUFJFVl9MQVNUOworCQkJCQllbHNlIGlmIChuYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUICYm IGlubmVyLT5raW5kID09IFJQUl9OQVZfRklSU1QpCisJCQkJCQluYXYtPmtpbmQgPSBSUFJfTkFW X05FWFRfRklSU1Q7CisJCQkJCWVsc2UgaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFQgJiYg aW5uZXItPmtpbmQgPT0gUlBSX05BVl9MQVNUKQorCQkJCQkJbmF2LT5raW5kID0gUlBSX05BVl9O RVhUX0xBU1Q7CisKKwkJCQkJbmF2LT5jb21wb3VuZF9vZmZzZXRfYXJnID0gbmF2LT5vZmZzZXRf YXJnOworCQkJCQluYXYtPm9mZnNldF9hcmcgPSBpbm5lci0+b2Zmc2V0X2FyZzsKKwkJCQkJbmF2 LT5hcmcgPSBpbm5lci0+YXJnOworCQkJCQlmbGF0dGVuZWQgPSB0cnVlOworCisJCQkJCS8qCisJ CQkJCSAqIFRoZSBmbGF0dGVuZWQgYXJndW1lbnQgbXVzdCBpbmNsdWRlIGEgY29sdW1uIHJlZmVy ZW5jZSwKKwkJCQkJICoganVzdCBsaWtlIHRoZSBzaW1wbGUtbmF2IGNhc2UgYmVsb3cuCisJCQkJ CSAqLworCQkJCQlpZiAoIWN0eC0+aGFzX2NvbHVtbl9yZWYpCisJCQkJCQllcmVwb3J0KEVSUk9S LAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQkJZXJybXNn KCJhcmd1bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1 ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UiKSwKKwkJCQkJCQkJcGFyc2VyX2VycnBv c2l0aW9uKGN0eC0+cHN0YXRlLCBuYXYtPmxvY2F0aW9uKSk7CisJCQkJfQorCQkJCWVsc2UgaWYg KCFvdXRlcl9waHlzICYmIGlubmVyX3BoeXMpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJ ZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJZXJybXNnKCJGSVJTVCBhbmQg TEFTVCBjYW5ub3QgY29udGFpbiBQUkVWIG9yIE5FWFQiKSwKKwkJCQkJCQllcnJoaW50KCJPbmx5 IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFT VCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQlwYXJzZXJfZXJycG9z aXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKKwkJCQllbHNlIGlmIChvdXRlcl9w aHlzICYmIGlubmVyX3BoeXMpCisJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJZXJyY29kZShF UlJDT0RFX1NZTlRBWF9FUlJPUiksCisJCQkJCQkJZXJybXNnKCJQUkVWIGFuZCBORVhUIGNhbm5v dCBjb250YWluIFBSRVYgb3IgTkVYVCIpLAorCQkJCQkJCWVycmhpbnQoIk9ubHkgUFJFVihGSVJT VCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBv dW5kIGZvcm1zIGFyZSBhbGxvd2VkLiIpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjdHgt PnBzdGF0ZSwgbmF2LT5sb2NhdGlvbikpOworCQkJCWVsc2UKKwkJCQkJZXJlcG9ydChFUlJPUiwK KwkJCQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCQllcnJtc2coIkZJ UlNUIGFuZCBMQVNUIGNhbm5vdCBjb250YWluIEZJUlNUIG9yIExBU1QiKSwKKwkJCQkJCQllcnJo aW50KCJPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5k IE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4iKSwKKwkJCQkJCQlwYXJz ZXJfZXJycG9zaXRpb24oY3R4LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKKwkJCX0KKwkJCWVs c2UgaWYgKCFjdHgtPmhhc19jb2x1bW5fcmVmKQorCQkJeworCQkJCWVyZXBvcnQoRVJST1IsCisJ CQkJCQllcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKKwkJCQkJCWVycm1zZygiYXJndW1l bnQgb2Ygcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxl YXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNlIiksCisJCQkJCQlwYXJzZXJfZXJycG9zaXRpb24oY3R4 LT5wc3RhdGUsIG5hdi0+bG9jYXRpb24pKTsKKwkJCX0KKworCQkJLyoKKwkJCSAqIFdhbGsgb2Zm c2V0IGFyZyhzKSBpbiBQSEFTRV9OQVZfT0ZGU0VUIHRvIGVuZm9yY2UgdGhlCisJCQkgKiBjb25z dGFudC1vZmZzZXQgcnVsZS4gIEZvciBjb21wb3VuZCBmb3JtcywgYm90aCB0aGUgaW5uZXIKKwkJ CSAqIChwb3N0LWZsYXR0ZW4gbmF2LT5vZmZzZXRfYXJnKSBhbmQgb3V0ZXIgKGNvbXBvdW5kX29m ZnNldF9hcmcpCisJCQkgKiBvZmZzZXRzIG11c3QgYmUgY29uc3RhbnRzOyB0aGUgaW5uZXIncyBj b2x1bW4tcmVmIHN0YXR1cyB3YXMKKwkJCSAqIG5vdCBzZXBhcmF0ZWx5IHRyYWNrZWQgZHVyaW5n IHRoZSBQSEFTRV9OQVZfQVJHIHdhbGsgKHdoaWNoCisJCQkgKiBvbmx5IGNoZWNrcyB0aGF0IG5h di5hcmcgYXMgYSB3aG9sZSBoYXMgYXQgbGVhc3Qgb25lIFZhciksIHNvCisJCQkgKiBpdCBpcyBy ZS13YWxrZWQgaGVyZSB0byBjYXRjaCBjb2x1bW4gcmVmZXJlbmNlcyB0aGUgaW5uZXIKKwkJCSAq IG9mZnNldCB3b3VsZCBoYXZlIGxlYWtlZC4KKwkJCSAqLworCQkJY3R4LT5waGFzZSA9IERFRklO RV9QSEFTRV9OQVZfT0ZGU0VUOworCisJCQlpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCisJ CQl7CisJCQkJY3R4LT5oYXNfY29sdW1uX3JlZiA9IGZhbHNlOworCQkJCSh2b2lkKSBkZWZpbmVf d2Fsa2VyKChOb2RlICopIG5hdi0+b2Zmc2V0X2FyZywgY3R4KTsKKwkJCQlpZiAoY3R4LT5oYXNf Y29sdW1uX3JlZikKKwkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVf RkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5hdmln YXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudCIpLAorCQkJCQkJCXBhcnNl cl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgZXhwckxvY2F0aW9uKChOb2RlICopIG5hdi0+b2Zm c2V0X2FyZykpKTsKKwkJCX0KKwkJCWlmIChmbGF0dGVuZWQgJiYgbmF2LT5jb21wb3VuZF9vZmZz ZXRfYXJnICE9IE5VTEwpCisJCQl7CisJCQkJY3R4LT5oYXNfY29sdW1uX3JlZiA9IGZhbHNlOwor CQkJCSh2b2lkKSBkZWZpbmVfd2Fsa2VyKChOb2RlICopIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2Fy ZywgY3R4KTsKKwkJCQlpZiAoY3R4LT5oYXNfY29sdW1uX3JlZikKKwkJCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkJ CQllcnJtc2coInJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGlt ZSBjb25zdGFudCIpLAorCQkJCQkJCXBhcnNlcl9lcnJwb3NpdGlvbihjdHgtPnBzdGF0ZSwgZXhw ckxvY2F0aW9uKChOb2RlICopIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZykpKTsKKwkJCX0KKwor CQkJKmN0eCA9IHNhdmVkOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCisJcmV0dXJuIGV4 cHJlc3Npb25fdHJlZV93YWxrZXIobm9kZSwgZGVmaW5lX3dhbGtlciwgY3R4KTsKK30KZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMv cHJpbW5vZGVzLmgKaW5kZXggNzk3N2VlMjQ3ODMuLmQ3MTM4ZjUxNDFiIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmlt bm9kZXMuaApAQCAtNjQ4LDYgKzY0OCw2MCBAQCB0eXBlZGVmIHN0cnVjdCBXaW5kb3dGdW5jUnVu Q29uZGl0aW9uCiAJRXhwcgkgICAqYXJnOwogfSBXaW5kb3dGdW5jUnVuQ29uZGl0aW9uOwogCisv KgorICogUlBSTmF2RXhwcgorICoKKyAqIFJlcHJlc2VudHMgYSBQUkVWL05FWFQvRklSU1QvTEFT VCBuYXZpZ2F0aW9uIGNhbGwgaW4gYW4gUlBSIERFRklORSBjbGF1c2UuCisgKiBBdCBleHByZXNz aW9uIGNvbXBpbGUgdGltZSB0aGlzIGlzIHRyYW5zbGF0ZWQgaW50byBFRU9QX1JQUl9OQVZfU0VU IC8KKyAqIEVFT1BfUlBSX05BVl9SRVNUT1JFIG9wY29kZXMgcmF0aGVyIHRoYW4gYSBub3JtYWwg ZnVuY3Rpb24gY2FsbC4KKyAqCisgKiBTaW1wbGUgbmF2aWdhdGlvbiAoUFJFVi9ORVhUL0ZJUlNU L0xBU1QpOgorICogICBraW5kOiAgICAgICBSUFJfTkFWX1BSRVYsIFJQUl9OQVZfTkVYVCwgUlBS X05BVl9GSVJTVCwgb3IgUlBSX05BVl9MQVNUCisgKiAgIGFyZzogICAgICAgIHRoZSBleHByZXNz aW9uIHRvIGV2YWx1YXRlIGFnYWluc3QgdGhlIHRhcmdldCByb3cKKyAqICAgb2Zmc2V0X2FyZzog b3B0aW9uYWwgZXhwbGljaXQgb2Zmc2V0IGV4cHJlc3Npb24gKDItYXJnIGZvcm0pOyBOVUxMIGZv cgorICogICAgICAgICAgICAgICB0aGUgMS1hcmcgZm9ybSAoaW1wbGljaXQgb2Zmc2V0OiAxIGZv ciBQUkVWL05FWFQsIDAgZm9yCisgKiAgICAgICAgICAgICAgIEZJUlNUL0xBU1QpCisgKgorICog Q29tcG91bmQgbmF2aWdhdGlvbiAoUFJFVi9ORVhUIHdyYXBwaW5nIEZJUlNUL0xBU1QpOgorICog ICBraW5kOiAgICAgICAgICAgICAgUlBSX05BVl9QUkVWX0ZJUlNULCBQUkVWX0xBU1QsIE5FWFRf RklSU1QsIE5FWFRfTEFTVAorICogICBhcmc6ICAgICAgICAgICAgICAgdGhlIGV4cHJlc3Npb24g dG8gZXZhbHVhdGUgYWdhaW5zdCB0aGUgZmluYWwgdGFyZ2V0IHJvdworICogICBvZmZzZXRfYXJn OiAgICAgICAgaW5uZXIgb2Zmc2V0IChGSVJTVC9MQVNUKSwgTlVMTCA9IGltcGxpY2l0IGRlZmF1 bHQKKyAqICAgY29tcG91bmRfb2Zmc2V0X2FyZzogb3V0ZXIgb2Zmc2V0IChQUkVWL05FWFQpLCBO VUxMID0gaW1wbGljaXQgZGVmYXVsdAorICoKKyAqIENvbXBvdW5kIHRhcmdldCBjb21wdXRhdGlv bjoKKyAqICAgUFJFVl9GSVJTVDogKG1hdGNoX3N0YXJ0ICsgaW5uZXIpIC0gb3V0ZXIKKyAqICAg TkVYVF9GSVJTVDogKG1hdGNoX3N0YXJ0ICsgaW5uZXIpICsgb3V0ZXIKKyAqICAgUFJFVl9MQVNU OiAgKGN1cnJlbnRwb3MgIC0gaW5uZXIpIC0gb3V0ZXIKKyAqICAgTkVYVF9MQVNUOiAgKGN1cnJl bnRwb3MgIC0gaW5uZXIpICsgb3V0ZXIKKyAqLwordHlwZWRlZiBlbnVtIFJQUk5hdktpbmQKK3sK KwlSUFJfTkFWX1BSRVYsCisJUlBSX05BVl9ORVhULAorCVJQUl9OQVZfRklSU1QsCisJUlBSX05B Vl9MQVNULAorCS8qIGNvbXBvdW5kOiBvdXRlcihpbm5lcihhcmcpKSAqLworCVJQUl9OQVZfUFJF Vl9GSVJTVCwKKwlSUFJfTkFWX1BSRVZfTEFTVCwKKwlSUFJfTkFWX05FWFRfRklSU1QsCisJUlBS X05BVl9ORVhUX0xBU1QsCit9IFJQUk5hdktpbmQ7CisKK3R5cGVkZWYgc3RydWN0IFJQUk5hdkV4 cHIKK3sKKwlFeHByCQl4cHI7CisJUlBSTmF2S2luZAlraW5kOwkJCS8qIG5hdmlnYXRpb24ga2lu ZCAqLworCUV4cHIJICAgKmFyZzsJCQkvKiBhcmd1bWVudCBleHByZXNzaW9uICovCisJRXhwcgkg ICAqb2Zmc2V0X2FyZzsJCS8qIG9mZnNldCBleHByZXNzaW9uLCBvciBOVUxMIGZvciBkZWZhdWx0 ICovCisJRXhwcgkgICAqY29tcG91bmRfb2Zmc2V0X2FyZzsJLyogb3V0ZXIgb2Zmc2V0IGZvciBj b21wb3VuZCBuYXYsIG9yCisJCQkJCQkJCQkJICogTlVMTCBpZiBzaW1wbGUgKi8KKwlPaWQJCQly ZXN1bHR0eXBlOwkJLyogcmVzdWx0IHR5cGUgKHNhbWUgYXMgYXJnJ3MgdHlwZSkgKi8KKwkvKiBP SUQgb2YgY29sbGF0aW9uIG9mIHJlc3VsdCAqLworCU9pZAkJCXJlc3VsdGNvbGxpZCBwZ19ub2Rl X2F0dHIocXVlcnlfanVtYmxlX2lnbm9yZSk7CisJLyogdG9rZW4gbG9jYXRpb24sIG9yIC0xIGlm IHVua25vd24gKi8KKwlQYXJzZUxvYwlsb2NhdGlvbjsKK30gUlBSTmF2RXhwcjsKKwogLyoKICAq IE1lcmdlU3VwcG9ydEZ1bmMKICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIvcGFy c2VfcnByLmggYi9zcmMvaW5jbHVkZS9wYXJzZXIvcGFyc2VfcnByLmgKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjdmYWI2ZjI5MmFhCi0tLSAvZGV2L251bGwKKysrIGIv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX3Jwci5oCkBAIC0wLDAgKzEsMjIgQEAKKy8qLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICoKKyAqIHBhcnNlX3Jwci5oCisgKgkgIGhhbmRsZSBSb3cgUGF0dGVybiBS ZWNvZ25pdGlvbiBpbiBwYXJzZXIKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAx OTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9u cyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZv cm5pYQorICoKKyAqIHNyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9ycHIuaAorICoKKyAqLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBBUlNFX1JQUl9ICisjZGVmaW5lIFBBUlNFX1JQUl9I CisKKyNpbmNsdWRlICJwYXJzZXIvcGFyc2Vfbm9kZS5oIgorCitleHRlcm4gdm9pZCB0cmFuc2Zv cm1SUFIoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXaW5kb3dDbGF1c2UgKndjLAorCQkJCQkJIFdpbmRv d0RlZiAqd2luZGVmLCBMaXN0ICoqdGFyZ2V0bGlzdCk7CisKKyNlbmRpZgkJCQkJCQkvKiBQQVJT RV9SUFJfSCAqLwotLSAKMi40My4wCgo= ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0003-Row-pattern-recognition-patch-rewriter.patch" RnJvbSA1NWUzYjcyMGZhNzc2ODc5MTQ3NjIwMDFmMjFlYmU1OTkxNDUzMzE1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg My85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAocmV3cml0ZXIpLgoKLS0tCiBzcmMv YmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgfCAyNTMgKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjUzIGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMgYi9zcmMvYmFja2VuZC91dGlscy9h ZHQvcnVsZXV0aWxzLmMKaW5kZXggODhkZTVjMDQ4MWMuLjQxNWRhNjQxN2Q0IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0aWxzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRp bHMvYWR0L3J1bGV1dGlscy5jCkBAIC00NDcsNiArNDQ3LDEwIEBAIHN0YXRpYyB2b2lkIGdldF9y dWxlX2dyb3VwaW5nc2V0KEdyb3VwaW5nU2V0ICpnc2V0LCBMaXN0ICp0YXJnZXRsaXN0LAogCQkJ CQkJCQkgYm9vbCBvbWl0X3BhcmVucywgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRp YyB2b2lkIGdldF9ydWxlX29yZGVyYnkoTGlzdCAqb3JkZXJMaXN0LCBMaXN0ICp0YXJnZXRMaXN0 LAogCQkJCQkJCSBib29sIGZvcmNlX2NvbG5vLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOwor c3RhdGljIHZvaWQgYXBwZW5kX3BhdHRlcm5fcXVhbnRpZmllcihTdHJpbmdJbmZvIGJ1ZiwgUlBS UGF0dGVybk5vZGUgKm5vZGUpOworc3RhdGljIHZvaWQgZ2V0X3J1bGVfcGF0dGVybl9ub2RlKFJQ UlBhdHRlcm5Ob2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRleHQpOworc3RhdGljIHZv aWQgZ2V0X3J1bGVfcGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcnBQYXR0ZXJuLCBkZXBhcnNlX2Nv bnRleHQgKmNvbnRleHQpOworc3RhdGljIHZvaWQgZ2V0X3J1bGVfZGVmaW5lKExpc3QgKmRlZmlu ZUNsYXVzZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KTsKIHN0YXRpYyB2b2lkIGdldF9ydWxl X3dpbmRvd2NsYXVzZShRdWVyeSAqcXVlcnksIGRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7CiBz dGF0aWMgdm9pZCBnZXRfcnVsZV93aW5kb3dzcGVjKFdpbmRvd0NsYXVzZSAqd2MsIExpc3QgKnRh cmdldExpc3QsCiAJCQkJCQkJCWRlcGFyc2VfY29udGV4dCAqY29udGV4dCk7CkBAIC03MTA3LDYg KzcxMTEsMTI2IEBAIGdldF9ydWxlX29yZGVyYnkoTGlzdCAqb3JkZXJMaXN0LCBMaXN0ICp0YXJn ZXRMaXN0LAogCX0KIH0KIAorLyoKKyAqIEhlbHBlciBmdW5jdGlvbiB0byBhcHBlbmQgcXVhbnRp ZmllciBzdHJpbmcgZm9yIHBhdHRlcm4gbm9kZQorICovCitzdGF0aWMgdm9pZAorYXBwZW5kX3Bh dHRlcm5fcXVhbnRpZmllcihTdHJpbmdJbmZvIGJ1ZiwgUlBSUGF0dGVybk5vZGUgKm5vZGUpCit7 CisJYm9vbAkJaGFzX3F1YW50aWZpZXIgPSB0cnVlOworCisJaWYgKG5vZGUtPm1pbiA9PSAxICYm IG5vZGUtPm1heCA9PSAxKQorCXsKKwkJLyogezEsMX0gPSBubyBxdWFudGlmaWVyICovCisJCWhh c19xdWFudGlmaWVyID0gZmFsc2U7CisJfQorCWVsc2UgaWYgKG5vZGUtPm1pbiA9PSAwICYmIG5v ZGUtPm1heCA9PSBQR19JTlQzMl9NQVgpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyon KTsKKwllbHNlIGlmIChub2RlLT5taW4gPT0gMSAmJiBub2RlLT5tYXggPT0gUEdfSU5UMzJfTUFY KQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcrJyk7CisJZWxzZSBpZiAobm9kZS0+bWlu ID09IDAgJiYgbm9kZS0+bWF4ID09IDEpCisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJz8n KTsKKwllbHNlIGlmIChub2RlLT5tYXggPT0gUEdfSU5UMzJfTUFYKQorCQlhcHBlbmRTdHJpbmdJ bmZvKGJ1ZiwgInslZCx9Iiwgbm9kZS0+bWluKTsKKwllbHNlIGlmIChub2RlLT5taW4gPT0gbm9k ZS0+bWF4KQorCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgInslZH0iLCBub2RlLT5taW4pOworCWVs c2UKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJ7JWQsJWR9Iiwgbm9kZS0+bWluLCBub2RlLT5t YXgpOworCisJaWYgKG5vZGUtPnJlbHVjdGFudCkKKwl7CisJCWlmICghaGFzX3F1YW50aWZpZXIp CisJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgInsxfSIpOyAvKiBtYWtlIHJlbHVjdGFu dCA/CisJCQkJCQkJCQkJCQkgKiB1bmFtYmlndW91cyAqLworCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cihidWYsICc/Jyk7CisJfQorfQorCisvKgorICogUmVjdXJzaXZlIGhlbHBlciB0byBkaXNwbGF5 IFJQUlBhdHRlcm5Ob2RlIHRyZWUKKyAqLworc3RhdGljIHZvaWQKK2dldF9ydWxlX3BhdHRlcm5f bm9kZShSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0KQorewor CVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCWNvbnN0IGNoYXIgKnNlcDsKKworCUFz c2VydChub2RlICE9IE5VTEwpOworCisJc3dpdGNoIChub2RlLT5ub2RlVHlwZSkKKwl7CisJCWNh c2UgUlBSX1BBVFRFUk5fVkFSOgorCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsIHF1b3Rl X2lkZW50aWZpZXIobm9kZS0+dmFyTmFtZSkpOworCQkJYXBwZW5kX3BhdHRlcm5fcXVhbnRpZmll cihidWYsIG5vZGUpOworCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfUEFUVEVSTl9TRVE6CisJCQlz ZXAgPSAiIjsKKwkJCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIG5vZGUtPmNo aWxkcmVuKQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBzZXApOworCQkJ CWdldF9ydWxlX3BhdHRlcm5fbm9kZShjaGlsZCwgY29udGV4dCk7CisJCQkJc2VwID0gIiAiOwor CQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfUEFUVEVSTl9BTFQ6CisJCQlzZXAgPSAiIjsK KwkJCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIG5vZGUtPmNoaWxkcmVuKQor CQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCBzZXApOworCQkJCWdldF9ydWxl X3BhdHRlcm5fbm9kZShjaGlsZCwgY29udGV4dCk7CisJCQkJc2VwID0gIiB8ICI7CisJCQl9CisJ CQlicmVhazsKKworCQljYXNlIFJQUl9QQVRURVJOX0dST1VQOgorCQkJYXBwZW5kU3RyaW5nSW5m b0NoYXIoYnVmLCAnKCcpOworCQkJc2VwID0gIiI7CisJCQlmb3JlYWNoX25vZGUoUlBSUGF0dGVy bk5vZGUsIGNoaWxkLCBub2RlLT5jaGlsZHJlbikKKwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZv U3RyaW5nKGJ1Ziwgc2VwKTsKKwkJCQlnZXRfcnVsZV9wYXR0ZXJuX25vZGUoY2hpbGQsIGNvbnRl eHQpOworCQkJCXNlcCA9ICIgIjsKKwkJCX0KKwkJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1Ziwg JyknKTsKKwkJCWFwcGVuZF9wYXR0ZXJuX3F1YW50aWZpZXIoYnVmLCBub2RlKTsKKwkJCWJyZWFr OworCX0KK30KKworLyoKKyAqIERpc3BsYXkgYSBQQVRURVJOIGNsYXVzZS4KKyAqLworc3RhdGlj IHZvaWQKK2dldF9ydWxlX3BhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnJwUGF0dGVybiwgZGVwYXJz ZV9jb250ZXh0ICpjb250ZXh0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOwor CisJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcpOworCWdldF9ydWxlX3BhdHRlcm5fbm9k ZShycFBhdHRlcm4sIGNvbnRleHQpOworCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyknKTsK K30KKworLyoKKyAqIERpc3BsYXkgYSBERUZJTkUgY2xhdXNlLgorICovCitzdGF0aWMgdm9pZAor Z2V0X3J1bGVfZGVmaW5lKExpc3QgKmRlZmluZUNsYXVzZSwgZGVwYXJzZV9jb250ZXh0ICpjb250 ZXh0KQoreworCVN0cmluZ0luZm8JYnVmID0gY29udGV4dC0+YnVmOworCWNvbnN0IGNoYXIgKnNl cDsKKworCXNlcCA9ICIgICI7CisKKwlmb3JlYWNoX25vZGUoVGFyZ2V0RW50cnksIHRlLCBkZWZp bmVDbGF1c2UpCisJeworCQlhcHBlbmRTdHJpbmdJbmZvKGJ1ZiwgIiVzJXMgQVMgIiwgc2VwLCBx dW90ZV9pZGVudGlmaWVyKHRlLT5yZXNuYW1lKSk7CisJCWdldF9ydWxlX2V4cHIoKE5vZGUgKikg dGUtPmV4cHIsIGNvbnRleHQsIGZhbHNlKTsKKwkJc2VwID0gIixcbiAgIjsKKwl9Cit9CisKIC8q CiAgKiBEaXNwbGF5IGEgV0lORE9XIGNsYXVzZS4KICAqCkBAIC03MTg3LDYgKzczMTEsNyBAQCBn ZXRfcnVsZV93aW5kb3dzcGVjKFdpbmRvd0NsYXVzZSAqd2MsIExpc3QgKnRhcmdldExpc3QsCiAJ CWdldF9ydWxlX29yZGVyYnkod2MtPm9yZGVyQ2xhdXNlLCB0YXJnZXRMaXN0LCBmYWxzZSwgY29u dGV4dCk7CiAJCW5lZWRzcGFjZSA9IHRydWU7CiAJfQorCiAJLyogZnJhbWluZyBjbGF1c2UgaXMg bmV2ZXIgaW5oZXJpdGVkLCBzbyBwcmludCB1bmxlc3MgaXQncyBkZWZhdWx0ICovCiAJaWYgKHdj LT5mcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9OT05ERUZBVUxUKQogCXsKQEAgLTcxOTUsNyAr NzMyMCw1MSBAQCBnZXRfcnVsZV93aW5kb3dzcGVjKFdpbmRvd0NsYXVzZSAqd2MsIExpc3QgKnRh cmdldExpc3QsCiAJCWdldF93aW5kb3dfZnJhbWVfb3B0aW9ucyh3Yy0+ZnJhbWVPcHRpb25zLAog CQkJCQkJCQkgd2MtPnN0YXJ0T2Zmc2V0LCB3Yy0+ZW5kT2Zmc2V0LAogCQkJCQkJCQkgY29udGV4 dCk7CisJCW5lZWRzcGFjZSA9IHRydWU7CisJfQorCisJLyogUlBSICovCisJaWYgKHdjLT5ycFNr aXBUbyA9PSBTVF9ORVhUX1JPVykKKwl7CisJCWlmIChuZWVkc3BhY2UpCisJCQlhcHBlbmRTdHJp bmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLAorCQkJ CQkJCSAgICJcbiAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVyAiKTsKKwkJbmVlZHNwYWNl ID0gdHJ1ZTsKIAl9CisJZWxzZSBpZiAod2MtPnJwU2tpcFRvID09IFNUX1BBU1RfTEFTVF9ST1cp CisJeworCQlpZiAobmVlZHNwYWNlKQorCQkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcp OworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKKwkJCQkJCQkgICAiXG4gIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVyAiKTsKKwkJbmVlZHNwYWNlID0gdHJ1ZTsKKwl9CisJaWYg KHdjLT5pbml0aWFsKQorCXsKKwkJaWYgKG5lZWRzcGFjZSkKKwkJCWFwcGVuZFN0cmluZ0luZm9D aGFyKGJ1ZiwgJyAnKTsKKwkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICJcbiAgSU5JVElB TCIpOworCQluZWVkc3BhY2UgPSB0cnVlOworCX0KKwlpZiAod2MtPnJwUGF0dGVybikKKwl7CisJ CWlmIChuZWVkc3BhY2UpCisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcgJyk7CisJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiXG4gIFBBVFRFUk4gIik7CisJCWdldF9ydWxlX3Bh dHRlcm4od2MtPnJwUGF0dGVybiwgY29udGV4dCk7CisJCW5lZWRzcGFjZSA9IHRydWU7CisJfQor CisJaWYgKHdjLT5kZWZpbmVDbGF1c2UpCisJeworCQlpZiAobmVlZHNwYWNlKQorCQkJYXBwZW5k U3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1Ziwg IlxuICBERUZJTkVcbiIpOworCQlnZXRfcnVsZV9kZWZpbmUod2MtPmRlZmluZUNsYXVzZSwgY29u dGV4dCk7CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyAnKTsKKwl9CisKIAlhcHBlbmRT dHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CiB9CiAKQEAgLTk0NDQsNiArOTYxMyw3IEBAIGlzU2lt cGxlTm9kZShOb2RlICpub2RlLCBOb2RlICpwYXJlbnROb2RlLCBpbnQgcHJldHR5RmxhZ3MpCiAJ CWNhc2UgVF9GdW5jRXhwcjoKIAkJY2FzZSBUX0pzb25Db25zdHJ1Y3RvckV4cHI6CiAJCWNhc2Ug VF9Kc29uRXhwcjoKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CiAJCQkvKiBmdW5jdGlvbi1saWtlOiBu YW1lKC4uKSBvciBuYW1lWy4uXSAqLwogCQkJcmV0dXJuIHRydWU7CiAKQEAgLTk5MzksNiArMTAx MDksODkgQEAgZ2V0X3J1bGVfZXhwcihOb2RlICpub2RlLCBkZXBhcnNlX2NvbnRleHQgKmNvbnRl eHQsCiAJCQlnZXRfZnVuY19leHByKChGdW5jRXhwciAqKSBub2RlLCBjb250ZXh0LCBzaG93aW1w bGljaXQpOwogCQkJYnJlYWs7CiAKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJCQl7CisJCQkJUlBS TmF2RXhwciAqbmF2ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsKKwkJCQljb25zdCBjaGFyICpvdXRl cl9mdW5jID0gTlVMTDsKKwkJCQljb25zdCBjaGFyICppbm5lcl9mdW5jOworCisJCQkJc3dpdGNo IChuYXYtPmtpbmQpCisJCQkJeworCQkJCQljYXNlIFJQUl9OQVZfUFJFVjoKKwkJCQkJCWlubmVy X2Z1bmMgPSAiUFJFVigiOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUlBSX05BVl9ORVhUOgor CQkJCQkJaW5uZXJfZnVuYyA9ICJORVhUKCI7CisJCQkJCQlicmVhazsKKwkJCQkJY2FzZSBSUFJf TkFWX0ZJUlNUOgorCQkJCQkJaW5uZXJfZnVuYyA9ICJGSVJTVCgiOworCQkJCQkJYnJlYWs7CisJ CQkJCWNhc2UgUlBSX05BVl9MQVNUOgorCQkJCQkJaW5uZXJfZnVuYyA9ICJMQVNUKCI7CisJCQkJ CQlicmVhazsKKwkJCQkJY2FzZSBSUFJfTkFWX1BSRVZfRklSU1Q6CisJCQkJCQlvdXRlcl9mdW5j ID0gIlBSRVYoIjsKKwkJCQkJCWlubmVyX2Z1bmMgPSAiRklSU1QoIjsKKwkJCQkJCWJyZWFrOwor CQkJCQljYXNlIFJQUl9OQVZfUFJFVl9MQVNUOgorCQkJCQkJb3V0ZXJfZnVuYyA9ICJQUkVWKCI7 CisJCQkJCQlpbm5lcl9mdW5jID0gIkxBU1QoIjsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJQ Ul9OQVZfTkVYVF9GSVJTVDoKKwkJCQkJCW91dGVyX2Z1bmMgPSAiTkVYVCgiOworCQkJCQkJaW5u ZXJfZnVuYyA9ICJGSVJTVCgiOworCQkJCQkJYnJlYWs7CisJCQkJCWNhc2UgUlBSX05BVl9ORVhU X0xBU1Q6CisJCQkJCQlvdXRlcl9mdW5jID0gIk5FWFQoIjsKKwkJCQkJCWlubmVyX2Z1bmMgPSAi TEFTVCgiOworCQkJCQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJCQllbG9nKEVSUk9SLCAi dW5yZWNvZ25pemVkIFJQUiBuYXZpZ2F0aW9uIGtpbmQ6ICVkIiwKKwkJCQkJCQkgbmF2LT5raW5k KTsKKwkJCQkJCWlubmVyX2Z1bmMgPSBOVUxMOwkvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJ CQkJCQlicmVhazsKKwkJCQl9CisKKwkJCQlpZiAob3V0ZXJfZnVuYyAhPSBOVUxMKQorCQkJCXsK KwkJCQkJLyoKKwkJCQkJICogQ29tcG91bmQ6IFBSRVYoRklSU1QoYXJnIFssIGlubmVyX29mZnNl dF0pIFssCisJCQkJCSAqIG91dGVyX29mZnNldF0pCisJCQkJCSAqLworCQkJCQlhcHBlbmRTdHJp bmdJbmZvU3RyaW5nKGJ1Ziwgb3V0ZXJfZnVuYyk7CisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJp bmcoYnVmLCBpbm5lcl9mdW5jKTsKKwkJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBuYXYtPmFy ZywgY29udGV4dCwgc2hvd2ltcGxpY2l0KTsKKwkJCQkJaWYgKG5hdi0+b2Zmc2V0X2FyZyAhPSBO VUxMKQorCQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJ CQkJCQlnZXRfcnVsZV9leHByKChOb2RlICopIG5hdi0+b2Zmc2V0X2FyZywgY29udGV4dCwKKwkJ CQkJCQkJCSAgc2hvd2ltcGxpY2l0KTsKKwkJCQkJfQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hh cihidWYsICcpJyk7CisJCQkJCWlmIChuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcgIT0gTlVMTCkK KwkJCQkJeworCQkJCQkJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIsICIpOworCQkJCQkJ Z2V0X3J1bGVfZXhwcigoTm9kZSAqKSBuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsCisJCQkJCQkJ CQkgIGNvbnRleHQsIHNob3dpbXBsaWNpdCk7CisJCQkJCX0KKwkJCQkJYXBwZW5kU3RyaW5nSW5m b0NoYXIoYnVmLCAnKScpOworCQkJCX0KKwkJCQllbHNlCisJCQkJeworCQkJCQkvKiBTaW1wbGU6 IEZVTkMoYXJnIFssIG9mZnNldF0pICovCisJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVm LCBpbm5lcl9mdW5jKTsKKwkJCQkJZ2V0X3J1bGVfZXhwcigoTm9kZSAqKSBuYXYtPmFyZywgY29u dGV4dCwgc2hvd2ltcGxpY2l0KTsKKwkJCQkJaWYgKG5hdi0+b2Zmc2V0X2FyZyAhPSBOVUxMKQor CQkJCQl7CisJCQkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiwgIik7CisJCQkJCQln ZXRfcnVsZV9leHByKChOb2RlICopIG5hdi0+b2Zmc2V0X2FyZywgY29udGV4dCwKKwkJCQkJCQkJ CSAgc2hvd2ltcGxpY2l0KTsKKwkJCQkJfQorCQkJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICcpJyk7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisKIAkJY2FzZSBUX05hbWVkQXJnRXhwcjoK IAkJCXsKIAkJCQlOYW1lZEFyZ0V4cHIgKm5hID0gKE5hbWVkQXJnRXhwciAqKSBub2RlOwotLSAK Mi40My4wCgo= ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0004-Row-pattern-recognition-patch-planner.patch" RnJvbSAxNjMyMDNjZjlhMTZlYWE5ODU5NGU4YmZmZWZmNTcxMTIzZjY0ZjU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg NC85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAocGxhbm5lcikuCgotLS0KIHNyYy9i YWNrZW5kL25vZGVzL25vZGVGdW5jcy5jICAgICAgICAgICAgIHwgICA2OCArCiBzcmMvYmFja2Vu ZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5jICAgICB8ICAgODUgKwogc3JjL2JhY2tlbmQvb3B0 aW1pemVyL3BhdGgvY29zdHNpemUuYyAgICAgfCAgIDI4ICsKIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL01ha2VmaWxlICAgICAgIHwgICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxh bi9jcmVhdGVwbGFuLmMgICB8ICA0MTQgKysrLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4v bWVzb24uYnVpbGQgICAgfCAgICAxICsKIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3BsYW5u ZXIuYyAgICAgIHwgICAzNSArLQogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMgICAg ICAgICAgfCAyMDkwICsrKysrKysrKysrKysrKysrKysrKwogc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vc2V0cmVmcy5jICAgICAgfCAgIDI5ICstCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJl cC9wcmVwam9pbnRyZWUuYyB8ICAgIDcgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgg ICAgICAgICAgICAgfCAgMTEwICsrCiBzcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmggICAgICAg ICAgICAgICB8ICAgOTkgKwogMTIgZmlsZXMgY2hhbmdlZCwgMjk2MiBpbnNlcnRpb25zKCspLCA1 IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3Jwci5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvb3B0aW1pemVyL3Jwci5o CgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvbm9kZXMvbm9kZUZ1bmNzLmMgYi9zcmMvYmFja2Vu ZC9ub2Rlcy9ub2RlRnVuY3MuYwppbmRleCAyYTJlMDBiMzcyZS4uNmFiMjI3YjJiNjAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL25vZGVzL25vZGVGdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL25v ZGVzL25vZGVGdW5jcy5jCkBAIC02OSw2ICs2OSw5IEBAIGV4cHJUeXBlKGNvbnN0IE5vZGUgKmV4 cHIpCiAJCWNhc2UgVF9NZXJnZVN1cHBvcnRGdW5jOgogCQkJdHlwZSA9ICgoY29uc3QgTWVyZ2VT dXBwb3J0RnVuYyAqKSBleHByKS0+bXNmdHlwZTsKIAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2 RXhwcjoKKwkJCXR5cGUgPSAoKGNvbnN0IFJQUk5hdkV4cHIgKikgZXhwciktPnJlc3VsdHR5cGU7 CisJCQlicmVhazsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCXR5cGUgPSAoKGNvbnN0 IFN1YnNjcmlwdGluZ1JlZiAqKSBleHByKS0+cmVmcmVzdHlwZTsKIAkJCWJyZWFrOwpAQCAtMzg5 LDYgKzM5Miw5IEBAIGV4cHJUeXBtb2QoY29uc3QgTm9kZSAqZXhwcikKIAkJCXJldHVybiAoKGNv bnN0IEFycmF5Q29lcmNlRXhwciAqKSBleHByKS0+cmVzdWx0dHlwbW9kOwogCQljYXNlIFRfQ29s bGF0ZUV4cHI6CiAJCQlyZXR1cm4gZXhwclR5cG1vZCgoTm9kZSAqKSAoKGNvbnN0IENvbGxhdGVF eHByICopIGV4cHIpLT5hcmcpOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCS8qIHJlc3VsdCBo YXMgdGhlIHNhbWUgdHlwZS90eXBtb2QgYXMgdGhlIGFyZ3VtZW50IGV4cHJlc3Npb24gKi8KKwkJ CXJldHVybiBleHByVHlwbW9kKChOb2RlICopICgoY29uc3QgUlBSTmF2RXhwciAqKSBleHByKS0+ YXJnKTsKIAkJY2FzZSBUX0Nhc2VFeHByOgogCQkJewogCQkJCS8qCkBAIC04NTMsNiArODU5LDkg QEAgZXhwckNvbGxhdGlvbihjb25zdCBOb2RlICpleHByKQogCQljYXNlIFRfTWVyZ2VTdXBwb3J0 RnVuYzoKIAkJCWNvbGwgPSAoKGNvbnN0IE1lcmdlU3VwcG9ydEZ1bmMgKikgZXhwciktPm1zZmNv bGxpZDsKIAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCWNvbGwgPSAoKGNvbnN0 IFJQUk5hdkV4cHIgKikgZXhwciktPnJlc3VsdGNvbGxpZDsKKwkJCWJyZWFrOwogCQljYXNlIFRf U3Vic2NyaXB0aW5nUmVmOgogCQkJY29sbCA9ICgoY29uc3QgU3Vic2NyaXB0aW5nUmVmICopIGV4 cHIpLT5yZWZjb2xsaWQ7CiAJCQlicmVhazsKQEAgLTExNjIsNiArMTE3MSw5IEBAIGV4cHJTZXRD b2xsYXRpb24oTm9kZSAqZXhwciwgT2lkIGNvbGxhdGlvbikKIAkJY2FzZSBUX01lcmdlU3VwcG9y dEZ1bmM6CiAJCQkoKE1lcmdlU3VwcG9ydEZ1bmMgKikgZXhwciktPm1zZmNvbGxpZCA9IGNvbGxh dGlvbjsKIAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCSgoUlBSTmF2RXhwciAq KSBleHByKS0+cmVzdWx0Y29sbGlkID0gY29sbGF0aW9uOworCQkJYnJlYWs7CiAJCWNhc2UgVF9T dWJzY3JpcHRpbmdSZWY6CiAJCQkoKFN1YnNjcmlwdGluZ1JlZiAqKSBleHByKS0+cmVmY29sbGlk ID0gY29sbGF0aW9uOwogCQkJYnJlYWs7CkBAIC0xNDM3LDYgKzE0NDksMTIgQEAgZXhwckxvY2F0 aW9uKGNvbnN0IE5vZGUgKmV4cHIpCiAJCWNhc2UgVF9NZXJnZVN1cHBvcnRGdW5jOgogCQkJbG9j ID0gKChjb25zdCBNZXJnZVN1cHBvcnRGdW5jICopIGV4cHIpLT5sb2NhdGlvbjsKIAkJCWJyZWFr OworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCWxvYyA9ICgoY29uc3QgUlBSTmF2RXhwciAqKSBl eHByKS0+bG9jYXRpb247CisJCQlicmVhazsKKwkJY2FzZSBUX1JQUlBhdHRlcm5Ob2RlOgorCQkJ bG9jID0gKChjb25zdCBSUFJQYXR0ZXJuTm9kZSAqKSBleHByKS0+bG9jYXRpb247CisJCQlicmVh azsKIAkJY2FzZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCS8qIGp1c3QgdXNlIGNvbnRhaW5lciBh cmd1bWVudCdzIGxvY2F0aW9uICovCiAJCQlsb2MgPSBleHByTG9jYXRpb24oKE5vZGUgKikgKChj b25zdCBTdWJzY3JpcHRpbmdSZWYgKikgZXhwciktPnJlZmV4cHIpOwpAQCAtMjE5OSw2ICsyMjE3 LDE4IEBAIGV4cHJlc3Npb25fdHJlZV93YWxrZXJfaW1wbChOb2RlICpub2RlLAogCQkJCQlyZXR1 cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOworCQljYXNlIFRfUlBSTmF2RXhwcjoKKwkJCXsKKwkJ CQlSUFJOYXZFeHByICpleHByID0gKFJQUk5hdkV4cHIgKikgbm9kZTsKKworCQkJCWlmIChXQUxL KGV4cHItPmFyZykpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChleHByLT5vZmZzZXRfYXJn ICYmIFdBTEsoZXhwci0+b2Zmc2V0X2FyZykpCisJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChl eHByLT5jb21wb3VuZF9vZmZzZXRfYXJnICYmIFdBTEsoZXhwci0+Y29tcG91bmRfb2Zmc2V0X2Fy ZykpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQkJYnJlYWs7CiAJCWNhc2UgVF9TdWJzY3Jp cHRpbmdSZWY6CiAJCQl7CiAJCQkJU3Vic2NyaXB0aW5nUmVmICpzYnNyZWYgPSAoU3Vic2NyaXB0 aW5nUmVmICopIG5vZGU7CkBAIC0yNDMyLDYgKzI0NjIsOCBAQCBleHByZXNzaW9uX3RyZWVfd2Fs a2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7CiAJCQkJaWYgKFdBTEsod2Mt PmVuZE9mZnNldCkpCiAJCQkJCXJldHVybiB0cnVlOworCQkJCWlmIChXQUxLKHdjLT5kZWZpbmVD bGF1c2UpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIFRfQ1RF Q3ljbGVDbGF1c2U6CkBAIC0yODI2LDYgKzI4NTgsOCBAQCBxdWVyeV90cmVlX3dhbGtlcl9pbXBs KFF1ZXJ5ICpxdWVyeSwKIAkJCQlyZXR1cm4gdHJ1ZTsKIAkJCWlmIChXQUxLKHdjLT5lbmRPZmZz ZXQpKQogCQkJCXJldHVybiB0cnVlOworCQkJaWYgKFdBTEsod2MtPmRlZmluZUNsYXVzZSkpCisJ CQkJcmV0dXJuIHRydWU7CiAJCX0KIAl9CiAKQEAgLTMxNDgsNiArMzE4MiwxOCBAQCBleHByZXNz aW9uX3RyZWVfbXV0YXRvcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJcmV0dXJuIChOb2RlICopIG5l d25vZGU7CiAJCQl9CiAJCQlicmVhazsKKwkJY2FzZSBUX1JQUk5hdkV4cHI6CisJCQl7CisJCQkJ UlBSTmF2RXhwciAqbmF2ID0gKFJQUk5hdkV4cHIgKikgbm9kZTsKKwkJCQlSUFJOYXZFeHByICpu ZXdub2RlOworCisJCQkJRkxBVENPUFkobmV3bm9kZSwgbmF2LCBSUFJOYXZFeHByKTsKKwkJCQlN VVRBVEUobmV3bm9kZS0+YXJnLCBuYXYtPmFyZywgRXhwciAqKTsKKwkJCQlNVVRBVEUobmV3bm9k ZS0+b2Zmc2V0X2FyZywgbmF2LT5vZmZzZXRfYXJnLCBFeHByICopOworCQkJCU1VVEFURShuZXdu b2RlLT5jb21wb3VuZF9vZmZzZXRfYXJnLCBuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIEV4cHIg Kik7CisJCQkJcmV0dXJuIChOb2RlICopIG5ld25vZGU7CisJCQl9CisJCQlicmVhazsKIAkJY2Fz ZSBUX1N1YnNjcmlwdGluZ1JlZjoKIAkJCXsKIAkJCQlTdWJzY3JpcHRpbmdSZWYgKnNic3JlZiA9 IChTdWJzY3JpcHRpbmdSZWYgKikgbm9kZTsKQEAgLTM1NzAsNiArMzYxNiw3IEBAIGV4cHJlc3Np b25fdHJlZV9tdXRhdG9yX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQlNVVRBVEUobmV3bm9kZS0+b3Jk ZXJDbGF1c2UsIHdjLT5vcmRlckNsYXVzZSwgTGlzdCAqKTsKIAkJCQlNVVRBVEUobmV3bm9kZS0+ c3RhcnRPZmZzZXQsIHdjLT5zdGFydE9mZnNldCwgTm9kZSAqKTsKIAkJCQlNVVRBVEUobmV3bm9k ZS0+ZW5kT2Zmc2V0LCB3Yy0+ZW5kT2Zmc2V0LCBOb2RlICopOworCQkJCU1VVEFURShuZXdub2Rl LT5kZWZpbmVDbGF1c2UsIHdjLT5kZWZpbmVDbGF1c2UsIExpc3QgKik7CiAJCQkJcmV0dXJuIChO b2RlICopIG5ld25vZGU7CiAJCQl9CiAJCQlicmVhazsKQEAgLTM5NDMsNiArMzk5MCw3IEBAIHF1 ZXJ5X3RyZWVfbXV0YXRvcl9pbXBsKFF1ZXJ5ICpxdWVyeSwKIAkJCUZMQVRDT1BZKG5ld25vZGUs IHdjLCBXaW5kb3dDbGF1c2UpOwogCQkJTVVUQVRFKG5ld25vZGUtPnN0YXJ0T2Zmc2V0LCB3Yy0+ c3RhcnRPZmZzZXQsIE5vZGUgKik7CiAJCQlNVVRBVEUobmV3bm9kZS0+ZW5kT2Zmc2V0LCB3Yy0+ ZW5kT2Zmc2V0LCBOb2RlICopOworCQkJTVVUQVRFKG5ld25vZGUtPmRlZmluZUNsYXVzZSwgd2Mt PmRlZmluZUNsYXVzZSwgTGlzdCAqKTsKIAogCQkJcmVzdWx0bGlzdCA9IGxhcHBlbmQocmVzdWx0 bGlzdCwgKE5vZGUgKikgbmV3bm9kZSk7CiAJCX0KQEAgLTQ1OTksNiArNDY0Nyw4IEBAIHJhd19l eHByZXNzaW9uX3RyZWVfd2Fsa2VyX2ltcGwoTm9kZSAqbm9kZSwKIAkJCQkJcmV0dXJuIHRydWU7 CiAJCQkJaWYgKFdBTEsod2QtPmVuZE9mZnNldCkpCiAJCQkJCXJldHVybiB0cnVlOworCQkJCWlm IChXQUxLKHdkLT5ycENvbW1vblN5bnRheCkpCisJCQkJCXJldHVybiB0cnVlOwogCQkJfQogCQkJ YnJlYWs7CiAJCWNhc2UgVF9SYW5nZVN1YnNlbGVjdDoKQEAgLTQ4NTQsNiArNDkwNCwyNCBAQCBy YXdfZXhwcmVzc2lvbl90cmVlX3dhbGtlcl9pbXBsKE5vZGUgKm5vZGUsCiAJCQkJCXJldHVybiB0 cnVlOwogCQkJfQogCQkJYnJlYWs7CisJCWNhc2UgVF9SUENvbW1vblN5bnRheDoKKwkJCXsKKwkJ CQlSUENvbW1vblN5bnRheCAqcmMgPSAoUlBDb21tb25TeW50YXggKikgbm9kZTsKKworCQkJCWlm IChXQUxLKHJjLT5ycFBhdHRlcm4pKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoV0FMSyhy Yy0+cnBEZWZzKSkKKwkJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKKwkJY2FzZSBU X1JQUlBhdHRlcm5Ob2RlOgorCQkJeworCQkJCVJQUlBhdHRlcm5Ob2RlICpycCA9IChSUFJQYXR0 ZXJuTm9kZSAqKSBub2RlOworCisJCQkJaWYgKFdBTEsocnAtPmNoaWxkcmVuKSkKKwkJCQkJcmV0 dXJuIHRydWU7CisJCQl9CisJCQlicmVhazsKIAkJZGVmYXVsdDoKIAkJCWVsb2coRVJST1IsICJ1 bnJlY29nbml6ZWQgbm9kZSB0eXBlOiAlZCIsCiAJCQkJIChpbnQpIG5vZGVUYWcobm9kZSkpOwpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvYWxscGF0aHMuYyBiL3NyYy9i YWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKaW5kZXggYzEzNDU5NGEyMWEuLmYzYzlm M2MwYmQ2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0aC9hbGxwYXRocy5j CisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2FsbHBhdGhzLmMKQEAgLTI0NjMsNiAr MjQ2MywxNyBAQCBmaW5kX3dpbmRvd19ydW5fY29uZGl0aW9ucyhRdWVyeSAqc3VicXVlcnksIEF0 dHJOdW1iZXIgYXR0bm8sCiAJd2NsYXVzZSA9IChXaW5kb3dDbGF1c2UgKikgbGlzdF9udGgoc3Vi cXVlcnktPndpbmRvd0NsYXVzZSwKIAkJCQkJCQkJCQl3ZnVuYy0+d2lucmVmIC0gMSk7CiAKKwkv KgorCSAqIElmIGEgREVGSU5FIGNsYXVzZSBleGlzdHMsIHdlIGNhbm5vdCBwdXNoIGRvd24gYSBy dW4gY29uZGl0aW9uLiBJbiB0aGUKKwkgKiBjYXNlLCBhIHdpbmRvdyBwYXJ0aXRpb24gKG9yIGZy YW1lKSBpcyBkaXZpZGVkIGludG8gbXVsdGlwbGUgcmVkdWNlZAorCSAqIGZyYW1lcyBhbmQgZWFj aCBmcmFtZSBzaG91bGQgYmUgZXZhbHVhdGVkIHRvIHRoZSBlbmQgb2YgdGhlIHBhcnRpdGlvbgor CSAqIChvciBmdWxsIGZyYW1lIGVuZCkuIFRoaXMgbWVhbnMgd2UgY2Fubm90IGFwcGx5IHRoZSBy dW4gY29uZGl0aW9uCisJICogb3B0aW1pemF0aW9uIGJlY2F1c2UgaXQgc3RvcHMgZXZhbHVhdGlv biB3aW5kb3cgZnVuY3Rpb25zIGluIGNlcnRhaW4KKwkgKiBjYXNlcy4KKwkgKi8KKwlpZiAod2Ns YXVzZS0+ZGVmaW5lQ2xhdXNlICE9IE5JTCkKKwkJcmV0dXJuIGZhbHNlOworCiAJcmVxLnR5cGUg PSBUX1N1cHBvcnRSZXF1ZXN0V0Z1bmNNb25vdG9uaWM7CiAJcmVxLndpbmRvd19mdW5jID0gd2Z1 bmM7CiAJcmVxLndpbmRvd19jbGF1c2UgPSB3Y2xhdXNlOwpAQCAtNDczOSw2ICs0NzUwLDgwIEBA IHJlbW92ZV91bnVzZWRfc3VicXVlcnlfb3V0cHV0cyhRdWVyeSAqc3VicXVlcnksIFJlbE9wdElu Zm8gKnJlbCwKIAkJaWYgKGNvbnRhaW5fdm9sYXRpbGVfZnVuY3Rpb25zKHRleHByKSkKIAkJCWNv bnRpbnVlOwogCisJCS8qCisJCSAqIElmIGFueSBSUFIgKFJvdyBQYXR0ZXJuIFJlY29nbml0aW9u KSB3aW5kb3cgY2xhdXNlIHJlZmVyZW5jZXMgdGhpcworCQkgKiBjb2x1bW4gaW4gaXRzIERFRklO RSBjbGF1c2UsIGRvbid0IHJlbW92ZSBpdC4gIFRoZSBERUZJTkUKKwkJICogZXhwcmVzc2lvbiBu ZWVkcyB0aGVzZSBjb2x1bW5zIGluIHRoZSB0dXBsZXN0b3JlIHNsb3QgZm9yIHBhdHRlcm4KKwkJ ICogbWF0Y2hpbmcgZXZhbHVhdGlvbiwgZXZlbiBpZiB0aGUgb3V0ZXIgcXVlcnkgZG9lc24ndCBy ZWZlcmVuY2UKKwkJICogdGhlbS4KKwkJICovCisJCWlmIChJc0EodGV4cHIsIFZhcikpCisJCXsK KwkJCVZhcgkJICAgKnZhciA9IChWYXIgKikgdGV4cHI7CisJCQlib29sCQluZWVkZWRfYnlfZGVm aW5lID0gZmFsc2U7CisKKwkJCWZvcmVhY2hfbm9kZShXaW5kb3dDbGF1c2UsIHdjLCBzdWJxdWVy eS0+d2luZG93Q2xhdXNlKQorCQkJeworCQkJCWlmICh3Yy0+ZGVmaW5lQ2xhdXNlICE9IE5JTCkK KwkJCQl7CisJCQkJCUxpc3QJICAgKnZhcnMgPSBwdWxsX3Zhcl9jbGF1c2UoKE5vZGUgKikgd2Mt PmRlZmluZUNsYXVzZSwgMCk7CisKKwkJCQkJZm9yZWFjaF9ub2RlKFZhciwgZHZhciwgdmFycykK KwkJCQkJeworCisJCQkJCQkvKgorCQkJCQkJICogTWF0Y2ggdmFybm8gYXMgd2VsbCBhcyB2YXJh dHRubzogYSBWYXIgcHVsbGVkIGZyb20KKwkJCQkJCSAqIGEgREVGSU5FIGNsYXVzZSBjYW4gc2hh cmUgYW4gYXR0cmlidXRlIG51bWJlciB3aXRoCisJCQkJCQkgKiBhbiB1bnJlbGF0ZWQgb3V0cHV0 IGNvbHVtbiBvZiBhIGRpZmZlcmVudCByZWxhdGlvbiwKKwkJCQkJCSAqIHdoaWNoIHdvdWxkIG90 aGVyd2lzZSBiZSBvdmVyLXJldGFpbmVkLiAgQ2hlY2tpbmcKKwkJCQkJCSAqIHZhcmxldmVsc3Vw IGlzIGp1c3QgcGFyYW5vaWEsIHNpbmNlIG91dGVyCisJCQkJCQkgKiByZWZlcmVuY2VzIGluIERF RklORSBhcmUgcmVqZWN0ZWQgZHVyaW5nIHBhcnNlCisJCQkJCQkgKiBhbmFseXNpcy4KKwkJCQkJ CSAqLworCQkJCQkJaWYgKGR2YXItPnZhcm5vID09IHZhci0+dmFybm8gJiYKKwkJCQkJCQlkdmFy LT52YXJhdHRubyA9PSB2YXItPnZhcmF0dG5vICYmCisJCQkJCQkJZHZhci0+dmFybGV2ZWxzdXAg PT0gdmFyLT52YXJsZXZlbHN1cCkKKwkJCQkJCXsKKwkJCQkJCQluZWVkZWRfYnlfZGVmaW5lID0g dHJ1ZTsKKwkJCQkJCQlicmVhazsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQlsaXN0X2ZyZWUodmFy cyk7CisJCQkJCWlmIChuZWVkZWRfYnlfZGVmaW5lKQorCQkJCQkJYnJlYWs7CisJCQkJfQorCQkJ fQorCQkJaWYgKG5lZWRlZF9ieV9kZWZpbmUpCisJCQkJY29udGludWU7CisJCX0KKworCQkvKgor CQkgKiBJZiBpdCdzIGEgd2luZG93IGZ1bmN0aW9uIHJlZmVyZW5jaW5nIGEgd2luZG93IGNsYXVz ZSB3aXRoIFJQUiwKKwkJICogZG9uJ3QgcmVtb3ZlIGl0LiAgRXZlbiB3aGVuIHRoZSB3aW5kb3cg ZnVuY3Rpb24gcmVzdWx0IGlzIHVudXNlZCBieQorCQkgKiB0aGUgb3V0ZXIgcXVlcnksIHRoZSBS UFIgcGF0dGVybiBtYXRjaGluZyAoZnJhbWUgcmVkdWN0aW9uIHZpYQorCQkgKiBERUZJTkUvUEFU VEVSTikgbXVzdCBzdGlsbCBleGVjdXRlLiAgUmVwbGFjaW5nIHRoaXMgd2l0aCBOVUxMIHdvdWxk CisJCSAqIGxlYXZlIG5vIGFjdGl2ZSB3aW5kb3cgZnVuY3Rpb25zIGZvciB0aGUgV2luZG93Q2xh dXNlLCBjYXVzaW5nIHRoZQorCQkgKiBwbGFubmVyIHRvIG9taXQgdGhlIFdpbmRvd0FnZyBub2Rl IGVudGlyZWx5LgorCQkgKi8KKwkJaWYgKElzQSh0ZXhwciwgV2luZG93RnVuYykpCisJCXsKKwkJ CVdpbmRvd0Z1bmMgKndmdW5jID0gKFdpbmRvd0Z1bmMgKikgdGV4cHI7CisJCQlMaXN0Q2VsbCAg ICp3bGM7CisKKwkJCWZvcmVhY2god2xjLCBzdWJxdWVyeS0+d2luZG93Q2xhdXNlKQorCQkJewor CQkJCVdpbmRvd0NsYXVzZSAqd2MgPSBsZmlyc3Rfbm9kZShXaW5kb3dDbGF1c2UsIHdsYyk7CisK KwkJCQlpZiAod2MtPndpbnJlZiA9PSB3ZnVuYy0+d2lucmVmICYmCisJCQkJCXdjLT5kZWZpbmVD bGF1c2UgIT0gTklMKQorCQkJCXsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQkJaWYgKHds YyAhPSBOVUxMKQorCQkJCWNvbnRpbnVlOworCQl9CisKIAkJLyoKIAkJICogT0ssIHdlIGRvbid0 IG5lZWQgaXQuICBSZXBsYWNlIHRoZSBleHByZXNzaW9uIHdpdGggYSBOVUxMIGNvbnN0YW50Lgog CQkgKiBQcmVzZXJ2ZSB0aGUgZXhwb3NlZCB0eXBlIG9mIHRoZSBleHByZXNzaW9uLCBpbiBjYXNl IHNvbWV0aGluZwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BhdGgvY29zdHNp emUuYyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMKaW5kZXggMWM1NzVl NTZmZjYuLjgyNDcyYzNmZTk2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGF0 aC9jb3N0c2l6ZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wYXRoL2Nvc3RzaXplLmMK QEAgLTEwNCw2ICsxMDQsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wbGFjZWhvbGRlci5oIgog I2luY2x1ZGUgIm9wdGltaXplci9wbGFuY2F0LmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL3Jlc3Ry aWN0aW5mby5oIgorI2luY2x1ZGUgIm9wdGltaXplci9ycHIuaCIKICNpbmNsdWRlICJwYXJzZXIv cGFyc2V0cmVlLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRp bHMvc2VsZnVuY3MuaCIKQEAgLTMyMjgsNyArMzIyOSwzNCBAQCBjb3N0X3dpbmRvd2FnZyhQYXRo ICpwYXRoLCBQbGFubmVySW5mbyAqcm9vdCwKIAkgKiBtYW55IHJvd3MgdGhlIHdpbmRvdyBmdW5j dGlvbiB3aWxsIGZldGNoLCBpdCdzIGhhcmQgdG8gZG8gYmV0dGVyLiAgSW4KIAkgKiBhbnkgY2Fz ZSwgaXQncyBhIGdvb2QgZXN0aW1hdGUgZm9yIGFsbCB0aGUgYnVpbHQtaW4gd2luZG93IGZ1bmN0 aW9ucywKIAkgKiBzbyB3ZSdsbCBqdXN0IGRvIHRoaXMgZm9yIG5vdy4KKwkgKgorCSAqIE1vcmVv dmVyLCBpZiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkLCB3ZSBjaGFyZ2UgdGhlIERF RklORQorCSAqIGV4cHJlc3Npb25zIG9uY2UgcGVyIHR1cGxlIGZvciBlYWNoIHZhcmlhYmxlIHRo YXQgYXBwZWFycyBpbiBQQVRURVJOLgogCSAqLworCWlmICh3aW5jbGF1c2UtPnJwUGF0dGVybikK Kwl7CisJCUxpc3QJICAgKnBhdHRlcm5fdmFyczsKKwkJUXVhbENvc3QJZGVmY29zdHM7CisKKwkJ cGF0dGVybl92YXJzID0gY29sbGVjdFBhdHRlcm5WYXJpYWJsZXMod2luY2xhdXNlLT5ycFBhdHRl cm4pOworCisJCWZvcmVhY2hfbm9kZShTdHJpbmcsIHB2LCBwYXR0ZXJuX3ZhcnMpCisJCXsKKwkJ CWNoYXIJICAgKnB0bmFtZSA9IHN0clZhbChwdik7CisKKwkJCWZvcmVhY2hfbm9kZShUYXJnZXRF bnRyeSwgZGVmLCB3aW5jbGF1c2UtPmRlZmluZUNsYXVzZSkKKwkJCXsKKwkJCQlpZiAoIXN0cmNt cChwdG5hbWUsIGRlZi0+cmVzbmFtZSkpCisJCQkJeworCQkJCQljb3N0X3F1YWxfZXZhbF9ub2Rl KCZkZWZjb3N0cywgKE5vZGUgKikgZGVmLT5leHByLCByb290KTsKKwkJCQkJc3RhcnR1cF9jb3N0 ICs9IGRlZmNvc3RzLnN0YXJ0dXA7CisJCQkJCXRvdGFsX2Nvc3QgKz0gZGVmY29zdHMucGVyX3R1 cGxlICogaW5wdXRfdHVwbGVzOworCQkJCX0KKwkJCX0KKwkJfQorCQlsaXN0X2ZyZWVfZGVlcChw YXR0ZXJuX3ZhcnMpOworCX0KKwogCWZvcmVhY2gobGMsIHdpbmRvd0Z1bmNzKQogCXsKIAkJV2lu ZG93RnVuYyAqd2Z1bmMgPSBsZmlyc3Rfbm9kZShXaW5kb3dGdW5jLCBsYyk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9NYWtlZmlsZSBiL3NyYy9iYWNrZW5kL29wdGlt aXplci9wbGFuL01ha2VmaWxlCmluZGV4IDgwZWYxNjJlNDg0Li43ZTAxNjc3ODlkOCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vTWFrZWZpbGUKKysrIGIvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vTWFrZWZpbGUKQEAgLTE5LDYgKzE5LDcgQEAgT0JKUyA9IFwKIAlw bGFuYWdnLm8gXAogCXBsYW5tYWluLm8gXAogCXBsYW5uZXIubyBcCisJcnByLm8gXAogCXNldHJl ZnMubyBcCiAJc3Vic2VsZWN0Lm8KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVy L3BsYW4vY3JlYXRlcGxhbi5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxh bi5jCmluZGV4IGRlNmExODNkYTc5Li5jY2E0MTI2ZTUxMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvb3B0aW1pemVyL3BsYW4vY3JlYXRlcGxhbi5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL2NyZWF0ZXBsYW4uYwpAQCAtMTYsNiArMTYsNyBAQAogICovCiAjaW5jbHVkZSAicG9z dGdyZXMuaCIKIAorI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJhY2Nlc3Mvc3lz YXR0ci5oIgogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9w Z19jbGFzcy5oIgpAQCAtMzYsNiArMzcsNyBAQAogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgi CiAjaW5jbHVkZSAib3B0aW1pemVyL3Jlc3RyaWN0aW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXpl ci9zdWJzZWxlY3QuaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIvcnByLmgiCiAjaW5jbHVkZSAib3B0 aW1pemVyL3RsaXN0LmgiCiAjaW5jbHVkZSAicGFyc2VyL3BhcnNlX2NsYXVzZS5oIgogI2luY2x1 ZGUgInBhcnNlci9wYXJzZXRyZWUuaCIKQEAgLTI4OCw3ICsyOTAsMTQgQEAgc3RhdGljIE1lbW9p emUgKm1ha2VfbWVtb2l6ZShQbGFuICpsZWZ0dHJlZSwgT2lkICpoYXNob3BlcmF0b3JzLAogc3Rh dGljIFdpbmRvd0FnZyAqbWFrZV93aW5kb3dhZ2coTGlzdCAqdGxpc3QsIFdpbmRvd0NsYXVzZSAq d2MsCiAJCQkJCQkJCSBpbnQgcGFydE51bUNvbHMsIEF0dHJOdW1iZXIgKnBhcnRDb2xJZHgsIE9p ZCAqcGFydE9wZXJhdG9ycywgT2lkICpwYXJ0Q29sbGF0aW9ucywKIAkJCQkJCQkJIGludCBvcmRO dW1Db2xzLCBBdHRyTnVtYmVyICpvcmRDb2xJZHgsIE9pZCAqb3JkT3BlcmF0b3JzLCBPaWQgKm9y ZENvbGxhdGlvbnMsCi0JCQkJCQkJCSBMaXN0ICpydW5Db25kaXRpb24sIExpc3QgKnF1YWwsIGJv b2wgdG9wV2luZG93LAorCQkJCQkJCQkgTGlzdCAqcnVuQ29uZGl0aW9uLCBSUFNraXBUbyBycFNr aXBUbywKKwkJCQkJCQkJIFJQUlBhdHRlcm4gKmNvbXBpbGVkUGF0dGVybiwKKwkJCQkJCQkJIExp c3QgKmRlZmluZUNsYXVzZSwKKwkJCQkJCQkJIEJpdG1hcHNldCAqZGVmaW5lTWF0Y2hTdGFydERl cGVuZGVudCwKKwkJCQkJCQkJIFJQUk5hdk9mZnNldEtpbmQgbmF2TWF4T2Zmc2V0S2luZCwgaW50 NjQgbmF2TWF4T2Zmc2V0LAorCQkJCQkJCQkgYm9vbCBoYXNGaXJzdE5hdiwKKwkJCQkJCQkJIFJQ Uk5hdk9mZnNldEtpbmQgbmF2Rmlyc3RPZmZzZXRLaW5kLCBpbnQ2NCBuYXZGaXJzdE9mZnNldCwK KwkJCQkJCQkJIExpc3QgKnF1YWwsIGJvb2wgdG9wV2luZG93LAogCQkJCQkJCQkgUGxhbiAqbGVm dHRyZWUpOwogc3RhdGljIEdyb3VwICptYWtlX2dyb3VwKExpc3QgKnRsaXN0LCBMaXN0ICpxdWFs LCBpbnQgbnVtR3JvdXBDb2xzLAogCQkJCQkJIEF0dHJOdW1iZXIgKmdycENvbElkeCwgT2lkICpn cnBPcGVyYXRvcnMsIE9pZCAqZ3JwQ29sbGF0aW9ucywKQEAgLTI0NTcsNiArMjQ2NiwzMzcgQEAg Y3JlYXRlX21pbm1heGFnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290LCBNaW5NYXhBZ2dQYXRoICpi ZXN0X3BhdGgpCiAJcmV0dXJuIHBsYW47CiB9CiAKKy8qCisgKiBEZWZpbmVNZXRhZGF0YUNvbnRl eHQgLSBjb250ZXh0IGZvciBjb21wdXRlX2RlZmluZV9tZXRhZGF0YSB3YWxrZXIuCisgKgorICog Q29sbGVjdHMgdGhyZWUgcGllY2VzIG9mIG1ldGFkYXRhIGZyb20gdGhlIERFRklORSBjbGF1c2Ug aW4gYSBzaW5nbGUKKyAqIHRyZWUgd2FsayBwZXIgdmFyaWFibGU6CisgKiAgIC0gYmFja3dhcmQg cmVhY2ggKFBSRVYsIExBU1Qtd2l0aC1vZmZzZXQsIGNvbXBvdW5kIFBSRVZfTEFTVC9ORVhUX0xB U1QpCisgKiAgIC0gZm9yd2FyZC1mcm9tLW1hdGNoLXN0YXJ0IHJlYWNoIChGSVJTVCwgY29tcG91 bmQgUFJFVl9GSVJTVC9ORVhUX0ZJUlNUKQorICogICAtIHBlci12YXJpYWJsZSBtYXRjaF9zdGFy dCBkZXBlbmRlbmN5ICh2YXJpYWJsZXMgY29udGFpbmluZyBGSVJTVCwKKyAqICAgICBMQVNULXdp dGgtb2Zmc2V0LCBvciBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QvUFJFVl9MQVNULwor ICogICAgIE5FWFRfTEFTVC13aXRoLW9mZnNldCByZXF1aXJlIHBlci1jb250ZXh0IHJlLWV2YWx1 YXRpb24pCisgKgorICogVGhlIGRyaXZlciBzZXRzIGN1clZhcklkeCB0byB0aGUgaW5kZXggb2Yg dGhlIHZhcmlhYmxlIGJlaW5nIHdhbGtlZAorICogYmVmb3JlIGVhY2ggaW52b2NhdGlvbjsgdGhl IHdhbGtlciB1c2VzIGl0IHRvIHBvcHVsYXRlIG1hdGNoU3RhcnREZXBlbmRlbnQuCisgKi8KK3R5 cGVkZWYgc3RydWN0IERlZmluZU1ldGFkYXRhQ29udGV4dAoreworCWludDY0CQltYXhPZmZzZXQ7 CQkvKiBtYXggUFJFVi9MQVNUIGJhY2t3YXJkIG9mZnNldCAoPj0gMCkgKi8KKwlib29sCQltYXhO ZWVkc0V2YWw7CS8qIG5vbi1jb25zdGFudCBQUkVWL0xBU1Qgb2Zmc2V0IGZvdW5kICovCisJYm9v bAkJbWF4T3ZlcmZsb3c7CS8qIGNvbnN0YW50IG9mZnNldCBvdmVyZmxvdyBkZXRlY3RlZCAqLwor CWludDY0CQlmaXJzdE9mZnNldDsJLyogbWluIEZJUlNUIG9mZnNldCAobWF5IGJlIG5lZ2F0aXZl IGZvcgorCQkJCQkJCQkgKiBQUkVWX0ZJUlNUKSAqLworCWJvb2wJCWhhc0ZpcnN0OwkJLyogYW55 IEZJUlNUIG5vZGUgZm91bmQgKi8KKwlib29sCQlmaXJzdE5lZWRzRXZhbDsgLyogbm9uLWNvbnN0 YW50IEZJUlNUIG9mZnNldCBmb3VuZCAqLworCWludAkJCWN1clZhcklkeDsJCS8qIERFRklORSB2 YXJpYWJsZSBjdXJyZW50bHkgYmVpbmcgd2Fsa2VkICovCisJQml0bWFwc2V0ICAqbWF0Y2hTdGFy dERlcGVuZGVudDsJLyogdmFyaWFibGVzIHRoYXQgZGVwZW5kIG9uCisJCQkJCQkJCQkJICogbWF0 Y2hfc3RhcnQgKi8KK30gRGVmaW5lTWV0YWRhdGFDb250ZXh0OworCisvKgorICogSGVscGVyOiBl eHRyYWN0IGNvbnN0YW50IG9mZnNldCBmcm9tIGFuIGV4cHJlc3Npb24sIGhhbmRsaW5nIE5VTEwv bmVnYXRpdmUuCisgKiBJZiBleHByIGlzIE5VTEwsIHJldHVybnMgZGVmYXVsdE9mZnNldC4KKyAq IFJldHVybnMgdHJ1ZSBpZiBjb25zdGFudCwgZmFsc2UgaWYgbm9uLWNvbnN0YW50IChQYXJhbSwg Y2FzdCwgZXRjLikuCisgKi8KK3N0YXRpYyBib29sCitleHRyYWN0X2NvbnN0X29mZnNldChFeHBy ICpleHByLCBpbnQ2NCBkZWZhdWx0T2Zmc2V0LCBpbnQ2NCAqcmVzdWx0KQoreworCWlmIChleHBy ID09IE5VTEwpCisJeworCQkqcmVzdWx0ID0gZGVmYXVsdE9mZnNldDsKKwkJcmV0dXJuIHRydWU7 CisJfQorCisJaWYgKElzQShleHByLCBDb25zdCkpCisJeworCQlDb25zdAkgICAqYyA9IChDb25z dCAqKSBleHByOworCisJCWlmIChjLT5jb25zdGlzbnVsbCkKKwkJCSpyZXN1bHQgPSAwOwkJLyog cnVudGltZSBlcnJvcjsgc2FmZSBwbGFjZWhvbGRlciAqLworCQllbHNlCisJCXsKKwkJCSpyZXN1 bHQgPSBEYXR1bUdldEludDY0KGMtPmNvbnN0dmFsdWUpOworCQkJaWYgKCpyZXN1bHQgPCAwKQor CQkJCSpyZXN1bHQgPSAwOwkvKiBydW50aW1lIGVycm9yOyBzYWZlIHBsYWNlaG9sZGVyICovCisJ CX0KKwkJcmV0dXJuIHRydWU7CisJfQorCisJcmV0dXJuIGZhbHNlOwkJCQkvKiBub24tY29uc3Rh bnQgKi8KK30KKworLyoKKyAqIHZpc2l0X25hdl9wbGFuCisgKgkJbmF2X3RyYXZlcnNhbF93YWxr ZXIgY2FsbGJhY2sgKE5hdlZpc2l0Rm4pIGZvciB0aGUgcGxhbm5lciBzaWRlLgorICoJCUF0IGVh Y2ggUlBSTmF2RXhwciBpbiBhIERFRklORSBleHByZXNzaW9uLCBjb21wdXRlczoKKyAqCisgKgkJ ICAxLiBiYWNrd2FyZCByZWFjaCAobWF4T2Zmc2V0KSBmb3IgdHVwbGVzdG9yZSB0cmltOgorICoJ CQkgLSBQUkVWKHYsIE4pLCBMQVNUKHYsIE4pICAgICAgICAgICAgICAtPiBOIChkZWZhdWx0IDEp CisgKgkJCSAtIGNvbXBvdW5kIFBSRVZfTEFTVCh2LCBOLCBNKSAgICAgICAgIC0+IE4gKyBNIChv dmVyZmxvdyAtPiBtYXhPdmVyZmxvdykKKyAqCQkJIC0gY29tcG91bmQgTkVYVF9MQVNUKHYsIE4s IE0pICAgICAgICAgLT4gbWF4KE4gLSBNLCAwKQorICoKKyAqCQkgIDIuIGZvcndhcmQgcmVhY2gg KGZpcnN0T2Zmc2V0KSBmb3IgdHVwbGVzdG9yZSB0cmltOgorICoJCQkgLSBGSVJTVCh2LCBOKSAg ICAgICAgICAgICAgICAgICAgICAgICAtPiBOIChkZWZhdWx0IDApCisgKgkJCSAtIGNvbXBvdW5k IFBSRVZfRklSU1QodiwgTiwgTSkgICAgICAgIC0+IE4gLSBNIChtYXkgYmUgbmVnYXRpdmUpCisg KgkJCSAtIGNvbXBvdW5kIE5FWFRfRklSU1QodiwgTiwgTSkgICAgICAgIC0+IE4gKyBNCisgKgor ICoJCSAgMy4gcGVyLXZhcmlhYmxlIG1hdGNoX3N0YXJ0IGRlcGVuZGVuY3kgZm9yIGFic29ycHRp b24gc3VwcHJlc3Npb246CisgKgkJCSBvdXRlciBuYXYga2luZHMgdGhhdCByZWFjaCBtYXRjaF9z dGFydCAoRklSU1QsIExBU1Qtd2l0aC1vZmZzZXQsCisgKgkJCSBQUkVWX0ZJUlNULCBORVhUX0ZJ UlNULCBQUkVWX0xBU1QvTkVYVF9MQVNULXdpdGgtb2Zmc2V0KSBhZGQKKyAqCQkJIGN1clZhcklk eCB0byBtYXRjaFN0YXJ0RGVwZW5kZW50LgorICoKKyAqIENvbnN0YW50IG9mZnNldHMgYXJlIGV4 dHJhY3RlZCB2aWEgZXh0cmFjdF9jb25zdF9vZmZzZXQ7IG5vbi1jb25zdGFudAorICogb2Zmc2V0 cyBzZXQgbWF4TmVlZHNFdmFsIC8gZmlyc3ROZWVkc0V2YWwgc28gdGhlIGV4ZWN1dG9yIGNhbiBy ZXNvbHZlCisgKiB0aGVtIGF0IGluaXQgdGltZSAoc2VlIHZpc2l0X25hdl9leGVjKS4gIENsYXNz aWZpY2F0aW9uIHVzZXMgb25seSB0aGUKKyAqIG91dGVyIG5hdiBraW5kOiBwYXJzZXIgbmVzdGlu ZyByZXN0cmljdGlvbnMgcHJldmVudCBGSVJTVC9MQVNUIGluc2lkZQorICogYSBQUkVWL05FWFQg dmFsdWUgc3ViZXhwcmVzc2lvbi4KKyAqLworc3RhdGljIHZvaWQKK3Zpc2l0X25hdl9wbGFuKE5h dlRyYXZlcnNhbCAqdCwgUlBSTmF2RXhwciAqbmF2KQoreworCURlZmluZU1ldGFkYXRhQ29udGV4 dCAqY29udGV4dCA9IChEZWZpbmVNZXRhZGF0YUNvbnRleHQgKikgdC0+ZGF0YTsKKworCS8qCisJ ICogUGFyc2VyIGd1YXJhbnRlZTogYnkgdGhlIHRpbWUgdGhlIHBsYW5uZXIgc2VlcyBhIERFRklO RSBleHByZXNzaW9uLAorCSAqIGNvbXBvdW5kIG5lc3RpbmcgaGFzIGJlZW4gZmxhdHRlbmVkIGlu dG8gYSBzaW5nbGUgUlBSTmF2RXhwciBhbmQgYW55CisJICogb3RoZXIgUlBSTmF2RXhwciBuZXN0 aW5nIGhhcyBiZWVuIHJlamVjdGVkLiAgU28gbmF2J3MgZGlyZWN0IGNoaWxkCisJICogZmllbGRz IGFyZSBub3QgdGhlbXNlbHZlcyBSUFJOYXZFeHByIG5vZGVzLCBhbmQgb3V0ZXIta2luZCBkaXNw YXRjaAorCSAqIGJlbG93IGlzIHN1ZmZpY2llbnQuCisJICovCisJQXNzZXJ0KG5hdi0+YXJnID09 IE5VTEwgfHwgIUlzQShuYXYtPmFyZywgUlBSTmF2RXhwcikpOworCUFzc2VydChuYXYtPm9mZnNl dF9hcmcgPT0gTlVMTCB8fCAhSXNBKG5hdi0+b2Zmc2V0X2FyZywgUlBSTmF2RXhwcikpOworCUFz c2VydChuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcgPT0gTlVMTCB8fAorCQkgICAhSXNBKG5hdi0+ Y29tcG91bmRfb2Zmc2V0X2FyZywgUlBSTmF2RXhwcikpOworCisJLyoKKwkgKiBTaW1wbGUgUFJF Vih2LCBOKSBhbmQgTEFTVCh2LCBOKTogYmFja3dhcmQgcmVhY2ggZnJvbSBjdXJyZW50cG9zLiBM QVNUCisJICogd2l0aG91dCBvZmZzZXQgPSBjdXJyZW50cG9zLCBubyBiYWNrd2FyZCByZWFjaC4g TkVYVDogZm9yd2FyZCBvbmx5LAorCSAqIGlycmVsZXZhbnQgZm9yIHRyaW0uCisJICovCisJaWYg KG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVYgfHwKKwkJKG5hdi0+a2luZCA9PSBSUFJfTkFWX0xB U1QgJiYgbmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpKQorCXsKKwkJaWYgKCFjb250ZXh0LT5tYXhO ZWVkc0V2YWwpCisJCXsKKwkJCWludDY0CQlvZmZzZXQ7CisKKwkJCS8qCisJCQkgKiBkZWZhdWx0 IDEgaXMgZm9yIFBSRVY7IHRoZSBndWFyZGVkIExBU1Qgc3ViLWNhc2UgbmV2ZXIgdXNlcyBpdC4K KwkJCSAqLworCQkJaWYgKGV4dHJhY3RfY29uc3Rfb2Zmc2V0KG5hdi0+b2Zmc2V0X2FyZywgMSwg Jm9mZnNldCkpCisJCQkJY29udGV4dC0+bWF4T2Zmc2V0ID0gTWF4KGNvbnRleHQtPm1heE9mZnNl dCwgb2Zmc2V0KTsKKwkJCWVsc2UKKwkJCQljb250ZXh0LT5tYXhOZWVkc0V2YWwgPSB0cnVlOwor CQl9CisJfQorCisJLyoKKwkgKiBTaW1wbGUgRklSU1QodiwgTik6IGZvcndhcmQgcmVhY2ggZnJv bSBtYXRjaF9zdGFydC4gU21hbGxlciBOIG1lYW5zCisJICogb2xkZXIgcm93cyBuZWVkZWQuCisJ ICovCisJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX0ZJUlNUKQorCXsKKwkJY29udGV4dC0+aGFz Rmlyc3QgPSB0cnVlOworCisJCWlmICghY29udGV4dC0+Zmlyc3ROZWVkc0V2YWwpCisJCXsKKwkJ CWludDY0CQlvZmZzZXQ7CisKKwkJCWlmIChleHRyYWN0X2NvbnN0X29mZnNldChuYXYtPm9mZnNl dF9hcmcsIDAsICZvZmZzZXQpKQorCQkJCWNvbnRleHQtPmZpcnN0T2Zmc2V0ID0gTWluKGNvbnRl eHQtPmZpcnN0T2Zmc2V0LCBvZmZzZXQpOworCQkJZWxzZQorCQkJCWNvbnRleHQtPmZpcnN0TmVl ZHNFdmFsID0gdHJ1ZTsKKwkJfQorCX0KKworCS8qCisJICogQ29tcG91bmQgUFJFVl9MQVNUIC8g TkVYVF9MQVNUOiBiYXNlID0gY3VycmVudHBvcy4gUFJFVl9MQVNUKHYsIE4sIE0pOgorCSAqIHRh cmdldCA9IGN1cnJlbnRwb3MgLSBOIC0gTSAtPiBsb29rYmFjayA9IE4gKyBNIE5FWFRfTEFTVCh2 LCBOLCBNKToKKwkgKiB0YXJnZXQgPSBjdXJyZW50cG9zIC0gTiArIE0gLT4gbG9va2JhY2sgPSBt YXgoTiAtIE0sIDApCisJICovCisJaWYgKG5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVZfTEFTVCB8 fAorCQluYXYtPmtpbmQgPT0gUlBSX05BVl9ORVhUX0xBU1QpCisJeworCQlpZiAoIWNvbnRleHQt Pm1heE5lZWRzRXZhbCkKKwkJeworCQkJaW50NjQJCWlubmVyOworCQkJaW50NjQJCW91dGVyOwor CQkJaW50NjQJCXJlYWNoOworCisJCQlpZiAoZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2LT5vZmZz ZXRfYXJnLCAwLCAmaW5uZXIpICYmCisJCQkJZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2LT5jb21w b3VuZF9vZmZzZXRfYXJnLCAxLCAmb3V0ZXIpKQorCQkJeworCQkJCWlmIChuYXYtPmtpbmQgPT0g UlBSX05BVl9QUkVWX0xBU1QpCisJCQkJeworCQkJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyhp bm5lciwgb3V0ZXIsICZyZWFjaCkpCisJCQkJCQljb250ZXh0LT5tYXhPdmVyZmxvdyA9IHRydWU7 CisJCQkJCWVsc2UKKwkJCQkJCWNvbnRleHQtPm1heE9mZnNldCA9IE1heChjb250ZXh0LT5tYXhP ZmZzZXQsIHJlYWNoKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJcmVhY2ggPSBNYXgo aW5uZXIgLSBvdXRlciwgMCk7CisJCQkJCWNvbnRleHQtPm1heE9mZnNldCA9IE1heChjb250ZXh0 LT5tYXhPZmZzZXQsIHJlYWNoKTsKKwkJCQl9CisJCQl9CisJCQllbHNlCisJCQkJY29udGV4dC0+ bWF4TmVlZHNFdmFsID0gdHJ1ZTsKKwkJfQorCX0KKworCS8qCisJICogQ29tcG91bmQgUFJFVl9G SVJTVCAvIE5FWFRfRklSU1Q6IGJhc2UgPSBtYXRjaF9zdGFydC4gUFJFVl9GSVJTVCh2LCBOLAor CSAqIE0pOiB0YXJnZXQgPSBtYXRjaF9zdGFydCArIE4gLSBNIE5FWFRfRklSU1QodiwgTiwgTSk6 IHRhcmdldCA9CisJICogbWF0Y2hfc3RhcnQgKyBOICsgTSBUaGUgY29tYmluZWQgb2Zmc2V0IChO Ky8tTSkgZnJvbSBtYXRjaF9zdGFydCBjYW4gYmUKKwkgKiBuZWdhdGl2ZSwgbWVhbmluZyByb3dz IGJlZm9yZSBtYXRjaF9zdGFydCBhcmUgbmVlZGVkLgorCSAqLworCWlmIChuYXYtPmtpbmQgPT0g UlBSX05BVl9QUkVWX0ZJUlNUIHx8CisJCW5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRfRklSU1Qp CisJeworCQljb250ZXh0LT5oYXNGaXJzdCA9IHRydWU7CisKKwkJaWYgKCFjb250ZXh0LT5maXJz dE5lZWRzRXZhbCkKKwkJeworCQkJaW50NjQJCWlubmVyOworCQkJaW50NjQJCW91dGVyOworCQkJ aW50NjQJCXJlYWNoOworCisJCQlpZiAoZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2LT5vZmZzZXRf YXJnLCAwLCAmaW5uZXIpICYmCisJCQkJZXh0cmFjdF9jb25zdF9vZmZzZXQobmF2LT5jb21wb3Vu ZF9vZmZzZXRfYXJnLCAxLCAmb3V0ZXIpKQorCQkJeworCQkJCWlmIChuYXYtPmtpbmQgPT0gUlBS X05BVl9QUkVWX0ZJUlNUKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogcmVhY2ggPSBpbm5lciAt IG91dGVyLiAgQm90aCBhcmUgbm9uLW5lZ2F0aXZlLCBzbyB0aGUKKwkJCQkJICogcmVzdWx0ID49 IC1QR19JTlQ2NF9NQVgsIHdoaWNoIGNhbm5vdCB1bmRlcmZsb3cgaW50NjQuCisJCQkJCSAqIE5v IG92ZXJmbG93IGNoZWNrIG5lZWRlZC4KKwkJCQkJICovCisJCQkJCXJlYWNoID0gaW5uZXIgLSBv dXRlcjsKKwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogTkVYVF9GSVJT VDogcmVhY2ggPSBpbm5lciArIG91dGVyLiAgVGhpcyBjYW4gb3ZlcmZsb3csCisJCQkJCSAqIGJ1 dCB0aGUgcmVzdWx0IGlzIGFsd2F5cyA+PSAwLCBzbyBpdCBuZXZlciB1cGRhdGVzCisJCQkJCSAq IGZpcnN0T2Zmc2V0ICh3aGljaCB0cmFja3MgdGhlIG1pbmltdW0pLiAgQ2xhbXAgdG8KKwkJCQkJ ICogUEdfSU5UNjRfTUFYIG9uIG92ZXJmbG93LgorCQkJCQkgKi8KKwkJCQkJaWYgKHBnX2FkZF9z NjRfb3ZlcmZsb3coaW5uZXIsIG91dGVyLCAmcmVhY2gpKQorCQkJCQkJcmVhY2ggPSBQR19JTlQ2 NF9NQVg7CisJCQkJfQorCisJCQkJY29udGV4dC0+Zmlyc3RPZmZzZXQgPSBNaW4oY29udGV4dC0+ Zmlyc3RPZmZzZXQsIHJlYWNoKTsKKwkJCX0KKwkJCWVsc2UKKwkJCQljb250ZXh0LT5maXJzdE5l ZWRzRXZhbCA9IHRydWU7CisJCX0KKwl9CisKKwkvKgorCSAqIE1hdGNoLXN0YXJ0IGRlcGVuZGVu Y3k6IGNsYXNzaWZ5IHRoZSBvdXRlciBuYXYga2luZC4gIEEgY29uc3RhbnQKKwkgKiBMQVNUKHgs IDApIGlzIGNvbnNlcnZhdGl2ZWx5IGluY2x1ZGVkIChvZmZzZXRfYXJnIGlzIGEgbm9uLU5VTEwg Q29uc3QpLAorCSAqIGNhdXNpbmcgYSBoYXJtbGVzcyBleHRyYSByZS1ldmFsdWF0aW9uOyBzaW5j ZSBMQVNUKHgsIDApIGlzIHRoZSBjdXJyZW50CisJICogcm93LCBpdHMgcmVzdWx0IGlzIGluZGVw ZW5kZW50IG9mIHRoZSBtYXRjaCBzdGFydC4KKwkgKi8KKwlpZiAobmF2LT5raW5kID09IFJQUl9O QVZfRklSU1QgfHwKKwkJKG5hdi0+a2luZCA9PSBSUFJfTkFWX0xBU1QgJiYgbmF2LT5vZmZzZXRf YXJnICE9IE5VTEwpIHx8CisJCW5hdi0+a2luZCA9PSBSUFJfTkFWX1BSRVZfRklSU1QgfHwKKwkJ bmF2LT5raW5kID09IFJQUl9OQVZfTkVYVF9GSVJTVCB8fAorCQkoKG5hdi0+a2luZCA9PSBSUFJf TkFWX1BSRVZfTEFTVCB8fAorCQkgIG5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRfTEFTVCkgJiYK KwkJIG5hdi0+b2Zmc2V0X2FyZyAhPSBOVUxMKSkKKwkJY29udGV4dC0+bWF0Y2hTdGFydERlcGVu ZGVudCA9CisJCQlibXNfYWRkX21lbWJlcihjb250ZXh0LT5tYXRjaFN0YXJ0RGVwZW5kZW50LAor CQkJCQkJICAgY29udGV4dC0+Y3VyVmFySWR4KTsKK30KKworLyoKKyAqIGNvbXB1dGVfZGVmaW5l X21ldGFkYXRhCisgKgkJQ29tcHV0ZSBuYXZpZ2F0aW9uIG9mZnNldHMgYW5kIG1hdGNoX3N0YXJ0 IGRlcGVuZGVuY3kgZm9yIHRoZQorICoJCURFRklORSBjbGF1c2UgaW4gYSBzaW5nbGUgcGFzcyBw ZXIgdmFyaWFibGUuCisgKgorICogV2Fsa3MgZWFjaCBERUZJTkUgdmFyaWFibGUgZXhwcmVzc2lv biBvbmNlLCBjb21wdXRpbmc6CisgKiAgIC0gbWF4T2Zmc2V0OiBtYXggYmFja3dhcmQgcmVhY2gg ZnJvbSBQUkVWLCBMQVNULXdpdGgtb2Zmc2V0LAorICogICAgIGNvbXBvdW5kIFBSRVZfTEFTVC9O RVhUX0xBU1QKKyAqICAgLSBoYXNGaXJzdC9maXJzdE9mZnNldDogbWluIGZvcndhcmQtZnJvbS1t YXRjaC1zdGFydCByZWFjaCBmcm9tCisgKiAgICAgRklSU1QsIGNvbXBvdW5kIFBSRVZfRklSU1Qv TkVYVF9GSVJTVAorICogICAtIG1hdGNoU3RhcnREZXBlbmRlbnQ6IGJpdG1hcHNldCBvZiB2YXJp YWJsZSBpbmRpY2VzIHdob3NlCisgKiAgICAgZXhwcmVzc2lvbnMgY29udGFpbiBuYXZpZ2F0aW9u IHRoYXQgZGVwZW5kcyBvbiBtYXRjaF9zdGFydAorICogICAgIChGSVJTVCwgTEFTVC13aXRoLW9m ZnNldCwgb3IgY29tcG91bmQgUFJFVl9GSVJTVC9ORVhUX0ZJUlNULworICogICAgIFBSRVZfTEFT VC9ORVhUX0xBU1Qtd2l0aC1vZmZzZXQpLiAgU3VjaCB2YXJpYWJsZXMgcmVxdWlyZQorICogICAg IHBlci1jb250ZXh0IHJlLWV2YWx1YXRpb24gZHVyaW5nIE5GQSBwcm9jZXNzaW5nLgorICovCitz dGF0aWMgdm9pZAorY29tcHV0ZV9kZWZpbmVfbWV0YWRhdGEoTGlzdCAqZGVmaW5lQ2xhdXNlLAor CQkJCQkJUlBSTmF2T2Zmc2V0S2luZCAqbWF4S2luZCwgaW50NjQgKm1heFJlc3VsdCwKKwkJCQkJ CWJvb2wgKmhhc0ZpcnN0LAorCQkJCQkJUlBSTmF2T2Zmc2V0S2luZCAqZmlyc3RLaW5kLCBpbnQ2 NCAqZmlyc3RSZXN1bHQsCisJCQkJCQlCaXRtYXBzZXQgKiptYXRjaFN0YXJ0RGVwZW5kZW50KQor eworCURlZmluZU1ldGFkYXRhQ29udGV4dCBjdHg7CisJTmF2VHJhdmVyc2FsIHRyYXY7CisKKwlj dHgubWF4T2Zmc2V0ID0gMDsKKwljdHgubWF4TmVlZHNFdmFsID0gZmFsc2U7CisJY3R4Lm1heE92 ZXJmbG93ID0gZmFsc2U7CisJY3R4LmZpcnN0T2Zmc2V0ID0gUEdfSU5UNjRfTUFYOyAvKiBzZW50 aW5lbDogbm8gRklSU1QgZm91bmQgeWV0ICovCisJY3R4Lmhhc0ZpcnN0ID0gZmFsc2U7CisJY3R4 LmZpcnN0TmVlZHNFdmFsID0gZmFsc2U7CisJY3R4LmN1clZhcklkeCA9IDA7CisJY3R4Lm1hdGNo U3RhcnREZXBlbmRlbnQgPSBOVUxMOworCisJdHJhdi52aXNpdCA9IHZpc2l0X25hdl9wbGFuOwor CXRyYXYuZGF0YSA9ICZjdHg7CisKKwlmb3JlYWNoX25vZGUoVGFyZ2V0RW50cnksIHRlLCBkZWZp bmVDbGF1c2UpCisJeworCQluYXZfdHJhdmVyc2FsX3dhbGtlcigoTm9kZSAqKSB0ZS0+ZXhwciwg JnRyYXYpOworCQljdHguY3VyVmFySWR4Kys7CisJfQorCisJKm1hdGNoU3RhcnREZXBlbmRlbnQg PSBjdHgubWF0Y2hTdGFydERlcGVuZGVudDsKKworCS8qIE1heCBiYWNrd2FyZCBvZmZzZXQgKi8K KwlpZiAoY3R4Lm1heE92ZXJmbG93KQorCXsKKwkJKm1heEtpbmQgPSBSUFJfTkFWX09GRlNFVF9S RVRBSU5fQUxMOworCQkqbWF4UmVzdWx0ID0gMDsKKwl9CisJZWxzZSBpZiAoY3R4Lm1heE5lZWRz RXZhbCkKKwl7CisJCSptYXhLaW5kID0gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTDsKKwkJKm1h eFJlc3VsdCA9IDA7CisJfQorCWVsc2UKKwl7CisJCSptYXhLaW5kID0gUlBSX05BVl9PRkZTRVRf RklYRUQ7CisJCSptYXhSZXN1bHQgPSBjdHgubWF4T2Zmc2V0OworCX0KKworCS8qIEZpcnN0IG9m ZnNldCAoY2FuIGJlIG5lZ2F0aXZlIGZvciBjb21wb3VuZCBQUkVWX0ZJUlNUKSAqLworCSpoYXNG aXJzdCA9IGN0eC5oYXNGaXJzdDsKKwlpZiAoY3R4Lmhhc0ZpcnN0KQorCXsKKwkJaWYgKGN0eC5m aXJzdE5lZWRzRXZhbCkKKwkJeworCQkJKmZpcnN0S2luZCA9IFJQUl9OQVZfT0ZGU0VUX05FRURT X0VWQUw7CisJCQkqZmlyc3RSZXN1bHQgPSAwOworCQl9CisJCWVsc2UKKwkJeworCQkJKmZpcnN0 S2luZCA9IFJQUl9OQVZfT0ZGU0VUX0ZJWEVEOworCQkJKmZpcnN0UmVzdWx0ID0gY3R4LmZpcnN0 T2Zmc2V0OyAvKiBtYXkgYmUgbmVnYXRpdmU7IFBHX0lOVDY0X01BWAorCQkJCQkJCQkJCQkgKiBp ZiBvdmVyZmxvd2VkICovCisJCX0KKwl9CisJZWxzZQorCXsKKwkJKmZpcnN0S2luZCA9IFJQUl9O QVZfT0ZGU0VUX0ZJWEVEOworCQkqZmlyc3RSZXN1bHQgPSAwOworCX0KK30KKwogLyoKICAqIGNy ZWF0ZV93aW5kb3dhZ2dfcGxhbgogICoKQEAgLTI0ODEsNiArMjgyMSwxNiBAQCBjcmVhdGVfd2lu ZG93YWdnX3BsYW4oUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0FnZ1BhdGggKmJlc3RfcGF0aCkK IAlPaWQJCSAgICpvcmRPcGVyYXRvcnM7CiAJT2lkCQkgICAqb3JkQ29sbGF0aW9uczsKIAlMaXN0 Q2VsbCAgICpsYzsKKwlMaXN0CSAgICpkZWZpbmVWYXJpYWJsZUxpc3QgPSBOSUw7CisJTGlzdAkg ICAqZmlsdGVyZWREZWZpbmVDbGF1c2UgPSBOSUw7CisJUlBSUGF0dGVybiAqY29tcGlsZWRQYXR0 ZXJuID0gTlVMTDsKKwlCaXRtYXBzZXQgICptYXRjaFN0YXJ0RGVwZW5kZW50ID0gTlVMTDsKKwlS UFJOYXZPZmZzZXRLaW5kIG5hdk1heE9mZnNldEtpbmQgPSBSUFJfTkFWX09GRlNFVF9GSVhFRDsK KwlpbnQ2NAkJbmF2TWF4T2Zmc2V0ID0gMDsKKwlib29sCQloYXNGaXJzdE5hdiA9IGZhbHNlOwor CVJQUk5hdk9mZnNldEtpbmQgbmF2Rmlyc3RPZmZzZXRLaW5kID0gUlBSX05BVl9PRkZTRVRfRklY RUQ7CisJaW50NjQJCW5hdkZpcnN0T2Zmc2V0ID0gMDsKKwogCiAJLyoKIAkgKiBDaG9pY2Ugb2Yg dGxpc3QgaGVyZSBpcyBtb3RpdmF0ZWQgYnkgdGhlIGZhY3QgdGhhdCBXaW5kb3dBZ2cgd2lsbCBi ZQpAQCAtMjUzMSw2ICsyODgxLDM2IEBAIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbihQbGFubmVySW5m byAqcm9vdCwgV2luZG93QWdnUGF0aCAqYmVzdF9wYXRoKQogCQlvcmROdW1Db2xzKys7CiAJfQog CisJLyogQnVpbGQgUlBSIHBhdHRlcm4gYW5kIGRlZmluZVZhcmlhYmxlTGlzdCAqLworCWlmICh3 Yy0+cnBQYXR0ZXJuKQorCXsKKwkJLyoKKwkJICogQnVpbGQgZGVmaW5lVmFyaWFibGVMaXN0IGZy b20gZGVmaW5lQ2xhdXNlLiAgVGhlIHBhcnNlciBhbHJlYWR5CisJCSAqIHJlamVjdHMgREVGSU5F IHZhcmlhYmxlcyBub3QgdXNlZCBpbiBQQVRURVJOLCBzbyBubyBmaWx0ZXJpbmcgaXMKKwkJICog bmVlZGVkLgorCQkgKi8KKwkJYnVpbGREZWZpbmVWYXJpYWJsZUxpc3Qod2MtPmRlZmluZUNsYXVz ZSwgJmRlZmluZVZhcmlhYmxlTGlzdCk7CisJCWZpbHRlcmVkRGVmaW5lQ2xhdXNlID0gd2MtPmRl ZmluZUNsYXVzZTsKKworCQkvKgorCQkgKiBXYWxrIERFRklORSBvbmNlOiBjb2xsZWN0IG5hdiBv ZmZzZXRzIChmb3IgdHVwbGVzdG9yZSB0cmltKSBhbmQgdGhlCisJCSAqIGJpdG1hcHNldCBvZiBt YXRjaF9zdGFydC1kZXBlbmRlbnQgdmFyaWFibGVzIChmb3IgYWJzb3JwdGlvbgorCQkgKiBzdXBw cmVzc2lvbiBpbiBidWlsZFJQUlBhdHRlcm4pLgorCQkgKi8KKwkJY29tcHV0ZV9kZWZpbmVfbWV0 YWRhdGEod2MtPmRlZmluZUNsYXVzZSwKKwkJCQkJCQkJJm5hdk1heE9mZnNldEtpbmQsICZuYXZN YXhPZmZzZXQsCisJCQkJCQkJCSZoYXNGaXJzdE5hdiwKKwkJCQkJCQkJJm5hdkZpcnN0T2Zmc2V0 S2luZCwgJm5hdkZpcnN0T2Zmc2V0LAorCQkJCQkJCQkmbWF0Y2hTdGFydERlcGVuZGVudCk7CisK KwkJLyogQ29tcGlsZSBhbmQgb3B0aW1pemUgUlBSIHBhdHRlcm5zICovCisJCWNvbXBpbGVkUGF0 dGVybiA9IGJ1aWxkUlBSUGF0dGVybih3Yy0+cnBQYXR0ZXJuLAorCQkJCQkJCQkJCSAgZGVmaW5l VmFyaWFibGVMaXN0LAorCQkJCQkJCQkJCSAgd2MtPnJwU2tpcFRvLAorCQkJCQkJCQkJCSAgd2Mt PmZyYW1lT3B0aW9ucywKKwkJCQkJCQkJCQkgICFibXNfaXNfZW1wdHkobWF0Y2hTdGFydERlcGVu ZGVudCkpOworCX0KKwogCS8qIEFuZCBmaW5hbGx5IHdlIGNhbiBtYWtlIHRoZSBXaW5kb3dBZ2cg bm9kZSAqLwogCXBsYW4gPSBtYWtlX3dpbmRvd2FnZyh0bGlzdCwKIAkJCQkJCSAgd2MsCkBAIC0y NTQzLDYgKzI5MjMsMTMgQEAgY3JlYXRlX3dpbmRvd2FnZ19wbGFuKFBsYW5uZXJJbmZvICpyb290 LCBXaW5kb3dBZ2dQYXRoICpiZXN0X3BhdGgpCiAJCQkJCQkgIG9yZE9wZXJhdG9ycywKIAkJCQkJ CSAgb3JkQ29sbGF0aW9ucywKIAkJCQkJCSAgYmVzdF9wYXRoLT5ydW5Db25kaXRpb24sCisJCQkJ CQkgIHdjLT5ycFNraXBUbywKKwkJCQkJCSAgY29tcGlsZWRQYXR0ZXJuLAorCQkJCQkJICBmaWx0 ZXJlZERlZmluZUNsYXVzZSwKKwkJCQkJCSAgbWF0Y2hTdGFydERlcGVuZGVudCwKKwkJCQkJCSAg bmF2TWF4T2Zmc2V0S2luZCwgbmF2TWF4T2Zmc2V0LAorCQkJCQkJICBoYXNGaXJzdE5hdiwKKwkJ CQkJCSAgbmF2Rmlyc3RPZmZzZXRLaW5kLCBuYXZGaXJzdE9mZnNldCwKIAkJCQkJCSAgYmVzdF9w YXRoLT5xdWFsLAogCQkJCQkJICBiZXN0X3BhdGgtPnRvcHdpbmRvdywKIAkJCQkJCSAgc3VicGxh bik7CkBAIC02NjEzLDcgKzcwMDAsMTQgQEAgc3RhdGljIFdpbmRvd0FnZyAqCiBtYWtlX3dpbmRv d2FnZyhMaXN0ICp0bGlzdCwgV2luZG93Q2xhdXNlICp3YywKIAkJCSAgIGludCBwYXJ0TnVtQ29s cywgQXR0ck51bWJlciAqcGFydENvbElkeCwgT2lkICpwYXJ0T3BlcmF0b3JzLCBPaWQgKnBhcnRD b2xsYXRpb25zLAogCQkJICAgaW50IG9yZE51bUNvbHMsIEF0dHJOdW1iZXIgKm9yZENvbElkeCwg T2lkICpvcmRPcGVyYXRvcnMsIE9pZCAqb3JkQ29sbGF0aW9ucywKLQkJCSAgIExpc3QgKnJ1bkNv bmRpdGlvbiwgTGlzdCAqcXVhbCwgYm9vbCB0b3BXaW5kb3csIFBsYW4gKmxlZnR0cmVlKQorCQkJ ICAgTGlzdCAqcnVuQ29uZGl0aW9uLCBSUFNraXBUbyBycFNraXBUbywKKwkJCSAgIFJQUlBhdHRl cm4gKmNvbXBpbGVkUGF0dGVybiwKKwkJCSAgIExpc3QgKmRlZmluZUNsYXVzZSwKKwkJCSAgIEJp dG1hcHNldCAqZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudCwKKwkJCSAgIFJQUk5hdk9mZnNldEtp bmQgbmF2TWF4T2Zmc2V0S2luZCwgaW50NjQgbmF2TWF4T2Zmc2V0LAorCQkJICAgYm9vbCBoYXNG aXJzdE5hdiwKKwkJCSAgIFJQUk5hdk9mZnNldEtpbmQgbmF2Rmlyc3RPZmZzZXRLaW5kLCBpbnQ2 NCBuYXZGaXJzdE9mZnNldCwKKwkJCSAgIExpc3QgKnF1YWwsIGJvb2wgdG9wV2luZG93LCBQbGFu ICpsZWZ0dHJlZSkKIHsKIAlXaW5kb3dBZ2cgICpub2RlID0gbWFrZU5vZGUoV2luZG93QWdnKTsK IAlQbGFuCSAgICpwbGFuID0gJm5vZGUtPnBsYW47CkBAIC02NjQwLDYgKzcwMzQsMjIgQEAgbWFr ZV93aW5kb3dhZ2coTGlzdCAqdGxpc3QsIFdpbmRvd0NsYXVzZSAqd2MsCiAJbm9kZS0+aW5SYW5n ZUFzYyA9IHdjLT5pblJhbmdlQXNjOwogCW5vZGUtPmluUmFuZ2VOdWxsc0ZpcnN0ID0gd2MtPmlu UmFuZ2VOdWxsc0ZpcnN0OwogCW5vZGUtPnRvcFdpbmRvdyA9IHRvcFdpbmRvdzsKKwlub2RlLT5y cFNraXBUbyA9IHJwU2tpcFRvOworCisJLyogU3RvcmUgY29tcGlsZWQgcGF0dGVybiBmb3IgTkZB IGV4ZWN1dGlvbiAqLworCW5vZGUtPnJwUGF0dGVybiA9IGNvbXBpbGVkUGF0dGVybjsKKworCW5v ZGUtPmRlZmluZUNsYXVzZSA9IGRlZmluZUNsYXVzZTsKKworCS8qIFN0b3JlIHByZS1jb21wdXRl ZCBtYXRjaF9zdGFydCBkZXBlbmRlbmN5IGJpdG1hcHNldCAqLworCW5vZGUtPmRlZmluZU1hdGNo U3RhcnREZXBlbmRlbnQgPSBkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50OworCisJLyogU3RvcmUg cHJlLWNvbXB1dGVkIG5hdiBvZmZzZXRzIGZvciB0dXBsZXN0b3JlIHRyaW0gb3B0aW1pemF0aW9u ICovCisJbm9kZS0+bmF2TWF4T2Zmc2V0S2luZCA9IG5hdk1heE9mZnNldEtpbmQ7CisJbm9kZS0+ bmF2TWF4T2Zmc2V0ID0gbmF2TWF4T2Zmc2V0OworCW5vZGUtPmhhc0ZpcnN0TmF2ID0gaGFzRmly c3ROYXY7CisJbm9kZS0+bmF2Rmlyc3RPZmZzZXRLaW5kID0gbmF2Rmlyc3RPZmZzZXRLaW5kOwor CW5vZGUtPm5hdkZpcnN0T2Zmc2V0ID0gbmF2Rmlyc3RPZmZzZXQ7CiAKIAlwbGFuLT50YXJnZXRs aXN0ID0gdGxpc3Q7CiAJcGxhbi0+bGVmdHRyZWUgPSBsZWZ0dHJlZTsKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL29wdGltaXplci9wbGFuL21lc29uLmJ1aWxkIGIvc3JjL2JhY2tlbmQvb3B0aW1p emVyL3BsYW4vbWVzb24uYnVpbGQKaW5kZXggYzU2NWIyYWRiY2MuLjViMjM4MWNkNzc0IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9tZXNvbi5idWlsZAorKysgYi9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9tZXNvbi5idWlsZApAQCAtNyw2ICs3LDcgQEAgYmFja2Vu ZF9zb3VyY2VzICs9IGZpbGVzKAogICAncGxhbmFnZy5jJywKICAgJ3BsYW5tYWluLmMnLAogICAn cGxhbm5lci5jJywKKyAgJ3Jwci5jJywKICAgJ3NldHJlZnMuYycsCiAgICdzdWJzZWxlY3QuYycs CiApCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVyLmMKaW5kZXggZjQ2ODllN2M5ZjguLmQy MDAxNWNkODYyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9wbGFubmVy LmMKKysrIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCkBAIC00OSw2ICs0 OSw3IEBACiAjaW5jbHVkZSAib3B0aW1pemVyL3BsYW5tYWluLmgiCiAjaW5jbHVkZSAib3B0aW1p emVyL3BsYW5uZXIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcHJlcC5oIgorI2luY2x1ZGUgIm9w dGltaXplci9ycHIuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvc3Vic2VsZWN0LmgiCiAjaW5jbHVk ZSAib3B0aW1pemVyL3RsaXN0LmgiCiAjaW5jbHVkZSAicGFyc2VyL2FuYWx5emUuaCIKQEAgLTEw NDgsMTEgKzEwNDksMjYgQEAgc3VicXVlcnlfcGxhbm5lcihQbGFubmVyR2xvYmFsICpnbG9iLCBR dWVyeSAqcGFyc2UsIGNoYXIgKnBsYW5fbmFtZSwKIAl7CiAJCVdpbmRvd0NsYXVzZSAqd2MgPSBs Zmlyc3Rfbm9kZShXaW5kb3dDbGF1c2UsIGwpOwogCisJCS8qCisJCSAqIFJlamVjdCB2b2xhdGls ZSBmdW5jdGlvbnMgKGFuZCBzZXF1ZW5jZSBvcGVyYXRpb25zKSBpbiBhbiBSUFIKKwkJICogREVG SU5FIGNsYXVzZS4gIFRoaXMgaXMgZG9uZSBoZXJlLCBub3QgZHVyaW5nIHBhcnNlIGFuYWx5c2lz LCB0bworCQkgKiBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2Ygbm90IGNoZWNraW5nIGV4cHJlc3Np b24gdm9sYXRpbGl0eSB3aGlsZQorCQkgKiBwYXJzaW5nOyBkZWJ1Z19xdWVyeV9zdHJpbmcgc3Rp bGwgbGV0cyB1cyByZXBvcnQgdGhlIG9mZmVuZGluZworCQkgKiBsb2NhdGlvbi4gIEV2ZXJ5IHdp bmRvdyBjbGF1c2UgaXMgdmlzaXRlZCwgaW5jbHVkaW5nIG9uZXMgbm90IHVzZWQKKwkJICogYnkg YW55IE9WRVIsIHNvIHRoZSBjaGVjayBkb2VzIG5vdCBkZXBlbmQgb24gdGhlIHdpbmRvdyBzdXJ2 aXZpbmcKKwkJICogc2VsZWN0X2FjdGl2ZV93aW5kb3dzKCkuCisJCSAqLworCQlpZiAod2MtPnJw UGF0dGVybiAmJiB3Yy0+ZGVmaW5lQ2xhdXNlKQorCQkJdmFsaWRhdGVfcnByX2RlZmluZV92b2xh dGlsaXR5KHdjLT5kZWZpbmVDbGF1c2UpOworCiAJCS8qIHBhcnRpdGlvbkNsYXVzZS9vcmRlckNs YXVzZSBhcmUgc29ydC9ncm91cCBleHByZXNzaW9ucyAqLwogCQl3Yy0+c3RhcnRPZmZzZXQgPSBw cmVwcm9jZXNzX2V4cHJlc3Npb24ocm9vdCwgd2MtPnN0YXJ0T2Zmc2V0LAogCQkJCQkJCQkJCQkJ RVhQUktJTkRfTElNSVQpOwogCQl3Yy0+ZW5kT2Zmc2V0ID0gcHJlcHJvY2Vzc19leHByZXNzaW9u KHJvb3QsIHdjLT5lbmRPZmZzZXQsCiAJCQkJCQkJCQkJCSAgRVhQUktJTkRfTElNSVQpOworCQl3 Yy0+ZGVmaW5lQ2xhdXNlID0gKExpc3QgKikgcHJlcHJvY2Vzc19leHByZXNzaW9uKHJvb3QsCisJ CQkJCQkJCQkJCQkJCSAgKE5vZGUgKikgd2MtPmRlZmluZUNsYXVzZSwKKwkJCQkJCQkJCQkJCQkJ ICBFWFBSS0lORF9UQVJHRVQpOwogCX0KIAogCXBhcnNlLT5saW1pdE9mZnNldCA9IHByZXByb2Nl c3NfZXhwcmVzc2lvbihyb290LCBwYXJzZS0+bGltaXRPZmZzZXQsCkBAIC02MTY2LDYgKzYxODIs MTQgQEAgb3B0aW1pemVfd2luZG93X2NsYXVzZXMoUGxhbm5lckluZm8gKnJvb3QsIFdpbmRvd0Z1 bmNMaXN0cyAqd2ZsaXN0cykKIAkJaWYgKHdmbGlzdHMtPndpbmRvd0Z1bmNzW3djLT53aW5yZWZd ID09IE5JTCkKIAkJCWNvbnRpbnVlOwogCisJCS8qCisJCSAqIElmIGEgREVGSU5FIGNsYXVzZSBl eGlzdHMsIGRvIG5vdCBsZXQgc3VwcG9ydCBmdW5jdGlvbnMgcmVwbGFjZSB0aGUKKwkJICogZnJh bWUgd2l0aCBhIG5vbi1SUFItY29tcGF0aWJsZSBvbmUuICBSUFIgd2luZG93cyByZXF1aXJlIFJP V1MKKwkJICogQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgLi4uCisJCSAqLworCQlpZiAod2MtPmRl ZmluZUNsYXVzZSAhPSBOSUwpCisJCQljb250aW51ZTsKKwogCQlmb3JlYWNoKGxjMiwgd2ZsaXN0 cy0+d2luZG93RnVuY3Nbd2MtPndpbnJlZl0pCiAJCXsKIAkJCVN1cHBvcnRSZXF1ZXN0T3B0aW1p emVXaW5kb3dDbGF1c2UgcmVxOwpAQCAtNjI0MywxMyArNjI2NywyMCBAQCBvcHRpbWl6ZV93aW5k b3dfY2xhdXNlcyhQbGFubmVySW5mbyAqcm9vdCwgV2luZG93RnVuY0xpc3RzICp3Zmxpc3RzKQog CiAJCQkJLyoKIAkJCQkgKiBQZXJmb3JtIHRoZSBzYW1lIGR1cGxpY2F0ZSBjaGVjayB0aGF0IGlz IGRvbmUgaW4KLQkJCQkgKiB0cmFuc2Zvcm1XaW5kb3dGdW5jQ2FsbC4KKwkJCQkgKiB0cmFuc2Zv cm1XaW5kb3dGdW5jQ2FsbC4gd2MgaXMgbmV2ZXIgYW4gUlBSIGNsYXVzZSBoZXJlCisJCQkJICog KHRob3NlIGFyZSBza2lwcGVkIGFib3ZlKSwgYW5kIGFuIFJQUiBleGlzdGluZ193YyBkaWZmZXJz CisJCQkJICogaW4gaXRzIGZyYW1lIG9wdGlvbnMgYW55d2F5LCBzbyB0aGUgUlBSLXJlbGF0ZWQg Y29tcGFyaXNvbnMKKwkJCQkgKiBhcmUgYSBkZWZlbnNpdmUgYmFja3N0b3AgZm9yIHBhcml0eS4K IAkJCQkgKi8KIAkJCQlpZiAoZXF1YWwod2MtPnBhcnRpdGlvbkNsYXVzZSwgZXhpc3Rpbmdfd2Mt PnBhcnRpdGlvbkNsYXVzZSkgJiYKIAkJCQkJZXF1YWwod2MtPm9yZGVyQ2xhdXNlLCBleGlzdGlu Z193Yy0+b3JkZXJDbGF1c2UpICYmCiAJCQkJCXdjLT5mcmFtZU9wdGlvbnMgPT0gZXhpc3Rpbmdf d2MtPmZyYW1lT3B0aW9ucyAmJgogCQkJCQllcXVhbCh3Yy0+c3RhcnRPZmZzZXQsIGV4aXN0aW5n X3djLT5zdGFydE9mZnNldCkgJiYKLQkJCQkJZXF1YWwod2MtPmVuZE9mZnNldCwgZXhpc3Rpbmdf d2MtPmVuZE9mZnNldCkpCisJCQkJCWVxdWFsKHdjLT5lbmRPZmZzZXQsIGV4aXN0aW5nX3djLT5l bmRPZmZzZXQpICYmCisJCQkJCXdjLT5ycFNraXBUbyA9PSBleGlzdGluZ193Yy0+cnBTa2lwVG8g JiYKKwkJCQkJd2MtPmluaXRpYWwgPT0gZXhpc3Rpbmdfd2MtPmluaXRpYWwgJiYKKwkJCQkJZXF1 YWwod2MtPmRlZmluZUNsYXVzZSwgZXhpc3Rpbmdfd2MtPmRlZmluZUNsYXVzZSkgJiYKKwkJCQkJ ZXF1YWwod2MtPnJwUGF0dGVybiwgZXhpc3Rpbmdfd2MtPnJwUGF0dGVybikpCiAJCQkJewogCQkJ CQlMaXN0Q2VsbCAgICpsYzQ7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9w bGFuL3Jwci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjE3NTc3N2E4ZmZjCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcnByLmMKQEAgLTAsMCArMSwyMDkwIEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBycHIuYworICoJICBSb3cgUGF0dGVybiBSZWNvZ25p dGlvbiBwYXR0ZXJuIGNvbXBpbGF0aW9uIGZvciBwbGFubmVyCisgKgorICogVGhpcyBmaWxlIGNv bnRhaW5zIGZ1bmN0aW9ucyBmb3Igb3B0aW1pemluZyBSUFIgcGF0dGVybiBBU1QgYW5kCisgKiBj b21waWxpbmcgaXQgdG8gYSBmbGF0IGVsZW1lbnQgYXJyYXkgZm9yIE5GQSBleGVjdXRpb24gYnkg V2luZG93QWdnLgorICoKKyAqIEtleSBjb21wb25lbnRzOgorICogICAxLiBQYXR0ZXJuIE9wdGlt aXphdGlvbjogU2ltcGxpZmllcyBwYXR0ZXJucyBiZWZvcmUgY29tcGlsYXRpb24KKyAqICAgICAg KGUuZy4sIGZsYXR0ZW4gbmVzdGVkIFNFUS9BTFQsIG1lcmdlIGNvbnNlY3V0aXZlIHZhcnMpCisg KiAgIDIuIFBhdHRlcm4gQ29tcGlsYXRpb246IENvbnZlcnRzIEFTVCB0byBmbGF0IGVsZW1lbnQg YXJyYXkgZm9yIE5GQQorICogICAzLiBBYnNvcnB0aW9uIEFuYWx5c2lzOiBDb21wdXRlcyBmbGFn cyBmb3IgTyhuXjIpLT5PKG4pIG9wdGltaXphdGlvbgorICoKKyAqIENvbnRleHQgQWJzb3JwdGlv biBPcHRpbWl6YXRpb246CisgKiAgIFdoZW4gYSBwYXR0ZXJuIHN0YXJ0cyB3aXRoIGEgZ3JlZWR5 IHVuYm91bmRlZCBlbGVtZW50IChlLmcuLCBBKyBvciAoQSBCKSspLAorICogICBuZXdlciBjb250 ZXh0cyBjYW5ub3QgcHJvZHVjZSBsb25nZXIgbWF0Y2hlcyB0aGFuIG9sZGVyIGNvbnRleHRzLgor ICogICBCeSBhYnNvcmJpbmcgKGVsaW1pbmF0aW5nKSByZWR1bmRhbnQgbmV3ZXIgY29udGV4dHMs IHdlIHJlZHVjZQorICogICBjb21wbGV4aXR5IGZyb20gTyhuXjIpIHRvIE8obikgZm9yIHBhdHRl cm5zIGxpa2UgQSsgQi4KKyAqCisgKiAgIFRoZSBhYnNvcnB0aW9uIGFuYWx5c2lzIHVzZXMgdHdv IGVsZW1lbnQgZmxhZ3M6CisgKiAgIC0gUlBSX0VMRU1fQUJTT1JCQUJMRTogbWFya3MgV0hFUkUg dG8gY29tcGFyZSAoanVkZ21lbnQgcG9pbnQpCisgKiAgIC0gUlBSX0VMRU1fQUJTT1JCQUJMRV9C UkFOQ0g6IG1hcmtzIHRoZSBhYnNvcmJhYmxlIHJlZ2lvbgorICoKKyAqICAgU2VlIGNvbXB1dGVB YnNvcmJhYmlsaXR5KCkgYW5kIHRoZSBkZXRhaWxlZCBjb21tZW50cyBiZWZvcmUKKyAqICAgaXNV bmJvdW5kZWRTdGFydCgpIGZvciB0aGUgZnVsbCBkZXNpZ24gZXhwbGFuYXRpb24uCisgKgorICog UG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVs b3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2Yg dGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqCisgKiBJREVOVElGSUNBVElPTgor ICoJICBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9ycHIuYworICoKKyAqLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSA8bGltaXRzLmg+ CisKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKKyNpbmNsdWRlICJtYi9wZ193Y2hhci5o IgorI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgIm5vZGVzL21ha2VmdW5jcy5oIgor I2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5oIgorI2luY2x1ZGUgIm9wdGltaXplci9ycHIuaCIK KyNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgi CisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCitzdGF0aWMgYm9vbCBycHJQYXR0ZXJuRXF1 YWwoUlBSUGF0dGVybk5vZGUgKmEsIFJQUlBhdHRlcm5Ob2RlICpiKTsKK3N0YXRpYyBib29sIHJw clBhdHRlcm5DaGlsZHJlbkVxdWFsKExpc3QgKmEsIExpc3QgKmIpOworCitzdGF0aWMgUlBSUGF0 dGVybk5vZGUgKnRyeVVud3JhcFNpbmdsZUNoaWxkKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsK Kworc3RhdGljIExpc3QgKmZsYXR0ZW5TZXFDaGlsZHJlbihMaXN0ICpjaGlsZHJlbik7CitzdGF0 aWMgTGlzdCAqbWVyZ2VDb25zZWN1dGl2ZVZhcnMoTGlzdCAqY2hpbGRyZW4pOworc3RhdGljIExp c3QgKm1lcmdlQ29uc2VjdXRpdmVHcm91cHMoTGlzdCAqY2hpbGRyZW4pOworc3RhdGljIExpc3Qg Km1lcmdlQ29uc2VjdXRpdmVBbHRzKExpc3QgKmNoaWxkcmVuKTsKK3N0YXRpYyBMaXN0ICptZXJn ZUdyb3VwUHJlZml4U3VmZml4KExpc3QgKmNoaWxkcmVuKTsKK3N0YXRpYyBSUFJQYXR0ZXJuTm9k ZSAqb3B0aW1pemVTZXFQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKKworc3RhdGlj IExpc3QgKmZsYXR0ZW5BbHRDaGlsZHJlbihMaXN0ICpjaGlsZHJlbik7CitzdGF0aWMgTGlzdCAq cmVtb3ZlRHVwbGljYXRlQWx0ZXJuYXRpdmVzKExpc3QgKmNoaWxkcmVuKTsKK3N0YXRpYyBSUFJQ YXR0ZXJuTm9kZSAqb3B0aW1pemVBbHRQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsK Kworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICp0cnlNdWx0aXBseVF1YW50aWZpZXJzKFJQUlBhdHRl cm5Ob2RlICpwYXR0ZXJuKTsKK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqdHJ5VW53cmFwR3JvdXAo UlBSUGF0dGVybk5vZGUgKnBhdHRlcm4pOworc3RhdGljIFJQUlBhdHRlcm5Ob2RlICpvcHRpbWl6 ZUdyb3VwUGF0dGVybihSUFJQYXR0ZXJuTm9kZSAqcGF0dGVybik7CisKK3N0YXRpYyBSUFJQYXR0 ZXJuTm9kZSAqb3B0aW1pemVSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKKwor c3RhdGljIGludAljb2xsZWN0RGVmaW5lVmFyaWFibGVzKExpc3QgKmRlZmluZVZhcmlhYmxlTGlz dCwgY2hhciAqKnZhck5hbWVzKTsKK3N0YXRpYyB2b2lkIHNjYW5SUFJQYXR0ZXJuUmVjdXJzaXZl KFJQUlBhdHRlcm5Ob2RlICpub2RlLCBjaGFyICoqdmFyTmFtZXMsCisJCQkJCQkJCQlpbnQgKm51 bVZhcnMsIGludCAqbnVtRWxlbWVudHMsCisJCQkJCQkJCQlSUFJEZXB0aCBkZXB0aCwgUlBSRGVw dGggKm1heERlcHRoKTsKK3N0YXRpYyB2b2lkIHNjYW5SUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2Rl ICpub2RlLCBjaGFyICoqdmFyTmFtZXMsIGludCAqbnVtVmFycywKKwkJCQkJCSAgIGludCAqbnVt RWxlbWVudHMsIFJQUkRlcHRoICptYXhEZXB0aCk7CitzdGF0aWMgUlBSUGF0dGVybiAqbWFrZVJQ UlBhdHRlcm4oaW50IG51bVZhcnMsIGludCBudW1FbGVtZW50cywKKwkJCQkJCQkJICBSUFJEZXB0 aCBtYXhEZXB0aCwgY2hhciAqKnZhck5hbWVzU3RhY2spOworc3RhdGljIFJQUlZhcklkIGdldFZh cklkRnJvbVBhdHRlcm4oUlBSUGF0dGVybiAqcGF0LCBjb25zdCBjaGFyICp2YXJOYW1lKTsKK3N0 YXRpYyBib29sIGZpbGxSUFJQYXR0ZXJuVmFyKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0 ZXJuICpwYXQsCisJCQkJCQkJICBpbnQgKmlkeCwgUlBSRGVwdGggZGVwdGgpOworc3RhdGljIGJv b2wgZmlsbFJQUlBhdHRlcm5Hcm91cChSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVybiAq cGF0LAorCQkJCQkJCQlpbnQgKmlkeCwgUlBSRGVwdGggZGVwdGgpOworc3RhdGljIGJvb2wgZmls bFJQUlBhdHRlcm5BbHQoUlBSUGF0dGVybk5vZGUgKm5vZGUsIFJQUlBhdHRlcm4gKnBhdCwKKwkJ CQkJCQkgIGludCAqaWR4LCBSUFJEZXB0aCBkZXB0aCk7CitzdGF0aWMgYm9vbCBmaWxsUlBSUGF0 dGVybihSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVybiAqcGF0LAorCQkJCQkJICAgaW50 ICppZHgsIFJQUkRlcHRoIGRlcHRoKTsKK3N0YXRpYyB2b2lkIGZpbmFsaXplUlBSUGF0dGVybihS UFJQYXR0ZXJuICpyZXN1bHQpOworCitzdGF0aWMgYm9vbCBpc0ZpeGVkTGVuZ3RoQ2hpbGRyZW4o UlBSUGF0dGVybiAqcGF0dGVybiwgUlBSRWxlbUlkeCBpZHgsCisJCQkJCQkJCSAgUlBSRGVwdGgg c2NvcGVEZXB0aCk7CitzdGF0aWMgYm9vbCBpc1VuYm91bmRlZFN0YXJ0KFJQUlBhdHRlcm4gKnBh dHRlcm4sIFJQUkVsZW1JZHggaWR4KTsKK3N0YXRpYyB2b2lkIGNvbXB1dGVBYnNvcmJhYmlsaXR5 UmVjdXJzaXZlKFJQUlBhdHRlcm4gKnBhdHRlcm4sCisJCQkJCQkJCQkJICBSUFJFbGVtSWR4IHN0 YXJ0SWR4LAorCQkJCQkJCQkJCSAgYm9vbCAqaGFzQWJzb3JiYWJsZSk7CitzdGF0aWMgdm9pZCBj b21wdXRlQWJzb3JiYWJpbGl0eShSUFJQYXR0ZXJuICpwYXR0ZXJuKTsKKworc3RhdGljIHZvaWQg Y29sbGVjdFBhdHRlcm5WYXJpYWJsZXNSZWN1cnNpdmUoUlBSUGF0dGVybk5vZGUgKm5vZGUsCisJ CQkJCQkJCQkJCSBMaXN0ICoqdmFyTmFtZXMpOworCisvKgorICogcnByUGF0dGVybkVxdWFsCisg KgkJQ29tcGFyZSB0d28gUlBSUGF0dGVybk5vZGUgdHJlZXMgZm9yIGVxdWFsaXR5LgorICoKKyAq IFJldHVybnMgdHJ1ZSBpZiB0aGUgdHJlZXMgYXJlIHN0cnVjdHVyYWxseSBpZGVudGljYWwuCisg Ki8KK3N0YXRpYyBib29sCitycHJQYXR0ZXJuRXF1YWwoUlBSUGF0dGVybk5vZGUgKmEsIFJQUlBh dHRlcm5Ob2RlICpiKQoreworCS8qIFBhdHRlcm4gbm9kZXMgaW4gY2hpbGRyZW4gbGlzdHMgbXVz dCBuZXZlciBiZSBOVUxMICovCisJQXNzZXJ0KGEgIT0gTlVMTCAmJiBiICE9IE5VTEwpOworCisJ LyogTXVzdCBoYXZlIHNhbWUgbm9kZSB0eXBlIGFuZCBxdWFudGlmaWVycyAqLworCWlmIChhLT5u b2RlVHlwZSAhPSBiLT5ub2RlVHlwZSkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChhLT5taW4gIT0g Yi0+bWluIHx8IGEtPm1heCAhPSBiLT5tYXgpCisJCXJldHVybiBmYWxzZTsKKwlpZiAoYS0+cmVs dWN0YW50ICE9IGItPnJlbHVjdGFudCkKKwkJcmV0dXJuIGZhbHNlOworCisJc3dpdGNoIChhLT5u b2RlVHlwZSkKKwl7CisJCWNhc2UgUlBSX1BBVFRFUk5fVkFSOgorCQkJcmV0dXJuIHN0cmNtcChh LT52YXJOYW1lLCBiLT52YXJOYW1lKSA9PSAwOworCisJCWNhc2UgUlBSX1BBVFRFUk5fU0VROgor CQljYXNlIFJQUl9QQVRURVJOX0FMVDoKKwkJY2FzZSBSUFJfUEFUVEVSTl9HUk9VUDoKKwkJCXJl dHVybiBycHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbChhLT5jaGlsZHJlbiwgYi0+Y2hpbGRyZW4pOwor CX0KKworCXBnX3VucmVhY2hhYmxlKCk7CisJcmV0dXJuIGZhbHNlOworfQorCisvKgorICogcnBy UGF0dGVybkNoaWxkcmVuRXF1YWwKKyAqCQlDb21wYXJlIGNoaWxkcmVuIGxpc3RzIG9mIHR3byBw YXR0ZXJuIG5vZGVzIGZvciBlcXVhbGl0eS4KKyAqCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGNo aWxkcmVuIGxpc3RzIGFyZSBzdHJ1Y3R1cmFsbHkgaWRlbnRpY2FsLgorICovCitzdGF0aWMgYm9v bAorcnByUGF0dGVybkNoaWxkcmVuRXF1YWwoTGlzdCAqYSwgTGlzdCAqYikKK3sKKwlMaXN0Q2Vs bCAgICpsY2EsCisJCQkgICAqbGNiOworCisJaWYgKGxpc3RfbGVuZ3RoKGEpICE9IGxpc3RfbGVu Z3RoKGIpKQorCQlyZXR1cm4gZmFsc2U7CisKKwlmb3Jib3RoKGxjYSwgYSwgbGNiLCBiKQorCXsK KwkJaWYgKCFycHJQYXR0ZXJuRXF1YWwoKFJQUlBhdHRlcm5Ob2RlICopIGxmaXJzdChsY2EpLAor CQkJCQkJCSAoUlBSUGF0dGVybk5vZGUgKikgbGZpcnN0KGxjYikpKQorCQkJcmV0dXJuIGZhbHNl OworCX0KKworCXJldHVybiB0cnVlOworfQorCisvKgorICogdHJ5VW53cmFwU2luZ2xlQ2hpbGQK KyAqCQlUcnkgdG8gdW53cmFwIHBhdHRlcm4gbm9kZSB3aXRoIHNpbmdsZSBjaGlsZC4KKyAqCisg KiBFeGFtcGxlcyAoaW50ZXJuYWwgbm9kZSByZXByZXNlbnRhdGlvbik6CisgKiAgIFNFUVtBXSAt PiBBICAgIChzaW5nbGUtZWxlbWVudCBzZXF1ZW5jZSBiZWNvbWVzIHRoZSBlbGVtZW50KQorICog ICBBTFRbQV0gLT4gQSAgICAoc2luZ2xlLWFsdGVybmF0aXZlIGJlY29tZXMgdGhlIGFsdGVybmF0 aXZlKQorICoKKyAqIElmIHBhdHRlcm4gaGFzIGV4YWN0bHkgb25lIGNoaWxkLCByZXR1cm4gdGhl IGNoaWxkIGRpcmVjdGx5LgorICogT3RoZXJ3aXNlIHJldHVybnMgdGhlIHBhdHRlcm4gdW5jaGFu Z2VkLgorICogVXNlZCBieSBib3RoIFNFUSBhbmQgQUxUIG9wdGltaXphdGlvbi4KKyAqLworc3Rh dGljIFJQUlBhdHRlcm5Ob2RlICoKK3RyeVVud3JhcFNpbmdsZUNoaWxkKFJQUlBhdHRlcm5Ob2Rl ICpwYXR0ZXJuKQoreworCWlmIChsaXN0X2xlbmd0aChwYXR0ZXJuLT5jaGlsZHJlbikgPT0gMSkK KwkJcmV0dXJuIChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChwYXR0ZXJuLT5jaGlsZHJlbik7 CisKKwlyZXR1cm4gcGF0dGVybjsKK30KKworLyoKKyAqIGZsYXR0ZW5TZXFDaGlsZHJlbgorICoJ CVJlY3Vyc2l2ZWx5IG9wdGltaXplIGNoaWxkcmVuIGFuZCBmbGF0dGVuIG5lc3RlZCBTRVEuCisg KgorICogRXhhbXBsZToKKyAqICAgU0VRKEEsIFNFUShCLCBDKSkgLT4gU0VRKEEsIEIsIEMpCisg KgorICogUmV0dXJucyBhIG5ldyBsaXN0IHdpdGggb3B0aW1pemVkIGNoaWxkcmVuLCB3aXRoIG5l c3RlZCBTRVEgY2hpbGRyZW4KKyAqIGZsYXR0ZW5lZCBpbnRvIHRoZSBwYXJlbnQgbGlzdC4KKyAq Lworc3RhdGljIExpc3QgKgorZmxhdHRlblNlcUNoaWxkcmVuKExpc3QgKmNoaWxkcmVuKQorewor CUxpc3QJICAgKm5ld0NoaWxkcmVuID0gTklMOworCisJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5O b2RlLCBjaGlsZCwgY2hpbGRyZW4pCisJeworCQlSUFJQYXR0ZXJuTm9kZSAqb3B0ID0gb3B0aW1p emVSUFJQYXR0ZXJuKGNoaWxkKTsKKworCQkvKiBHUk9VUHsxLDF9IHNob3VsZCBoYXZlIGJlZW4g dW53cmFwcGVkIGJ5IG9wdGltaXplR3JvdXBQYXR0ZXJuICovCisJCUFzc2VydCghKG9wdC0+bm9k ZVR5cGUgPT0gUlBSX1BBVFRFUk5fR1JPVVAgJiYKKwkJCQkgb3B0LT5taW4gPT0gMSAmJiBvcHQt Pm1heCA9PSAxICYmIG9wdC0+cmVsdWN0YW50ID09IGZhbHNlKSk7CisKKwkJaWYgKG9wdC0+bm9k ZVR5cGUgPT0gUlBSX1BBVFRFUk5fU0VRKQorCQl7CisJCQluZXdDaGlsZHJlbiA9IGxpc3RfY29u Y2F0KG5ld0NoaWxkcmVuLAorCQkJCQkJCQkJICBsaXN0X2NvcHkob3B0LT5jaGlsZHJlbikpOwor CQl9CisJCWVsc2UKKwkJeworCQkJbmV3Q2hpbGRyZW4gPSBsYXBwZW5kKG5ld0NoaWxkcmVuLCBv cHQpOworCQl9CisJfQorCisJcmV0dXJuIG5ld0NoaWxkcmVuOworfQorCisvKgorICogbWVyZ2VD b25zZWN1dGl2ZVZhcnMKKyAqCQlNZXJnZSBjb25zZWN1dGl2ZSBpZGVudGljYWwgVkFSIG5vZGVz LgorICoKKyAqIEV4YW1wbGVzOgorICogICBBe20xLE0xfSBBe20yLE0yfSAtPiBBe20xK20yLCBN MStNMn0gd2hlcmUgSU5GICsgeCA9IElORi4KKyAqCisgKiBPbmx5IG1lcmdlcyBub24tcmVsdWN0 YW50IFZBUiBub2RlcyB3aXRoIHRoZSBzYW1lIHZhcmlhYmxlIG5hbWUuCisgKi8KK3N0YXRpYyBM aXN0ICoKK21lcmdlQ29uc2VjdXRpdmVWYXJzKExpc3QgKmNoaWxkcmVuKQoreworCUxpc3QJICAg Km1lcmdlZENoaWxkcmVuID0gTklMOworCVJQUlBhdHRlcm5Ob2RlICpwcmV2ID0gTlVMTDsKKwor CWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIGNoaWxkcmVuKQorCXsKKwkJaWYg KGNoaWxkLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9WQVIgJiYgY2hpbGQtPnJlbHVjdGFudCA9 PSBmYWxzZSkKKwkJeworCQkJLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQkJICogQ2FuIG1l cmdlIGNvbnNlY3V0aXZlIFZBUiBub2RlcyBpZjoKKwkJCSAqIDEuIFNhbWUgdmFyaWFibGUgbmFt ZQorCQkJICogMi4gTm8gbWluIG92ZXJmbG93OiBwcmV2LT5taW4gKyBjaGlsZC0+bWluIDwgSU5G CisJCQkgKiAzLiBObyBtYXggb3ZlcmZsb3c6IHByZXYtPm1heCArIGNoaWxkLT5tYXggPCBJTkYg KG9yIGVpdGhlciBpcyBJTkYpCisJCQkgKgorCQkJICogU3RyaWN0IDw6IGEgc3VtIGVxdWFsIHRv IElORiB3b3VsZCBhbGlhcyB0aGUgdW5ib3VuZGVkIHNlbnRpbmVsCisJCQkgKiAobWluIG11c3Qg c3RheSBmaW5pdGU7IGEgZmluaXRlIG1heCBtdXN0IG5vdCBiZWNvbWUgSU5GKS4KKwkJCSAqLwor CQkJaWYgKHByZXYgIT0gTlVMTCAmJgorCQkJCXN0cmNtcChwcmV2LT52YXJOYW1lLCBjaGlsZC0+ dmFyTmFtZSkgPT0gMCAmJgorCQkJCXByZXYtPm1pbiA8IFJQUl9RVUFOVElUWV9JTkYgLSBjaGls ZC0+bWluICYmCisJCQkJKHByZXYtPm1heCA8IFJQUl9RVUFOVElUWV9JTkYgLSBjaGlsZC0+bWF4 IHx8CisJCQkJIHByZXYtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8CisJCQkJIGNoaWxkLT5t YXggPT0gUlBSX1FVQU5USVRZX0lORikpCisJCQl7CisJCQkJLyoKKwkJCQkgKiBNZXJnZTogYWNj dW11bGF0ZSBtaW4vbWF4IGludG8gcHJldi4gcHJldiBpcyBndWFyYW50ZWVkIHRvCisJCQkJICog YmUgYSBub24tcmVsdWN0YW50IFZBUiBieSB0aGUgb3V0ZXIgY29uZGl0aW9uLgorCQkJCSAqLwor CQkJCUFzc2VydChwcmV2LT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9WQVIgJiYgcHJldi0+cmVs dWN0YW50ID09IGZhbHNlKTsKKworCQkJCXByZXYtPm1pbiArPSBjaGlsZC0+bWluOworCisJCQkJ aWYgKHByZXYtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8CisJCQkJCWNoaWxkLT5tYXggPT0g UlBSX1FVQU5USVRZX0lORikKKwkJCQkJcHJldi0+bWF4ID0gUlBSX1FVQU5USVRZX0lORjsKKwkJ CQllbHNlCisJCQkJCXByZXYtPm1heCArPSBjaGlsZC0+bWF4OworCQkJfQorCQkJZWxzZQorCQkJ eworCQkJCS8qIEZsdXNoIHByZXZpb3VzIGFuZCBzdGFydCBuZXcgKi8KKwkJCQlpZiAocHJldiAh PSBOVUxMKQorCQkJCQltZXJnZWRDaGlsZHJlbiA9IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIHBy ZXYpOworCQkJCXByZXYgPSBjaGlsZDsKKwkJCX0KKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIE5v bi1tZXJnZWFibGUgLSBmbHVzaCBwcmV2aW91cyAqLworCQkJaWYgKHByZXYgIT0gTlVMTCkKKwkJ CQltZXJnZWRDaGlsZHJlbiA9IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIHByZXYpOworCQkJbWVy Z2VkQ2hpbGRyZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBjaGlsZCk7CisJCQlwcmV2ID0g TlVMTDsKKwkJfQorCX0KKworCS8qIEZsdXNoIHJlbWFpbmluZyAqLworCWlmIChwcmV2ICE9IE5V TEwpCisJCW1lcmdlZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisK KwlyZXR1cm4gbWVyZ2VkQ2hpbGRyZW47Cit9CisKKy8qCisgKiBtZXJnZUNvbnNlY3V0aXZlR3Jv dXBzCisgKgkJTWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRpY2FsIEdST1VQIG5vZGVzLgorICoKKyAq IEV4YW1wbGU6CisgKiAgIChBIEIpKyAoQSBCKSsgLT4gKEEgQil7Mix9CisgKgorICogT25seSBt ZXJnZXMgbm9uLXJlbHVjdGFudCBHUk9VUCBub2RlcyB3aXRoIGlkZW50aWNhbCBjaGlsZHJlbi4K KyAqLworc3RhdGljIExpc3QgKgorbWVyZ2VDb25zZWN1dGl2ZUdyb3VwcyhMaXN0ICpjaGlsZHJl bikKK3sKKwlMaXN0CSAgICptZXJnZWRDaGlsZHJlbiA9IE5JTDsKKwlSUFJQYXR0ZXJuTm9kZSAq cHJldiA9IE5VTEw7CisKKwlmb3JlYWNoX25vZGUoUlBSUGF0dGVybk5vZGUsIGNoaWxkLCBjaGls ZHJlbikKKwl7CisJCWlmIChjaGlsZC0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5fR1JPVVAgJiYg Y2hpbGQtPnJlbHVjdGFudCA9PSBmYWxzZSkKKwkJeworCQkJLyogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorCQkJICogQ2FuIG1lcmdlIGNvbnNlY3V0aXZlIEdST1VQIG5vZGVzIGlmOgorCQkJICog MS4gSWRlbnRpY2FsIGNoaWxkcmVuCisJCQkgKiAyLiBObyBtaW4gb3ZlcmZsb3c6IHByZXYtPm1p biArIGNoaWxkLT5taW4gPCBJTkYKKwkJCSAqIDMuIE5vIG1heCBvdmVyZmxvdzogcHJldi0+bWF4 ICsgY2hpbGQtPm1heCA8IElORiAob3IgZWl0aGVyIGlzIElORikKKwkJCSAqCisJCQkgKiBTdHJp Y3QgPDogYSBzdW0gZXF1YWwgdG8gSU5GIHdvdWxkIGFsaWFzIHRoZSB1bmJvdW5kZWQgc2VudGlu ZWwKKwkJCSAqIChtaW4gbXVzdCBzdGF5IGZpbml0ZTsgYSBmaW5pdGUgbWF4IG11c3Qgbm90IGJl Y29tZSBJTkYpLgorCQkJICovCisJCQlpZiAocHJldiAhPSBOVUxMICYmCisJCQkJcnByUGF0dGVy bkNoaWxkcmVuRXF1YWwocHJldi0+Y2hpbGRyZW4sIGNoaWxkLT5jaGlsZHJlbikgJiYKKwkJCQlw cmV2LT5taW4gPCBSUFJfUVVBTlRJVFlfSU5GIC0gY2hpbGQtPm1pbiAmJgorCQkJCShwcmV2LT5t YXggPCBSUFJfUVVBTlRJVFlfSU5GIC0gY2hpbGQtPm1heCB8fAorCQkJCSBwcmV2LT5tYXggPT0g UlBSX1FVQU5USVRZX0lORiB8fAorCQkJCSBjaGlsZC0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYp KQorCQkJeworCQkJCS8qCisJCQkJICogTWVyZ2U6IGFjY3VtdWxhdGUgbWluL21heCBpbnRvIHBy ZXYuIHByZXYgaXMgZ3VhcmFudGVlZCB0bworCQkJCSAqIGJlIGEgbm9uLXJlbHVjdGFudCBHUk9V UCBieSB0aGUgb3V0ZXIgY29uZGl0aW9uLgorCQkJCSAqLworCQkJCUFzc2VydChwcmV2LT5ub2Rl VHlwZSA9PSBSUFJfUEFUVEVSTl9HUk9VUCAmJiBwcmV2LT5yZWx1Y3RhbnQgPT0gZmFsc2UpOwor CisJCQkJcHJldi0+bWluICs9IGNoaWxkLT5taW47CisKKwkJCQlpZiAocHJldi0+bWF4ID09IFJQ Ul9RVUFOVElUWV9JTkYgfHwKKwkJCQkJY2hpbGQtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQor CQkJCQlwcmV2LT5tYXggPSBSUFJfUVVBTlRJVFlfSU5GOworCQkJCWVsc2UKKwkJCQkJcHJldi0+ bWF4ICs9IGNoaWxkLT5tYXg7CisJCQl9CisJCQllbHNlCisJCQl7CisJCQkJLyogRmx1c2ggcHJl dmlvdXMgYW5kIHN0YXJ0IG5ldyAqLworCQkJCWlmIChwcmV2ICE9IE5VTEwpCisJCQkJCW1lcmdl ZENoaWxkcmVuID0gbGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisJCQkJcHJldiA9IGNo aWxkOworCQkJfQorCQl9CisJCWVsc2UKKwkJeworCQkJLyogTm9uLW1lcmdlYWJsZSAtIGZsdXNo IHByZXZpb3VzICovCisJCQlpZiAocHJldiAhPSBOVUxMKQorCQkJCW1lcmdlZENoaWxkcmVuID0g bGFwcGVuZChtZXJnZWRDaGlsZHJlbiwgcHJldik7CisJCQltZXJnZWRDaGlsZHJlbiA9IGxhcHBl bmQobWVyZ2VkQ2hpbGRyZW4sIGNoaWxkKTsKKwkJCXByZXYgPSBOVUxMOworCQl9CisJfQorCisJ LyogRmx1c2ggcmVtYWluaW5nICovCisJaWYgKHByZXYgIT0gTlVMTCkKKwkJbWVyZ2VkQ2hpbGRy ZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBwcmV2KTsKKworCXJldHVybiBtZXJnZWRDaGls ZHJlbjsKK30KKworLyoKKyAqIG1lcmdlQ29uc2VjdXRpdmVBbHRzCisgKgkJTWVyZ2UgY29uc2Vj dXRpdmUgaWRlbnRpY2FsIEFMVCBub2RlcyBpbnRvIGEgR1JPVVAuCisgKgorICogRXhhbXBsZToK KyAqICAgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgLT4gKEEgfCBCKXszfQorICoKKyAqIEFmdGVy IEdST1VQezEsMX0gdW53cmFwLCBiYXJlIGFsdGVybmF0aW9ucyBsaWtlIChBIHwgQikgYmVjb21l IEFMVCBub2RlcworICogaW4gdGhlIFNFUS4gIFRoaXMgc3RlcCBkZXRlY3RzIGNvbnNlY3V0aXZl IGlkZW50aWNhbCBBTFQgbm9kZXMgYW5kIHdyYXBzCisgKiB0aGVtIGluIGEgR1JPVVAgd2l0aCB0 aGUgYXBwcm9wcmlhdGUgcXVhbnRpZmllci4KKyAqLworc3RhdGljIExpc3QgKgorbWVyZ2VDb25z ZWN1dGl2ZUFsdHMoTGlzdCAqY2hpbGRyZW4pCit7CisJTGlzdAkgICAqbWVyZ2VkQ2hpbGRyZW4g PSBOSUw7CisJUlBSUGF0dGVybk5vZGUgKnByZXYgPSBOVUxMOworCWludAkJCWNvdW50ID0gMDsK KworCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIGNoaWxkcmVuKQorCXsKKwkJ aWYgKGNoaWxkLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9BTFQgJiYgY2hpbGQtPnJlbHVjdGFu dCA9PSBmYWxzZSkKKwkJeworCQkJaWYgKHByZXYgIT0gTlVMTCAmJgorCQkJCXJwclBhdHRlcm5D aGlsZHJlbkVxdWFsKHByZXYtPmNoaWxkcmVuLCBjaGlsZC0+Y2hpbGRyZW4pKQorCQkJeworCQkJ CS8qIFNhbWUgQUxUIGFzIHByZXYgLSBhY2N1bXVsYXRlICovCisJCQkJY291bnQrKzsKKwkJCX0K KwkJCWVsc2UKKwkJCXsKKwkJCQkvKiBEaWZmZXJlbnQgQUxUIG9yIGZpcnN0IEFMVCAtIGZsdXNo IHByZXZpb3VzICovCisJCQkJaWYgKHByZXYgIT0gTlVMTCkKKwkJCQl7CisJCQkJCWlmIChjb3Vu dCA+IDEpCisJCQkJCXsKKwkJCQkJCS8qIFdyYXAgaW4gR1JPVVB7Y291bnQsY291bnR9KEFMVCkg Ki8KKwkJCQkJCVJQUlBhdHRlcm5Ob2RlICpncm91cCA9IG1ha2VOb2RlKFJQUlBhdHRlcm5Ob2Rl KTsKKworCQkJCQkJZ3JvdXAtPm5vZGVUeXBlID0gUlBSX1BBVFRFUk5fR1JPVVA7CisJCQkJCQln cm91cC0+bWluID0gY291bnQ7CisJCQkJCQlncm91cC0+bWF4ID0gY291bnQ7CisJCQkJCQlncm91 cC0+cmVsdWN0YW50ID0gZmFsc2U7CisJCQkJCQlncm91cC0+bG9jYXRpb24gPSAtMTsKKwkJCQkJ CWdyb3VwLT5jaGlsZHJlbiA9IGxpc3RfbWFrZTEocHJldik7CisJCQkJCQltZXJnZWRDaGlsZHJl biA9IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIGdyb3VwKTsKKwkJCQkJfQorCQkJCQllbHNlCisJ CQkJCQltZXJnZWRDaGlsZHJlbiA9IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIHByZXYpOworCQkJ CX0KKwkJCQlwcmV2ID0gY2hpbGQ7CisJCQkJY291bnQgPSAxOworCQkJfQorCQl9CisJCWVsc2UK KwkJeworCQkJLyogTm9uLUFMVCAtIGZsdXNoIHByZXZpb3VzICovCisJCQlpZiAocHJldiAhPSBO VUxMKQorCQkJeworCQkJCWlmIChjb3VudCA+IDEpCisJCQkJeworCQkJCQlSUFJQYXR0ZXJuTm9k ZSAqZ3JvdXAgPSBtYWtlTm9kZShSUFJQYXR0ZXJuTm9kZSk7CisKKwkJCQkJZ3JvdXAtPm5vZGVU eXBlID0gUlBSX1BBVFRFUk5fR1JPVVA7CisJCQkJCWdyb3VwLT5taW4gPSBjb3VudDsKKwkJCQkJ Z3JvdXAtPm1heCA9IGNvdW50OworCQkJCQlncm91cC0+cmVsdWN0YW50ID0gZmFsc2U7CisJCQkJ CWdyb3VwLT5sb2NhdGlvbiA9IC0xOworCQkJCQlncm91cC0+Y2hpbGRyZW4gPSBsaXN0X21ha2Ux KHByZXYpOworCQkJCQltZXJnZWRDaGlsZHJlbiA9IGxhcHBlbmQobWVyZ2VkQ2hpbGRyZW4sIGdy b3VwKTsKKwkJCQl9CisJCQkJZWxzZQorCQkJCQltZXJnZWRDaGlsZHJlbiA9IGxhcHBlbmQobWVy Z2VkQ2hpbGRyZW4sIHByZXYpOworCQkJfQorCQkJbWVyZ2VkQ2hpbGRyZW4gPSBsYXBwZW5kKG1l cmdlZENoaWxkcmVuLCBjaGlsZCk7CisJCQlwcmV2ID0gTlVMTDsKKwkJCWNvdW50ID0gMDsKKwkJ fQorCX0KKworCS8qIEZsdXNoIHJlbWFpbmluZyAqLworCWlmIChwcmV2ICE9IE5VTEwpCisJewor CQlpZiAoY291bnQgPiAxKQorCQl7CisJCQlSUFJQYXR0ZXJuTm9kZSAqZ3JvdXAgPSBtYWtlTm9k ZShSUFJQYXR0ZXJuTm9kZSk7CisKKwkJCWdyb3VwLT5ub2RlVHlwZSA9IFJQUl9QQVRURVJOX0dS T1VQOworCQkJZ3JvdXAtPm1pbiA9IGNvdW50OworCQkJZ3JvdXAtPm1heCA9IGNvdW50OworCQkJ Z3JvdXAtPnJlbHVjdGFudCA9IGZhbHNlOworCQkJZ3JvdXAtPmxvY2F0aW9uID0gLTE7CisJCQln cm91cC0+Y2hpbGRyZW4gPSBsaXN0X21ha2UxKHByZXYpOworCQkJbWVyZ2VkQ2hpbGRyZW4gPSBs YXBwZW5kKG1lcmdlZENoaWxkcmVuLCBncm91cCk7CisJCX0KKwkJZWxzZQorCQkJbWVyZ2VkQ2hp bGRyZW4gPSBsYXBwZW5kKG1lcmdlZENoaWxkcmVuLCBwcmV2KTsKKwl9CisKKwlyZXR1cm4gbWVy Z2VkQ2hpbGRyZW47Cit9CisKKy8qCisgKiBtZXJnZUdyb3VwUHJlZml4U3VmZml4CisgKgkJTWVy Z2Ugc2VxdWVuY2UgcHJlZml4L3N1ZmZpeCBpbnRvIEdST1VQIHdpdGggbWF0Y2hpbmcgY2hpbGRy ZW4uCisgKgorICogV2hlbiBhIEdST1VQJ3MgY2hpbGRyZW4gYXBwZWFyIGFzIGEgcHJlZml4IGJl Zm9yZSBhbmQvb3Igc3VmZml4IGFmdGVyCisgKiB0aGUgR1JPVVAgaW4gYSBTRVEsIG1lcmdlIHRo ZW0gYnkgaW5jcmVtZW50aW5nIHRoZSBHUk9VUCdzIHF1YW50aWZpZXIuCisgKiBUaGlzIHJ1bnMg aXRlcmF0aXZlbHk6IEEgQiBBIEIgKEEgQikrIEEgQiAtPiAoQSBCKXs0LH0uCisgKgorICogQWxn b3JpdGhtOgorICogICBGb3IgZWFjaCBHUk9VUCBlbmNvdW50ZXJlZCBpbiB0aGUgc2VxdWVuY2U6 CisgKiAgIDEuIFBSRUZJWCBwaGFzZTogY29tcGFyZSB0aGUgbGFzdCBOIGVsZW1lbnRzIGFscmVh ZHkgaW4gdGhlIHJlc3VsdAorICogICAgICBsaXN0IGFnYWluc3QgdGhlIEdST1VQJ3MgY2hpbGRy ZW4uICBPbiBtYXRjaCwgcmVtb3ZlIHRoZW0gZnJvbQorICogICAgICByZXN1bHQgYW5kIGluY3Jl bWVudCB0aGUgR1JPVVAncyBtaW4vbWF4LiAgUmVwZWF0IHVudGlsIG5vIG1hdGNoLgorICogICAy LiBTVUZGSVggcGhhc2U6IGNvbXBhcmUgdGhlIG5leHQgTiBlbGVtZW50cyBpbiB0aGUgaW5wdXQg YWdhaW5zdAorICogICAgICB0aGUgR1JPVVAncyBjaGlsZHJlbi4gIE9uIG1hdGNoLCBza2lwIHRo ZW0gKHZpYSBza2lwVW50aWwpIGFuZAorICogICAgICBpbmNyZW1lbnQgbWluL21heC4gIFJlcGVh dCB1bnRpbCBubyBtYXRjaC4KKyAqCisgKiBFeGFtcGxlczoKKyAqICAgQSBCIChBIEIpKyAtPiAo QSBCKXsyLH0KKyAqICAgKEEgQikrIEEgQiAtPiAoQSBCKXsyLH0KKyAqICAgQSBCIChBIEIpKyBB IEIgLT4gKEEgQil7Myx9CisgKi8KK3N0YXRpYyBMaXN0ICoKK21lcmdlR3JvdXBQcmVmaXhTdWZm aXgoTGlzdCAqY2hpbGRyZW4pCit7CisJTGlzdAkgICAqcmVzdWx0ID0gTklMOworCWludAkJCW51 bUNoaWxkcmVuID0gbGlzdF9sZW5ndGgoY2hpbGRyZW4pOworCWludAkJCWk7CisJaW50CQkJc2tp cFVudGlsID0gLTE7IC8qIHNraXAgc3VmZml4IGVsZW1lbnRzIGFscmVhZHkgbWVyZ2VkICovCisK Kwlmb3IgKGkgPSAwOyBpIDwgbnVtQ2hpbGRyZW47IGkrKykKKwl7CisJCVJQUlBhdHRlcm5Ob2Rl ICpjaGlsZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsaXN0X250aChjaGlsZHJlbiwgaSk7CisKKwkJ LyoKKwkJICogVGhlIHN1ZmZpeCBtZXJnZSBsb2dpYyBiZWxvdyBhZGp1c3RzIGkgdG8gc2tpcCBt ZXJnZWQgZWxlbWVudHMsCisJCSAqIGVuc3VyaW5nIHdlIG5ldmVyIHJldmlzaXQgdGhlbS4gVmVy aWZ5IHRoaXMgaW52YXJpYW50LgorCQkgKi8KKwkJQXNzZXJ0KGkgPj0gc2tpcFVudGlsKTsKKwor CQkvKgorCQkgKiBJZiB0aGlzIGlzIGEgR1JPVVAsIHNlZSBpZiBwcmVjZWRpbmcvZm9sbG93aW5n IGVsZW1lbnRzIG1hdGNoIGl0cworCQkgKiBjaGlsZHJlbi4gR1JPVVAncyBjb250ZW50IG1heSBi ZSB3cmFwcGVkIGluIGEgU0VRIC0gdW53cmFwIGZvcgorCQkgKiBjb21wYXJpc29uLgorCQkgKi8K KwkJaWYgKGNoaWxkLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9HUk9VUCAmJiBjaGlsZC0+cmVs dWN0YW50ID09IGZhbHNlKQorCQl7CisJCQlMaXN0CSAgICpncm91cENvbnRlbnQgPSBjaGlsZC0+ Y2hpbGRyZW47CisJCQlpbnQJCQlncm91cENoaWxkQ291bnQ7CisJCQlpbnQJCQlwcmVmaXhMZW4g PSBsaXN0X2xlbmd0aChyZXN1bHQpOworCQkJTGlzdAkgICAqdHJpbW1lZDsKKworCQkJLyoKKwkJ CSAqIElmIEdST1VQIGhhcyBzaW5nbGUgU0VRIGNoaWxkLCBjb21wYXJlIHdpdGggU0VRJ3MgY2hp bGRyZW4uCisJCQkgKiBlLmcuLCAoQSBCKSsgaW50ZXJuYWxseSBjb250YWlucyBzZXF1ZW5jZSBB IEI7IGNvbXBhcmUgYWdhaW5zdAorCQkJICogdGhhdC4KKwkJCSAqLworCQkJaWYgKGxpc3RfbGVu Z3RoKGdyb3VwQ29udGVudCkgPT0gMSkKKwkJCXsKKwkJCQlSUFJQYXR0ZXJuTm9kZSAqaW5uZXIg PSAoUlBSUGF0dGVybk5vZGUgKikgbGluaXRpYWwoZ3JvdXBDb250ZW50KTsKKworCQkJCWlmIChp bm5lci0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5fU0VRKQorCQkJCQlncm91cENvbnRlbnQgPSBp bm5lci0+Y2hpbGRyZW47CisJCQl9CisKKwkJCWdyb3VwQ2hpbGRDb3VudCA9IGxpc3RfbGVuZ3Ro KGdyb3VwQ29udGVudCk7CisKKwkJCS8qCisJCQkgKiBQUkVGSVggTUVSR0U6IENoZWNrIGlmIHBy ZWNlZGluZyBlbGVtZW50cyBtYXRjaC4gS2VlcCBtZXJnaW5nCisJCQkgKiBhcyBsb25nIGFzIHdl IGhhdmUgbWF0Y2hpbmcgcHJlZml4ZXMuCisJCQkgKi8KKwkJCXdoaWxlIChwcmVmaXhMZW4gPj0g Z3JvdXBDaGlsZENvdW50ICYmIGdyb3VwQ2hpbGRDb3VudCA+IDApCisJCQl7CisJCQkJTGlzdAkg ICAqcHJlZml4RWxlbWVudHMgPSBOSUw7CisJCQkJaW50CQkJajsKKworCQkJCS8qIEV4dHJhY3Qg bGFzdCBncm91cENoaWxkQ291bnQgZWxlbWVudHMgZnJvbSBwcmVmaXggKi8KKwkJCQlmb3IgKGog PSBwcmVmaXhMZW4gLSBncm91cENoaWxkQ291bnQ7IGogPCBwcmVmaXhMZW47IGorKykKKwkJCQl7 CisJCQkJCXByZWZpeEVsZW1lbnRzID0gbGFwcGVuZChwcmVmaXhFbGVtZW50cywKKwkJCQkJCQkJ CQkJIGxpc3RfbnRoKHJlc3VsdCwgaikpOworCQkJCX0KKworCQkJCS8qIENvbXBhcmUgd2l0aCBH Uk9VUCdzIChwb3NzaWJseSB1bndyYXBwZWQpIGNoaWxkcmVuICovCisJCQkJaWYgKHJwclBhdHRl cm5DaGlsZHJlbkVxdWFsKHByZWZpeEVsZW1lbnRzLCBncm91cENvbnRlbnQpICYmCisJCQkJCWNo aWxkLT5taW4gPCBSUFJfUVVBTlRJVFlfSU5GIC0gMSAmJgorCQkJCQkoY2hpbGQtPm1heCA9PSBS UFJfUVVBTlRJVFlfSU5GIHx8CisJCQkJCSBjaGlsZC0+bWF4IDwgUlBSX1FVQU5USVRZX0lORiAt IDEpKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogTWF0Y2ghIE1lcmdlIGJ5IGluY3JlbWVudGlu ZyBHUk9VUCdzIHF1YW50aWZpZXIuIFJlbW92ZQorCQkJCQkgKiB0aGUgcHJlZml4IGVsZW1lbnRz IGZyb20gb3V0cHV0LgorCQkJCQkgKi8KKwkJCQkJY2hpbGQtPm1pbiArPSAxOworCQkJCQlpZiAo Y2hpbGQtPm1heCAhPSBSUFJfUVVBTlRJVFlfSU5GKQorCQkJCQkJY2hpbGQtPm1heCArPSAxOwor CisJCQkJCS8qIFJlYnVpbGQgcmVzdWx0IHdpdGhvdXQgbWF0Y2hlZCBwcmVmaXggKi8KKwkJCQkJ dHJpbW1lZCA9IE5JTDsKKwkJCQkJZm9yIChqID0gMDsgaiA8IHByZWZpeExlbiAtIGdyb3VwQ2hp bGRDb3VudDsgaisrKQorCQkJCQl7CisJCQkJCQl0cmltbWVkID0gbGFwcGVuZCh0cmltbWVkLAor CQkJCQkJCQkJCSAgbGlzdF9udGgocmVzdWx0LCBqKSk7CisJCQkJCX0KKwkJCQkJcmVzdWx0ID0g dHJpbW1lZDsKKwkJCQkJcHJlZml4TGVuID0gbGlzdF9sZW5ndGgocmVzdWx0KTsKKwkJCQl9CisJ CQkJZWxzZQorCQkJCXsKKwkJCQkJbGlzdF9mcmVlKHByZWZpeEVsZW1lbnRzKTsKKwkJCQkJYnJl YWs7CisJCQkJfQorCisJCQkJbGlzdF9mcmVlKHByZWZpeEVsZW1lbnRzKTsKKwkJCX0KKworCQkJ LyoKKwkJCSAqIFNVRkZJWCBNRVJHRTogQ2hlY2sgaWYgZm9sbG93aW5nIGVsZW1lbnRzIG1hdGNo LiBLZWVwIG1lcmdpbmcKKwkJCSAqIGFzIGxvbmcgYXMgd2UgaGF2ZSBtYXRjaGluZyBzdWZmaXhl cy4KKwkJCSAqLworCQkJd2hpbGUgKGkgKyBncm91cENoaWxkQ291bnQgPCBudW1DaGlsZHJlbiAm JiBncm91cENoaWxkQ291bnQgPiAwKQorCQkJeworCQkJCUxpc3QJICAgKnN1ZmZpeEVsZW1lbnRz ID0gTklMOworCQkJCWludAkJCWo7CisJCQkJaW50CQkJc3VmZml4U3RhcnQgPSBpICsgMTsKKwor CQkJCS8qIHN1ZmZpeFN0YXJ0IGFsd2F5cyA+PSBza2lwVW50aWwgYWZ0ZXIgaSBhZGp1c3RtZW50 ICovCisJCQkJQXNzZXJ0KHNraXBVbnRpbCA8PSBzdWZmaXhTdGFydCk7CisKKwkJCQkvKiBFeHRy YWN0IG5leHQgZ3JvdXBDaGlsZENvdW50IGVsZW1lbnRzIGFzIHN1ZmZpeCAqLworCQkJCWZvciAo aiA9IDA7IGogPCBncm91cENoaWxkQ291bnQ7IGorKykKKwkJCQl7CisJCQkJCWludAkJCWlkeCA9 IHN1ZmZpeFN0YXJ0ICsgajsKKworCQkJCQkvKiB3aGlsZSBjb25kaXRpb24gZ3VhcmFudGVlcyBp ZHggPCBudW1DaGlsZHJlbiAqLworCQkJCQlBc3NlcnQoaWR4IDwgbnVtQ2hpbGRyZW4pOworCQkJ CQlzdWZmaXhFbGVtZW50cyA9IGxhcHBlbmQoc3VmZml4RWxlbWVudHMsCisJCQkJCQkJCQkJCSBs aXN0X250aChjaGlsZHJlbiwgaWR4KSk7CisJCQkJfQorCisJCQkJLyogQ29tcGFyZSB3aXRoIEdS T1VQJ3MgY2hpbGRyZW4gKi8KKwkJCQlpZiAobGlzdF9sZW5ndGgoc3VmZml4RWxlbWVudHMpID09 IGdyb3VwQ2hpbGRDb3VudCAmJgorCQkJCQlycHJQYXR0ZXJuQ2hpbGRyZW5FcXVhbChzdWZmaXhF bGVtZW50cywgZ3JvdXBDb250ZW50KSAmJgorCQkJCQljaGlsZC0+bWluIDwgUlBSX1FVQU5USVRZ X0lORiAtIDEgJiYKKwkJCQkJKGNoaWxkLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fAorCQkJ CQkgY2hpbGQtPm1heCA8IFJQUl9RVUFOVElUWV9JTkYgLSAxKSkKKwkJCQl7CisJCQkJCS8qCisJ CQkJCSAqIE1hdGNoISBNZXJnZSBzdWZmaXggYnkgaW5jcmVtZW50aW5nIHF1YW50aWZpZXIgYW5k CisJCQkJCSAqIHNraXBwaW5nLgorCQkJCQkgKi8KKwkJCQkJY2hpbGQtPm1pbiArPSAxOworCQkJ CQlpZiAoY2hpbGQtPm1heCAhPSBSUFJfUVVBTlRJVFlfSU5GKQorCQkJCQkJY2hpbGQtPm1heCAr PSAxOworCQkJCQlza2lwVW50aWwgPSBzdWZmaXhTdGFydCArIGdyb3VwQ2hpbGRDb3VudDsKKwor CQkJCQkvKgorCQkJCQkgKiBVcGRhdGUgaSB0byBjb250aW51ZSBzdWZmaXggY2hlY2sgYWZ0ZXIg bWVyZ2VkIGVsZW1lbnRzCisJCQkJCSAqLworCQkJCQlpID0gc2tpcFVudGlsIC0gMTsKKwkJCQl9 CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJbGlzdF9mcmVlKHN1ZmZpeEVsZW1lbnRzKTsKKwkJCQkJ YnJlYWs7CisJCQkJfQorCisJCQkJbGlzdF9mcmVlKHN1ZmZpeEVsZW1lbnRzKTsKKwkJCX0KKwkJ fQorCisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBjaGlsZCk7CisJfQorCisJcmV0dXJuIHJl c3VsdDsKK30KKworLyoKKyAqIG9wdGltaXplU2VxUGF0dGVybgorICoJCU9wdGltaXplIFNFUSBw YXR0ZXJuIG5vZGUuCisgKgorICogT3B0aW1pemF0aW9uczoKKyAqICAgMS4gRmxhdHRlbiBuZXN0 ZWQgU0VRIGFuZCBHUk9VUHsxLDF9CisgKiAgIDIuIE1lcmdlIGNvbnNlY3V0aXZlIGlkZW50aWNh bCBWQVIgbm9kZXMKKyAqICAgMy4gTWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRpY2FsIEdST1VQIG5v ZGVzCisgKiAgIDQuIE1lcmdlIGNvbnNlY3V0aXZlIGlkZW50aWNhbCBBTFQgbm9kZXMgaW50byBH Uk9VUAorICogICA1LiBNZXJnZSBwcmVmaXgvc3VmZml4IGludG8gR1JPVVAgd2l0aCBtYXRjaGlu ZyBjaGlsZHJlbgorICogICA2LiBVbndyYXAgc2luZ2xlLWl0ZW0gU0VRCisgKi8KK3N0YXRpYyBS UFJQYXR0ZXJuTm9kZSAqCitvcHRpbWl6ZVNlcVBhdHRlcm4oUlBSUGF0dGVybk5vZGUgKnBhdHRl cm4pCit7CisJLyogUmVjdXJzaXZlbHkgb3B0aW1pemUgY2hpbGRyZW4gYW5kIGZsYXR0ZW4gbmVz dGVkIFNFUS9HUk9VUHsxLDF9ICovCisJcGF0dGVybi0+Y2hpbGRyZW4gPSBmbGF0dGVuU2VxQ2hp bGRyZW4ocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogTWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRp Y2FsIFZBUiBub2RlcyAqLworCXBhdHRlcm4tPmNoaWxkcmVuID0gbWVyZ2VDb25zZWN1dGl2ZVZh cnMocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogTWVyZ2UgY29uc2VjdXRpdmUgaWRlbnRpY2Fs IEdST1VQIG5vZGVzICovCisJcGF0dGVybi0+Y2hpbGRyZW4gPSBtZXJnZUNvbnNlY3V0aXZlR3Jv dXBzKHBhdHRlcm4tPmNoaWxkcmVuKTsKKworCS8qIE1lcmdlIGNvbnNlY3V0aXZlIGlkZW50aWNh bCBBTFQgbm9kZXMgaW50byBHUk9VUCAqLworCXBhdHRlcm4tPmNoaWxkcmVuID0gbWVyZ2VDb25z ZWN1dGl2ZUFsdHMocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogTWVyZ2UgcHJlZml4L3N1ZmZp eCBpbnRvIEdST1VQIHdpdGggbWF0Y2hpbmcgY2hpbGRyZW4gKi8KKwlwYXR0ZXJuLT5jaGlsZHJl biA9IG1lcmdlR3JvdXBQcmVmaXhTdWZmaXgocGF0dGVybi0+Y2hpbGRyZW4pOworCisJLyogVW53 cmFwIHNpbmdsZS1pdGVtIFNFUSAqLworCXJldHVybiB0cnlVbndyYXBTaW5nbGVDaGlsZChwYXR0 ZXJuKTsKK30KKworLyoKKyAqIGZsYXR0ZW5BbHRDaGlsZHJlbgorICoJCVJlY3Vyc2l2ZWx5IG9w dGltaXplIGNoaWxkcmVuIGFuZCBmbGF0dGVuIG5lc3RlZCBBTFQgbm9kZXMuCisgKgorICogRXhh bXBsZToKKyAqICAgKEEgfCAoQiB8IEMpKSAtPiAoQSB8IEIgfCBDKQorICoKKyAqIFJldHVybnMg YSBuZXcgbGlzdCB3aXRoIG9wdGltaXplZCBjaGlsZHJlbiwgd2l0aCBuZXN0ZWQgQUxUIGNoaWxk cmVuCisgKiBmbGF0dGVuZWQgaW50byB0aGUgcGFyZW50IGxpc3QuCisgKi8KK3N0YXRpYyBMaXN0 ICoKK2ZsYXR0ZW5BbHRDaGlsZHJlbihMaXN0ICpjaGlsZHJlbikKK3sKKwlMaXN0CSAgICpuZXdD aGlsZHJlbiA9IE5JTDsKKworCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIGNo aWxkcmVuKQorCXsKKwkJUlBSUGF0dGVybk5vZGUgKm9wdCA9IG9wdGltaXplUlBSUGF0dGVybihj aGlsZCk7CisKKwkJaWYgKG9wdC0+bm9kZVR5cGUgPT0gUlBSX1BBVFRFUk5fQUxUKQorCQkJbmV3 Q2hpbGRyZW4gPSBsaXN0X2NvbmNhdChuZXdDaGlsZHJlbiwgbGlzdF9jb3B5KG9wdC0+Y2hpbGRy ZW4pKTsKKwkJZWxzZQorCQkJbmV3Q2hpbGRyZW4gPSBsYXBwZW5kKG5ld0NoaWxkcmVuLCBvcHQp OworCX0KKworCXJldHVybiBuZXdDaGlsZHJlbjsKK30KKworLyoKKyAqIHJlbW92ZUR1cGxpY2F0 ZUFsdGVybmF0aXZlcworICoJCVJlbW92ZSBkdXBsaWNhdGUgYWx0ZXJuYXRpdmVzIGZyb20gYSBs aXN0LgorICoKKyAqIEV4YW1wbGVzOgorICogICAoQSB8IEIgfCBBKSAtPiAoQSB8IEIpCisgKiAg IChYIHwgWSB8IFggfCBaIHwgWSkgLT4gKFggfCBZIHwgWikKKyAqCisgKiBSZXR1cm5zIGEgbmV3 IGxpc3Qgd2l0aCBvbmx5IHVuaXF1ZSBjaGlsZHJlbiAoZmlyc3Qgb2NjdXJyZW5jZSBrZXB0KS4K KyAqLworc3RhdGljIExpc3QgKgorcmVtb3ZlRHVwbGljYXRlQWx0ZXJuYXRpdmVzKExpc3QgKmNo aWxkcmVuKQoreworCUxpc3QJICAgKnVuaXF1ZUNoaWxkcmVuID0gTklMOworCisJZm9yZWFjaF9u b2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgY2hpbGRyZW4pCisJeworCQlib29sCQlpc0R1cGxp Y2F0ZSA9IGZhbHNlOworCisJCWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgdWNoaWxkLCB1 bmlxdWVDaGlsZHJlbikKKwkJeworCQkJaWYgKHJwclBhdHRlcm5FcXVhbCh1Y2hpbGQsIGNoaWxk KSkKKwkJCXsKKwkJCQlpc0R1cGxpY2F0ZSA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0K KworCQlpZiAoIWlzRHVwbGljYXRlKQorCQkJdW5pcXVlQ2hpbGRyZW4gPSBsYXBwZW5kKHVuaXF1 ZUNoaWxkcmVuLCBjaGlsZCk7CisJfQorCisJcmV0dXJuIHVuaXF1ZUNoaWxkcmVuOworfQorCisv KgorICogb3B0aW1pemVBbHRQYXR0ZXJuCisgKgkJT3B0aW1pemUgQUxUIHBhdHRlcm4gbm9kZS4K KyAqCisgKiBPcHRpbWl6YXRpb25zOgorICogICAxLiBGbGF0dGVuIG5lc3RlZCBBTFQKKyAqICAg Mi4gUmVtb3ZlIGR1cGxpY2F0ZSBhbHRlcm5hdGl2ZXMKKyAqICAgMy4gVW53cmFwIHNpbmdsZS1p dGVtIEFMVAorICovCitzdGF0aWMgUlBSUGF0dGVybk5vZGUgKgorb3B0aW1pemVBbHRQYXR0ZXJu KFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKQoreworCS8qIFJlY3Vyc2l2ZWx5IG9wdGltaXplIGNo aWxkcmVuIGFuZCBmbGF0dGVuIG5lc3RlZCBBTFQgKi8KKwlwYXR0ZXJuLT5jaGlsZHJlbiA9IGZs YXR0ZW5BbHRDaGlsZHJlbihwYXR0ZXJuLT5jaGlsZHJlbik7CisKKwkvKiBSZW1vdmUgZHVwbGlj YXRlIGFsdGVybmF0aXZlcyAqLworCXBhdHRlcm4tPmNoaWxkcmVuID0gcmVtb3ZlRHVwbGljYXRl QWx0ZXJuYXRpdmVzKHBhdHRlcm4tPmNoaWxkcmVuKTsKKworCS8qIFVud3JhcCBzaW5nbGUtaXRl bSBBTFQgKi8KKwlyZXR1cm4gdHJ5VW53cmFwU2luZ2xlQ2hpbGQocGF0dGVybik7Cit9CisKKy8q CisgKiB0cnlNdWx0aXBseVF1YW50aWZpZXJzCisgKgkJVHJ5IHRvIGZsYXR0ZW4gKGNoaWxke3As cX0pe20sbn0gaW50byBjaGlsZHtwKm0sIHEqbn0uCisgKgorICogQmVsb3csIHAscSBhcmUgdGhl IGNoaWxkJ3Mge21pbixtYXh9IGFuZCBtLG4gdGhlIG91dGVyIHttaW4sbWF4fS4KKyAqCisgKiBG bGF0dGVuaW5nIGlzIHZhbGlkIG9ubHkgd2hlbiB0aGUgcmVwZXRpdGlvbiBjb3VudHMgdGhlIG5l c3RlZCBxdWFudGlmaWVycworICogY2FuIHByb2R1Y2UgZm9ybSBleGFjdGx5IHRoZSBjb250aWd1 b3VzIGludGVydmFsIFtwKm0sIHEqbl0uICBGb3IgYW4gb3V0ZXIKKyAqIGl0ZXJhdGlvbiBjb3Vu dCB0IChtIDw9IHQgPD0gbikgdGhlIGNoaWxkIGNvbnRyaWJ1dGVzIGFueSBjb3VudCBpbgorICog W3QqcCwgdCpxXSwgYW5kIHQgPSAwIGNvbnRyaWJ1dGVzIHswfS4gIFRoZSB1bmlvbiBvZiB0aG9z ZSBpbnRlcnZhbHMgaXMKKyAqIGNvbnRpZ3VvdXMsIGhlbmNlIGZsYXR0ZW5hYmxlLCB3aGVuOgor ICoKKyAqICAgLSBtID09IG46IGEgc2luZ2xlIG91dGVyIGNvdW50LCBzbyB0aGUgcmVzdWx0IGlz IGp1c3QgW20qcCwgbSpxXTsgb3IKKyAqICAgLSBwID09IDA6IGV2ZXJ5IGludGVydmFsIHN0YXJ0 cyBhdCAwLCBzbyB0aGV5IGFsbCBvdmVybGFwOyBvcgorICogICAtIGNvbnNlY3V0aXZlIGludGVy dmFscyB0b3VjaCBhbmQgdGhlIHplcm8gY2FzZSAoaWYgYW55KSBjb25uZWN0czoKKyAqICAgICAg IHAgPD0gTWF4KG0sMSkqKHEtcCkgKyAxICAgKHRvdWNoOyB0cml2aWFsbHkgdHJ1ZSBpZiBxIGlz IHVuYm91bmRlZCkKKyAqICAgICAgIGFuZCAobSA+PSAxIG9yIHAgPD0gMSkgICAgKHdoZW4gbSA9 PSAwLCB7MH0gbXVzdCByZWFjaCBbcCxxXSkKKyAqCisgKiBPdGhlcndpc2UgZ2FwcyBhcHBlYXIg YW5kIHRoZSBwYXR0ZXJuIGlzIGxlZnQgdW5mbGF0dGVuZWQ6IChBezJ9KXsyLDN9CisgKiB5aWVs ZHMgezQsNn0gKG5vdCA0Li42KSwgYW5kIChBezIsfSkqIHlpZWxkcyB7MH0gVU5JT04gWzIsSU5G KSAobm90CisgKiBbMCxJTkYpLCBzbyBBKiB3b3VsZCB3cm9uZ2x5IGFkbWl0IGEgc2luZ2xlIEEp LgorICoKKyAqIFJldHVybnMgdGhlIGNoaWxkIG5vZGUgd2l0aCBtdWx0aXBsaWVkIHF1YW50aWZp ZXJzIGlmIHN1Y2Nlc3NmdWwsCisgKiBvdGhlcndpc2UgcmV0dXJucyB0aGUgb3JpZ2luYWwgcGF0 dGVybiB1bmNoYW5nZWQuCisgKi8KK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCit0cnlNdWx0aXBs eVF1YW50aWZpZXJzKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKQoreworCVJQUlBhdHRlcm5Ob2Rl ICpjaGlsZDsKKwlib29sCQlzYWZlOworCWludDY0CQluZXdfbWluXzY0OworCWludDY0CQluZXdf bWF4XzY0OworCisJLyogUGFyc2VyIGFsd2F5cyBjcmVhdGVzIEdST1VQIHdpdGggZXhhY3RseSBv bmUgY2hpbGQgKi8KKwlBc3NlcnQobGlzdF9sZW5ndGgocGF0dGVybi0+Y2hpbGRyZW4pID09IDEp OworCisJaWYgKHBhdHRlcm4tPnJlbHVjdGFudCkKKwkJcmV0dXJuIHBhdHRlcm47CisKKwljaGls ZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChwYXR0ZXJuLT5jaGlsZHJlbik7CisKKwlp ZiAoKGNoaWxkLT5ub2RlVHlwZSAhPSBSUFJfUEFUVEVSTl9WQVIgJiYKKwkJIGNoaWxkLT5ub2Rl VHlwZSAhPSBSUFJfUEFUVEVSTl9HUk9VUCkgfHwKKwkJY2hpbGQtPnJlbHVjdGFudCkKKwkJcmV0 dXJuIHBhdHRlcm47CisKKwkvKgorCSAqIERlY2lkZSB3aGV0aGVyIHRoZSBhY2hpZXZhYmxlIGNv dW50cyBmb3JtIG9uZSBjb250aWd1b3VzIGludGVydmFsLiAgVGhlCisJICogY2hpbGQgcXVhbnRp ZmllciBpcyB7Y2hpbGQtPm1pbiwgY2hpbGQtPm1heH0gYW5kIHRoZSBvdXRlciBvbmUgaXMKKwkg KiB7cGF0dGVybi0+bWluLCBwYXR0ZXJuLT5tYXh9OyBlaXRoZXIgbWF4IG1heSBiZSBSUFJfUVVB TlRJVFlfSU5GLgorCSAqLworCWlmIChwYXR0ZXJuLT5taW4gPT0gcGF0dGVybi0+bWF4IHx8IGNo aWxkLT5taW4gPT0gMCkKKwkJc2FmZSA9IHRydWU7CisJZWxzZQorCXsKKwkJYm9vbAkJdG91Y2g7 CisJCWJvb2wJCXplcm9fb2s7CisKKwkJLyoKKwkJICogQ29uc2VjdXRpdmUgaW50ZXJ2YWxzIFt0 Km1pbiwgdCptYXhdIGFuZCBbKHQrMSkqbWluLCAodCsxKSptYXhdCisJCSAqIHRvdWNoIHdoZW4g KHQrMSkqbWluIDw9IHQqbWF4ICsgMSwgaS5lLiBtaW4gPD0gdCoobWF4LW1pbikgKyAxLgorCQkg KiBUaGlzIGlzIHRpZ2h0ZXN0IGF0IHRoZSBzbWFsbGVzdCB0IGluIHBsYXksIE1heChwYXR0ZXJu LT5taW4sIDEpLgorCQkgKiBBbiB1bmJvdW5kZWQgY2hpbGQtPm1heCBtYWtlcyBldmVyeSBpbnRl cnZhbCByZWFjaCBJTkYsIHNvIHRoZXkKKwkJICogYWx3YXlzIHRvdWNoLgorCQkgKi8KKwkJaWYg KGNoaWxkLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORikKKwkJCXRvdWNoID0gdHJ1ZTsKKwkJZWxz ZQorCQkJdG91Y2ggPSAoKGludDY0KSBjaGlsZC0+bWluIDw9CisJCQkJCSAoaW50NjQpIE1heChw YXR0ZXJuLT5taW4sIDEpICogKGNoaWxkLT5tYXggLSBjaGlsZC0+bWluKSArIDEpOworCisJCS8q CisJCSAqIEEgc2tpcHBhYmxlIG91dGVyIChtaW4gMCkgYWxzbyBuZWVkcyB7MH0gYWRqYWNlbnQg dG8gdGhlIGNoaWxkCisJCSAqIHJhbmdlLgorCQkgKi8KKwkJemVyb19vayA9IChwYXR0ZXJuLT5t aW4gPj0gMSB8fCBjaGlsZC0+bWluIDw9IDEpOworCisJCXNhZmUgPSB0b3VjaCAmJiB6ZXJvX29r OworCX0KKworCWlmICghc2FmZSkKKwkJcmV0dXJuIHBhdHRlcm47CisKKwkvKiBGbGF0dGVuIHRo ZSBjaGlsZCBxdWFudGlmaWVyLCBndWFyZGluZyBhZ2FpbnN0IG92ZXJmbG93LiAqLworCW5ld19t aW5fNjQgPSAoaW50NjQpIHBhdHRlcm4tPm1pbiAqIGNoaWxkLT5taW47CisJaWYgKG5ld19taW5f NjQgPj0gUlBSX1FVQU5USVRZX0lORikKKwkJcmV0dXJuIHBhdHRlcm47CQkJLyogb3ZlcmZsb3cs IHNraXAgb3B0aW1pemF0aW9uICovCisKKwlpZiAocGF0dGVybi0+bWF4ID09IFJQUl9RVUFOVElU WV9JTkYgfHwgY2hpbGQtPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQorCQluZXdfbWF4XzY0ID0g UlBSX1FVQU5USVRZX0lORjsKKwllbHNlCisJeworCQluZXdfbWF4XzY0ID0gKGludDY0KSBwYXR0 ZXJuLT5tYXggKiBjaGlsZC0+bWF4OworCQlpZiAobmV3X21heF82NCA+PSBSUFJfUVVBTlRJVFlf SU5GKQorCQkJcmV0dXJuIHBhdHRlcm47CisJfQorCisJY2hpbGQtPm1pbiA9IChpbnQpIG5ld19t aW5fNjQ7CisJY2hpbGQtPm1heCA9IChpbnQpIG5ld19tYXhfNjQ7CisJcmV0dXJuIGNoaWxkOwor fQorCisvKgorICogdHJ5VW53cmFwR3JvdXAKKyAqCQlUcnkgdG8gdW53cmFwIEdST1VQezEsMX0g bm9kZS4KKyAqCisgKiBFeGFtcGxlczoKKyAqICAgKEEpezEsMX0gICAtPiBBCisgKiAgIChBIEIp ezEsMX0gLT4gU0VRKEEsIEIpICAodW53cmFwcyB0aGUgaW5uZXIgU0VRKQorICogICAoQSk/ICAg ICAgIC0+IEE/ICAgICAgICAgKHByb3BhZ2F0ZSBxdWFudGlmaWVyIHRvIHNpbmdsZSBWQVIgY2hp bGQpCisgKiAgIChBKSs/ICAgICAgLT4gQSs/ICAgICAgICAocHJvcGFnYXRlIHF1YW50aWZpZXIg aW5jbHVkaW5nIHJlbHVjdGFudCkKKyAqCisgKiBJZiBHUk9VUCBoYXMgbWluPTEsIG1heD0xLCBy ZXR1cm4gdGhlIGNoaWxkIGRpcmVjdGx5IChyZWx1Y3RhbnQgb24KKyAqIHsxLDF9IGlzIG1lYW5p bmdsZXNzKS4gIElmIEdST1VQIGhhcyBhIHNpbmdsZSBWQVIgY2hpbGQgd2l0aCBkZWZhdWx0Cisg KiBxdWFudGlmaWVyIHsxLDF9LCBwcm9wYWdhdGUgdGhlIEdST1VQJ3MgcXVhbnRpZmllciB0byB0 aGUgY2hpbGQgYW5kCisgKiB1bndyYXAuICBPdGhlcndpc2UgcmV0dXJucyB0aGUgcGF0dGVybiB1 bmNoYW5nZWQuCisgKgorICogTm90ZTogUGFyc2VyIGFsd2F5cyBjcmVhdGVzIEdST1VQIHdpdGgg ZXhhY3RseSBvbmUgY2hpbGQgdmlhIGxpc3RfbWFrZTEoKS4KKyAqLworc3RhdGljIFJQUlBhdHRl cm5Ob2RlICoKK3RyeVVud3JhcEdyb3VwKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKQoreworCVJQ UlBhdHRlcm5Ob2RlICpjaGlsZDsKKworCS8qIFBhcnNlciBhbHdheXMgY3JlYXRlcyBHUk9VUCB3 aXRoIHNpbmdsZSBjaGlsZCAqLworCUFzc2VydChsaXN0X2xlbmd0aChwYXR0ZXJuLT5jaGlsZHJl bikgPT0gMSk7CisKKwljaGlsZCA9IChSUFJQYXR0ZXJuTm9kZSAqKSBsaW5pdGlhbChwYXR0ZXJu LT5jaGlsZHJlbik7CisKKwkvKiBHUk9VUHsxLDF9OiB1bndyYXAgZGlyZWN0bHkgKHJlbHVjdGFu dCBvbiB7MSwxfSBpcyBtZWFuaW5nbGVzcykgKi8KKwlpZiAocGF0dGVybi0+bWluID09IDEgJiYg cGF0dGVybi0+bWF4ID09IDEpCisJCXJldHVybiBjaGlsZDsKKworCS8qCisJICogU2luZ2xlIFZB UiBjaGlsZCB3aXRoIGRlZmF1bHQgezEsMX06IHByb3BhZ2F0ZSBHUk9VUCdzIHF1YW50aWZpZXIg dG8KKwkgKiB0aGUgY2hpbGQgYW5kIHVud3JhcC4gIEUuZy4sIChBKT8/IC0+IEE/PywgKEEpKz8g LT4gQSs/CisJICovCisJaWYgKGNoaWxkLT5ub2RlVHlwZSA9PSBSUFJfUEFUVEVSTl9WQVIgJiYK KwkJY2hpbGQtPm1pbiA9PSAxICYmIGNoaWxkLT5tYXggPT0gMSAmJiBjaGlsZC0+cmVsdWN0YW50 ID09IGZhbHNlKQorCXsKKwkJY2hpbGQtPm1pbiA9IHBhdHRlcm4tPm1pbjsKKwkJY2hpbGQtPm1h eCA9IHBhdHRlcm4tPm1heDsKKwkJY2hpbGQtPnJlbHVjdGFudCA9IHBhdHRlcm4tPnJlbHVjdGFu dDsKKwkJcmV0dXJuIGNoaWxkOworCX0KKworCXJldHVybiBwYXR0ZXJuOworfQorCisvKgorICog b3B0aW1pemVHcm91cFBhdHRlcm4KKyAqCQlPcHRpbWl6ZSBHUk9VUCBwYXR0ZXJuIG5vZGUuCisg KgorICogT3B0aW1pemF0aW9uczoKKyAqICAgMS4gUXVhbnRpZmllciBtdWx0aXBsaWNhdGlvbjog KEF7bX0pe259IC0+IEF7bSpufQorICogICAyLiBVbndyYXAgR1JPVVB7MSwxfQorICovCitzdGF0 aWMgUlBSUGF0dGVybk5vZGUgKgorb3B0aW1pemVHcm91cFBhdHRlcm4oUlBSUGF0dGVybk5vZGUg KnBhdHRlcm4pCit7CisJTGlzdAkgICAqbmV3Q2hpbGRyZW47CisJUlBSUGF0dGVybk5vZGUgKnJl c3VsdDsKKworCS8qIFJlY3Vyc2l2ZWx5IG9wdGltaXplIGNoaWxkcmVuICovCisJbmV3Q2hpbGRy ZW4gPSBOSUw7CisJZm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgcGF0dGVybi0+ Y2hpbGRyZW4pCisJeworCQluZXdDaGlsZHJlbiA9IGxhcHBlbmQobmV3Q2hpbGRyZW4sIG9wdGlt aXplUlBSUGF0dGVybihjaGlsZCkpOworCX0KKwlwYXR0ZXJuLT5jaGlsZHJlbiA9IG5ld0NoaWxk cmVuOworCisJLyogVHJ5IHF1YW50aWZpZXIgbXVsdGlwbGljYXRpb24gKi8KKwlyZXN1bHQgPSB0 cnlNdWx0aXBseVF1YW50aWZpZXJzKHBhdHRlcm4pOworCWlmIChyZXN1bHQgIT0gcGF0dGVybikK KwkJcmV0dXJuIHJlc3VsdDsKKworCS8qIFRyeSB1bndyYXBwaW5nIEdST1VQezEsMX0gKi8KKwly ZXR1cm4gdHJ5VW53cmFwR3JvdXAocGF0dGVybik7Cit9CisKKy8qCisgKiBvcHRpbWl6ZVJQUlBh dHRlcm4KKyAqCQlPcHRpbWl6ZSBSUFJQYXR0ZXJuTm9kZSB0cmVlIChkaXNwYXRjaGVyKS4KKyAq CisgKiBEaXNwYXRjaGVzIHRvIHR5cGUtc3BlY2lmaWMgb3B0aW1pemF0aW9uIGZ1bmN0aW9ucy4K KyAqIFJldHVybnMgdGhlIG9wdGltaXplZCBwYXR0ZXJuIChtYXkgYmUgYSBkaWZmZXJlbnQgbm9k ZSkuCisgKi8KK3N0YXRpYyBSUFJQYXR0ZXJuTm9kZSAqCitvcHRpbWl6ZVJQUlBhdHRlcm4oUlBS UGF0dGVybk5vZGUgKnBhdHRlcm4pCit7CisJLyogUGF0dGVybiBub2RlcyBmcm9tIHBhcnNlciBh cmUgbmV2ZXIgTlVMTCAqLworCUFzc2VydChwYXR0ZXJuICE9IE5VTEwpOworCisJY2hlY2tfc3Rh Y2tfZGVwdGgoKTsKKworCXN3aXRjaCAocGF0dGVybi0+bm9kZVR5cGUpCisJeworCQljYXNlIFJQ Ul9QQVRURVJOX1ZBUjoKKwkJCXJldHVybiBwYXR0ZXJuOworCQljYXNlIFJQUl9QQVRURVJOX1NF UToKKwkJCXJldHVybiBvcHRpbWl6ZVNlcVBhdHRlcm4ocGF0dGVybik7CisJCWNhc2UgUlBSX1BB VFRFUk5fQUxUOgorCQkJcmV0dXJuIG9wdGltaXplQWx0UGF0dGVybihwYXR0ZXJuKTsKKwkJY2Fz ZSBSUFJfUEFUVEVSTl9HUk9VUDoKKwkJCXJldHVybiBvcHRpbWl6ZUdyb3VwUGF0dGVybihwYXR0 ZXJuKTsKKwl9CisKKwlwZ191bnJlYWNoYWJsZSgpOworCXJldHVybiBwYXR0ZXJuOworfQorCisv KgorICogY29sbGVjdERlZmluZVZhcmlhYmxlcworICoJCUNvbGxlY3QgdmFyaWFibGUgbmFtZXMg ZnJvbSBERUZJTkUgY2xhdXNlLgorICoKKyAqIFBvcHVsYXRlcyB2YXJOYW1lcyBhcnJheSB3aXRo IHZhcmlhYmxlIG5hbWVzIGluIERFRklORSBvcmRlci4KKyAqIFRoaXMgZW5zdXJlcyB2YXJJZCA9 PSBkZWZpbmVJZHgsIGVsaW1pbmF0aW5nIHJ1bnRpbWUgbWFwcGluZy4KKyAqIFJldHVybnMgdGhl IG51bWJlciBvZiB2YXJpYWJsZXMgY29sbGVjdGVkLgorICovCitzdGF0aWMgaW50Citjb2xsZWN0 RGVmaW5lVmFyaWFibGVzKExpc3QgKmRlZmluZVZhcmlhYmxlTGlzdCwgY2hhciAqKnZhck5hbWVz KQoreworCWludAkJCW51bVZhcnMgPSAwOworCisJZm9yZWFjaF9ub2RlKFN0cmluZywgdmFybmFt ZSwgZGVmaW5lVmFyaWFibGVMaXN0KQorCXsKKwkJLyogUGFyc2VyIGFscmVhZHkgY2hlY2tlZCB0 aGlzIGxpbWl0IGluIHRyYW5zZm9ybURlZmluZUNsYXVzZSAqLworCQlBc3NlcnQobnVtVmFycyA8 PSBSUFJfVkFSSURfTUFYKTsKKworCQl2YXJOYW1lc1tudW1WYXJzKytdID0gc3RyVmFsKHZhcm5h bWUpOworCX0KKworCXJldHVybiBudW1WYXJzOworfQorCisvKgorICogc2NhblJQUlBhdHRlcm5S ZWN1cnNpdmUKKyAqCQlSZWN1cnNpdmVseSBzY2FuIHBhdHRlcm4gQVNUIChwYXNzIDEgaW50ZXJu YWwpLgorICoKKyAqIENvbGxlY3RzIHVuaXF1ZSB2YXJpYWJsZSBuYW1lcyBhbmQgY291bnRzIGVs ZW1lbnRzIHdoaWxlIHRyYWNraW5nIGRlcHRoLgorICogVmFyaWFibGVzIGZyb20gREVGSU5FIGNs YXVzZSBhcmUgYWxyZWFkeSBpbiB2YXJOYW1lczsgdGhpcyBhZGRzIGFueQorICogYWRkaXRpb25h bCB2YXJpYWJsZXMgZm91bmQgaW4gdGhlIHBhdHRlcm4uCisgKi8KK3N0YXRpYyB2b2lkCitzY2Fu UlBSUGF0dGVyblJlY3Vyc2l2ZShSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgY2hhciAqKnZhck5hbWVz LCBpbnQgKm51bVZhcnMsCisJCQkJCQlpbnQgKm51bUVsZW1lbnRzLCBSUFJEZXB0aCBkZXB0aCwg UlBSRGVwdGggKm1heERlcHRoKQoreworCWludAkJCWk7CisKKwkvKiBQYXR0ZXJuIG5vZGVzIGZy b20gcGFyc2VyIGFyZSBuZXZlciBOVUxMICovCisJQXNzZXJ0KG5vZGUgIT0gTlVMTCk7CisKKwlj aGVja19zdGFja19kZXB0aCgpOworCisJLyogQ2hlY2sgcmVjdXJzaW9uIGRlcHRoIGxpbWl0IGJl Zm9yZSBvdmVyZmxvdyBvY2N1cnMgKi8KKwlpZiAoZGVwdGggPj0gUlBSX0RFUFRIX01BWCkKKwkJ ZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNPREVfUFJPR1JBTV9MSU1JVF9FWENFRURF RCksCisJCQkJZXJybXNnKCJwYXR0ZXJuIG5lc3RpbmcgdG9vIGRlZXAiKSwKKwkJCQllcnJkZXRh aWwoIlBhdHRlcm4gbmVzdGluZyBkZXB0aCAlZCBleGNlZWRzIG1heGltdW0gJWQuIiwKKwkJCQkJ CSAgZGVwdGgsIFJQUl9ERVBUSF9NQVggLSAxKSk7CisKKwkvKiBUcmFjayBtYXhpbXVtIGRlcHRo ICovCisJKm1heERlcHRoID0gTWF4KCptYXhEZXB0aCwgZGVwdGgpOworCisJc3dpdGNoIChub2Rl LT5ub2RlVHlwZSkKKwl7CisJCWNhc2UgUlBSX1BBVFRFUk5fVkFSOgorCQkJLyogQ291bnQgZWxl bWVudCAqLworCQkJKCpudW1FbGVtZW50cykrKzsKKworCQkJLyogQ29sbGVjdCB2YXJpYWJsZSBu YW1lIGlmIG5vdCBhbHJlYWR5IHByZXNlbnQgKi8KKwkJCWZvciAoaSA9IDA7IGkgPCAqbnVtVmFy czsgaSsrKQorCQkJeworCQkJCWlmIChzdHJjbXAodmFyTmFtZXNbaV0sIG5vZGUtPnZhck5hbWUp ID09IDApCisJCQkJCXJldHVybjsJCS8qIEFscmVhZHkgaGF2ZSB0aGlzIHZhcmlhYmxlICovCisJ CQl9CisKKwkJCS8qCisJCQkgKiBWYXJpYWJsZSBub3QgaW4gREVGSU5FIGNsYXVzZSAtIHRoaXMg aXMgdmFsaWQgcGVyIElTTy9JRUMKKwkJCSAqIDE5MDc1LTUgRmVhdHVyZSBSMDIwLiAgU3VjaCB2 YXJpYWJsZXMgYXJlIGltcGxpY2l0bHkgVFJVRS4gQWRkCisJCQkgKiB0byB2YXJOYW1lcyBzbyB0 aGV5IGdldCBhIHZhcklkID49IGRlZmluZVZhcmlhYmxlTGlzdCBsZW5ndGgsCisJCQkgKiB3aGlj aCBleGVjdXRvciB0cmVhdHMgYXMgVFJVRS4KKwkJCSAqLworCQkJQXNzZXJ0KCpudW1WYXJzIDw9 IFJQUl9WQVJJRF9NQVgpOworCQkJdmFyTmFtZXNbKCpudW1WYXJzKSsrXSA9IG5vZGUtPnZhck5h bWU7CisJCQlicmVhazsKKworCQljYXNlIFJQUl9QQVRURVJOX1NFUToKKwkJCS8qIFNlcXVlbmNl OiBqdXN0IHJlY3Vyc2UgaW50byBjaGlsZHJlbiAqLworCQkJZm9yZWFjaF9ub2RlKFJQUlBhdHRl cm5Ob2RlLCBjaGlsZCwgbm9kZS0+Y2hpbGRyZW4pCisJCQl7CisJCQkJc2NhblJQUlBhdHRlcm5S ZWN1cnNpdmUoY2hpbGQsIHZhck5hbWVzLAorCQkJCQkJCQkJCW51bVZhcnMsIG51bUVsZW1lbnRz LCBkZXB0aCwgbWF4RGVwdGgpOworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfUEFUVEVS Tl9HUk9VUDoKKworCQkJLyoKKwkJCSAqIEFkZCBCRUdJTiBlbGVtZW50IGlmIGdyb3VwIGhhcyBu b24tdHJpdmlhbCBxdWFudGlmaWVyIChub3QKKwkJCSAqIHsxLDF9KQorCQkJICovCisJCQlpZiAo bm9kZS0+bWluICE9IDEgfHwgbm9kZS0+bWF4ICE9IDEpCisJCQkJKCpudW1FbGVtZW50cykrKzsK KworCQkJLyogUmVjdXJzZSBpbnRvIGNoaWxkcmVuIGF0IGluY3JlYXNlZCBkZXB0aCAqLworCQkJ Zm9yZWFjaF9ub2RlKFJQUlBhdHRlcm5Ob2RlLCBjaGlsZCwgbm9kZS0+Y2hpbGRyZW4pCisJCQl7 CisJCQkJc2NhblJQUlBhdHRlcm5SZWN1cnNpdmUoY2hpbGQsIHZhck5hbWVzLAorCQkJCQkJCQkJ CW51bVZhcnMsIG51bUVsZW1lbnRzLCBkZXB0aCArIDEsIG1heERlcHRoKTsKKwkJCX0KKworCQkJ LyogQWRkIEVORCBlbGVtZW50IGlmIGdyb3VwIGhhcyBub24tdHJpdmlhbCBxdWFudGlmaWVyIChu b3QgezEsMX0pICovCisJCQlpZiAobm9kZS0+bWluICE9IDEgfHwgbm9kZS0+bWF4ICE9IDEpCisJ CQkJKCpudW1FbGVtZW50cykrKzsKKwkJCWJyZWFrOworCisJCWNhc2UgUlBSX1BBVFRFUk5fQUxU OgorCQkJLyogQ291bnQgQUxUIHN0YXJ0IGVsZW1lbnQgKi8KKwkJCSgqbnVtRWxlbWVudHMpKys7 CisKKwkJCS8qIFJlY3Vyc2UgaW50byBjaGlsZHJlbiBhdCBpbmNyZWFzZWQgZGVwdGggKi8KKwkJ CWZvcmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIG5vZGUtPmNoaWxkcmVuKQorCQkJ eworCQkJCXNjYW5SUFJQYXR0ZXJuUmVjdXJzaXZlKGNoaWxkLCB2YXJOYW1lcywKKwkJCQkJCQkJ CQludW1WYXJzLCBudW1FbGVtZW50cywgZGVwdGggKyAxLCBtYXhEZXB0aCk7CisJCQl9CisJCQli cmVhazsKKwl9Cit9CisKKy8qCisgKiBzY2FuUlBSUGF0dGVybgorICoJCVNjYW4gcGF0dGVybiBB U1QgKHBhc3MgMSBlbnRyeSBwb2ludCkuCisgKgorICogQ29sbGVjdHMgdW5pcXVlIHZhcmlhYmxl IG5hbWVzIChhcHBlbmRpbmcgdG8gdGhvc2UgZnJvbSBERUZJTkUgY2xhdXNlKSwKKyAqIGNvdW50 cyB0b3RhbCBlbGVtZW50cyAoaW5jbHVkaW5nIEZJTiBtYXJrZXIpLCBhbmQgdHJhY2tzIG1heGlt dW0gZGVwdGguCisgKiBSZXBvcnRzIGVycm9yIGlmIGVsZW1lbnQgY291bnQgZXhjZWVkcyBSUFJf RUxFTUlEWF9NQVguCisgKi8KK3N0YXRpYyB2b2lkCitzY2FuUlBSUGF0dGVybihSUFJQYXR0ZXJu Tm9kZSAqbm9kZSwgY2hhciAqKnZhck5hbWVzLCBpbnQgKm51bVZhcnMsCisJCQkgICBpbnQgKm51 bUVsZW1lbnRzLCBSUFJEZXB0aCAqbWF4RGVwdGgpCit7CisJKm51bUVsZW1lbnRzID0gMDsKKwkq bWF4RGVwdGggPSAwOworCisJc2NhblJQUlBhdHRlcm5SZWN1cnNpdmUobm9kZSwgdmFyTmFtZXMs IG51bVZhcnMsIG51bUVsZW1lbnRzLCAwLCBtYXhEZXB0aCk7CisKKwkoKm51bUVsZW1lbnRzKSsr OwkJCS8qICsxIGZvciBGSU4gbWFya2VyICovCisKKwlpZiAoKm51bUVsZW1lbnRzID4gUlBSX0VM RU1JRFhfTUFYKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9QUk9HUkFN X0xJTUlUX0VYQ0VFREVEKSwKKwkJCQllcnJtc2coInBhdHRlcm4gdG9vIGNvbXBsZXgiKSwKKwkJ CQllcnJkZXRhaWwoIlBhdHRlcm4gaGFzICVkIGVsZW1lbnRzLCBtYXhpbXVtIGlzICVkLiIsCisJ CQkJCQkgICpudW1FbGVtZW50cywgUlBSX0VMRU1JRFhfTUFYKSk7Cit9CisKKy8qCisgKiBtYWtl UlBSUGF0dGVybgorICoJCUFsbG9jYXRlIGFuZCBpbml0aWFsaXplIFJQUlBhdHRlcm4gc3RydWN0 dXJlLgorICoKKyAqIENyZWF0ZXMgdGhlIHBhdHRlcm4gc3RydWN0dXJlLCBjb3BpZXMgdmFyaWFi bGUgbmFtZXMsIGFuZCBhbGxvY2F0ZXMKKyAqIHRoZSBlbGVtZW50cyBhcnJheS4gVGhlIGVsZW1l bnRzIGFycmF5IGlzIHplcm8taW5pdGlhbGl6ZWQuCisgKi8KK3N0YXRpYyBSUFJQYXR0ZXJuICoK K21ha2VSUFJQYXR0ZXJuKGludCBudW1WYXJzLCBpbnQgbnVtRWxlbWVudHMsIFJQUkRlcHRoIG1h eERlcHRoLAorCQkJICAgY2hhciAqKnZhck5hbWVzU3RhY2spCit7CisJUlBSUGF0dGVybiAqcmVz dWx0OworCWludAkJCWk7CisKKwlyZXN1bHQgPSBtYWtlTm9kZShSUFJQYXR0ZXJuKTsKKwlyZXN1 bHQtPm51bVZhcnMgPSBudW1WYXJzOworCisJLyogZGVwdGggPCBSUFJfREVQVEhfTUFYLCBzbyBt YXhEZXB0aCsxIG5ldmVyIGFsaWFzZXMgUlBSX0RFUFRIX05PTkUuICovCisJQXNzZXJ0KG1heERl cHRoIDwgUlBSX0RFUFRIX01BWCk7CisJcmVzdWx0LT5tYXhEZXB0aCA9IG1heERlcHRoICsgMTsJ LyogKzE6IGRlcHRoIGlzIDAtYmFzZWQgKi8KKwlyZXN1bHQtPm51bUVsZW1lbnRzID0gbnVtRWxl bWVudHM7CisKKwkvKiBDb3B5IHZhck5hbWVzIChwYXR0ZXJuIG11c3QgaGF2ZSBhdCBsZWFzdCBv bmUgdmFyaWFibGUpICovCisJQXNzZXJ0KG51bVZhcnMgPiAwKTsKKwlyZXN1bHQtPnZhck5hbWVz ID0gcGFsbG9jKG51bVZhcnMgKiBzaXplb2YoY2hhciAqKSk7CisJZm9yIChpID0gMDsgaSA8IG51 bVZhcnM7IGkrKykKKwkJcmVzdWx0LT52YXJOYW1lc1tpXSA9IHBzdHJkdXAodmFyTmFtZXNTdGFj a1tpXSk7CisKKwkvKiBBbGxvY2F0ZSBlbGVtZW50cyBhcnJheSAoemVyby1pbml0IGZvciByZXNl cnZlZCBmaWVsZHMpICovCisJQXNzZXJ0KG51bUVsZW1lbnRzID49IDIpOworCXJlc3VsdC0+ZWxl bWVudHMgPSBwYWxsb2MwKG51bUVsZW1lbnRzICogc2l6ZW9mKFJQUlBhdHRlcm5FbGVtZW50KSk7 CisKKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogZ2V0VmFySWRGcm9tUGF0dGVybgorICoJ CUdldCB2YXJpYWJsZSBJRCBmb3IgYSB2YXJpYWJsZSBuYW1lIGZyb20gUlBSUGF0dGVybi4KKyAq CisgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgdmFyaWFibGUgaW4gdGhlIHZhck5hbWVzIGFy cmF5LgorICovCitzdGF0aWMgUlBSVmFySWQKK2dldFZhcklkRnJvbVBhdHRlcm4oUlBSUGF0dGVy biAqcGF0LCBjb25zdCBjaGFyICp2YXJOYW1lKQoreworCWZvciAoaW50IGkgPSAwOyBpIDwgcGF0 LT5udW1WYXJzOyBpKyspCisJeworCQlpZiAoc3RyY21wKHBhdC0+dmFyTmFtZXNbaV0sIHZhck5h bWUpID09IDApCisJCQlyZXR1cm4gKFJQUlZhcklkKSBpOworCX0KKworCS8qIFNob3VsZCBub3Qg aGFwcGVuIC0gdmFyaWFibGUgc2hvdWxkIGFscmVhZHkgYmUgY29sbGVjdGVkICovCisJZWxvZyhF UlJPUiwgInBhdHRlcm4gdmFyaWFibGUgXCIlc1wiIG5vdCBmb3VuZCIsIHZhck5hbWUpOworCXBn X3VucmVhY2hhYmxlKCk7Cit9CisKKy8qCisgKiBmaWxsUlBSUGF0dGVyblZhcgorICoJCUZpbGwg YSBWQVIgcGF0dGVybiBlbGVtZW50LgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIFZBUiBp cyBudWxsYWJsZSAoY2FuIG1hdGNoIHplcm8gcm93cykuCisgKi8KK3N0YXRpYyBib29sCitmaWxs UlBSUGF0dGVyblZhcihSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgUlBSUGF0dGVybiAqcGF0LCBpbnQg KmlkeCwgUlBSRGVwdGggZGVwdGgpCit7CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0gPSAmcGF0 LT5lbGVtZW50c1sqaWR4XTsKKworCW1lbXNldChlbGVtLCAwLCBzaXplb2YoUlBSUGF0dGVybkVs ZW1lbnQpKTsKKwllbGVtLT52YXJJZCA9IGdldFZhcklkRnJvbVBhdHRlcm4ocGF0LCBub2RlLT52 YXJOYW1lKTsKKwllbGVtLT5kZXB0aCA9IGRlcHRoOworCWVsZW0tPm1pbiA9IG5vZGUtPm1pbjsK KwllbGVtLT5tYXggPSAobm9kZS0+bWF4ID09IFBHX0lOVDMyX01BWCkgPyBSUFJfUVVBTlRJVFlf SU5GIDogbm9kZS0+bWF4OworCUFzc2VydChlbGVtLT5taW4gPj0gMCAmJiBlbGVtLT5taW4gPCBS UFJfUVVBTlRJVFlfSU5GICYmCisJCSAgIGVsZW0tPm1heCA+PSAxICYmCisJCSAgIChlbGVtLT5t YXggPT0gUlBSX1FVQU5USVRZX0lORiB8fCBlbGVtLT5taW4gPD0gZWxlbS0+bWF4KSk7CisJZWxl bS0+bmV4dCA9IFJQUl9FTEVNSURYX0lOVkFMSUQ7CisJZWxlbS0+anVtcCA9IFJQUl9FTEVNSURY X0lOVkFMSUQ7CisJaWYgKG5vZGUtPnJlbHVjdGFudCkKKwkJZWxlbS0+ZmxhZ3MgfD0gUlBSX0VM RU1fUkVMVUNUQU5UOworCSgqaWR4KSsrOworCisJcmV0dXJuIChub2RlLT5taW4gPT0gMCk7Cit9 CisKKy8qCisgKiBmaWxsUlBSUGF0dGVybkdyb3VwCisgKgkJRmlsbCBhIEdST1VQIHBhdHRlcm4g YW5kIGl0cyBjaGlsZHJlbi4KKyAqCisgKiBDcmVhdGVzIGVsZW1lbnRzIGZvciBncm91cCBjb250 ZW50IGF0IGluY3JlYXNlZCBkZXB0aCwgcGx1cyBCRUdJTi9FTkQKKyAqIG1hcmtlciBwYWlyIGlm IHRoZSBncm91cCBoYXMgYSBub24tdHJpdmlhbCBxdWFudGlmaWVyIChub3QgezEsMX0pLgorICoK KyAqIEVsZW1lbnQgbGF5b3V0IGZvciAoQSBCKXsyLDN9OgorICoKKyAqICAgW0JFR0lOXSAgW0Fd ICBbQl0gIFtFTkRdICBbbmV4dCBlbGVtZW50Li4uXQorICogICAgIHwgICAgICAgICAgICAgICAg ICB8ICAgICAgICAgIF4KKyAqICAgICB8ICAgICAgICAgICAgICAgICAgKy0tIGp1bXAgLS0rIChs b29wIGJhY2sgdG8gZmlyc3QgY2hpbGQpCisgKiAgICAgKy0tLS0ganVtcCAtLS0tLS0tLS0tLS0t LS0tLS0tKyAoc2tpcCB0byBhZnRlciBFTkQpCisgKgorICogQkVHSU4uanVtcCBwb2ludHMgcGFz dCBFTkQgKHNraXAgcGF0aCB3aGVuIGNvdW50ID49IG1heCBvciBtaW4gPT0gMCkuCisgKiBFTkQu anVtcCBwb2ludHMgdG8gdGhlIGZpcnN0IGNoaWxkIChsb29wLWJhY2sgcGF0aCkuCisgKiBCRUdJ Ti5uZXh0IGFuZCBFTkQubmV4dCBhcmUgc2V0IGxhdGVyIGJ5IGZpbmFsaXplUlBSUGF0dGVybigp LgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGdyb3VwIGlzIG51bGxhYmxlLiAgQSBncm91 cCBpcyBudWxsYWJsZSB3aGVuIGl0cworICogbWluIGlzIDAgKGNhbiBiZSBza2lwcGVkIGVudGly ZWx5KSBvciBpdHMgYm9keSBpcyBudWxsYWJsZSAoZXZlcnkgcGF0aAorICogdGhyb3VnaCB0aGUg Ym9keSBjYW4gbWF0Y2ggemVybyByb3dzKS4KKyAqLworc3RhdGljIGJvb2wKK2ZpbGxSUFJQYXR0 ZXJuR3JvdXAoUlBSUGF0dGVybk5vZGUgKm5vZGUsIFJQUlBhdHRlcm4gKnBhdCwgaW50ICppZHgs IFJQUkRlcHRoIGRlcHRoKQoreworCWludAkJCWdyb3VwU3RhcnRJZHggPSAqaWR4OworCWludAkJ CWJlZ2luSWR4ID0gLTE7CisJYm9vbAkJYm9keU51bGxhYmxlID0gdHJ1ZTsKKworCS8qIEFkZCBC RUdJTiBtYXJrZXIgaWYgZ3JvdXAgaGFzIG5vbi10cml2aWFsIHF1YW50aWZpZXIgKG5vdCB7MSwx fSkgKi8KKwlpZiAobm9kZS0+bWluICE9IDEgfHwgbm9kZS0+bWF4ICE9IDEpCisJeworCQlSUFJQ YXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZwYXQtPmVsZW1lbnRzWyppZHhdOworCisJCWJlZ2luSWR4 ID0gKmlkeDsKKwkJbWVtc2V0KGVsZW0sIDAsIHNpemVvZihSUFJQYXR0ZXJuRWxlbWVudCkpOwor CQllbGVtLT52YXJJZCA9IFJQUl9WQVJJRF9CRUdJTjsKKwkJZWxlbS0+ZGVwdGggPSBkZXB0aDsK KwkJZWxlbS0+bWluID0gbm9kZS0+bWluOworCQllbGVtLT5tYXggPSAobm9kZS0+bWF4ID09IFBH X0lOVDMyX01BWCkgPyBSUFJfUVVBTlRJVFlfSU5GIDogbm9kZS0+bWF4OworCQlBc3NlcnQoZWxl bS0+bWluID49IDAgJiYgZWxlbS0+bWluIDwgUlBSX1FVQU5USVRZX0lORiAmJgorCQkJICAgZWxl bS0+bWF4ID49IDEgJiYKKwkJCSAgIChlbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fCBl bGVtLT5taW4gPD0gZWxlbS0+bWF4KSk7CisJCWVsZW0tPm5leHQgPSBSUFJfRUxFTUlEWF9JTlZB TElEOwkvKiBzZXQgYnkgZmluYWxpemUgKi8KKwkJZWxlbS0+anVtcCA9IFJQUl9FTEVNSURYX0lO VkFMSUQ7CS8qIHNldCBhZnRlciBFTkQgKi8KKwkJaWYgKG5vZGUtPnJlbHVjdGFudCkKKwkJCWVs ZW0tPmZsYWdzIHw9IFJQUl9FTEVNX1JFTFVDVEFOVDsKKwkJKCppZHgpKys7CisJCWdyb3VwU3Rh cnRJZHggPSAqaWR4OwkvKiBjaGlsZHJlbiBzdGFydCBhZnRlciBCRUdJTiAqLworCX0KKworCWZv cmVhY2hfbm9kZShSUFJQYXR0ZXJuTm9kZSwgY2hpbGQsIG5vZGUtPmNoaWxkcmVuKQorCXsKKwkJ aWYgKCFmaWxsUlBSUGF0dGVybihjaGlsZCwgcGF0LCBpZHgsIGRlcHRoICsgMSkpCisJCQlib2R5 TnVsbGFibGUgPSBmYWxzZTsKKwl9CisKKwkvKiBBZGQgZ3JvdXAgZW5kIG1hcmtlciBpZiBncm91 cCBoYXMgbm9uLXRyaXZpYWwgcXVhbnRpZmllciAobm90IHsxLDF9KSAqLworCWlmIChub2RlLT5t aW4gIT0gMSB8fCBub2RlLT5tYXggIT0gMSkKKwl7CisJCVJQUlBhdHRlcm5FbGVtZW50ICpiZWdp bkVsZW0gPSAmcGF0LT5lbGVtZW50c1tiZWdpbklkeF07CisJCVJQUlBhdHRlcm5FbGVtZW50ICpl bmRFbGVtID0gJnBhdC0+ZWxlbWVudHNbKmlkeF07CisKKwkJbWVtc2V0KGVuZEVsZW0sIDAsIHNp emVvZihSUFJQYXR0ZXJuRWxlbWVudCkpOworCQllbmRFbGVtLT52YXJJZCA9IFJQUl9WQVJJRF9F TkQ7CisJCWVuZEVsZW0tPmRlcHRoID0gZGVwdGg7CisJCWVuZEVsZW0tPm1pbiA9IG5vZGUtPm1p bjsKKwkJZW5kRWxlbS0+bWF4ID0gKG5vZGUtPm1heCA9PSBQR19JTlQzMl9NQVgpID8gUlBSX1FV QU5USVRZX0lORiA6IG5vZGUtPm1heDsKKwkJQXNzZXJ0KGVuZEVsZW0tPm1pbiA+PSAwICYmIGVu ZEVsZW0tPm1pbiA8IFJQUl9RVUFOVElUWV9JTkYgJiYKKwkJCSAgIGVuZEVsZW0tPm1heCA+PSAx ICYmCisJCQkgICAoZW5kRWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwgZW5kRWxlbS0+ bWluIDw9IGVuZEVsZW0tPm1heCkpOworCQllbmRFbGVtLT5uZXh0ID0gUlBSX0VMRU1JRFhfSU5W QUxJRDsKKwkJZW5kRWxlbS0+anVtcCA9IGdyb3VwU3RhcnRJZHg7CS8qIGxvb3AgdG8gZmlyc3Qg Y2hpbGQgKi8KKwkJaWYgKG5vZGUtPnJlbHVjdGFudCkKKwkJCWVuZEVsZW0tPmZsYWdzIHw9IFJQ Ul9FTEVNX1JFTFVDVEFOVDsKKworCQkvKgorCQkgKiBJZiB0aGUgZ3JvdXAgYm9keSBpcyBudWxs YWJsZSAoYWxsIHBhdGhzIGNhbiBtYXRjaCBlbXB0eSksIG1hcmsgdGhlCisJCSAqIEVORCBlbGVt ZW50IHNvIHRoYXQgbmZhX2FkdmFuY2VfZW5kIGNhbiBmYXN0LWZvcndhcmQgdGhlIGl0ZXJhdGlv bgorCQkgKiBjb3VudCB0byBtaW4gd2hlbiByZWFjaGVkIHZpYSBlbXB0eS1tYXRjaCBza2lwIHBh dGhzLgorCQkgKi8KKwkJaWYgKGJvZHlOdWxsYWJsZSkKKwkJCWVuZEVsZW0tPmZsYWdzIHw9IFJQ Ul9FTEVNX0VNUFRZX0xPT1A7CisKKwkJKCppZHgpKys7CisKKwkJLyogU2V0IEJFR0lOIHNraXAg cG9pbnRlciAobmV4dCBpcyBzZXQgYnkgZmluYWxpemUpICovCisJCWJlZ2luRWxlbS0+anVtcCA9 ICppZHg7IC8qIHNraXA6IGdvIHRvIGFmdGVyIEVORCAqLworCX0KKworCXJldHVybiAobm9kZS0+ bWluID09IDAgfHwgYm9keU51bGxhYmxlKTsKK30KKworLyoKKyAqIGZpbGxSUFJQYXR0ZXJuQWx0 CisgKgkJRmlsbCBhbiBBTFQgcGF0dGVybiBhbmQgaXRzIGFsdGVybmF0aXZlcy4KKyAqCisgKiBD cmVhdGVzIEFMVF9TVEFSVCBtYXJrZXIsIGZpbGxzIGVhY2ggYWx0ZXJuYXRpdmUgYXQgaW5jcmVh c2VkIGRlcHRoLAorICogc2V0cyBqdW1wIHBvaW50ZXJzIGZvciBiYWNrdHJhY2tpbmcsIGFuZCBu ZXh0IHBvaW50ZXJzIGZvciBzdWNjZXNzZnVsIHBhdGhzLgorICoKKyAqIFJldHVybnMgdHJ1ZSBp ZiBhbnkgYnJhbmNoIGlzIG51bGxhYmxlIChPUiBzZW1hbnRpY3M6IG9uZSBudWxsYWJsZQorICog YnJhbmNoIHN1ZmZpY2VzIGZvciB0aGUgYWx0ZXJuYXRpb24gdG8gcHJvZHVjZSBhbiBlbXB0eSBt YXRjaCkuCisgKi8KK3N0YXRpYyBib29sCitmaWxsUlBSUGF0dGVybkFsdChSUFJQYXR0ZXJuTm9k ZSAqbm9kZSwgUlBSUGF0dGVybiAqcGF0LCBpbnQgKmlkeCwgUlBSRGVwdGggZGVwdGgpCit7CisJ TGlzdENlbGwgICAqbGM7CisJTGlzdENlbGwgICAqbGMyOworCVJQUlBhdHRlcm5FbGVtZW50ICpl bGVtOworCUxpc3QJICAgKmFsdEJyYW5jaFN0YXJ0cyA9IE5JTDsKKwlMaXN0CSAgICphbHRFbmRQ b3NpdGlvbnMgPSBOSUw7CisJaW50CQkJYWZ0ZXJBbHRJZHg7CisJYm9vbAkJYW55TnVsbGFibGUg PSBmYWxzZTsKKworCS8qIEFkZCBhbHRlcm5hdGlvbiBzdGFydCBtYXJrZXIgKi8KKwllbGVtID0g JnBhdC0+ZWxlbWVudHNbKmlkeF07CisJbWVtc2V0KGVsZW0sIDAsIHNpemVvZihSUFJQYXR0ZXJu RWxlbWVudCkpOworCWVsZW0tPnZhcklkID0gUlBSX1ZBUklEX0FMVDsKKwllbGVtLT5kZXB0aCA9 IGRlcHRoOworCWVsZW0tPm1pbiA9IDE7CisJZWxlbS0+bWF4ID0gMTsKKwllbGVtLT5uZXh0ID0g UlBSX0VMRU1JRFhfSU5WQUxJRDsKKwllbGVtLT5qdW1wID0gUlBSX0VMRU1JRFhfSU5WQUxJRDsK KwkoKmlkeCkrKzsKKworCS8qIEZpbGwgZWFjaCBhbHRlcm5hdGl2ZSAqLworCWZvcmVhY2hfbm9k ZShSUFJQYXR0ZXJuTm9kZSwgYWx0LCBub2RlLT5jaGlsZHJlbikKKwl7CisJCWludAkJCWJyYW5j aFN0YXJ0ID0gKmlkeDsKKworCQlhbHRCcmFuY2hTdGFydHMgPSBsYXBwZW5kX2ludChhbHRCcmFu Y2hTdGFydHMsIGJyYW5jaFN0YXJ0KTsKKwkJaWYgKGZpbGxSUFJQYXR0ZXJuKGFsdCwgcGF0LCBp ZHgsIGRlcHRoICsgMSkpCisJCQlhbnlOdWxsYWJsZSA9IHRydWU7CisJCWFsdEVuZFBvc2l0aW9u cyA9IGxhcHBlbmRfaW50KGFsdEVuZFBvc2l0aW9ucywgKmlkeCAtIDEpOworCX0KKworCS8qIFNl dCBqdW1wIG9uIGZpcnN0IGVsZW1lbnQgb2YgZWFjaCBhbHRlcm5hdGl2ZSB0byBuZXh0IGFsdGVy bmF0aXZlICovCisJZm9yZWFjaChsYywgYWx0QnJhbmNoU3RhcnRzKQorCXsKKwkJaW50CQkJZmly c3RFbGVtSWR4ID0gbGZpcnN0X2ludChsYyk7CisKKwkJaWYgKGxuZXh0KGFsdEJyYW5jaFN0YXJ0 cywgbGMpICE9IE5VTEwpCisJCQlwYXQtPmVsZW1lbnRzW2ZpcnN0RWxlbUlkeF0uanVtcCA9IGxm aXJzdF9pbnQobG5leHQoYWx0QnJhbmNoU3RhcnRzLCBsYykpOworCX0KKworCS8qIFNldCBuZXh0 IG9uIGxhc3QgZWxlbWVudCBvZiBlYWNoIGFsdGVybmF0aXZlIHRvIGFmdGVyIHRoZSBhbHRlcm5h dGlvbiAqLworCWFmdGVyQWx0SWR4ID0gKmlkeDsKKworCWZvcmJvdGgobGMsIGFsdEVuZFBvc2l0 aW9ucywgbGMyLCBhbHRCcmFuY2hTdGFydHMpCisJeworCQlpbnQJCQllbmRQb3MgPSBsZmlyc3Rf aW50KGxjKTsKKwkJaW50CQkJYnJhbmNoU3RhcnQgPSBsZmlyc3RfaW50KGxjMik7CisKKwkJaWYg KHBhdC0+ZWxlbWVudHNbZW5kUG9zXS5uZXh0ICE9IFJQUl9FTEVNSURYX0lOVkFMSUQpCisJCXsK KwkJCS8qCisJCQkgKiBBbiBpbm5lciBBTFQgYWxyZWFkeSBzZXQgbmV4dCBvbiB0aGlzIGVsZW1l bnQuICBSZWRpcmVjdCBhbGwKKwkJCSAqIGVsZW1lbnRzIGluIHRoaXMgYnJhbmNoIHRoYXQgc2hh cmUgdGhlIHNhbWUgdGFyZ2V0IHRvIHBvaW50IHRvCisJCQkgKiBhZnRlciB0aGlzIEFMVCBpbnN0 ZWFkLgorCQkJICovCisJCQlpbnQJCQlvbGRUYXJnZXQgPSBwYXQtPmVsZW1lbnRzW2VuZFBvc10u bmV4dDsKKwkJCWludAkJCWo7CisKKwkJCWZvciAoaiA9IGJyYW5jaFN0YXJ0OyBqIDw9IGVuZFBv czsgaisrKQorCQkJeworCQkJCWlmIChwYXQtPmVsZW1lbnRzW2pdLm5leHQgPT0gb2xkVGFyZ2V0 KQorCQkJCQlwYXQtPmVsZW1lbnRzW2pdLm5leHQgPSBhZnRlckFsdElkeDsKKwkJCX0KKwkJfQor CQllbHNlCisJCXsKKwkJCXBhdC0+ZWxlbWVudHNbZW5kUG9zXS5uZXh0ID0gYWZ0ZXJBbHRJZHg7 CisJCX0KKwl9CisKKwlsaXN0X2ZyZWUoYWx0QnJhbmNoU3RhcnRzKTsKKwlsaXN0X2ZyZWUoYWx0 RW5kUG9zaXRpb25zKTsKKworCXJldHVybiBhbnlOdWxsYWJsZTsKK30KKworLyoKKyAqIGZpbGxS UFJQYXR0ZXJuCisgKgkJRmlsbCBwYXR0ZXJuIGVsZW1lbnRzIGFycmF5IGZyb20gQVNUIChwYXNz IDIpLgorICoKKyAqIFJlY3Vyc2l2ZWx5IHRyYXZlcnNlcyBBU1QgYW5kIHBvcHVsYXRlcyBwcmUt YWxsb2NhdGVkIGVsZW1lbnRzIGFycmF5LgorICogRGlzcGF0Y2hlcyB0byB0eXBlLXNwZWNpZmlj IGZpbGwgZnVuY3Rpb25zLgorICoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcGF0dGVybiBpcyBu dWxsYWJsZSAoY2FuIG1hdGNoIHplcm8gcm93cykuCisgKiBGb3IgU0VRIG5vZGVzLCBhbGwgY2hp bGRyZW4gbXVzdCBiZSBudWxsYWJsZSAoQU5EKS4KKyAqLworc3RhdGljIGJvb2wKK2ZpbGxSUFJQ YXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpub2RlLCBSUFJQYXR0ZXJuICpwYXQsIGludCAqaWR4LCBS UFJEZXB0aCBkZXB0aCkKK3sKKwlib29sCQlhbGxOdWxsYWJsZSA9IHRydWU7CisKKwkvKiBQYXR0 ZXJuIG5vZGVzIGZyb20gcGFyc2VyIGFyZSBuZXZlciBOVUxMICovCisJQXNzZXJ0KG5vZGUgIT0g TlVMTCk7CisKKwljaGVja19zdGFja19kZXB0aCgpOworCisJc3dpdGNoIChub2RlLT5ub2RlVHlw ZSkKKwl7CisJCWNhc2UgUlBSX1BBVFRFUk5fU0VROgorCQkJZm9yZWFjaF9ub2RlKFJQUlBhdHRl cm5Ob2RlLCBjaGlsZCwgbm9kZS0+Y2hpbGRyZW4pCisJCQl7CisJCQkJaWYgKCFmaWxsUlBSUGF0 dGVybihjaGlsZCwgcGF0LCBpZHgsIGRlcHRoKSkKKwkJCQkJYWxsTnVsbGFibGUgPSBmYWxzZTsK KwkJCX0KKwkJCXJldHVybiBhbGxOdWxsYWJsZTsKKworCQljYXNlIFJQUl9QQVRURVJOX1ZBUjoK KwkJCXJldHVybiBmaWxsUlBSUGF0dGVyblZhcihub2RlLCBwYXQsIGlkeCwgZGVwdGgpOworCisJ CWNhc2UgUlBSX1BBVFRFUk5fR1JPVVA6CisJCQlyZXR1cm4gZmlsbFJQUlBhdHRlcm5Hcm91cChu b2RlLCBwYXQsIGlkeCwgZGVwdGgpOworCisJCWNhc2UgUlBSX1BBVFRFUk5fQUxUOgorCQkJcmV0 dXJuIGZpbGxSUFJQYXR0ZXJuQWx0KG5vZGUsIHBhdCwgaWR4LCBkZXB0aCk7CisJfQorCisJcGdf dW5yZWFjaGFibGUoKTsKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBmaW5hbGl6ZVJQUlBh dHRlcm4KKyAqCQlGaW5hbGl6ZSBwYXR0ZXJuIHN0cnVjdHVyZSBhZnRlciBmaWxsaW5nIGVsZW1l bnRzLgorICoKKyAqIFRoaXMgcGVyZm9ybXM6CisgKiAgIDEuIEluaXRpYWxpemUgYWJzb3JwdGlv biBmbGFnIHRvIGZhbHNlCisgKiAgIDIuIFNldCB1cCBuZXh0IHBvaW50ZXJzIGZvciBzZXF1ZW50 aWFsIGZsb3cKKyAqICAgMy4gQWRkIEZJTiBtYXJrZXIgYXQgdGhlIGVuZAorICovCitzdGF0aWMg dm9pZAorZmluYWxpemVSUFJQYXR0ZXJuKFJQUlBhdHRlcm4gKnJlc3VsdCkKK3sKKwlpbnQJCQlm aW5JZHggPSByZXN1bHQtPm51bUVsZW1lbnRzIC0gMTsKKwlpbnQJCQlpOworCVJQUlBhdHRlcm5F bGVtZW50ICpmaW5FbGVtOworCisJLyogSW5pdGlhbGl6ZSBhYnNvcnB0aW9uIGZsYWcgKi8KKwly ZXN1bHQtPmlzQWJzb3JiYWJsZSA9IGZhbHNlOworCisJLyogU2V0IHVwIG5leHQgcG9pbnRlcnMg Zm9yIGVsZW1lbnRzIHRoYXQgZG9uJ3QgaGF2ZSBvbmUgKi8KKwlmb3IgKGkgPSAwOyBpIDwgZmlu SWR4OyBpKyspCisJeworCQlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZyZXN1bHQtPmVsZW1l bnRzW2ldOworCisJCWlmIChlbGVtLT5uZXh0ID09IFJQUl9FTEVNSURYX0lOVkFMSUQpCisJCQll bGVtLT5uZXh0ID0gKGkgPCBmaW5JZHggLSAxKSA/IGkgKyAxIDogZmluSWR4OworCisJCS8qIFZl cmlmeSBxdWFudGlmaWVyIHJhbmdlIGlzIHZhbGlkICovCisJCUFzc2VydChlbGVtLT5taW4gPj0g MCAmJiBlbGVtLT5taW4gPCBSUFJfUVVBTlRJVFlfSU5GICYmCisJCQkgICBlbGVtLT5tYXggPj0g MSAmJgorCQkJICAgKGVsZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8IGVsZW0tPm1pbiA8 PSBlbGVtLT5tYXgpKTsKKwl9CisKKwkvKiBBZGQgRklOIG1hcmtlciBhdCB0aGUgZW5kICovCisJ ZmluRWxlbSA9ICZyZXN1bHQtPmVsZW1lbnRzW2ZpbklkeF07CisJbWVtc2V0KGZpbkVsZW0sIDAs IHNpemVvZihSUFJQYXR0ZXJuRWxlbWVudCkpOworCWZpbkVsZW0tPnZhcklkID0gUlBSX1ZBUklE X0ZJTjsKKwlmaW5FbGVtLT5kZXB0aCA9IDA7CisJZmluRWxlbS0+bWluID0gMTsKKwlmaW5FbGVt LT5tYXggPSAxOworCWZpbkVsZW0tPm5leHQgPSBSUFJfRUxFTUlEWF9JTlZBTElEOworCWZpbkVs ZW0tPmp1bXAgPSBSUFJfRUxFTUlEWF9JTlZBTElEOworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAqIENPTlRFWFQgQUJTT1JQVElPTjogVFdPLUZMQUcgREVTSUdOCisgKi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAqCisgKiBDb250ZXh0IGFic29ycHRpb24gZWxpbWluYXRlcyByZWR1bmRhbnQgbWF0Y2gg c2VhcmNoZXMgYnkgYWJzb3JiaW5nIG5ld2VyCisgKiBjb250ZXh0cyB0aGF0IGNhbm5vdCBwcm9k dWNlIGxvbmdlciBtYXRjaGVzIHRoYW4gb2xkZXIgY29udGV4dHMuIFRoaXMKKyAqIGFjaGlldmVz IE8obl4yKSAtPiBPKG4pIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IGZvciBwYXR0ZXJucyBsaWtl IEErIEIuCisgKgorICogQ29yZSBJbnNpZ2h0OgorICogICBGb3IgcGF0dGVybiBBKyBCLCBpZiBD dHgxIHN0YXJ0cyBhdCByb3cgMCBhbmQgQ3R4MiBzdGFydHMgYXQgcm93IDEsCisgKiAgIGJvdGgg bWF0Y2hpbmcgQSBjb250aW51b3VzbHksIEN0eDEgd2lsbCBhbHdheXMgaGF2ZSBtb3JlIEEgbWF0 Y2hlcy4KKyAqICAgV2hlbiBCIGZpbmFsbHkgYXBwZWFycywgQ3R4MSdzIG1hdGNoICgwIHRvIGN1 cnJlbnQpIGlzIGFsd2F5cyBsb25nZXIKKyAqICAgdGhhbiBDdHgyJ3MgbWF0Y2ggKDEgdG8gY3Vy cmVudCkuIFNvIEN0eDIgY2FuIGJlIHNhZmVseSBlbGltaW5hdGVkLgorICoKKyAqIFR3byBGbGFn czoKKyAqICAgMS4gUlBSX0VMRU1fQUJTT1JCQUJMRSAtICJBYnNvcnB0aW9uIGp1ZGdtZW50IHBv aW50IgorICogICAgICBXSEVSRSBjb250ZXh0cyBjYW4gYmUgY29tcGFyZWQgZm9yIGFic29ycHRp b24uCisgKiAgICAgIC0gU2ltcGxlIHVuYm91bmRlZCBWQVIgKEErKTogdGhlIFZBUiBlbGVtZW50 IGl0c2VsZgorICogICAgICAtIFVuYm91bmRlZCBHUk9VUCAoKEEgQikrKTogdGhlIEVORCBlbGVt ZW50IG9ubHkKKyAqCisgKiAgIDIuIFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNIIC0gIkFic29y YmFibGUgcmVnaW9uIG1hcmtlciIKKyAqICAgICAgQUxMIGVsZW1lbnRzIHdpdGhpbiB0aGUgYWJz b3JiYWJsZSByZWdpb24uCisgKiAgICAgIC0gVXNlZCBmb3IgdHJhY2tpbmcgc3RhdGUuaXNBYnNv cmJhYmxlIGF0IHJ1bnRpbWUKKyAqICAgICAgLSBTdGF0ZXMgbGVhdmluZyB0aGlzIHJlZ2lvbiBi ZWNvbWUgbm9uLWFic29yYmFibGUgcGVybWFuZW50bHkKKyAqCisgKiBXaHkgVHdvIEZsYWdzPwor ICogICBGb3IgcGF0dGVybiAiKEEgQikrIiwgY29udGV4dHMgYXQgZGlmZmVyZW50IHBvc2l0aW9u cyAob25lIGF0IEEsCisgKiAgIGFub3RoZXIgYXQgQikgY2Fubm90IGJlIGNvbXBhcmVkIC0gdGhl eSBtdXN0IHN5bmNocm9uaXplIGF0IEVORC4KKyAqCisgKiAgIEV4YW1wbGU6ICIoQSBCKSsiIHdp dGggaW5wdXQgQSBCIEEgQiBBIEIuLi4KKyAqICAgICBSb3cgMCAoQSk6IEN0eDEgc3RhcnRzLCBt YXRjaGVzIEEKKyAqICAgICBSb3cgMSAoQik6IEN0eDEgbWF0Y2hlcyBCIC0+IEVORCAoY291bnQ9 MSkKKyAqICAgICBSb3cgMiAoQSk6IEN0eDEgbG9vcHMgdG8gQSwgQ3R4MiBzdGFydHMgYXQgQQor ICogICAgIFJvdyAzIChCKTogQ3R4MSBhdCBFTkQgKGNvdW50PTIpLCBDdHgyIGF0IEVORCAoY291 bnQ9MSkKKyAqICAgICAgICAgICAgICAgIC0+IEJvdGggYXQgRU5ELCBjb21wYXJhYmxlISBDdHgx IGFic29yYnMgQ3R4Mi4KKyAqCisgKiAgIENvbnRleHRzIHN5bmNocm9uaXplIGF0IEVORCBldmVy eSBncm91cC1sZW5ndGggcm93cy4gVGhlcmVmb3JlOgorICogICAtIEFCU09SQkFCTEUgbWFya3Mg RU5EIGFzIGp1ZGdtZW50IHBvaW50ICh3aGVyZSB0byBjb21wYXJlKQorICogICAtIEFCU09SQkFC TEVfQlJBTkNIIGtlZXBzIHN0YXRlLmlzQWJzb3JiYWJsZT10cnVlIHRocm91Z2ggQS0+Qi0+RU5E CisgKgorICogUGF0dGVybiBFeGFtcGxlczoKKyAqCisgKiAgIFBhdHRlcm46IEErIEIKKyAqICAg RWxlbWVudCAwIChBKTogQUJTT1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNIICA8LSBqdWRnbWVu dCBwb2ludAorICogICBFbGVtZW50IDEgKEIpOiAobm9uZSkKKyAqICAgLT4gQ29tcGFyZSBhdCBB IGV2ZXJ5IHJvdy4gV2hlbiBjb250ZXh0cyBtb3ZlIHRvIEIsIGFic29ycHRpb24gc3RvcHMuCisg KgorICogICBQYXR0ZXJuOiAoQSBCKSsgQworICogICBFbGVtZW50IDAgKEEpOiBBQlNPUkJBQkxF X0JSQU5DSAorICogICBFbGVtZW50IDEgKEIpOiBBQlNPUkJBQkxFX0JSQU5DSAorICogICBFbGVt ZW50IDIgKEVORCk6IEFCU09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSCAgPC0ganVkZ21lbnQg cG9pbnQKKyAqICAgRWxlbWVudCAzIChDKTogKG5vbmUpCisgKiAgIC0+IENvbXBhcmUgYXQgRU5E IGV2ZXJ5IDIgcm93cy4gV2hlbiBjb250ZXh0cyBtb3ZlIHRvIEMsIGFic29ycHRpb24gc3RvcHMu CisgKgorICogICBQYXR0ZXJuOiAoQSsgQispKyBDCisgKiAgIEVsZW1lbnQgMCAoQSk6IEFCU09S QkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSCAgPC0gb25seSBmaXJzdCBBKyBmbGFnZ2VkCisgKiAg IEVsZW1lbnQgMSAoQik6IChub25lKQorICogICBFbGVtZW50IDIgKEVORCk6IChub25lKQorICog ICBFbGVtZW50IDMgKEMpOiAobm9uZSkKKyAqICAgLT4gT25seSBmaXJzdCB1bmJvdW5kZWQgcG9y dGlvbiAoQSspIGdldHMgZmxhZ3MuIEFic29ycHRpb24gaGFwcGVucworICogICAgICBhdCBBIGR1 cmluZyBmaXJzdCBpdGVyYXRpb24uIEFmdGVyIG1vdmluZyB0byBCKywgYWJzb3JwdGlvbiBzdG9w cy4KKyAqCisgKiBGaXJzdCBVbmJvdW5kZWQgUG9ydGlvbiBTdHJhdGVneToKKyAqICAgVGhlIGFs Z29yaXRobSBvbmx5IGZsYWdzIHRoZSBGSVJTVCB1bmJvdW5kZWQgcG9ydGlvbiBzdGFydGluZyBm cm9tCisgKiAgIGVsZW1lbnQgMC4gVGhpcyBpcyBzdWZmaWNpZW50IGJlY2F1c2U6CisgKiAgIC0g QWJzb3JwdGlvbiBpbiBmaXJzdCBwb3J0aW9uIGFscmVhZHkgYWNoaWV2ZXMgTyhuKSBjb21wbGV4 aXR5CisgKiAgIC0gTGF0ZXIgcG9ydGlvbnMgaGF2ZSBkaWZmZXJlbnQgc3luY2hyb25pemF0aW9u IGNoYXJhY3RlcmlzdGljcworICogICAtIE5lc3RlZCB1bmJvdW5kZWQgcGF0dGVybnMgYXJlIHRv byBjb21wbGV4IGZvciBzaW1wbGUgYWJzb3JwdGlvbgorICogICAtIENvbXBsZXggcGF0dGVybnMg KG5lc3RlZCBncm91cHMsIGV0Yy4pIG5hdHVyYWxseSBkaWUgZnJvbSBtaXNtYXRjaAorICoKKyAq IFJ1bnRpbWUgVXNhZ2UgKGluIG5vZGVXaW5kb3dBZ2cuYyk6CisgKiAgIC0gc3RhdGUuaXNBYnNv cmJhYmxlID0gKHByZXZpb3VzICYmIGVsZW0uQUJTT1JCQUJMRV9CUkFOQ0gpCisgKiAgIC0gTW9u b3RvbmljOiBvbmNlIGZhbHNlLCBzdGF5cyBmYWxzZSAoY2Fubm90IHJlLWVudGVyIHJlZ2lvbikK KyAqICAgLSBjb250ZXh0Lmhhc0Fic29yYmFibGVTdGF0ZTogY2FuIGFic29yYiBvdGhlcnMgKD49 MSBhYnNvcmJhYmxlIHN0YXRlKQorICogICAtIGNvbnRleHQuYWxsU3RhdGVzQWJzb3JiYWJsZTog Y2FuIGJlIGFic29yYmVkIChBTEwgc3RhdGVzIGFic29yYmFibGUpCisgKiAgIC0gQWJzb3JwdGlv biBjaGVjazogaWYgQ3R4MS5oYXNBYnNvcmJhYmxlICYmIEN0eDIuYWxsQWJzb3JiYWJsZSwKKyAq ICAgICBjb21wYXJlIGNvdW50cyBhdCBzYW1lIGVsZW1JZHgsIGFic29yYiBpZiBDdHgxLmNvdW50 ID49IEN0eDIuY291bnQKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisvKgorICogaXNG aXhlZExlbmd0aENoaWxkcmVuCisgKgkJQ2hlY2sgaWYgYWxsIGNoaWxkcmVuIGF0IHNjb3BlRGVw dGggaGF2ZSBmaXhlZC1sZW5ndGggcXVhbnRpZmllcnMKKyAqCQkobWluID09IG1heCksIHJlY3Vy c2l2ZWx5IGZvciBuZXN0ZWQgc3ViZ3JvdXBzLgorICoKKyAqIEEgZml4ZWQtbGVuZ3RoIGdyb3Vw IGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvIHVucm9sbGluZyBlYWNoIGNoaWxkCisgKiB0 byB7MSwxfSBjb3BpZXMsIHdoaWNoIGlzIHRoZSBleGlzdGluZyBDYXNlIDIgYWxyZWFkeSBwcm92 ZW4gY29ycmVjdAorICogZm9yIGFic29ycHRpb24uICBUaGlzIGNoZWNrIHJlY29nbml6ZXMgZml4 ZWQtbGVuZ3RoIGdyb3VwcyBhdCBjb21waWxlCisgKiB0aW1lIHdpdGhvdXQgYWN0dWFsbHkgdW5y b2xsaW5nIHRoZW0uCisgKgorICogVHJhdmVyc2VzIHRoZSBmbGF0IGVsZW1lbnQgYXJyYXkgc3Rh cnRpbmcgYXQgaWR4LiAgRm9yIFZBUiBlbGVtZW50cywKKyAqIGNoZWNrcyBtaW4gPT0gbWF4LiAg Rm9yIEJFR0lOIGVsZW1lbnRzIChuZXN0ZWQgc3ViZ3JvdXBzKSwgcmVjdXJzZXMKKyAqIGludG8g dGhlIHN1Ymdyb3VwIGFuZCBhbHNvIGNoZWNrcyB0aGUgc3ViZ3JvdXAncyBFTkQgcXVhbnRpZmll ci4KKyAqIEFMVCBlbGVtZW50cyBhcmUgcmVqZWN0ZWQgKGFsdGVybmF0aW9uIGluc2lkZSBhYnNv cmJhYmxlIGdyb3VwIGlzCisgKiBub3Qgc3VwcG9ydGVkKS4KKyAqCisgKiBSZXR1cm5zIHRydWUg aWYgYWxsIGNoaWxkcmVuIGFyZSBmaXhlZC1sZW5ndGgsIHN0b3BwaW5nIGF0IHRoZSBFTkQKKyAq IGVsZW1lbnQgYXQgc2NvcGVEZXB0aCAtIDEuCisgKi8KK3N0YXRpYyBib29sCitpc0ZpeGVkTGVu Z3RoQ2hpbGRyZW4oUlBSUGF0dGVybiAqcGF0dGVybiwgUlBSRWxlbUlkeCBpZHgsIFJQUkRlcHRo IHNjb3BlRGVwdGgpCit7CisJUlBSUGF0dGVybkVsZW1lbnQgKmUgPSAmcGF0dGVybi0+ZWxlbWVu dHNbaWR4XTsKKworCWNoZWNrX3N0YWNrX2RlcHRoKCk7CisKKwl3aGlsZSAoZS0+ZGVwdGggPT0g c2NvcGVEZXB0aCkKKwl7CisJCWlmIChSUFJFbGVtSXNWYXIoZSkpCisJCXsKKwkJCWlmIChlLT5t aW4gIT0gZS0+bWF4KQorCQkJCXJldHVybiBmYWxzZTsKKwkJfQorCQllbHNlIGlmIChSUFJFbGVt SXNCZWdpbihlKSkKKwkJeworCQkJUlBSRWxlbUlkeAljaGlsZElkeCA9IGUtPm5leHQ7CisKKwkJ CS8qIFJlY3Vyc2UgaW50byBzdWJncm91cCBjaGlsZHJlbiBhdCBzY29wZURlcHRoICsgMSAqLwor CQkJaWYgKCFpc0ZpeGVkTGVuZ3RoQ2hpbGRyZW4ocGF0dGVybiwgY2hpbGRJZHgsIHNjb3BlRGVw dGggKyAxKSkKKwkJCQlyZXR1cm4gZmFsc2U7CisKKwkJCS8qIEFkdmFuY2UgcGFzdCB0aGUgc3Vi Z3JvdXAgdG8gaXRzIEVORCBlbGVtZW50ICovCisJCQllID0gJnBhdHRlcm4tPmVsZW1lbnRzW2Ut Pm5leHRdOworCQkJd2hpbGUgKGUtPmRlcHRoID4gc2NvcGVEZXB0aCkKKwkJCQllID0gJnBhdHRl cm4tPmVsZW1lbnRzW2UtPm5leHRdOworCisJCQkvKiBlIGlzIG5vdyB0aGUgRU5EIGF0IHNjb3Bl RGVwdGg7IGNoZWNrIGl0cyBxdWFudGlmaWVyICovCisJCQlBc3NlcnQoUlBSRWxlbUlzRW5kKGUp ICYmIGUtPmRlcHRoID09IHNjb3BlRGVwdGgpOworCQkJaWYgKGUtPm1pbiAhPSBlLT5tYXgpCisJ CQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogQUxUIGluc2lkZSBncm91 cDogbm90IHN1cHBvcnRlZCBmb3IgYWJzb3JwdGlvbiAqLworCQkJcmV0dXJuIGZhbHNlOworCQl9 CisKKwkJQXNzZXJ0KGUtPm5leHQgIT0gUlBSX0VMRU1JRFhfSU5WQUxJRCk7CisJCWUgPSAmcGF0 dGVybi0+ZWxlbWVudHNbZS0+bmV4dF07CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisg KiBpc1VuYm91bmRlZFN0YXJ0CisgKgkJQ2hlY2sgaWYgdGhlIGVsZW1lbnQgYXQgaWR4IHN0YXJ0 cyBhbiB1bmJvdW5kZWQgZ3JlZWR5IHNlcXVlbmNlLgorICoKKyAqIEZvciBjb250ZXh0IGFic29y cHRpb24gdG8gd29yaywgdGhlIHNlcXVlbmNlIHN0YXJ0aW5nIGF0IGlkeCBtdXN0IGJlOgorICog ICAtIFVuYm91bmRlZCAobWF4ID0gaW5maW5pdHkpCisgKiAgIC0gR3JlZWR5IChub3QgcmVsdWN0 YW50KQorICogICAtIEF0IHRoZSBzdGFydCBvZiBjdXJyZW50IHNjb3BlCisgKgorICogVHdvIGNh c2VzIGFyZSBoYW5kbGVkOgorICogICAxLiBTaW1wbGUgVkFSOiBBKyBCIEMgLSBBIGhhcyBtYXg9 SU5GLCBnZXRzIGJvdGggZmxhZ3MKKyAqICAgMi4gVW5ib3VuZGVkIEdST1VQIHdpdGggZml4ZWQt bGVuZ3RoIGNoaWxkcmVuOiAoQSBCezJ9KSsgQworICogICAgICBBbGwgY2hpbGRyZW4gbXVzdCBo YXZlIG1pbiA9PSBtYXggKHJlY3Vyc2l2ZWx5IGZvciBuZXN0ZWQgc3ViZ3JvdXBzKS4KKyAqICAg ICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHVucm9sbGluZyB0byB7MSwxfSBWQVJzLCBlLmcuLCAo QSBCIEIpKyBDLgorICogICAgICBBbGwgZWxlbWVudHMgd2l0aGluIHRoZSBncm91cCBnZXQgQUJT T1JCQUJMRV9CUkFOQ0guCisgKiAgICAgIE9ubHkgdGhlIHVuYm91bmRlZCBFTkQgZ2V0cyBBQlNP UkJBQkxFIChqdWRnbWVudCBwb2ludCkuCisgKiAgICAgIEV4YW1wbGVzOgorICogICAgICAgIChB IEJ7Mn0pKyBDICAgICAgICAgIC0gQnsyfSBoYXMgbWluPT1tYXgsIHN0ZXA9MworICogICAgICAg IChBIChCIEMpezJ9IEQpKyBFICAgIC0gbmVzdGVkIHsyfSBzdWJncm91cCwgc3RlcD02CisgKiAg ICAgICAgKChBIChCIEMpezJ9KXsyfSkrICAgLSBkb3VibHkgbmVzdGVkIHsyfSwgc3RlcD0xMAor ICogICAgICAgIChBICgoQiBDezN9KXsyfSBEKXsyfSBFKSsgRiAgLSBkZWVwIG5lc3RpbmcsIHN0 ZXA9MjAKKyAqCisgKiBSZXR1cm5zIGZhbHNlIGZvciBwYXR0ZXJucyB3aGVyZSBhYnNvcnB0aW9u IGNhbm5vdCB3b3JrOgorICogICAtIEEgQisgKHVuYm91bmRlZCBub3QgYXQgc3RhcnQpCisgKiAg IC0gQSs/IEIgKHJlbHVjdGFudCBxdWFudGlmaWVyKQorICogICAtIChBIHwgQikrIChBTFQgaW5z aWRlIGdyb3VwKQorICogICAtIChBIEIrKSsgKHZhcmlhYmxlLWxlbmd0aCBlbGVtZW50IGluc2lk ZSBncm91cCkKKyAqICAgLSAoQSBCezIsNX0pKyAobWluICE9IG1heCBpbnNpZGUgZ3JvdXApCisg Ki8KK3N0YXRpYyBib29sCitpc1VuYm91bmRlZFN0YXJ0KFJQUlBhdHRlcm4gKnBhdHRlcm4sIFJQ UkVsZW1JZHggaWR4KQoreworCVJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJnBhdHRlcm4tPmVs ZW1lbnRzW2lkeF07CisJUlBSRGVwdGgJc3RhcnREZXB0aCA9IGVsZW0tPmRlcHRoOworCVJQUlBh dHRlcm5FbGVtZW50ICplOworCisJLyogQ2FzZSAxOiBTaW1wbGUgdW5ib3VuZGVkIFZBUiBhdCBz dGFydCAoZ3JlZWR5IG9ubHkpICovCisJaWYgKFJQUkVsZW1Jc1ZhcihlbGVtKSAmJiBlbGVtLT5t YXggPT0gUlBSX1FVQU5USVRZX0lORiAmJgorCQkhUlBSRWxlbUlzUmVsdWN0YW50KGVsZW0pKQor CXsKKwkJLyogU2V0IGJvdGggZmxhZ3Mgb24gZmlyc3QgZWxlbWVudCAqLworCQllbGVtLT5mbGFn cyB8PSBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSCB8IFJQUl9FTEVNX0FCU09SQkFCTEU7CisJ CXJldHVybiB0cnVlOworCX0KKworCS8qCisJICogQ2FzZSAyOiBVbmJvdW5kZWQgR1JPVVAgd2l0 aCBmaXhlZC1sZW5ndGggY2hpbGRyZW4uICBFYWNoIGNoaWxkIG11c3QKKwkgKiBoYXZlIG1pbiA9 PSBtYXggKHJlY3Vyc2l2ZWx5IGZvciBuZXN0ZWQgc3ViZ3JvdXBzKSwgZW5zdXJpbmcgYSBmaXhl ZAorCSAqIHN0ZXAgc2l6ZSBwZXIgaXRlcmF0aW9uIHNvIHRoYXQgY291bnQtZG9taW5hbmNlIGhv bGRzLgorCSAqLworCWlmICghaXNGaXhlZExlbmd0aENoaWxkcmVuKHBhdHRlcm4sIGlkeCwgc3Rh cnREZXB0aCkpCisJCXJldHVybiBmYWxzZTsKKworCS8qIEZpbmQgdGhlIEVORCBlbGVtZW50IGF0 IHN0YXJ0RGVwdGggLSAxICovCisJZSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tpZHhdOworCXdoaWxl IChlLT5kZXB0aCA+PSBzdGFydERlcHRoKQorCQllID0gJnBhdHRlcm4tPmVsZW1lbnRzW2UtPm5l eHRdOworCisJLyogRU5EIG11c3QgYmUgdW5ib3VuZGVkIGdyZWVkeSAqLworCWlmIChlLT5kZXB0 aCA9PSBzdGFydERlcHRoIC0gMSAmJgorCQlSUFJFbGVtSXNFbmQoZSkgJiYgZS0+bWF4ID09IFJQ Ul9RVUFOVElUWV9JTkYgJiYKKwkJIVJQUkVsZW1Jc1JlbHVjdGFudChlKSkKKwl7CisJCUFzc2Vy dChlLT5qdW1wID09IGlkeCk7IC8qIEVORCBwb2ludHMgYmFjayB0byBmaXJzdCBjaGlsZCAqLwor CisJCS8qIFNldCBBQlNPUkJBQkxFX0JSQU5DSCBvbiBhbGwgY2hpbGRyZW4sIEFCU09SQkFCTEUg b24gRU5EIG9ubHkgKi8KKwkJZm9yIChlID0gZWxlbTsgIVJQUkVsZW1Jc0VuZChlKSB8fCBlLT5k ZXB0aCA+PSBzdGFydERlcHRoOworCQkJIGUgPSAmcGF0dGVybi0+ZWxlbWVudHNbZS0+bmV4dF0p CisJCQllLT5mbGFncyB8PSBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSDsKKwkJZS0+ZmxhZ3Mg fD0gUlBSX0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0ggfCBSUFJfRUxFTV9BQlNPUkJBQkxFOworCQly ZXR1cm4gdHJ1ZTsKKwl9CisKKwlyZXR1cm4gZmFsc2U7Cit9CisKKy8qCisgKiBjb21wdXRlQWJz b3JiYWJpbGl0eVJlY3Vyc2l2ZQorICoJCVJlY3Vyc2l2ZWx5IGNoZWNrIGFic29yYmFiaWxpdHkg c3RhcnRpbmcgZnJvbSBnaXZlbiBpbmRleC4KKyAqCisgKiBJZiB0aGUgZWxlbWVudCBhdCBzdGFy dElkeCBpcyBBTFQsIHJlY3Vyc2l2ZWx5IGNoZWNrcyBlYWNoIGJyYW5jaCBpbmRlcGVuZGVudGx5 LgorICogRWFjaCBicmFuY2ggZ2V0cyBpdHMgb3duIGFic29yYmFiaWxpdHkgc3RhdHVzLCBhbmQg aWYgYW55IGJyYW5jaCBpcyBhYnNvcmJhYmxlLAorICogdGhlIEFMVCBlbGVtZW50IGl0c2VsZiBp cyBtYXJrZWQgd2l0aCBSUFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSC4KKyAqCisgKiBJZiBCRUdJ Tiwgc2tpcHMgdG8gZmlyc3QgY2hpbGQuCisgKgorICogT3RoZXJ3aXNlIChWQVIpLCBjaGVja3Mg aWYgdGhlIGVsZW1lbnQgc3RhcnRzIGFuIHVuYm91bmRlZCBzZXF1ZW5jZSB2aWEKKyAqIGlzVW5i b3VuZGVkU3RhcnQuCisgKi8KK3N0YXRpYyB2b2lkCitjb21wdXRlQWJzb3JiYWJpbGl0eVJlY3Vy c2l2ZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBSUFJFbGVtSWR4IHN0YXJ0SWR4LAorCQkJCQkJCSAg Ym9vbCAqaGFzQWJzb3JiYWJsZSkKK3sKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSA9ICZwYXR0 ZXJuLT5lbGVtZW50c1tzdGFydElkeF07CisKKwljaGVja19zdGFja19kZXB0aCgpOworCisJaWYg KFJQUkVsZW1Jc0FsdChlbGVtKSkKKwl7CisJCS8qIEFMVDogcmVjdXJzaXZlbHkgY2hlY2sgZWFj aCBicmFuY2ggKi8KKwkJUlBSRWxlbUlkeAlicmFuY2hJZHggPSBlbGVtLT5uZXh0OworCQlSUFJQ YXR0ZXJuRWxlbWVudCAqYnJhbmNoRmlyc3Q7CisJCWJvb2wJCWJyYW5jaEFic29yYmFibGU7CisK KwkJd2hpbGUgKGJyYW5jaElkeCAhPSBSUFJfRUxFTUlEWF9JTlZBTElEKQorCQl7CisJCQlicmFu Y2hBYnNvcmJhYmxlID0gZmFsc2U7CisKKwkJCUFzc2VydChicmFuY2hJZHggPCBwYXR0ZXJuLT5u dW1FbGVtZW50cyk7CisJCQlicmFuY2hGaXJzdCA9ICZwYXR0ZXJuLT5lbGVtZW50c1ticmFuY2hJ ZHhdOworCisJCQkvKiBTdG9wIGlmIGVsZW1lbnQgaXMgb3V0c2lkZSBBTFQgc2NvcGUgKG5vdCBh IGJyYW5jaCkgKi8KKwkJCWlmIChicmFuY2hGaXJzdC0+ZGVwdGggPD0gZWxlbS0+ZGVwdGgpCisJ CQkJYnJlYWs7CisKKwkJCS8qIFJlY3Vyc2l2ZWx5IGNoZWNrIHRoaXMgYnJhbmNoICovCisJCQlj b21wdXRlQWJzb3JiYWJpbGl0eVJlY3Vyc2l2ZShwYXR0ZXJuLCBicmFuY2hJZHgsICZicmFuY2hB YnNvcmJhYmxlKTsKKwkJCWlmIChicmFuY2hBYnNvcmJhYmxlKQorCQkJeworCQkJCSpoYXNBYnNv cmJhYmxlID0gdHJ1ZTsKKwkJCX0KKworCQkJYnJhbmNoSWR4ID0gYnJhbmNoRmlyc3QtPmp1bXA7 CisJCX0KKworCQkvKiBNYXJrIEFMVCBlbGVtZW50IGlmIGFueSBicmFuY2ggaXMgYWJzb3JiYWJs ZSAqLworCQlpZiAoKmhhc0Fic29yYmFibGUpCisJCQllbGVtLT5mbGFncyB8PSBSUFJfRUxFTV9B QlNPUkJBQkxFX0JSQU5DSDsKKwl9CisJZWxzZSBpZiAoUlBSRWxlbUlzQmVnaW4oZWxlbSkpCisJ eworCQkvKgorCQkgKiBCRUdJTjogZmlyc3QgdHJ5IHRvIHRyZWF0IHRoaXMgQkVHSU4ncyBjaGls ZHJlbiBhcyBhbiB1bmJvdW5kZWQKKwkJICogZ3JvdXAgZGlyZWN0bHkgKGhhbmRsZXMgbmVzdGVk IGZpeGVkLWxlbmd0aCBncm91cHMgbGlrZSAoKEF7Mn0KKwkJICogQnszfSl7Mn0pKykuICBJZiB0 aGF0IGZhaWxzLCBza2lwIHRvIGZpcnN0IGNoaWxkIGFuZCByZWN1cnNlIGFzCisJCSAqIGJlZm9y ZS4KKwkJICovCisJCWlmIChpc1VuYm91bmRlZFN0YXJ0KHBhdHRlcm4sIGVsZW0tPm5leHQpKQor CQl7CisJCQkqaGFzQWJzb3JiYWJsZSA9IHRydWU7CisJCQllbGVtLT5mbGFncyB8PSBSUFJfRUxF TV9BQlNPUkJBQkxFX0JSQU5DSDsKKwkJfQorCQllbHNlCisJCXsKKwkJCWNvbXB1dGVBYnNvcmJh YmlsaXR5UmVjdXJzaXZlKHBhdHRlcm4sIGVsZW0tPm5leHQsIGhhc0Fic29yYmFibGUpOworCisJ CQkvKiBNYXJrIEJFR0lOIGVsZW1lbnQgaWYgY29udGVudHMgYXJlIGFic29yYmFibGUgKi8KKwkJ CWlmICgqaGFzQWJzb3JiYWJsZSkKKwkJCQllbGVtLT5mbGFncyB8PSBSUFJfRUxFTV9BQlNPUkJB QkxFX0JSQU5DSDsKKwkJfQorCX0KKwllbHNlCisJeworCQkvKiBTaG91bGQgbmV2ZXIgcmVhY2gg RU5EIC0gc3RydWN0dXJhbCBpbnZhcmlhbnQgb2YgcGF0dGVybiBBU1QgKi8KKwkJQXNzZXJ0KCFS UFJFbGVtSXNFbmQoZWxlbSkpOworCisJCS8qIE5vbi1BTFQsIG5vbi1CRUdJTjogY2hlY2sgaWYg dW5ib3VuZGVkIHN0YXJ0ICovCisJCWlmIChpc1VuYm91bmRlZFN0YXJ0KHBhdHRlcm4sIHN0YXJ0 SWR4KSkKKwkJeworCQkJKmhhc0Fic29yYmFibGUgPSB0cnVlOworCQl9CisJfQorfQorCisvKgor ICogY29tcHV0ZUFic29yYmFiaWxpdHkKKyAqCQlEZXRlcm1pbmUgaWYgcGF0dGVybiBzdXBwb3J0 cyBjb250ZXh0IGFic29ycHRpb24gb3B0aW1pemF0aW9uLgorICoKKyAqIENvbnRleHQgYWJzb3Jw dGlvbiBlbGltaW5hdGVzIHJlZHVuZGFudCBtYXRjaCBzZWFyY2hlcyBieSBhYnNvcmJpbmcKKyAq IG5ld2VyIGNvbnRleHRzIHRoYXQgY2Fubm90IHByb2R1Y2UgbG9uZ2VyIG1hdGNoZXMgdGhhbiBv bGRlciBjb250ZXh0cy4KKyAqIFRoaXMgYWNoaWV2ZXMgTyhuXjIpIC0+IE8obikgcGVyZm9ybWFu Y2UgaW1wcm92ZW1lbnQuCisgKgorICogT25seSBncmVlZHkgdW5ib3VuZGVkIHF1YW50aWZpZXJz IGF0IHBhdHRlcm4gc3RhcnQgY2FuIGJlIGFic29yYmFibGUuCisgKiBSZWx1Y3RhbnQgcXVhbnRp ZmllcnMgYXJlIGV4Y2x1ZGVkIGJlY2F1c2UgdGhleSBkb24ndCBtYWludGFpbiBtb25vdG9uaWMK KyAqIGRlY3JlYXNlIHByb3BlcnR5IHJlcXVpcmVkIGZvciBzYWZlIGFic29ycHRpb24uCisgKgor ICogVGhpcyBmdW5jdGlvbiBzZXRzIHR3byBmbGFnczoKKyAqICAgUlBSX0VMRU1fQUJTT1JCQUJM RTogQWJzb3JwdGlvbiBqdWRnbWVudCBwb2ludAorICogICAgIC0gU2ltcGxlIHVuYm91bmRlZCBW QVI6IHRoZSBWQVIgaXRzZWxmIChlLmcuLCBBIGluIEErKQorICogICAgIC0gVW5ib3VuZGVkIEdS T1VQOiB0aGUgRU5EIGVsZW1lbnQgKGUuZy4sIEVORCBpbiAoQSBCKSspCisgKiAgIFJQUl9FTEVN X0FCU09SQkFCTEVfQlJBTkNIOiBBbGwgZWxlbWVudHMgaW4gYWJzb3JiYWJsZSByZWdpb24KKyAq ICAgICAtIEFsbCBlbGVtZW50cyB3aXRoaW4gdGhlIHNhbWUgc2NvcGUgYXMgdW5ib3VuZGVkIHN0 YXJ0CisgKgorICogRXhhbXBsZXM6CisgKiAgIEErIEIgQyAgICAgICAgIC0gYWJzb3JiYWJsZSAo QSBnZXRzIGJvdGggZmxhZ3MpCisgKiAgIChBIEIpKyBDICAgICAgIC0gYWJzb3JiYWJsZSAoQSxC LEVORCBnZXQgQlJBTkNILCBFTkQgZ2V0cyBBQlNPUkJBQkxFKQorICogICBBIEIrICAgICAgICAg ICAtIE5PVCBhYnNvcmJhYmxlICh1bmJvdW5kZWQgbm90IGF0IHN0YXJ0KQorICogICBBKz8gQiBD ICAgICAgICAtIE5PVCBhYnNvcmJhYmxlIChyZWx1Y3RhbnQgcXVhbnRpZmllcikKKyAqICAgKEEr IEIrKSsgICAgICAgLSBvbmx5IGZpcnN0IEErIG9uIGZpcnN0IGl0ZXJhdGlvbiAobmVzdGVkIHVu Ym91bmRlZCBub3Qgc3VwcG9ydGVkKQorICogICBBKyB8IEIrICAgICAgICAtIGJvdGggYnJhbmNo ZXMgYWJzb3JiYWJsZSBpbmRlcGVuZGVudGx5CisgKiAgIEErIHwgQyBEICAgICAgIC0gb25seSBB KyBicmFuY2ggYWJzb3JiYWJsZSAoQyBEIGJyYW5jaCBub3QgYWJzb3JiYWJsZSkKKyAqICAgKChB KyBCKSB8IEMpIEQgLSBuZXN0ZWQgQUxUOiBBKyBicmFuY2ggaXMgYWJzb3JiYWJsZQorICovCitz dGF0aWMgdm9pZAorY29tcHV0ZUFic29yYmFiaWxpdHkoUlBSUGF0dGVybiAqcGF0dGVybikKK3sK Kwlib29sCQloYXNBYnNvcmJhYmxlID0gZmFsc2U7CisKKwkvKiBQYXJzZXIgYWx3YXlzIHByb2R1 Y2VzIGF0IGxlYXN0IG9uZSBlbGVtZW50ICsgRklOICovCisJQXNzZXJ0KHBhdHRlcm4tPm51bUVs ZW1lbnRzID49IDIpOworCisJLyogU3RhcnQgcmVjdXJzaW9uIGZyb20gZmlyc3QgZWxlbWVudCAq LworCWNvbXB1dGVBYnNvcmJhYmlsaXR5UmVjdXJzaXZlKHBhdHRlcm4sIDAsICZoYXNBYnNvcmJh YmxlKTsKKwlwYXR0ZXJuLT5pc0Fic29yYmFibGUgPSBoYXNBYnNvcmJhYmxlOworfQorCisvKgor ICogY29sbGVjdFBhdHRlcm5WYXJpYWJsZXNSZWN1cnNpdmUKKyAqCQlSZWN1cnNpdmVseSBjb2xs ZWN0IHZhcmlhYmxlIG5hbWVzIGZyb20gcGF0dGVybiBBU1QuCisgKi8KK3N0YXRpYyB2b2lkCitj b2xsZWN0UGF0dGVyblZhcmlhYmxlc1JlY3Vyc2l2ZShSUFJQYXR0ZXJuTm9kZSAqbm9kZSwgTGlz dCAqKnZhck5hbWVzKQoreworCUFzc2VydChub2RlICE9IE5VTEwpOworCisJY2hlY2tfc3RhY2tf ZGVwdGgoKTsKKworCXN3aXRjaCAobm9kZS0+bm9kZVR5cGUpCisJeworCQljYXNlIFJQUl9QQVRU RVJOX1ZBUjoKKwkJCS8qIEFkZCB2YXJpYWJsZSBpZiBub3QgYWxyZWFkeSBpbiBsaXN0ICovCisJ CQlmb3JlYWNoX25vZGUoU3RyaW5nLCB2YXJuYW1lLCAqdmFyTmFtZXMpCisJCQl7CisJCQkJaWYg KHN0cmNtcChzdHJWYWwodmFybmFtZSksIG5vZGUtPnZhck5hbWUpID09IDApCisJCQkJCXJldHVy bjsJCS8qIEFscmVhZHkgY29sbGVjdGVkICovCisJCQl9CisJCQkqdmFyTmFtZXMgPSBsYXBwZW5k KCp2YXJOYW1lcywgbWFrZVN0cmluZyhwc3RyZHVwKG5vZGUtPnZhck5hbWUpKSk7CisJCQlicmVh azsKKworCQljYXNlIFJQUl9QQVRURVJOX1NFUToKKwkJY2FzZSBSUFJfUEFUVEVSTl9BTFQ6CisJ CWNhc2UgUlBSX1BBVFRFUk5fR1JPVVA6CisJCQlmb3JlYWNoX25vZGUoUlBSUGF0dGVybk5vZGUs IGNoaWxkLCBub2RlLT5jaGlsZHJlbikKKwkJCXsKKwkJCQljb2xsZWN0UGF0dGVyblZhcmlhYmxl c1JlY3Vyc2l2ZShjaGlsZCwgdmFyTmFtZXMpOworCQkJfQorCQkJYnJlYWs7CisJfQorfQorCisv KgorICogY29sbGVjdFBhdHRlcm5WYXJpYWJsZXMKKyAqCQlDb2xsZWN0IHVuaXF1ZSB2YXJpYWJs ZSBuYW1lcyB1c2VkIGluIFBBVFRFUk4gY2xhdXNlLgorICoKKyAqIFJldHVybnMgYSBsaXN0IG9m IFN0cmluZyBub2RlcyBjb250YWluaW5nIHZhcmlhYmxlIG5hbWVzLgorICogVXNlZCB0byBmaWx0 ZXIgZGVmaW5lQ2xhdXNlIGJlZm9yZSB2YXJJZCBhc3NpZ25tZW50LgorICovCitMaXN0ICoKK2Nv bGxlY3RQYXR0ZXJuVmFyaWFibGVzKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKQoreworCUxpc3QJ ICAgKnZhck5hbWVzID0gTklMOworCisJLyogQ2FsbGVyIGVuc3VyZXMgcGF0dGVybiBpcyBub3Qg TlVMTCAqLworCUFzc2VydChwYXR0ZXJuICE9IE5VTEwpOworCisJY29sbGVjdFBhdHRlcm5WYXJp YWJsZXNSZWN1cnNpdmUocGF0dGVybiwgJnZhck5hbWVzKTsKKwlyZXR1cm4gdmFyTmFtZXM7Cit9 CisKKy8qCisgKiBycHJfdm9sYXRpbGVfZnVuY19jaGVja2VyCisgKgkJY2hlY2tfZnVuY3Rpb25z X2luX25vZGUgY2FsbGJhY2s6IHRydWUgaWYgZnVuY2lkIGlzIFZPTEFUSUxFLgorICovCitzdGF0 aWMgYm9vbAorcnByX3ZvbGF0aWxlX2Z1bmNfY2hlY2tlcihPaWQgZnVuY2lkLCB2b2lkICpjb250 ZXh0KQoreworCXJldHVybiAoZnVuY192b2xhdGlsZShmdW5jaWQpID09IFBST1ZPTEFUSUxFX1ZP TEFUSUxFKTsKK30KKworLyoKKyAqIHJwcl9kZWZpbmVfZXJycG9zaXRpb24KKyAqCQlFcnJvciBj dXJzb3IgcG9zaXRpb24gZm9yIGEgREVGSU5FIHN1YmV4cHJlc3Npb24uCisgKgorICogVGhlIHBs YW5uZXIgaGFzIG5vIFBhcnNlU3RhdGUsIGJ1dCB0aGUgb3JpZ2luYWwgcXVlcnkgdGV4dCBpcyBh dmFpbGFibGUgaW4KKyAqIGRlYnVnX3F1ZXJ5X3N0cmluZywgc28gd2UgY2FuIHN0aWxsIHBvaW50 IGF0IHRoZSBvZmZlbmRpbmcgbG9jYXRpb24gZXhhY3RseQorICogYXMgcGFyc2VyX2VycnBvc2l0 aW9uKCkgd291bGQuCisgKi8KK3N0YXRpYyBpbnQKK3Jwcl9kZWZpbmVfZXJycG9zaXRpb24oaW50 IGxvY2F0aW9uKQoreworCWlmIChsb2NhdGlvbiA8IDAgfHwgZGVidWdfcXVlcnlfc3RyaW5nID09 IE5VTEwpCisJCXJldHVybiAwOworCXJldHVybiBlcnJwb3NpdGlvbihwZ19tYnN0cmxlbl93aXRo X2xlbihkZWJ1Z19xdWVyeV9zdHJpbmcsIGxvY2F0aW9uKSArIDEpOworfQorCisvKgorICogcmVq ZWN0X3ZvbGF0aWxlX2luX2RlZmluZV93YWxrZXIKKyAqCQlSZWplY3Qgdm9sYXRpbGUgY2FsbGVl cyBhbmQgc2VxdWVuY2Ugb3BlcmF0aW9ucyBhbnl3aGVyZSBpbiBhIERFRklORQorICoJCWV4cHJl c3Npb246IHRoZXkgYXJlIG5vbi1kZXRlcm1pbmlzdGljIGFjcm9zcyB0aGUgbXVsdGlwbGUgcHJl ZGljYXRlCisgKgkJZXZhbHVhdGlvbnMgdGhhdCBORkEgYmFja3RyYWNraW5nIGFuZCBQUkVWL05F WFQgbmF2aWdhdGlvbiBtYXkgdHJpZ2dlcgorICoJCWZvciBhIHNpbmdsZSByb3cuCisgKgorICog TmV4dFZhbHVlRXhwciBpcyBjaGVja2VkIHNlcGFyYXRlbHkgYmVjYXVzZSBpdCBpcyBub3QgYSBm dW5jdGlvbiBjYWxsIGFuZAorICogc28gaXMgbm90IGNhdWdodCBieSBjaGVja19mdW5jdGlvbnNf aW5fbm9kZSgpLgorICovCitzdGF0aWMgYm9vbAorcmVqZWN0X3ZvbGF0aWxlX2luX2RlZmluZV93 YWxrZXIoTm9kZSAqbm9kZSwgdm9pZCAqY29udGV4dCkKK3sKKwlpZiAobm9kZSA9PSBOVUxMKQor CQlyZXR1cm4gZmFsc2U7CisJaWYgKGNoZWNrX2Z1bmN0aW9uc19pbl9ub2RlKG5vZGUsIHJwcl92 b2xhdGlsZV9mdW5jX2NoZWNrZXIsIE5VTEwpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygidm9sYXRpbGUg ZnVuY3Rpb25zIGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlIiksCisJCQkJcnByX2Rl ZmluZV9lcnJwb3NpdGlvbihleHByTG9jYXRpb24obm9kZSkpKTsKKwlpZiAoSXNBKG5vZGUsIE5l eHRWYWx1ZUV4cHIpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9GRUFU VVJFX05PVF9TVVBQT1JURUQpLAorCQkJCWVycm1zZygic2VxdWVuY2Ugb3BlcmF0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZSIpLAorCQkJCXJwcl9kZWZpbmVfZXJycG9zaXRp b24oZXhwckxvY2F0aW9uKG5vZGUpKSk7CisJcmV0dXJuIGV4cHJlc3Npb25fdHJlZV93YWxrZXIo bm9kZSwgcmVqZWN0X3ZvbGF0aWxlX2luX2RlZmluZV93YWxrZXIsIGNvbnRleHQpOworfQorCisv KgorICogdmFsaWRhdGVfcnByX2RlZmluZV92b2xhdGlsaXR5CisgKgkJUmVqZWN0IHZvbGF0aWxl IGZ1bmN0aW9ucyAvIHNlcXVlbmNlIG9wZXJhdGlvbnMgaW4gYSBERUZJTkUgY2xhdXNlLgorICoK KyAqIENhbGxlZCBmcm9tIHRoZSBwbGFubmVyIChzdWJxdWVyeV9wbGFubmVyKSBmb3IgZXZlcnkg UlBSIFdpbmRvd0NsYXVzZSwKKyAqIGluY2x1ZGluZyB3aW5kb3dzIG5vdCByZWZlcmVuY2VkIGJ5 IGFueSBPVkVSIGNsYXVzZSwgc28gdGhlIGNoZWNrIGlzIGFwcGxpZWQKKyAqIHJlZ2FyZGxlc3Mg b2Ygd2hldGhlciB0aGUgd2luZG93IHN1cnZpdmVzIHRvIGV4ZWN1dGlvbiAtLSBtYXRjaGluZyB0 aGUKKyAqIGNvdmVyYWdlIG9mIHRoZSBmb3JtZXIgcGFyc2UtdGltZSBjaGVjay4KKyAqLwordm9p ZAordmFsaWRhdGVfcnByX2RlZmluZV92b2xhdGlsaXR5KExpc3QgKmRlZmluZUNsYXVzZSkKK3sK KwlMaXN0Q2VsbCAgICpsYzsKKworCWZvcmVhY2gobGMsIGRlZmluZUNsYXVzZSkKKwl7CisJCVRh cmdldEVudHJ5ICp0ZSA9IGxmaXJzdF9ub2RlKFRhcmdldEVudHJ5LCBsYyk7CisKKwkJKHZvaWQp IHJlamVjdF92b2xhdGlsZV9pbl9kZWZpbmVfd2Fsa2VyKChOb2RlICopIHRlLT5leHByLCBOVUxM KTsKKwl9Cit9CisKKy8qCisgKiBidWlsZERlZmluZVZhcmlhYmxlTGlzdAorICoJCUJ1aWxkIGRl ZmluZVZhcmlhYmxlTGlzdCBmcm9tIGRlZmluZUNsYXVzZS4KKyAqCisgKiBUaGUgcGFyc2VyIGFs cmVhZHkgZW5zdXJlcyB0aGF0IGFsbCBERUZJTkUgdmFyaWFibGVzIGFwcGVhciBpbiBQQVRURVJO LAorICogc28gbm8gZmlsdGVyaW5nIGlzIG5lZWRlZCBoZXJlLgorICoKKyAqIFNldHMgKmRlZmlu ZVZhcmlhYmxlTGlzdCB0byBsaXN0IG9mIHZhcmlhYmxlIG5hbWVzIChTdHJpbmcgbm9kZXMpLgor ICovCit2b2lkCitidWlsZERlZmluZVZhcmlhYmxlTGlzdChMaXN0ICpkZWZpbmVDbGF1c2UsIExp c3QgKipkZWZpbmVWYXJpYWJsZUxpc3QpCit7CisJKmRlZmluZVZhcmlhYmxlTGlzdCA9IE5JTDsK KworCWZvcmVhY2hfbm9kZShUYXJnZXRFbnRyeSwgdGUsIGRlZmluZUNsYXVzZSkKKwl7CisJCSpk ZWZpbmVWYXJpYWJsZUxpc3QgPSBsYXBwZW5kKCpkZWZpbmVWYXJpYWJsZUxpc3QsCisJCQkJCQkJ CQkgIG1ha2VTdHJpbmcocHN0cmR1cCh0ZS0+cmVzbmFtZSkpKTsKKwl9Cit9CisKKy8qCisgKiBi dWlsZFJQUlBhdHRlcm4KKyAqCQlDb21waWxlIHBhdHRlcm4gQVNUIHRvIGZsYXQgYnl0ZWNvZGUg YXJyYXkuCisgKgorICogQ29tcGlsYXRpb24gcGhhc2VzOgorICogICAxLiBPcHRpbWl6ZSBBU1Qg KGZsYXR0ZW4sIG1lcmdlLCBkZWR1cGxpY2F0ZSkKKyAqICAgMi4gU2NhbjogY29sbGVjdCB2YXJp YWJsZXMsIGNvdW50IGVsZW1lbnRzIChwYXNzIDEpCisgKiAgIDMuIEFsbG9jYXRlIHJlc3VsdCBz dHJ1Y3R1cmUKKyAqICAgNC4gRmlsbCBlbGVtZW50cyBmcm9tIEFTVCAocGFzcyAyKQorICogICA1 LiBGaW5hbGl6ZSBwYXR0ZXJuIHN0cnVjdHVyZQorICogICA2LiBDb21wdXRlIGNvbnRleHQgYWJz b3JwdGlvbiBlbGlnaWJpbGl0eQorICoKKyAqIENhbGxlZCBmcm9tIGNyZWF0ZXBsYW4uYyBkdXJp bmcgcGxhbiBjcmVhdGlvbi4KKyAqLworUlBSUGF0dGVybiAqCitidWlsZFJQUlBhdHRlcm4oUlBS UGF0dGVybk5vZGUgKnBhdHRlcm4sIExpc3QgKmRlZmluZVZhcmlhYmxlTGlzdCwKKwkJCQlSUFNr aXBUbyBycFNraXBUbywgaW50IGZyYW1lT3B0aW9ucywKKwkJCQlib29sIGhhc01hdGNoU3RhcnRE ZXBlbmRlbnQpCit7CisJUlBSUGF0dGVybiAqcmVzdWx0OworCVJQUlBhdHRlcm5Ob2RlICpvcHRp bWl6ZWQ7CisJY2hhcgkgICAqdmFyTmFtZXNTdGFja1tSUFJfVkFSSURfTUFYICsgMV07CisJaW50 CQkJbnVtVmFyczsKKwlpbnQJCQludW1FbGVtZW50czsKKwlSUFJEZXB0aAltYXhEZXB0aDsKKwlp bnQJCQlpZHg7CisKKwkvKiBDYWxsZXIgbXVzdCBjaGVjayBmb3IgTlVMTCBwYXR0ZXJuIGJlZm9y ZSBjYWxsaW5nICovCisJQXNzZXJ0KHBhdHRlcm4gIT0gTlVMTCk7CisJLyogUlBSIGlzIFJPV1Mt b25seTogdHJhbnNmb3JtUlBSKCkgcmVqZWN0cyBSQU5HRS9HUk9VUFMgdXAgZnJvbnQgKi8KKwlB c3NlcnQoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fUk9XUyk7CisKKwkvKiBPcHRpbWl6ZSB0 aGUgcGF0dGVybiB0cmVlICovCisJb3B0aW1pemVkID0gb3B0aW1pemVSUFJQYXR0ZXJuKGNvcHlP YmplY3QocGF0dGVybikpOworCisJLyogQ29sbGVjdCB2YXJpYWJsZSBuYW1lcyBmcm9tIERFRklO RSBjbGF1c2UgKi8KKwludW1WYXJzID0gY29sbGVjdERlZmluZVZhcmlhYmxlcyhkZWZpbmVWYXJp YWJsZUxpc3QsIHZhck5hbWVzU3RhY2spOworCisJLyogU2NhbiBwYXR0ZXJuOiBjb2xsZWN0IHZh cmlhYmxlcywgY291bnQgZWxlbWVudHMsIHZhbGlkYXRlIGxpbWl0cyAqLworCXNjYW5SUFJQYXR0 ZXJuKG9wdGltaXplZCwgdmFyTmFtZXNTdGFjaywgJm51bVZhcnMsICZudW1FbGVtZW50cywgJm1h eERlcHRoKTsKKworCS8qIEFsbG9jYXRlIHJlc3VsdCBzdHJ1Y3R1cmUgKi8KKwlyZXN1bHQgPSBt YWtlUlBSUGF0dGVybihudW1WYXJzLCBudW1FbGVtZW50cywgbWF4RGVwdGgsIHZhck5hbWVzU3Rh Y2spOworCisJLyogRmlsbCBlbGVtZW50cyAocGFzcyAyKSAqLworCWlkeCA9IDA7CisJZmlsbFJQ UlBhdHRlcm4ob3B0aW1pemVkLCByZXN1bHQsICZpZHgsIDApOworCisJLyogRmluYWxpemU6IHNl dCB1cCBuZXh0IHBvaW50ZXJzLCBmbGFncywgYW5kIGFkZCBGSU4gbWFya2VyICovCisJZmluYWxp emVSUFJQYXR0ZXJuKHJlc3VsdCk7CisKKwkvKgorCSAqIENvbXB1dGUgY29udGV4dCBhYnNvcnB0 aW9uIGVsaWdpYmlsaXR5LiBBYnNvcnB0aW9uIHJlcXVpcmVzIGJvdGgKKwkgKiBzdHJ1Y3R1cmFs IGFic29yYmFiaWxpdHkgYW5kIHJ1bnRpbWUgY29uZGl0aW9ucy4gQ2hlY2sgcnVudGltZQorCSAq IGNvbmRpdGlvbnMgZmlyc3QgdG8gYXZvaWQgdW5uZWNlc3NhcnkgcGF0dGVybiBhbmFseXNpcy4K KwkgKgorCSAqIFJ1bnRpbWUgY29uZGl0aW9ucyBmb3IgYWJzb3JwdGlvbjoKKwkgKgorCSAqIDEu IFNLSVAgVE8gUEFTVCBMQVNUIFJPVyByZXF1aXJlZCAobm90IFNLSVAgVE8gTkVYVCBST1cpOiBX aXRoIE5FWFQKKwkgKiBST1csIGFmdGVyIGVhY2ggbWF0Y2ggdGhlIHNlYXJjaCByZXN1bWVzIGZy b20gdGhlIG5leHQgcm93LCBzbyBjb250ZXh0cworCSAqIGFyZSBpbW1lZGlhdGVseSBkaXNjYXJk ZWQuIE5vIHJlZHVuZGFudCBjb250ZXh0cyBhY2N1bXVsYXRlLCBtYWtpbmcKKwkgKiBhYnNvcnB0 aW9uIHVubmVjZXNzYXJ5LgorCSAqCisJICogMi4gVW5ib3VuZGVkIGZyYW1lIGVuZCByZXF1aXJl ZCAobm90IFJPV1Mgd2l0aCBib3VuZGVkIGVuZCk6IFdpdGggYQorCSAqIGJvdW5kZWQgZnJhbWUg KGUuZy4sIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMTAgRk9MTE9XSU5HKSwKKwkgKiBt YXRjaGVzIG1heSBiZSB0cnVuY2F0ZWQgYXQgZnJhbWUgYm91bmRhcmllcy4gVGhpcyBjaGFuZ2Vz IHRoZQorCSAqIGFic29ycHRpb24gc2VtYW50aWNzIC0gb2xkZXIgY29udGV4dHMgZG9uJ3QgbmVj ZXNzYXJpbHkgcHJvZHVjZSBsb25nZXIKKwkgKiBtYXRjaGVzIHdoZW4gZnJhbWUgbGltaXRzIGFw cGx5IGRpZmZlcmVudGx5IHRvIGVhY2ggY29udGV4dC4KKwkgKi8KKwlpZiAocnBTa2lwVG8gPT0g U1RfUEFTVF9MQVNUX1JPVyAmJgorCQkoZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05fRU5EX1VO Qk9VTkRFRF9GT0xMT1dJTkcpICYmCisJCSFoYXNNYXRjaFN0YXJ0RGVwZW5kZW50KQorCXsKKwkJ LyogUnVudGltZSBjb25kaXRpb25zIG1ldCAtIGNoZWNrIHN0cnVjdHVyYWwgYWJzb3JiYWJpbGl0 eSAqLworCQljb21wdXRlQWJzb3JiYWJpbGl0eShyZXN1bHQpOworCX0KKworCXJldHVybiByZXN1 bHQ7Cit9CisKKy8qCisgKiBuYXZfdHJhdmVyc2FsX3dhbGtlcgorICoJCVNoYXJlZCBleHByZXNz aW9uLXRyZWUgd2Fsa2VyIHRoYXQgbG9jYXRlcyBSUFJOYXZFeHByIG5vZGVzIGluIGEKKyAqCQlE RUZJTkUgZXhwcmVzc2lvbiBhbmQgZGlzcGF0Y2hlcyBlYWNoIG9uZSB0byBhIGNhbGxlci1zdXBw bGllZAorICoJCXZpc2l0b3IuICBVc2VkIGJ5OgorICoJCSAgLSBwbGFubmVyICh2aXNpdF9uYXZf cGxhbiBpbiBjcmVhdGVwbGFuLmMpIHRvIGNvbGxlY3QgdHVwbGVzdG9yZQorICoJCSAgICB0cmlt IG9mZnNldHMgYW5kIHBlci12YXJpYWJsZSBtYXRjaF9zdGFydCBkZXBlbmRlbmN5CisgKgkJICAt IGV4ZWN1dG9yICh2aXNpdF9uYXZfZXhlYyBpbiBub2RlV2luZG93QWdnLmMpIHRvIGV2YWx1YXRl CisgKgkJICAgIG5vbi1jb25zdGFudCBuYXYgb2Zmc2V0cyBhdCBXaW5kb3dBZ2dTdGF0ZSBpbml0 IHRpbWUKKyAqCisgKiBUaGUgZHJpdmVyIHdyYXBzIGEgbW9kZS1zcGVjaWZpYyBjb250ZXh0IGlu IGEgTmF2VHJhdmVyc2FsIGFuZCBwYXNzZXMKKyAqIGl0IGFzIGN0eDsgdGhlIHZpc2l0b3IgY2Fz dHMgdC0+ZGF0YSB0byBpdHMgb3duIGNvbnRleHQgdHlwZS4gIENoaWxkcmVuCisgKiBvZiBhbiBS UFJOYXZFeHByIGFyZSBub3Qgd2Fsa2VkOiB0aGUgcGFyc2VyJ3MgbmVzdGluZyByZXN0cmljdGlv bnMKKyAqIGVuc3VyZSBvZmZzZXRzIGFuZCBkZXBlbmRlbmNpZXMgYXJlIGZ1bGx5IGNhcHR1cmVk IGJ5IHRoZSBvdXRlciBuYXYKKyAqIGtpbmQsIHNvIHRoZSB2aXNpdG9yIG9ubHkgbmVlZHMgdG8g aW5zcGVjdCB0aGUgUlBSTmF2RXhwciBpdHNlbGYuCisgKi8KK2Jvb2wKK25hdl90cmF2ZXJzYWxf d2Fsa2VyKE5vZGUgKm5vZGUsIHZvaWQgKmN0eCkKK3sKKwlpZiAobm9kZSA9PSBOVUxMKQorCQly ZXR1cm4gZmFsc2U7CisKKwlpZiAoSXNBKG5vZGUsIFJQUk5hdkV4cHIpKQorCXsKKwkJTmF2VHJh dmVyc2FsICp0ID0gKE5hdlRyYXZlcnNhbCAqKSBjdHg7CisKKwkJdC0+dmlzaXQodCwgKFJQUk5h dkV4cHIgKikgbm9kZSk7CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlyZXR1cm4gZXhwcmVzc2lv bl90cmVlX3dhbGtlcihub2RlLCBuYXZfdHJhdmVyc2FsX3dhbGtlciwgY3R4KTsKK30KZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYyBiL3NyYy9iYWNrZW5k L29wdGltaXplci9wbGFuL3NldHJlZnMuYwppbmRleCBmZjBlODc1ZjJhMi4uODEzYTMyNmJkNzgg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3NldHJlZnMuYworKysgYi9z cmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKQEAgLTIxNCw3ICsyMTQsNiBAQCBz dGF0aWMgTGlzdCAqc2V0X3dpbmRvd2FnZ19ydW5jb25kaXRpb25fcmVmZXJlbmNlcyhQbGFubmVy SW5mbyAqcm9vdCwKIHN0YXRpYyB2b2lkIHJlY29yZF9lbGlkZWRfbm9kZShQbGFubmVyR2xvYmFs ICpnbG9iLCBpbnQgcGxhbl9ub2RlX2lkLAogCQkJCQkJCSAgIE5vZGVUYWcgZWxpZGVkX3R5cGUs IEJpdG1hcHNldCAqcmVsaWRzKTsKIAotCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKgkJ U1VCUExBTiBSRUZFUkVOQ0VTCkBAIC0yNjMzLDYgKzI2MzIsMzQgQEAgc2V0X3VwcGVyX3JlZmVy ZW5jZXMoUGxhbm5lckluZm8gKnJvb3QsIFBsYW4gKnBsYW4sIGludCBydG9mZnNldCkKIAkJCQkJ ICAgTlJNX0VRVUFMLAogCQkJCQkgICBOVU1fRVhFQ19RVUFMKHBsYW4pKTsKIAorCS8qCisJICog UmVwbGFjZSBhbiBleHByZXNzaW9uIHRyZWUgaW4gZWFjaCBERUZJTkUgY2xhdXNlIHNvIHRoYXQg YWxsIFZhcgorCSAqIG5vZGVzJ3MgdmFybm8gcmVmZXJzIHRvIE9VVEVSX1ZBUi4KKwkgKi8KKwlp ZiAoSXNBKHBsYW4sIFdpbmRvd0FnZykpCisJeworCQlXaW5kb3dBZ2cgICp3cGxhbiA9IChXaW5k b3dBZ2cgKikgcGxhbjsKKworCQlpZiAod3BsYW4tPmRlZmluZUNsYXVzZSAhPSBOSUwpCisJCXsK KwkJCWZvcmVhY2gobCwgd3BsYW4tPmRlZmluZUNsYXVzZSkKKwkJCXsKKwkJCQlUYXJnZXRFbnRy eSAqdGxlID0gKFRhcmdldEVudHJ5ICopIGxmaXJzdChsKTsKKworCQkJCXRsZSA9IGZsYXRDb3B5 VGFyZ2V0RW50cnkodGxlKTsKKwkJCQl0bGUtPmV4cHIgPSAoRXhwciAqKQorCQkJCQlmaXhfdXBw ZXJfZXhwcihyb290LAorCQkJCQkJCQkgICAoTm9kZSAqKSB0bGUtPmV4cHIsCisJCQkJCQkJCSAg IHN1YnBsYW5faXRsaXN0LAorCQkJCQkJCQkgICBPVVRFUl9WQVIsCisJCQkJCQkJCSAgIHJ0b2Zm c2V0LAorCQkJCQkJCQkgICBOUk1fRVFVQUwsCisJCQkJCQkJCSAgIE5VTV9FWEVDX1FVQUwocGxh bikpOworCQkJCWxmaXJzdChsKSA9IHRsZTsKKwkJCX0KKwkJfQorCX0KKwogCXBmcmVlKHN1YnBs YW5faXRsaXN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAv cHJlcGpvaW50cmVlLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVwam9pbnRyZWUu YwppbmRleCA0NDI0ZmRiZTkwNi4uNzRkYzQ4NmIxZjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L29wdGltaXplci9wcmVwL3ByZXBqb2ludHJlZS5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wcmVwL3ByZXBqb2ludHJlZS5jCkBAIC0yNTkzLDYgKzI1OTMsMTMgQEAgcGVyZm9ybV9wdWxs dXBfcmVwbGFjZV92YXJzKFBsYW5uZXJJbmZvICpyb290LAogCXBhcnNlLT5yZXR1cm5pbmdMaXN0 ID0gKExpc3QgKikKIAkJcHVsbHVwX3JlcGxhY2VfdmFycygoTm9kZSAqKSBwYXJzZS0+cmV0dXJu aW5nTGlzdCwgcnZjb250ZXh0KTsKIAorCWZvcmVhY2hfbm9kZShXaW5kb3dDbGF1c2UsIHdjLCBw YXJzZS0+d2luZG93Q2xhdXNlKQorCXsKKwkJaWYgKHdjLT5kZWZpbmVDbGF1c2UgIT0gTklMKQor CQkJd2MtPmRlZmluZUNsYXVzZSA9IChMaXN0ICopCisJCQkJcHVsbHVwX3JlcGxhY2VfdmFycygo Tm9kZSAqKSB3Yy0+ZGVmaW5lQ2xhdXNlLCBydmNvbnRleHQpOworCX0KKwogCWlmIChwYXJzZS0+ b25Db25mbGljdCkKIAl7CiAJCXBhcnNlLT5vbkNvbmZsaWN0LT5vbkNvbmZsaWN0U2V0ID0gKExp c3QgKikKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BsYW5ub2Rlcy5oIGIvc3JjL2lu Y2x1ZGUvbm9kZXMvcGxhbm5vZGVzLmgKaW5kZXggMTRhMWRmZWQyYjkuLmQ0NWQ5M2Q3OWEyIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9wbGFubm9kZXMuaAorKysgYi9zcmMvaW5jbHVk ZS9ub2Rlcy9wbGFubm9kZXMuaApAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9z dHJhdG51bS5oIgogI2luY2x1ZGUgIm5vZGVzL2JpdG1hcHNldC5oIgogI2luY2x1ZGUgIm5vZGVz L2xvY2tvcHRpb25zLmgiCisjaW5jbHVkZSAibm9kZXMvcGFyc2Vub2Rlcy5oIgogI2luY2x1ZGUg Im5vZGVzL3ByaW1ub2Rlcy5oIgogCiAKQEAgLTEyNDQsNiArMTI0NSw3NyBAQCB0eXBlZGVmIHN0 cnVjdCBBZ2cKIAlMaXN0CSAgICpjaGFpbjsKIH0gQWdnOwogCisvKiAtLS0tLS0tLS0tLS0tLS0t CisgKgkJUm93IFBhdHRlcm4gUmVjb2duaXRpb24gY29tcGlsZWQgcGF0dGVybiB0eXBlcworICog LS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qIFR5cGUgZGVmaW5pdGlvbnMgZm9yIFJQUiBwYXR0 ZXJuIGVsZW1lbnRzICovCit0eXBlZGVmIHVpbnQ4IFJQUlZhcklkOwkJCS8qIHBhdHRlcm4gdmFy aWFibGUgSUQgKi8KK3R5cGVkZWYgdWludDggUlBSRWxlbUZsYWdzOwkJLyogZWxlbWVudCBmbGFn cyAqLwordHlwZWRlZiB1aW50OCBSUFJEZXB0aDsJCQkvKiBncm91cCBuZXN0aW5nIGRlcHRoICov Cit0eXBlZGVmIGludDMyIFJQUlF1YW50aXR5OwkJLyogcXVhbnRpZmllciBtaW4vbWF4ICovCit0 eXBlZGVmIGludDE2IFJQUkVsZW1JZHg7CQkvKiBlbGVtZW50IGFycmF5IGluZGV4ICovCisKKy8q CisgKiBSUFJQYXR0ZXJuRWxlbWVudCAtIGZsYXQgZWxlbWVudCBmb3IgTkZBIHBhdHRlcm4gbWF0 Y2hpbmcgKDE2IGJ5dGVzKQorICoKKyAqIExheW91dCBvcHRpbWl6ZWQgZm9yIGFsaWdubWVudCAo bm8gcGFkZGluZyBob2xlcyk6CisgKiAgIHZhcklkKDEpICsgZGVwdGgoMSkgKyBmbGFncygxKSAr IHJlc2VydmVkKDEpICsgbWluKDQpICsgbWF4KDQpICsgbmV4dCgyKSArIGp1bXAoMikKKyAqLwor dHlwZWRlZiBzdHJ1Y3QgUlBSUGF0dGVybkVsZW1lbnQKK3sKKwlSUFJWYXJJZAl2YXJJZDsJCQkv KiB2YXJpYWJsZSBJRCwgb3Igc3BlY2lhbCB2YWx1ZSBmb3IgY29udHJvbCAqLworCVJQUkRlcHRo CWRlcHRoOwkJCS8qIGdyb3VwIG5lc3RpbmcgZGVwdGggKi8KKwlSUFJFbGVtRmxhZ3MgZmxhZ3M7 CQkJLyogZmxhZ3MgKHJlbHVjdGFudCwgZXRjLikgKi8KKwl1aW50OAkJcmVzZXJ2ZWQ7CQkvKiBy ZXNlcnZlZCBwYWRkaW5nIGJ5dGUgKi8KKwlSUFJRdWFudGl0eSBtaW47CQkJLyogcXVhbnRpZmll ciBtaW5pbXVtICovCisJUlBSUXVhbnRpdHkgbWF4OwkJCS8qIHF1YW50aWZpZXIgbWF4aW11bSAq LworCVJQUkVsZW1JZHgJbmV4dDsJCQkvKiBuZXh0IGVsZW1lbnQgaW5kZXggKi8KKwlSUFJFbGVt SWR4CWp1bXA7CQkJLyoganVtcCB0YXJnZXQgKGZvciBBTFQvR1JPVVApICovCit9IFJQUlBhdHRl cm5FbGVtZW50OworCisvKgorICogUlBSUGF0dGVybiAtIGNvbXBpbGVkIHBhdHRlcm4gZm9yIE5G QSBleGVjdXRpb24KKyAqCisgKiBSZXF1aXJlcyBjdXN0b20gY29weS9vdXQvcmVhZCBmdW5jdGlv bnMgZHVlIHRvIGVsZW1lbnRzIGFycmF5LgorICovCit0eXBlZGVmIHN0cnVjdCBSUFJQYXR0ZXJu Cit7CisJcGdfbm9kZV9hdHRyKGN1c3RvbV9jb3B5X2VxdWFsLCBjdXN0b21fcmVhZF93cml0ZSkK KworCU5vZGVUYWcJCXR5cGU7CQkJLyogVF9SUFJQYXR0ZXJuICovCisJaW50CQkJbnVtVmFyczsJ CS8qIG51bWJlciBvZiBwYXR0ZXJuIHZhcmlhYmxlcyAqLworCWNoYXIJICAqKnZhck5hbWVzOwkJ LyogYXJyYXkgb2YgdmFyaWFibGUgbmFtZXMgKERFRklORSBvcmRlcgorCQkJCQkJCQkgKiBmaXJz dCkgKi8KKwlSUFJEZXB0aAltYXhEZXB0aDsJCS8qIG1heGltdW0gZ3JvdXAgbmVzdGluZyBkZXB0 aCAqLworCWludAkJCW51bUVsZW1lbnRzOwkvKiBudW1iZXIgb2YgZWxlbWVudHMgKi8KKwlSUFJQ YXR0ZXJuRWxlbWVudCAqZWxlbWVudHM7CS8qIGFycmF5IG9mIHBhdHRlcm4gZWxlbWVudHMgKi8K KworCS8qLS0tLS0tLS0tLS0tLS0tLQorCSAqIENvbnRleHQgYWJzb3JwdGlvbiBvcHRpbWl6YXRp b24uCisJICoKKwkgKiBBYnNvcnB0aW9uIGlzIG9ubHkgc2FmZSB3aGVuIGxhdGVyIG1hdGNoZXMg YXJlIGd1YXJhbnRlZWQgdG8gYmUKKwkgKiBzdWZmaXhlcyBvZiBlYXJsaWVyIG1hdGNoZXMsIHdo aWNoIHJlcXVpcmVzIHRoZSBwYXR0ZXJuIHRvIHN0YXJ0IHdpdGgKKwkgKiBhbiB1bmJvdW5kZWQg Z3JlZWR5IGVsZW1lbnQuICBQaGFzZS0xIG5vcm1hbGl6YXRpb24gKGNvbnNlY3V0aXZlCisJICog dmFyaWFibGUgLyBncm91cCAvIEFMVCBtZXJnaW5nIGFuZCBwcmVmaXgvc3VmZml4IG1lcmdpbmcp IHJld3JpdGVzIHRoZQorCSAqIHBhdHRlcm4gdG93YXJkIHRoYXQgZm9ybSBmaXJzdCAtLSBzbyBl LmcuIEEgQiAoQSBCKSsgaXMgbWVyZ2VkIHRvCisJICogKEEgQil7Mix9IGFuZCB0aGVuIGp1ZGdl ZCBhYnNvcmJhYmxlLgorCSAqCisJICogY29tcHV0ZUFic29yYmFiaWxpdHkoKSBtYXJrcyB0aGUg YWJzb3JiYWJsZSBjYXNlcyAoc2VlIGlzVW5ib3VuZGVkU3RhcnQpOgorCSAqICAgLSBzaW1wbGUg dW5ib3VuZGVkIFZBUiBhdCB0aGUgc3RhcnQ6ICAgICAgICAgICAgICAgICAgICBBKyBCIEMKKwkg KiAgIC0gdW5ib3VuZGVkIEdST1VQIHdpdGggZml4ZWQtbGVuZ3RoIGNoaWxkcmVuOiAgICAgICAg ICAgKEEgQikrLCAoQSBCezJ9KSsKKwkgKiAgIC0gdG9wLWxldmVsIEFMVCB3aXRoIGluZGVwZW5k ZW50bHkgYWJzb3JiYWJsZSBicmFuY2hlczogQSsgfCBCKworCSAqICAgICAoaGFuZGxlZCBpbiBj b21wdXRlQWJzb3JiYWJpbGl0eVJlY3Vyc2l2ZSkKKwkgKgorCSAqIE5vdCBhYnNvcmJhYmxlOiBh biB1bmJvdW5kZWQgZWxlbWVudCBub3QgYXQgdGhlIHN0YXJ0IChBIEIrKSwgYQorCSAqIHJlbHVj dGFudCBxdWFudGlmaWVyIChBKz8pLCBvciBhbiBBTFQgaW5zaWRlIGEgZ3JvdXAgKChBfEIpKykg LS0gdGhlcmUKKwkgKiBkaWZmZXJlbnQgc3RhcnQgcG9zaXRpb25zIHlpZWxkIGRpZmZlcmVudCBt YXRjaCBjb250ZW50cywgc28gbGF0ZXIKKwkgKiBtYXRjaGVzIGFyZSBub3Qgc3VmZml4ZXMgb2Yg ZWFybGllciBvbmVzLgorCSAqLworCWJvb2wJCWlzQWJzb3JiYWJsZTsJLyogdHJ1ZSBpZiBwYXR0 ZXJuIHN1cHBvcnRzIGNvbnRleHQgYWJzb3JwdGlvbiAqLworfSBSUFJQYXR0ZXJuOworCiAvKiAt LS0tLS0tLS0tLS0tLS0tCiAgKgkJd2luZG93IGFnZ3JlZ2F0ZSBub2RlCiAgKiAtLS0tLS0tLS0t LS0tLS0tCkBAIC0xMzE0LDYgKzEzODYsNDQgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93QWdnCiAJ LyogbnVsbHMgc29ydCBmaXJzdCBmb3IgaW5fcmFuZ2UgdGVzdHM/ICovCiAJYm9vbAkJaW5SYW5n ZU51bGxzRmlyc3Q7CiAKKwkvKiBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBBRlRFUiBNQVRDSCBT S0lQIGNsYXVzZSAqLworCVJQU2tpcFRvCXJwU2tpcFRvOwkJLyogUm93IFBhdHRlcm4gU2tpcCBU byB0eXBlICovCisKKwkvKiBDb21waWxlZCBSb3cgUGF0dGVybiBmb3IgTkZBIGV4ZWN1dGlvbiAq LworCXN0cnVjdCBSUFJQYXR0ZXJuICpycFBhdHRlcm47CisKKwkvKiBSb3cgUGF0dGVybiBERUZJ TkUgY2xhdXNlIChsaXN0IG9mIFRhcmdldEVudHJ5KSAqLworCUxpc3QJICAgKmRlZmluZUNsYXVz ZTsKKworCS8qCisJICogQml0bWFwc2V0IG9mIERFRklORSB2YXJpYWJsZSBpbmRpY2VzIHdob3Nl IGV4cHJlc3Npb25zIGRlcGVuZCBvbgorCSAqIG1hdGNoX3N0YXJ0IChjb250YWluIEZJUlNULCBM QVNULXdpdGgtb2Zmc2V0LCBvciBjb21wb3VuZAorCSAqIFBSRVZfRklSU1QvTkVYVF9GSVJTVC9Q UkVWX0xBU1QvTkVYVF9MQVNUIHdpdGggb2Zmc2V0KS4gIFZhcmlhYmxlcyBpbgorCSAqIHRoaXMg c2V0IHJlcXVpcmUgcGVyLWNvbnRleHQgcmUtZXZhbHVhdGlvbiBkdXJpbmcgTkZBIHByb2Nlc3Np bmcuCisJICovCisJQml0bWFwc2V0ICAqZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudDsKKworCS8q CisJICogTmF2aWdhdGlvbiBvZmZzZXQgc3RhdHVzIGFuZCB2YWx1ZXMgZm9yIHR1cGxlc3RvcmUg bWFyayBvcHRpbWl6YXRpb24uCisJICogU2VlIFJQUk5hdk9mZnNldEtpbmQgaW4gbm9kZXMvcGFy c2Vub2Rlcy5oLgorCSAqCisJICogbmF2TWF4T2Zmc2V0OiBtYXhpbXVtIGJhY2t3YXJkIHJlYWNo IGZyb20gY3VycmVudHBvcyAoY29udHJpYnV0ZWQgYnkKKwkgKiBQUkVWLCBMQVNULXdpdGgtb2Zm c2V0LCBjb21wb3VuZCBQUkVWX0xBU1QvTkVYVF9MQVNUKS4gIE9ubHkgdmFsaWQgd2hlbgorCSAq IG5hdk1heE9mZnNldEtpbmQgPT0gUlBSX05BVl9PRkZTRVRfRklYRUQuCisJICoKKwkgKiBuYXZG aXJzdE9mZnNldDogbWluaW11bSBmb3J3YXJkIG9mZnNldCBmcm9tIG1hdGNoX3N0YXJ0IChjb250 cmlidXRlZCBieQorCSAqIEZJUlNULCBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QpLiAg Q2FuIGJlIG5lZ2F0aXZlIGZvciBjb21wb3VuZAorCSAqIFBSRVZfRklSU1QuICBPbmx5IHZhbGlk IHdoZW4gbmF2Rmlyc3RPZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZGU0VUX0ZJWEVECisJICogYW5k IGhhc0ZpcnN0TmF2ID09IHRydWUuCisJICovCisJUlBSTmF2T2Zmc2V0S2luZCBuYXZNYXhPZmZz ZXRLaW5kOworCWludDY0CQluYXZNYXhPZmZzZXQ7CisKKwkvKiB0cnVlIGlmIEZJUlNULWJhc2Vk IG5hdmlnYXRpb24gKEZJUlNULCBQUkVWX0ZJUlNULCBORVhUX0ZJUlNUKSBpcyB1c2VkICovCisJ Ym9vbAkJaGFzRmlyc3ROYXY7CisJUlBSTmF2T2Zmc2V0S2luZCBuYXZGaXJzdE9mZnNldEtpbmQ7 CisJaW50NjQJCW5hdkZpcnN0T2Zmc2V0OworCiAJLyoKIAkgKiBmYWxzZSBmb3IgYWxsIGFwYXJ0 IGZyb20gdGhlIFdpbmRvd0FnZyB0aGF0J3MgY2xvc2VzdCB0byB0aGUgcm9vdCBvZgogCSAqIHRo ZSBwbGFuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9vcHRpbWl6ZXIvcnByLmggYi9zcmMvaW5j bHVkZS9vcHRpbWl6ZXIvcnByLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw MDAuLjgwMmQyZjFkZDY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2luY2x1ZGUvb3B0aW1pemVy L3Jwci5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHJwci5o CisgKgkgIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIHBhdHRlcm4gY29tcGlsYXRpb24gZm9yIHBs YW5uZXIKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYtMjAyNiwgUG9zdGdyZVNR TCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5 NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxpZm9ybmlhCisgKgorICogc3JjL2lu Y2x1ZGUvb3B0aW1pemVyL3Jwci5oCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKyNpZm5k ZWYgT1BUSU1JWkVSX1JQUl9ICisjZGVmaW5lIE9QVElNSVpFUl9SUFJfSAorCisjaW5jbHVkZSAi bm9kZXMvcGFyc2Vub2Rlcy5oIgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgorCisvKiBM aW1pdHMgYW5kIHNwZWNpYWwgdmFsdWVzICovCisvKgorICogTWF4aW11bSBwYXR0ZXJuIHZhcmlh YmxlIElELiAgUGF0dGVybiB2YXJpYWJsZXMgb2NjdXB5IHZhcklkIDAgdG8KKyAqIFJQUl9WQVJJ RF9NQVggaW5jbHVzaXZlICgyNDAgZGlzdGluY3QgdmFyaWFibGVzKTsgYW55IHZhcklkIHdpdGgg dGhlIGhpZ2gKKyAqIG5pYmJsZSBzZXQgKDB4RjAgdG8gMHhGRikgaXMgcmVzZXJ2ZWQgZm9yIGNv bnRyb2wgZWxlbWVudHMuICBSZXNlcnZpbmcgdGhlCisgKiB3aG9sZSBoaWdoIG5pYmJsZSwgcmF0 aGVyIHRoYW4ganVzdCB0aGUgdmFsdWVzIGN1cnJlbnRseSBpbiB1c2UsIGxlYXZlcworICogcm9v bSBmb3IgZnV0dXJlIGNvbnRyb2wgZWxlbWVudHM7IHRoaXMgcmFuZ2UgY2FuIG9ubHkgYmUgbmFy cm93ZWQgc2FmZWx5CisgKiBiZWZvcmUgcmVsZWFzZS4KKyAqLworI2RlZmluZSBSUFJfVkFSSURf TUFYCQkweEVGCS8qIHBhdHRlcm4gdmFyaWFibGVzIGFyZSAwIHRvIDB4RUYgKi8KKyNkZWZpbmUg UlBSX1FVQU5USVRZX0lORglQR19JTlQzMl9NQVgJLyogdW5ib3VuZGVkIHF1YW50aWZpZXIgKi8K KyNkZWZpbmUgUlBSX0NPVU5UX01BWAkJUEdfSU5UMzJfTUFYCS8qIG1heCBydW50aW1lIGNvdW50 IChORkEgc3RhdGUpICovCisjZGVmaW5lIFJQUl9FTEVNSURYX01BWAkJUEdfSU5UMTZfTUFYCS8q IG1heCBwYXR0ZXJuIGVsZW1lbnRzICovCisjZGVmaW5lIFJQUl9FTEVNSURYX0lOVkFMSUQJKChS UFJFbGVtSWR4KSAtMSkJLyogaW52YWxpZCBpbmRleCAqLworI2RlZmluZSBSUFJfREVQVEhfTUFY CQkoUEdfVUlOVDhfTUFYIC0gMSkJLyogbWF4IHBhdHRlcm4gbmVzdGluZyBkZXB0aDoKKwkJCQkJ CQkJCQkJCSAqIDI1NCAqLworI2RlZmluZSBSUFJfREVQVEhfTk9ORQkJUEdfVUlOVDhfTUFYCS8q IG5vIGVuY2xvc2luZyBncm91cCAodG9wLWxldmVsKSAqLworCisvKiBSZXNlcnZlZCBjb250cm9s LWVsZW1lbnQgdmFySWRzIChoaWdoIG5pYmJsZSAweEY7IDB4RjAtMHhGQiBzcGFyZSkgKi8KKyNk ZWZpbmUgUlBSX1ZBUklEX0JFR0lOCQkoKFJQUlZhcklkKSAweEZDKQkvKiBncm91cCBiZWdpbiAq LworI2RlZmluZSBSUFJfVkFSSURfRU5ECQkoKFJQUlZhcklkKSAweEZEKQkvKiBncm91cCBlbmQg Ki8KKyNkZWZpbmUgUlBSX1ZBUklEX0FMVAkJKChSUFJWYXJJZCkgMHhGRSkJLyogYWx0ZXJuYXRp b24gc3RhcnQgKi8KKyNkZWZpbmUgUlBSX1ZBUklEX0ZJTgkJKChSUFJWYXJJZCkgMHhGRikJLyog cGF0dGVybiBmaW5pc2ggKi8KKworLyogRWxlbWVudCBmbGFncyAqLworI2RlZmluZSBSUFJfRUxF TV9SRUxVQ1RBTlQJCQkweDAxCS8qIHJlbHVjdGFudCAobm9uLWdyZWVkeSkKKwkJCQkJCQkJCQkJ ICogcXVhbnRpZmllciAqLworI2RlZmluZSBSUFJfRUxFTV9FTVBUWV9MT09QCQkJMHgwMgkvKiBF TkQ6IGdyb3VwIGJvZHkgY2FuIHByb2R1Y2UKKwkJCQkJCQkJCQkJICogZW1wdHkgbWF0Y2ggKi8K Ky8qCisgKiBUaGUgdHdvIGFic29ycHRpb24gZmxhZ3MgYmVsb3cgYXJlIGV4cGxhaW5lZCBpbiBS RUFETUUucnByIElWLTUKKyAqICgiQWJzb3JiYWJpbGl0eSBBbmFseXNpcyIpLCB3aXRoIHdvcmtl ZCBleGFtcGxlcyBpbiBBcHBlbmRpeCBDOyB0aGUKKyAqIGFuYWx5c2lzIHRoYXQgc2V0cyB0aGVt IGlzIGNvbXB1dGVBYnNvcmJhYmlsaXR5KCkgaW4KKyAqIG9wdGltaXplci9wbGFuL3Jwci5jLgor ICovCisjZGVmaW5lIFJQUl9FTEVNX0FCU09SQkFCTEVfQlJBTkNICTB4MDQJLyogZWxlbWVudCBp biBhYnNvcmJhYmxlIHJlZ2lvbiAqLworI2RlZmluZSBSUFJfRUxFTV9BQlNPUkJBQkxFCQkJMHgw OAkvKiBhYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50ICovCisKKy8qIEFjY2Vzc29yIG1hY3JvcyBm b3IgUlBSUGF0dGVybkVsZW1lbnQgKi8KKyNkZWZpbmUgUlBSRWxlbUlzUmVsdWN0YW50KGUpCQkJ KCgoZSktPmZsYWdzICYgUlBSX0VMRU1fUkVMVUNUQU5UKSAhPSAwKQorI2RlZmluZSBSUFJFbGVt Q2FuRW1wdHlMb29wKGUpCQkJKCgoZSktPmZsYWdzICYgUlBSX0VMRU1fRU1QVFlfTE9PUCkgIT0g MCkKKyNkZWZpbmUgUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChlKQkoKChlKS0+ZmxhZ3MgJiBS UFJfRUxFTV9BQlNPUkJBQkxFX0JSQU5DSCkgIT0gMCkKKyNkZWZpbmUgUlBSRWxlbUlzQWJzb3Ji YWJsZShlKQkJCSgoKGUpLT5mbGFncyAmIFJQUl9FTEVNX0FCU09SQkFCTEUpICE9IDApCisjZGVm aW5lIFJQUkVsZW1Jc1ZhcihlKQkJCSgoZSktPnZhcklkIDw9IFJQUl9WQVJJRF9NQVgpCisjZGVm aW5lIFJQUkVsZW1Jc0JlZ2luKGUpCQkoKGUpLT52YXJJZCA9PSBSUFJfVkFSSURfQkVHSU4pCisj ZGVmaW5lIFJQUkVsZW1Jc0VuZChlKQkJCSgoZSktPnZhcklkID09IFJQUl9WQVJJRF9FTkQpCisj ZGVmaW5lIFJQUkVsZW1Jc0FsdChlKQkJCSgoZSktPnZhcklkID09IFJQUl9WQVJJRF9BTFQpCisj ZGVmaW5lIFJQUkVsZW1Jc0ZpbihlKQkJCSgoZSktPnZhcklkID09IFJQUl9WQVJJRF9GSU4pCisj ZGVmaW5lIFJQUkVsZW1DYW5Ta2lwKGUpCQkoKGUpLT5taW4gPT0gMCkKKworZXh0ZXJuIExpc3Qg KmNvbGxlY3RQYXR0ZXJuVmFyaWFibGVzKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuKTsKK2V4dGVy biB2b2lkIHZhbGlkYXRlX3Jwcl9kZWZpbmVfdm9sYXRpbGl0eShMaXN0ICpkZWZpbmVDbGF1c2Up OworZXh0ZXJuIHZvaWQgYnVpbGREZWZpbmVWYXJpYWJsZUxpc3QoTGlzdCAqZGVmaW5lQ2xhdXNl LAorCQkJCQkJCQkJTGlzdCAqKmRlZmluZVZhcmlhYmxlTGlzdCk7CitleHRlcm4gUlBSUGF0dGVy biAqYnVpbGRSUFJQYXR0ZXJuKFJQUlBhdHRlcm5Ob2RlICpwYXR0ZXJuLCBMaXN0ICpkZWZpbmVW YXJpYWJsZUxpc3QsCisJCQkJCQkJCSAgIFJQU2tpcFRvIHJwU2tpcFRvLCBpbnQgZnJhbWVPcHRp b25zLAorCQkJCQkJCQkgICBib29sIGhhc01hdGNoU3RhcnREZXBlbmRlbnQpOworCisvKgorICog U2hhcmVkIHRyYXZlcnNhbCB3YWxrZXIgZm9yIERFRklORSBjbGF1c2UgUlBSTmF2RXhwciBjb2xs ZWN0aW9uLgorICoKKyAqIEJvdGggcGxhbm5lciAobmF2LW9mZnNldCAvIG1hdGNoX3N0YXJ0IGRl cGVuZGVuY3kgYW5hbHlzaXMpIGFuZCBleGVjdXRvcgorICogKHJ1bnRpbWUgb2Zmc2V0IGV2YWx1 YXRpb24pIG5lZWQgdG8gd2FsayBERUZJTkUgZXhwcmVzc2lvbnMgYW5kIGRpc3BhdGNoCisgKiBw ZXIgUlBSTmF2RXhwci4gIFRoZXkgZGlmZmVyIG9ubHkgaW4gd2hhdCB0aGV5IGRvIGF0IGVhY2gg bmF2IG5vZGUsIHNvCisgKiB0aGUgdHJhdmVyc2FsIGZyYW1lIGlzIHNoYXJlZCAobmF2X3RyYXZl cnNhbF93YWxrZXIsIGRlZmluZWQgaW4gcnByLmMpCisgKiBhbmQgdGhlIHBlci1uYXYgYWN0aW9u IGlzIHN1cHBsaWVkIGFzIGEgY2FsbGJhY2suICBUaGUgZHJpdmVyIGFsbG9jYXRlcworICogYSBt b2RlLXNwZWNpZmljIGNvbnRleHQsIHBvaW50cyBOYXZUcmF2ZXJzYWwuZGF0YSBhdCBpdCwgYW5k IGNhc3RzCisgKiBpbnNpZGUgaXRzIHZpc2l0b3IuCisgKi8KK3N0cnVjdCBOYXZUcmF2ZXJzYWw7 Cit0eXBlZGVmIHZvaWQgKCpOYXZWaXNpdEZuKSAoc3RydWN0IE5hdlRyYXZlcnNhbCAqdCwgUlBS TmF2RXhwciAqbmF2KTsKKwordHlwZWRlZiBzdHJ1Y3QgTmF2VHJhdmVyc2FsCit7CisJTmF2Vmlz aXRGbgl2aXNpdDsKKwl2b2lkCSAgICpkYXRhOwkJCS8qIG1vZGUtc3BlY2lmaWMgY29udGV4dCAq LworfSBOYXZUcmF2ZXJzYWw7CisKK2V4dGVybiBib29sIG5hdl90cmF2ZXJzYWxfd2Fsa2VyKE5v ZGUgKm5vZGUsIHZvaWQgKmN0eCk7CisKKyNlbmRpZgkJCQkJCQkvKiBPUFRJTUlaRVJfUlBSX0gg Ki8KLS0gCjIuNDMuMAoK ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0005-Row-pattern-recognition-patch-executor-and-comma.patch" RnJvbSAxMjZjZGUwMDg4M2QwZjczNGI5NGZjZTBmOGZmZWViNDU5MDVhZGE5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg NS85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAoZXhlY3V0b3IgYW5kCiBjb21tYW5k cykuCgotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYyAgICAgICAgfCAgNDg0ICsr KysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUgICAgICAgICB8ICAgIDEgKwogc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYyAgICAgICB8ICAgOTIgKysKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMgfCAgMjY3ICsrKysKIHNyYy9iYWNrZW5kL2V4ZWN1 dG9yL2V4ZWNSUFIuYyAgICAgICAgfCAxOTc5ICsrKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkICAgICAgfCAgICAxICsKIHNyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyAgfCAxNDkwICsrKysrKysrKysrKysrKystLS0KIHNy Yy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5jICAgfCAgIDc4ICstCiBzcmMvYmFja2Vu ZC9qaXQvbGx2bS9sbHZtaml0X3R5cGVzLmMgIHwgICAgMiArCiBzcmMvYmFja2VuZC91dGlscy9h ZHQvd2luZG93ZnVuY3MuYyAgIHwgIDExOSArLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9j LmRhdCAgICAgICB8ICAgMjQgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCAgICAg ICB8ICAgMjAgKwogc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY1JQUi5oICAgICAgICB8ICAgNDAg Kwogc3JjL2luY2x1ZGUvZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5oICB8ICAgIDMgKwogc3JjL2lu Y2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggICAgICAgICB8ICAxMzIgKysKIDE1IGZpbGVzIGNoYW5n ZWQsIDQ1MTMgaW5zZXJ0aW9ucygrKSwgMjE5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYwogY3JlYXRlIG1vZGUgMTAwNjQ0IHNy Yy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNSUFIuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4cGxhaW4uYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2V4cGxhaW4uYwppbmRleCAx MTJjMTdiMGQ2NC4uNzBmZDdmMzg2YTAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRz L2V4cGxhaW4uYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9leHBsYWluLmMKQEAgLTMwLDYg KzMwLDcgQEAKICNpbmNsdWRlICJub2Rlcy9leHRlbnNpYmxlLmgiCiAjaW5jbHVkZSAibm9kZXMv bWFrZWZ1bmNzLmgiCiAjaW5jbHVkZSAibm9kZXMvbm9kZUZ1bmNzLmgiCisjaW5jbHVkZSAib3B0 aW1pemVyL3Jwci5oIgogI2luY2x1ZGUgInBhcnNlci9hbmFseXplLmgiCiAjaW5jbHVkZSAicGFy c2VyL3BhcnNldHJlZS5oIgogI2luY2x1ZGUgInJld3JpdGUvcmV3cml0ZUhhbmRsZXIuaCIKQEAg LTExOSw2ICsxMjAsMTUgQEAgc3RhdGljIHZvaWQgc2hvd193aW5kb3dfZGVmKFdpbmRvd0FnZ1N0 YXRlICpwbGFuc3RhdGUsCiBzdGF0aWMgdm9pZCBzaG93X3dpbmRvd19rZXlzKFN0cmluZ0luZm8g YnVmLCBQbGFuU3RhdGUgKnBsYW5zdGF0ZSwKIAkJCQkJCQkgaW50IG5rZXlzLCBBdHRyTnVtYmVy ICprZXljb2xzLAogCQkJCQkJCSBMaXN0ICphbmNlc3RvcnMsIEV4cGxhaW5TdGF0ZSAqZXMpOwor c3RhdGljIHZvaWQgYXBwZW5kX3Jwcl9xdWFudGlmaWVyKFN0cmluZ0luZm8gYnVmLCBSUFJQYXR0 ZXJuRWxlbWVudCAqZWxlbSk7CitzdGF0aWMgY2hhciAqZGVwYXJzZV9ycHJfcGF0dGVybihSUFJQ YXR0ZXJuICpwYXR0ZXJuKTsKK3N0YXRpYyBpbnQJZGVwYXJzZV9ycHJfc2VxKFJQUlBhdHRlcm4g KnBhdHRlcm4sIGludCBzdGFydCwgaW50IGxpbWl0LAorCQkJCQkJCVN0cmluZ0luZm8gYnVmKTsK K3N0YXRpYyBpbnQJZGVwYXJzZV9ycHJfbm9kZShSUFJQYXR0ZXJuICpwYXR0ZXJuLCBpbnQgaSwg aW50IGxpbWl0LAorCQkJCQkJCSBTdHJpbmdJbmZvIGJ1Zik7CitzdGF0aWMgaW50CXJwcl9tYXRj aF9lbmQoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGJlZ2luSWR4KTsKK3N0YXRpYyBpbnQJcnBy X2FsdF9zY29wZV9lbmQoUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGkpOworc3RhdGljIGludAly cHJfbmV4dF9icmFuY2goUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGIsIGludCBhbHRFbmQpOwog c3RhdGljIHZvaWQgc2hvd19zdG9yYWdlX2luZm8oY2hhciAqbWF4U3RvcmFnZVR5cGUsIGludDY0 IG1heFNwYWNlVXNlZCwKIAkJCQkJCQkgIEV4cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQg c2hvd190YWJsZXNhbXBsZShUYWJsZVNhbXBsZUNsYXVzZSAqdHNjLCBQbGFuU3RhdGUgKnBsYW5z dGF0ZSwKQEAgLTEyOSw2ICsxMzksNyBAQCBzdGF0aWMgdm9pZCBzaG93X2luY3JlbWVudGFsX3Nv cnRfaW5mbyhJbmNyZW1lbnRhbFNvcnRTdGF0ZSAqaW5jcnNvcnRzdGF0ZSwKIHN0YXRpYyB2b2lk IHNob3dfaGFzaF9pbmZvKEhhc2hTdGF0ZSAqaGFzaHN0YXRlLCBFeHBsYWluU3RhdGUgKmVzKTsK IHN0YXRpYyB2b2lkIHNob3dfbWF0ZXJpYWxfaW5mbyhNYXRlcmlhbFN0YXRlICptc3RhdGUsIEV4 cGxhaW5TdGF0ZSAqZXMpOwogc3RhdGljIHZvaWQgc2hvd193aW5kb3dhZ2dfaW5mbyhXaW5kb3dB Z2dTdGF0ZSAqd2luc3RhdGUsIEV4cGxhaW5TdGF0ZSAqZXMpOworc3RhdGljIHZvaWQgc2hvd19y cHJfbmZhX3N0YXRzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcyk7 CiBzdGF0aWMgdm9pZCBzaG93X2N0ZXNjYW5faW5mbyhDdGVTY2FuU3RhdGUgKmN0ZXNjYW5zdGF0 ZSwgRXhwbGFpblN0YXRlICplcyk7CiBzdGF0aWMgdm9pZCBzaG93X3RhYmxlX2Z1bmNfc2Nhbl9p bmZvKFRhYmxlRnVuY1NjYW5TdGF0ZSAqdHNjYW5zdGF0ZSwKIAkJCQkJCQkJCSAgRXhwbGFpblN0 YXRlICplcyk7CkBAIC0yODk4LDYgKzI5MDksMjQ3IEBAIHNob3dfc29ydG9yZGVyX29wdGlvbnMo U3RyaW5nSW5mbyBidWYsIE5vZGUgKnNvcnRleHByLAogCX0KIH0KIAorLyoKKyAqIEFwcGVuZCBx dWFudGlmaWVyIHN1ZmZpeCBmb3IgYSBwYXR0ZXJuIGVsZW1lbnQuCisgKi8KK3N0YXRpYyB2b2lk CithcHBlbmRfcnByX3F1YW50aWZpZXIoU3RyaW5nSW5mbyBidWYsIFJQUlBhdHRlcm5FbGVtZW50 ICplbGVtKQoreworCS8qIEFwcGVuZCBxdWFudGlmaWVyIGlmIG5vdCB7MSwxfSAqLworCWlmIChl bGVtLT5taW4gPT0gMCAmJiBlbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORikKKwkJYXBwZW5k U3RyaW5nSW5mb0NoYXIoYnVmLCAnKicpOworCWVsc2UgaWYgKGVsZW0tPm1pbiA9PSAxICYmIGVs ZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GKQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYs ICcrJyk7CisJZWxzZSBpZiAoZWxlbS0+bWluID09IDAgJiYgZWxlbS0+bWF4ID09IDEpCisJCWFw cGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJz8nKTsKKwllbHNlIGlmIChlbGVtLT5tYXggPT0gUlBS X1FVQU5USVRZX0lORikKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJ7JWQsfSIsIGVsZW0tPm1p bik7CisJZWxzZSBpZiAoZWxlbS0+bWluID09IGVsZW0tPm1heCAmJiBlbGVtLT5taW4gIT0gMSkK KwkJYXBwZW5kU3RyaW5nSW5mbyhidWYsICJ7JWR9IiwgZWxlbS0+bWluKTsKKwllbHNlIGlmIChl bGVtLT5taW4gIT0gMSB8fCBlbGVtLT5tYXggIT0gMSkKKwkJYXBwZW5kU3RyaW5nSW5mbyhidWYs ICJ7JWQsJWR9IiwgZWxlbS0+bWluLCBlbGVtLT5tYXgpOworCisJaWYgKFJQUkVsZW1Jc1JlbHVj dGFudChlbGVtKSkKKwl7CisJCWlmIChlbGVtLT5taW4gPT0gMSAmJiBlbGVtLT5tYXggPT0gMSkK KwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiezF9Iik7IC8qIG1ha2UgcmVsdWN0YW50 ID8KKwkJCQkJCQkJCQkJCSAqIHVuYW1iaWd1b3VzICovCisJCWFwcGVuZFN0cmluZ0luZm9DaGFy KGJ1ZiwgJz8nKTsKKwl9CisKKwkvKiBBcHBlbmQgYWJzb3JwdGlvbiBtYXJrZXJzOiAiIGZvciBq dWRnbWVudCBwb2ludCwgJyBmb3IgYnJhbmNoIG9ubHkgKi8KKwlpZiAoUlBSRWxlbUlzQWJzb3Ji YWJsZShlbGVtKSkKKwl7CisJCUFzc2VydChlbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORik7 CisJCWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJyInKTsKKwl9CisJZWxzZSBpZiAoUlBSRWxl bUlzQWJzb3JiYWJsZUJyYW5jaChlbGVtKSkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAn XCcnKTsKK30KKworLyoKKyAqIERlcGFyc2UgYSBjb21waWxlZCBSUFJQYXR0ZXJuIChieXRlY29k ZSkgYmFjayB0byBhIHBhdHRlcm4gc3RyaW5nLgorICoKKyAqIFRoZSBmbGF0IFJQUlBhdHRlcm5F bGVtZW50W10gYXJyYXkgaXMgd2Fsa2VkIGJ5IHJlY3Vyc2l2ZSBkZXNjZW50LiAgRWFjaAorICog Y29uc3RydWN0IGlzIGRlcGFyc2VkIHdpdGhpbiBhbiBpbmhlcml0ZWQgW3N0YXJ0LCBsaW1pdCkg d2luZG93OiB0aGUgcGFyZW50CisgKiBwYXNzZXMgdGhlIGJvdW5kYXJ5IGRvd24sIHNvIGVhY2gg Y29uc3RydWN0J3MgZXh0ZW50IGlzIGZpeGVkIGJ5IGl0cyBjYWxsZXIuCisgKiBUaHJlZSBzaWdu YWxzIGRyaXZlIHRoZSB3YWxrOgorICoKKyAqICAgLSBzY29wZSBlbmRzICh3aGVyZSBhbiBBTFQg b3IgR1JPVVAgYm9keSBmaW5pc2hlcykgY29tZSBmcm9tIGRlcHRoLCB2aWEKKyAqICAgICBycHJf YWx0X3Njb3BlX2VuZCgpIGFuZCBycHJfbWF0Y2hfZW5kKCkuCisgKiAgIC0gYnJhbmNoIGJvdW5k YXJpZXMgKHdoZXJlIGEgInwiIGdvZXMpIGNvbWUgZnJvbSBhIGJyYW5jaC1zdGFydCBqdW1wLAor ICogICAgIGNvbmZpcm1lZCBieSB0aGUgcmVsYXRpdmUgdGVzdCBlbGVtW2otMV0ubmV4dCAhPSBq LCB2aWEKKyAqICAgICBycHJfbmV4dF9icmFuY2goKS4KKyAqICAgLSBwYXJlbnRoZXNlcyBjb21l IGZyb20gc3RydWN0dXJlIChhIEJFR0lOIGdyb3VwLCBhbiBBTFQpIHBsdXMgYSBvbmUtc3RlcAor ICogICAgIGxvb2thaGVhZCBmb3IgYSBncm91cCB0aGF0IHdyYXBzIGEgbG9uZSBBTFQuCisgKgor ICogZGVwdGggYW5kIHRoZSByZWxhdGl2ZSBuZXh0IHRlc3QgYXJlIHN0YWJsZSBhY3Jvc3MgdGhl IG5leHQvanVtcCB2YWx1ZXMgdGhlCisgKiBjb21waWxlciBhc3NpZ25zIHRvIGJyYW5jaCB0YWls cyBhbmQgbmVzdGVkIGFsdGVybmF0aW9ucywgd2hpY2ggaXMgd2hhdCBtYWtlcworICogdGhlbSBz dWl0YWJsZSB0byBhbmNob3Igc2NvcGUgYW5kIGJyYW5jaCBib3VuZGFyaWVzLgorICoKKyAqIEVY UExBSU4gcGFyZW50aGVzaXplcyBldmVyeSBBTFQgb24gaXRzIG93biwgc28gYSB0b3AtbGV2ZWwg IkEgfCBCIiBkZXBhcnNlcworICogYXMgIihhIHwgYikiLiAgVGhpcyBzZWxmLWNvbnNpc3RlbnQg RVhQTEFJTiBmb3JtIGlzIHRoZSBjb3JyZWN0bmVzcyBvcmFjbGUKKyAqIGhlcmU7IHBnX2dldF92 aWV3ZGVmIGRpZmZlcnMsIGFzIGl0cyBwYXJlbnMgY29tZSBvbmx5IGZyb20gYW4gZW5jbG9zaW5n CisgKiBHUk9VUC4gIEFic29ycHRpb24gbWFya2VycyAoJyAiKSBhcmUgb3J0aG9nb25hbCBhbmQg aGFuZGxlZCBieQorICogYXBwZW5kX3Jwcl9xdWFudGlmaWVyKCkuCisgKgorICogVHdvIGNvbXBp bGVyIGludmFyaWFudHMgaG9sZCB0aHJvdWdob3V0OiB7MSwxfSBncm91cHMgYXJlIHVud3JhcHBl ZCBiZWZvcmUKKyAqIGJ5dGVjb2RlIGdlbmVyYXRpb24gKHNvIGV2ZXJ5IEJFR0lOL0VORCBncm91 cCBjYXJyaWVzIGEgbm9uLXRyaXZpYWwKKyAqIHF1YW50aWZpZXIsIGFuZCBhIGxvbmUgQUxUIGlu c2lkZSBhIGdyb3VwIGFsd2F5cyBzcGFucyB0byB0aGUgZ3JvdXAncyBFTkQpLAorICogYW5kIGEg Z3JvdXAncyBxdWFudGlmaWVyIGlzIHJlYWQgZnJvbSBpdHMgRU5EIGVsZW1lbnQgKHRoZSBCRUdJ TiBjb3B5IGlzCisgKiBpZ25vcmVkKS4KKyAqLworc3RhdGljIGNoYXIgKgorZGVwYXJzZV9ycHJf cGF0dGVybihSUFJQYXR0ZXJuICpwYXR0ZXJuKQoreworCVN0cmluZ0luZm9EYXRhIGJ1ZjsKKwor CUFzc2VydChwYXR0ZXJuICE9IE5VTEwgJiYgcGF0dGVybi0+bnVtRWxlbWVudHMgPj0gMik7CisK Kwlpbml0U3RyaW5nSW5mbygmYnVmKTsKKwlkZXBhcnNlX3Jwcl9zZXEocGF0dGVybiwgMCwgcGF0 dGVybi0+bnVtRWxlbWVudHMsICZidWYpOworCXJldHVybiBidWYuZGF0YTsKK30KKworLyoKKyAq IERlcGFyc2UgYSBydW4gb2Ygc2libGluZyBlbGVtZW50cyBpbiBbc3RhcnQsIGxpbWl0KSwgc2Vw YXJhdGVkIGJ5IHNwYWNlcy4KKyAqCisgKiBTdG9wcyBhdCBsaW1pdCBvciBhdCB0aGUgRklOIHRl cm1pbmF0b3IgKHRvcC1sZXZlbCBjYWxsIHBhc3NlcyBsaW1pdCA9CisgKiBudW1FbGVtZW50cywg d2hlcmUgdGhlIGxhc3QgZWxlbWVudCBpcyBGSU4pLiAgUmV0dXJucyB0aGUgaW5kZXggcmVhY2hl ZC4KKyAqLworc3RhdGljIGludAorZGVwYXJzZV9ycHJfc2VxKFJQUlBhdHRlcm4gKnBhdHRlcm4s IGludCBzdGFydCwgaW50IGxpbWl0LCBTdHJpbmdJbmZvIGJ1ZikKK3sKKwlpbnQJCQlpID0gc3Rh cnQ7CisJYm9vbAkJZmlyc3QgPSB0cnVlOworCisJd2hpbGUgKGkgPCBsaW1pdCAmJiAhUlBSRWxl bUlzRmluKCZwYXR0ZXJuLT5lbGVtZW50c1tpXSkpCisJeworCQlpZiAoIWZpcnN0KQorCQkJYXBw ZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnICcpOworCQlmaXJzdCA9IGZhbHNlOworCQlpID0gZGVw YXJzZV9ycHJfbm9kZShwYXR0ZXJuLCBpLCBsaW1pdCwgYnVmKTsKKwl9CisJcmV0dXJuIGk7Cit9 CisKKy8qCisgKiBEZXBhcnNlIHRoZSBzaW5nbGUgY29uc3RydWN0IHN0YXJ0aW5nIGF0IGluZGV4 IGksIGJvdW5kZWQgYnkgdGhlIGluaGVyaXRlZAorICogbGltaXQuICBSZXR1cm5zIHRoZSBpbmRl eCBqdXN0IHBhc3QgdGhlIGNvbnN0cnVjdC4KKyAqCisgKiBBIFZBUiBpcyBpdHMgbmFtZSBwbHVz IHF1YW50aWZpZXIuICBBIEJFR0lOIG9wZW5zIGEgZ3JvdXAgc3Bhbm5pbmcgdG8gaXRzCisgKiBt YXRjaGluZyBFTkQgKHJwcl9tYXRjaF9lbmQpOyB3aGVuIHRoZSBncm91cCdzIHNvbGUgY2hpbGQg aXMgYW4gQUxUIHRoYXQKKyAqIHJ1bnMgdG8gdGhlIEVORCwgdGhlIEFMVCBzdXBwbGllcyB0aGUg cGFyZW50aGVzZXMgYW5kIHRoZSBncm91cCBvbmx5IGFkZHMKKyAqIHRoZSBxdWFudGlmaWVyLCBv dGhlcndpc2UgdGhlIGdyb3VwIGJvZHkgaXMgd3JhcHBlZCBpbiBpdHMgb3duICIoICkiLiAgQW4K KyAqIEFMVCBydW5zIHRvIGl0cyBkZXB0aC1kZXRlcm1pbmVkIHNjb3BlIGVuZCAoY2FwcGVkIGJ5 IHRoZSBpbmhlcml0ZWQgbGltaXQpCisgKiBhbmQgZW1pdHMgIiggYjEgfCBiMiB8IC4uLiApIiwg ZWFjaCBicmFuY2ggZGVwYXJzZWQgd2l0aGluIHRoZSBib3VuZGFyeQorICogaGFuZGVkIGRvd24g YnkgcnByX25leHRfYnJhbmNoLgorICovCitzdGF0aWMgaW50CitkZXBhcnNlX3Jwcl9ub2RlKFJQ UlBhdHRlcm4gKnBhdHRlcm4sIGludCBpLCBpbnQgbGltaXQsIFN0cmluZ0luZm8gYnVmKQorewor CVJQUlBhdHRlcm5FbGVtZW50ICplbGVtID0gJnBhdHRlcm4tPmVsZW1lbnRzW2ldOworCisJaWYg KFJQUkVsZW1Jc1ZhcihlbGVtKSkKKwl7CisJCUFzc2VydChlbGVtLT52YXJJZCA8IHBhdHRlcm4t Pm51bVZhcnMpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwKKwkJCQkJCQkgICBxdW90 ZV9pZGVudGlmaWVyKHBhdHRlcm4tPnZhck5hbWVzW2VsZW0tPnZhcklkXSkpOworCQlhcHBlbmRf cnByX3F1YW50aWZpZXIoYnVmLCBlbGVtKTsKKwkJcmV0dXJuIGkgKyAxOworCX0KKworCWlmIChS UFJFbGVtSXNCZWdpbihlbGVtKSkKKwl7CisJCWludAkJCWVuZCA9IHJwcl9tYXRjaF9lbmQocGF0 dGVybiwgaSk7CisJCWJvb2wJCWxvbmVBbHQ7CisKKwkJbG9uZUFsdCA9IChpICsgMSA8IGVuZCAm JgorCQkJCSAgIFJQUkVsZW1Jc0FsdCgmcGF0dGVybi0+ZWxlbWVudHNbaSArIDFdKSAmJgorCQkJ CSAgIHJwcl9hbHRfc2NvcGVfZW5kKHBhdHRlcm4sIGkgKyAxKSA9PSBlbmQpOworCisJCWlmIChs b25lQWx0KQorCQl7CisJCQkvKiBUaGUgQUxUIGNoaWxkIGFscmVhZHkgcGFyZW50aGVzaXplcyB0 aGUgd2hvbGUgZ3JvdXAgYm9keS4gKi8KKwkJCSh2b2lkKSBkZXBhcnNlX3Jwcl9ub2RlKHBhdHRl cm4sIGkgKyAxLCBlbmQsIGJ1Zik7CisJCX0KKwkJZWxzZQorCQl7CisJCQlhcHBlbmRTdHJpbmdJ bmZvQ2hhcihidWYsICcoJyk7CisJCQkodm9pZCkgZGVwYXJzZV9ycHJfc2VxKHBhdHRlcm4sIGkg KyAxLCBlbmQsIGJ1Zik7CisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CisJCX0K KwkJYXBwZW5kX3Jwcl9xdWFudGlmaWVyKGJ1ZiwgJnBhdHRlcm4tPmVsZW1lbnRzW2VuZF0pOwor CQlyZXR1cm4gZW5kICsgMTsKKwl9CisKKwlBc3NlcnQoUlBSRWxlbUlzQWx0KGVsZW0pKTsKKwl7 CisJCWludAkJCWFsdEVuZCA9IHJwcl9hbHRfc2NvcGVfZW5kKHBhdHRlcm4sIGkpOworCQlpbnQJ CQliOworCQlib29sCQlmaXJzdCA9IHRydWU7CisKKwkJaWYgKGFsdEVuZCA+IGxpbWl0KQorCQkJ YWx0RW5kID0gbGltaXQ7CisKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKCcpOworCQli ID0gaSArIDE7CisJCXdoaWxlIChiIDwgYWx0RW5kKQorCQl7CisJCQlpbnQJCQluYiA9IHJwcl9u ZXh0X2JyYW5jaChwYXR0ZXJuLCBiLCBhbHRFbmQpOworCisJCQlpZiAoIWZpcnN0KQorCQkJCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIHwgIik7CisJCQlmaXJzdCA9IGZhbHNlOworCQkJ KHZvaWQpIGRlcGFyc2VfcnByX3NlcShwYXR0ZXJuLCBiLCBuYiwgYnVmKTsKKwkJCWIgPSBuYjsK KwkJfQorCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcpJyk7CisJCXJldHVybiBhbHRFbmQ7 CisJfQorfQorCisvKgorICogRmluZCB0aGUgRU5EIHRoYXQgY2xvc2VzIHRoZSBncm91cCBvcGVu ZWQgYnkgdGhlIEJFR0lOIGF0IGJlZ2luSWR4OiB0aGUKKyAqIGZpcnN0IEVORCBhdCB0aGUgc2Ft ZSBkZXB0aCBzY2FubmluZyBmb3J3YXJkLgorICovCitzdGF0aWMgaW50CitycHJfbWF0Y2hfZW5k KFJQUlBhdHRlcm4gKnBhdHRlcm4sIGludCBiZWdpbklkeCkKK3sKKwlSUFJEZXB0aAlkID0gcGF0 dGVybi0+ZWxlbWVudHNbYmVnaW5JZHhdLmRlcHRoOworCWludAkJCWo7CisKKwlmb3IgKGogPSBi ZWdpbklkeCArIDE7IGogPCBwYXR0ZXJuLT5udW1FbGVtZW50czsgaisrKQorCXsKKwkJUlBSUGF0 dGVybkVsZW1lbnQgKmUgPSAmcGF0dGVybi0+ZWxlbWVudHNbal07CisKKwkJaWYgKFJQUkVsZW1J c0VuZChlKSAmJiBlLT5kZXB0aCA9PSBkKQorCQkJcmV0dXJuIGo7CisJfQorCXBnX3VucmVhY2hh YmxlKCk7CQkJLyogYSBCRUdJTiBhbHdheXMgaGFzIGEgbWF0Y2hpbmcgRU5EICovCit9CisKKy8q CisgKiBTY29wZSBlbmQgb2YgdGhlIGNvbnN0cnVjdCBhdCBpbmRleCBpOiB0aGUgZmlyc3QgZm9s bG93aW5nIGVsZW1lbnQgd2hvc2UKKyAqIGRlcHRoIGlzIG5vIGdyZWF0ZXIgdGhhbiBpJ3Mgb3du LiAgRm9yIGFuIEFMVCBtYXJrZXIgdGhpcyBpcyB0aGUgaW5kZXgganVzdAorICogcGFzdCBpdHMg bGFzdCBicmFuY2gsIHNpbmNlIGRlcHRoIHN0YXlzIGNvbnN0YW50IGFjcm9zcyBicmFuY2ggYm91 bmRhcmllcy4KKyAqIEZJTiBzaXRzIGF0IGRlcHRoIDAsIHNvIGEgdG9wLWxldmVsIEFMVCBzdG9w cyB0aGVyZS4KKyAqLworc3RhdGljIGludAorcnByX2FsdF9zY29wZV9lbmQoUlBSUGF0dGVybiAq cGF0dGVybiwgaW50IGkpCit7CisJUlBSRGVwdGgJZCA9IHBhdHRlcm4tPmVsZW1lbnRzW2ldLmRl cHRoOworCWludAkJCWs7CisKKwlmb3IgKGsgPSBpICsgMTsgayA8IHBhdHRlcm4tPm51bUVsZW1l bnRzOyBrKyspCisJeworCQlpZiAocGF0dGVybi0+ZWxlbWVudHNba10uZGVwdGggPD0gZCkKKwkJ CXJldHVybiBrOworCX0KKwlyZXR1cm4gcGF0dGVybi0+bnVtRWxlbWVudHM7Cit9CisKKy8qCisg KiBCb3VuZGFyeSBvZiB0aGUgYWx0ZXJuYXRpb24gYnJhbmNoIHN0YXJ0aW5nIGF0IGIgKGkuZS4g dGhlIHN0YXJ0IG9mIHRoZSBuZXh0CisgKiBicmFuY2gsIG9yIGFsdEVuZCBpZiBiIGlzIHRoZSBs YXN0IGJyYW5jaCkuCisgKgorICogVGhlIGJyYW5jaC1zdGFydCBlbGVtZW50J3MganVtcCBwb2lu dHMgYXQgdGhlIG5leHQgYnJhbmNoIHdoZW4gdGhpcyBpcyBub3QKKyAqIHRoZSBsYXN0IGJyYW5j aC4gIGp1bXAgaXMgb3ZlcmxvYWRlZCAoYSBncm91cCBCRUdJTiBhbHNvIHVzZXMgaXQgZm9yIGl0 cworICogc2tpcCBwYXRoKSwgc28gY29uZmlybSBhIHJlYWwgYnJhbmNoIGJvdW5kYXJ5IHdpdGgg dGhlIHJlbGF0aXZlIHRlc3QKKyAqIGVsZW1bai0xXS5uZXh0ICE9IGo6IGF0IGEgdHJ1ZSBib3Vu ZGFyeSB0aGUgcHJlY2VkaW5nIGJyYW5jaCdzIHRhaWwgaGFzIGl0cworICogbmV4dCByZWRpcmVj dGVkIHBhc3QgdGhlIGFsdGVybmF0aW9uLCBzbyBpdCBkb2VzIG5vdCBwb2ludCBhdCBqLgorICov CitzdGF0aWMgaW50CitycHJfbmV4dF9icmFuY2goUlBSUGF0dGVybiAqcGF0dGVybiwgaW50IGIs IGludCBhbHRFbmQpCit7CisJaW50CQkJaiA9IHBhdHRlcm4tPmVsZW1lbnRzW2JdLmp1bXA7CisK KwlpZiAoaiAhPSBSUFJfRUxFTUlEWF9JTlZBTElEICYmIGogPCBhbHRFbmQgJiYKKwkJcGF0dGVy bi0+ZWxlbWVudHNbaiAtIDFdLm5leHQgIT0gaikKKwkJcmV0dXJuIGo7CisJcmV0dXJuIGFsdEVu ZDsKK30KKwogLyoKICAqIFNob3cgdGhlIHdpbmRvdyBkZWZpbml0aW9uIGZvciBhIFdpbmRvd0Fn ZyBub2RlLgogICovCkBAIC0yOTU2LDYgKzMyMDgsODMgQEAgc2hvd193aW5kb3dfZGVmKFdpbmRv d0FnZ1N0YXRlICpwbGFuc3RhdGUsIExpc3QgKmFuY2VzdG9ycywgRXhwbGFpblN0YXRlICplcykK IAlhcHBlbmRTdHJpbmdJbmZvQ2hhcigmd2J1ZiwgJyknKTsKIAlFeHBsYWluUHJvcGVydHlUZXh0 KCJXaW5kb3ciLCB3YnVmLmRhdGEsIGVzKTsKIAlwZnJlZSh3YnVmLmRhdGEpOworCisJLyogU2hv dyBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBwYXR0ZXJuIGlmIHByZXNlbnQgKi8KKwlpZiAod2Fn Zy0+cnBQYXR0ZXJuICE9IE5VTEwpCisJeworCQljaGFyCSAgICpwYXR0ZXJuU3RyID0gZGVwYXJz ZV9ycHJfcGF0dGVybih3YWdnLT5ycFBhdHRlcm4pOworCisJCWlmIChwYXR0ZXJuU3RyICE9IE5V TEwpCisJCXsKKwkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIlBhdHRlcm4iLCBwYXR0ZXJuU3RyLCBl cyk7CisJCQlwZnJlZShwYXR0ZXJuU3RyKTsKKwkJfQorCisJCS8qCisJCSAqIFNob3cgbmF2aWdh dGlvbiBvZmZzZXRzIGZvciB0dXBsZXN0b3JlIHRyaW0uICBGb3IgRVhQTEFJTiBBTkFMWVpFLAor CQkgKiB1c2UgdGhlIGV4ZWN1dG9yLXJlc29sdmVkIHZhbHVlcyAod2hpY2ggbWF5IGRpZmZlciBm cm9tIHRoZSBwbGFuCisJCSAqIHdoZW4gTkVFRFNfRVZBTCB3YXMgcmVzb2x2ZWQgdG8gRklYRUQg b3IgUkVUQUlOX0FMTCBhdCBpbml0KS4KKwkJICovCisJCXsKKwkJCVJQUk5hdk9mZnNldEtpbmQg bWF4S2luZCA9IHdhZ2ctPm5hdk1heE9mZnNldEtpbmQ7CisJCQlpbnQ2NAkJbWF4T2Zmc2V0ID0g d2FnZy0+bmF2TWF4T2Zmc2V0OworCQkJUlBSTmF2T2Zmc2V0S2luZCBmaXJzdEtpbmQgPSB3YWdn LT5uYXZGaXJzdE9mZnNldEtpbmQ7CisJCQlpbnQ2NAkJZmlyc3RPZmZzZXQgPSB3YWdnLT5uYXZG aXJzdE9mZnNldDsKKworCQkJaWYgKGVzLT5hbmFseXplKQorCQkJeworCQkJCW1heEtpbmQgPSBw bGFuc3RhdGUtPm5hdk1heE9mZnNldEtpbmQ7CisJCQkJbWF4T2Zmc2V0ID0gcGxhbnN0YXRlLT5u YXZNYXhPZmZzZXQ7CisJCQkJZmlyc3RLaW5kID0gcGxhbnN0YXRlLT5uYXZGaXJzdE9mZnNldEtp bmQ7CisJCQkJZmlyc3RPZmZzZXQgPSBwbGFuc3RhdGUtPm5hdkZpcnN0T2Zmc2V0OworCQkJfQor CisJCQlzd2l0Y2ggKG1heEtpbmQpCisJCQl7CisJCQkJY2FzZSBSUFJfTkFWX09GRlNFVF9ORUVE U19FVkFMOgorCQkJCQlFeHBsYWluUHJvcGVydHlUZXh0KCJOYXYgTWFyayBMb29rYmFjayIsICJy dW50aW1lIiwgZXMpOworCQkJCQlicmVhazsKKwkJCQljYXNlIFJQUl9OQVZfT0ZGU0VUX1JFVEFJ Tl9BTEw6CisJCQkJCUV4cGxhaW5Qcm9wZXJ0eVRleHQoIk5hdiBNYXJrIExvb2tiYWNrIiwgInJl dGFpbiBhbGwiLCBlcyk7CisJCQkJCWJyZWFrOworCQkJCWNhc2UgUlBSX05BVl9PRkZTRVRfRklY RUQ6CisJCQkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5hdiBNYXJrIExvb2tiYWNrIiwgTlVM TCwKKwkJCQkJCQkJCQkgICBtYXhPZmZzZXQsIGVzKTsKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVs dDoKKwkJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBSUFIgbmF2IG9mZnNldCBraW5kOiAl ZCIsCisJCQkJCQkgbWF4S2luZCk7CisJCQkJCWJyZWFrOworCQkJfQorCisJCQlpZiAod2FnZy0+ aGFzRmlyc3ROYXYpCisJCQl7CisJCQkJc3dpdGNoIChmaXJzdEtpbmQpCisJCQkJeworCQkJCQlj YXNlIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUw6CisJCQkJCQlFeHBsYWluUHJvcGVydHlUZXh0 KCJOYXYgTWFyayBMb29rYWhlYWQiLCAicnVudGltZSIsCisJCQkJCQkJCQkJCWVzKTsKKwkJCQkJ CWJyZWFrOworCQkJCQljYXNlIFJQUl9OQVZfT0ZGU0VUX1JFVEFJTl9BTEw6CisJCQkJCQlFeHBs YWluUHJvcGVydHlUZXh0KCJOYXYgTWFyayBMb29rYWhlYWQiLCAicmV0YWluIGFsbCIsCisJCQkJ CQkJCQkJCWVzKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIFJQUl9OQVZfT0ZGU0VUX0ZJWEVE OgorCQkJCQkJaWYgKGZpcnN0T2Zmc2V0ID09IFBHX0lOVDY0X01BWCkKKwkJCQkJCQlFeHBsYWlu UHJvcGVydHlUZXh0KCJOYXYgTWFyayBMb29rYWhlYWQiLCAiaW5maW5pdGUiLAorCQkJCQkJCQkJ CQkJZXMpOworCQkJCQkJZWxzZQorCQkJCQkJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5hdiBN YXJrIExvb2thaGVhZCIsIE5VTEwsCisJCQkJCQkJCQkJCQkgICBmaXJzdE9mZnNldCwgZXMpOwor CQkJCQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIFJQUiBuYXYgb2Zmc2V0IGtpbmQ6ICVkIiwKKwkJCQkJCQkgZmlyc3RLaW5kKTsKKwkJCQkJ CWJyZWFrOworCQkJCX0KKwkJCX0KKwkJfQorCX0KIH0KIAogLyoKQEAgLTM1MDgsNiArMzgzNyw3 IEBAIHNob3dfd2luZG93YWdnX2luZm8oV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBFeHBsYWlu U3RhdGUgKmVzKQogewogCWNoYXIJICAgKm1heFN0b3JhZ2VUeXBlOwogCWludDY0CQltYXhTcGFj ZVVzZWQ7CisJV2luZG93QWdnICAqd2FnZyA9IChXaW5kb3dBZ2cgKikgd2luc3RhdGUtPnNzLnBz LnBsYW47CiAKIAlUdXBsZXN0b3Jlc3RhdGUgKnR1cHN0b3JlID0gd2luc3RhdGUtPmJ1ZmZlcjsK IApAQCAtMzUyMCw2ICszODUwLDE2MCBAQCBzaG93X3dpbmRvd2FnZ19pbmZvKFdpbmRvd0FnZ1N0 YXRlICp3aW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcykKIAogCXR1cGxlc3RvcmVfZ2V0X3N0YXRz KHR1cHN0b3JlLCAmbWF4U3RvcmFnZVR5cGUsICZtYXhTcGFjZVVzZWQpOwogCXNob3dfc3RvcmFn ZV9pbmZvKG1heFN0b3JhZ2VUeXBlLCBtYXhTcGFjZVVzZWQsIGVzKTsKKworCS8qIFNob3cgTkZB IHN0YXRpc3RpY3MgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uICovCisJaWYgKHdhZ2ctPnJw UGF0dGVybiAhPSBOVUxMKQorCQlzaG93X3Jwcl9uZmFfc3RhdHMod2luc3RhdGUsIGVzKTsKK30K KworLyoKKyAqIFNob3cgTkZBIHN0YXRpc3RpY3MgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9u IG9uIFdpbmRvd0FnZyBub2RlLgorICovCitzdGF0aWMgdm9pZAorc2hvd19ycHJfbmZhX3N0YXRz KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgRXhwbGFpblN0YXRlICplcykKK3sKKwlpZiAoZXMt PmZvcm1hdCAhPSBFWFBMQUlOX0ZPUk1BVF9URVhUKQorCXsKKwkJLyogU3RhdGUgYW5kIGNvbnRl eHQgY291bnRlcnMgKi8KKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTkZBIFN0YXRlcyBQZWFr IiwgTlVMTCwgd2luc3RhdGUtPm5mYVN0YXRlc01heCwgZXMpOworCQlFeHBsYWluUHJvcGVydHlJ bnRlZ2VyKCJORkEgU3RhdGVzIFRvdGFsIiwgTlVMTCwgd2luc3RhdGUtPm5mYVN0YXRlc1RvdGFs Q3JlYXRlZCwgZXMpOworCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgU3RhdGVzIE1lcmdl ZCIsIE5VTEwsIHdpbnN0YXRlLT5uZmFTdGF0ZXNNZXJnZWQsIGVzKTsKKwkJRXhwbGFpblByb3Bl cnR5SW50ZWdlcigiTkZBIENvbnRleHRzIFBlYWsiLCBOVUxMLCB3aW5zdGF0ZS0+bmZhQ29udGV4 dHNNYXgsIGVzKTsKKwkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTkZBIENvbnRleHRzIFRvdGFs IiwgTlVMTCwgd2luc3RhdGUtPm5mYUNvbnRleHRzVG90YWxDcmVhdGVkLCBlcyk7CisJCUV4cGxh aW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBDb250ZXh0cyBBYnNvcmJlZCIsIE5VTEwsIHdpbnN0YXRl LT5uZmFDb250ZXh0c0Fic29yYmVkLCBlcyk7CisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5G QSBDb250ZXh0cyBTa2lwcGVkIiwgTlVMTCwgd2luc3RhdGUtPm5mYUNvbnRleHRzU2tpcHBlZCwg ZXMpOworCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgQ29udGV4dHMgUHJ1bmVkIiwgTlVM TCwgd2luc3RhdGUtPm5mYUNvbnRleHRzUHJ1bmVkLCBlcyk7CisKKwkJLyogTWF0Y2gvbWlzbWF0 Y2ggY291bnRzIGFuZCBsZW5ndGggc3RhdGlzdGljcyAqLworCQlFeHBsYWluUHJvcGVydHlJbnRl Z2VyKCJORkEgTWF0Y2hlZCIsIE5VTEwsIHdpbnN0YXRlLT5uZmFNYXRjaGVzU3VjY2VlZGVkLCBl cyk7CisJCUV4cGxhaW5Qcm9wZXJ0eUludGVnZXIoIk5GQSBNaXNtYXRjaGVkIiwgTlVMTCwgd2lu c3RhdGUtPm5mYU1hdGNoZXNGYWlsZWQsIGVzKTsKKwkJaWYgKHdpbnN0YXRlLT5uZmFNYXRjaGVz U3VjY2VlZGVkID4gMCkKKwkJeworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTkZBIE1hdGNo IExlbmd0aCBNaW4iLCBOVUxMLCB3aW5zdGF0ZS0+bmZhTWF0Y2hMZW4ubWluLCBlcyk7CisJCQlF eHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgTWF0Y2ggTGVuZ3RoIE1heCIsIE5VTEwsIHdpbnN0 YXRlLT5uZmFNYXRjaExlbi5tYXgsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJORkEg TWF0Y2ggTGVuZ3RoIEF2ZyIsIE5VTEwsCisJCQkJCQkJCSAoZG91YmxlKSB3aW5zdGF0ZS0+bmZh TWF0Y2hMZW4udG90YWwgLyB3aW5zdGF0ZS0+bmZhTWF0Y2hlc1N1Y2NlZWRlZCwgMSwKKwkJCQkJ CQkJIGVzKTsKKwkJfQorCQlpZiAod2luc3RhdGUtPm5mYU1hdGNoZXNGYWlsZWQgPiAwKQorCQl7 CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgTWlzbWF0Y2ggTGVuZ3RoIE1pbiIsIE5V TEwsIHdpbnN0YXRlLT5uZmFGYWlsTGVuLm1pbiwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5SW50 ZWdlcigiTkZBIE1pc21hdGNoIExlbmd0aCBNYXgiLCBOVUxMLCB3aW5zdGF0ZS0+bmZhRmFpbExl bi5tYXgsIGVzKTsKKwkJCUV4cGxhaW5Qcm9wZXJ0eUZsb2F0KCJORkEgTWlzbWF0Y2ggTGVuZ3Ro IEF2ZyIsIE5VTEwsCisJCQkJCQkJCSAoZG91YmxlKSB3aW5zdGF0ZS0+bmZhRmFpbExlbi50b3Rh bCAvIHdpbnN0YXRlLT5uZmFNYXRjaGVzRmFpbGVkLCAxLAorCQkJCQkJCQkgZXMpOworCQl9CisK KwkJLyogQWJzb3JiZWQvc2tpcHBlZCBjb250ZXh0IGxlbmd0aCBzdGF0aXN0aWNzICovCisJCWlm ICh3aW5zdGF0ZS0+bmZhQ29udGV4dHNBYnNvcmJlZCA+IDApCisJCXsKKwkJCUV4cGxhaW5Qcm9w ZXJ0eUludGVnZXIoIk5GQSBBYnNvcmJlZCBMZW5ndGggTWluIiwgTlVMTCwgd2luc3RhdGUtPm5m YUFic29yYmVkTGVuLm1pbiwgZXMpOworCQkJRXhwbGFpblByb3BlcnR5SW50ZWdlcigiTkZBIEFi c29yYmVkIExlbmd0aCBNYXgiLCBOVUxMLCB3aW5zdGF0ZS0+bmZhQWJzb3JiZWRMZW4ubWF4LCBl cyk7CisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiTkZBIEFic29yYmVkIExlbmd0aCBBdmciLCBO VUxMLAorCQkJCQkJCQkgKGRvdWJsZSkgd2luc3RhdGUtPm5mYUFic29yYmVkTGVuLnRvdGFsIC8g d2luc3RhdGUtPm5mYUNvbnRleHRzQWJzb3JiZWQsIDEsCisJCQkJCQkJCSBlcyk7CisJCX0KKwkJ aWYgKHdpbnN0YXRlLT5uZmFDb250ZXh0c1NraXBwZWQgPiAwKQorCQl7CisJCQlFeHBsYWluUHJv cGVydHlJbnRlZ2VyKCJORkEgU2tpcHBlZCBMZW5ndGggTWluIiwgTlVMTCwgd2luc3RhdGUtPm5m YVNraXBwZWRMZW4ubWluLCBlcyk7CisJCQlFeHBsYWluUHJvcGVydHlJbnRlZ2VyKCJORkEgU2tp cHBlZCBMZW5ndGggTWF4IiwgTlVMTCwgd2luc3RhdGUtPm5mYVNraXBwZWRMZW4ubWF4LCBlcyk7 CisJCQlFeHBsYWluUHJvcGVydHlGbG9hdCgiTkZBIFNraXBwZWQgTGVuZ3RoIEF2ZyIsIE5VTEws CisJCQkJCQkJCSAoZG91YmxlKSB3aW5zdGF0ZS0+bmZhU2tpcHBlZExlbi50b3RhbCAvIHdpbnN0 YXRlLT5uZmFDb250ZXh0c1NraXBwZWQsIDEsCisJCQkJCQkJCSBlcyk7CisJCX0KKwl9CisJZWxz ZQorCXsKKwkJLyogU3RhdGUgYW5kIGNvbnRleHQgY291bnRlcnMgKi8KKwkJRXhwbGFpbkluZGVu dFRleHQoZXMpOworCQlhcHBlbmRTdHJpbmdJbmZvKGVzLT5zdHIsCisJCQkJCQkgIk5GQSBTdGF0 ZXM6ICIgSU5UNjRfRk9STUFUICIgcGVhaywgIiBJTlQ2NF9GT1JNQVQgIiB0b3RhbCwgIiBJTlQ2 NF9GT1JNQVQgIiBtZXJnZWRcbiIsCisJCQkJCQkgd2luc3RhdGUtPm5mYVN0YXRlc01heCwKKwkJ CQkJCSB3aW5zdGF0ZS0+bmZhU3RhdGVzVG90YWxDcmVhdGVkLAorCQkJCQkJIHdpbnN0YXRlLT5u ZmFTdGF0ZXNNZXJnZWQpOworCQlFeHBsYWluSW5kZW50VGV4dChlcyk7CisJCWFwcGVuZFN0cmlu Z0luZm8oZXMtPnN0ciwKKwkJCQkJCSAiTkZBIENvbnRleHRzOiAiIElOVDY0X0ZPUk1BVCAiIHBl YWssICIgSU5UNjRfRk9STUFUICIgdG90YWwsICIgSU5UNjRfRk9STUFUICIgcHJ1bmVkXG4iLAor CQkJCQkJIHdpbnN0YXRlLT5uZmFDb250ZXh0c01heCwKKwkJCQkJCSB3aW5zdGF0ZS0+bmZhQ29u dGV4dHNUb3RhbENyZWF0ZWQsCisJCQkJCQkgd2luc3RhdGUtPm5mYUNvbnRleHRzUHJ1bmVkKTsK KworCQkvKiBNYXRjaC9taXNtYXRjaCBjb3VudHMgd2l0aCBsZW5ndGggbWluL21heC9hdmcgKi8K KwkJRXhwbGFpbkluZGVudFRleHQoZXMpOworCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5z dHIsICJORkE6ICIpOworCQlpZiAod2luc3RhdGUtPm5mYU1hdGNoZXNTdWNjZWVkZWQgPiAwKQor CQl7CisJCQlkb3VibGUJCWF2Z0xlbiA9IChkb3VibGUpIHdpbnN0YXRlLT5uZmFNYXRjaExlbi50 b3RhbCAvIHdpbnN0YXRlLT5uZmFNYXRjaGVzU3VjY2VlZGVkOworCisJCQlhcHBlbmRTdHJpbmdJ bmZvKGVzLT5zdHIsCisJCQkJCQkJIElOVDY0X0ZPUk1BVCAiIG1hdGNoZWQgKGxlbiAiIElOVDY0 X0ZPUk1BVCAiLyIgSU5UNjRfRk9STUFUICIvJS4xZikiLAorCQkJCQkJCSB3aW5zdGF0ZS0+bmZh TWF0Y2hlc1N1Y2NlZWRlZCwKKwkJCQkJCQkgd2luc3RhdGUtPm5mYU1hdGNoTGVuLm1pbiwKKwkJ CQkJCQkgd2luc3RhdGUtPm5mYU1hdGNoTGVuLm1heCwKKwkJCQkJCQkgYXZnTGVuKTsKKwkJfQor CQllbHNlCisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIjAgbWF0Y2hl ZCIpOworCQl9CisJCWlmICh3aW5zdGF0ZS0+bmZhTWF0Y2hlc0ZhaWxlZCA+IDApCisJCXsKKwkJ CWRvdWJsZQkJYXZnRmFpbCA9IChkb3VibGUpIHdpbnN0YXRlLT5uZmFGYWlsTGVuLnRvdGFsIC8g d2luc3RhdGUtPm5mYU1hdGNoZXNGYWlsZWQ7CisKKwkJCWFwcGVuZFN0cmluZ0luZm8oZXMtPnN0 ciwKKwkJCQkJCQkgIiwgIiBJTlQ2NF9GT1JNQVQgIiBtaXNtYXRjaGVkIChsZW4gIiBJTlQ2NF9G T1JNQVQgIi8iIElOVDY0X0ZPUk1BVCAiLyUuMWYpIiwKKwkJCQkJCQkgd2luc3RhdGUtPm5mYU1h dGNoZXNGYWlsZWQsCisJCQkJCQkJIHdpbnN0YXRlLT5uZmFGYWlsTGVuLm1pbiwKKwkJCQkJCQkg d2luc3RhdGUtPm5mYUZhaWxMZW4ubWF4LAorCQkJCQkJCSBhdmdGYWlsKTsKKwkJfQorCQllbHNl CisJCXsKKwkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoZXMtPnN0ciwgIiwgMCBtaXNtYXRjaGVk Iik7CisJCX0KKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoZXMtPnN0ciwgJ1xuJyk7CisKKwkJLyog QWJzb3JiZWQvc2tpcHBlZCBjb250ZXh0IGxlbmd0aCBzdGF0aXN0aWNzICovCisJCWlmICh3aW5z dGF0ZS0+bmZhQ29udGV4dHNBYnNvcmJlZCA+IDAgfHwgd2luc3RhdGUtPm5mYUNvbnRleHRzU2tp cHBlZCA+IDApCisJCXsKKwkJCUV4cGxhaW5JbmRlbnRUZXh0KGVzKTsKKwkJCWFwcGVuZFN0cmlu Z0luZm9TdHJpbmcoZXMtPnN0ciwgIk5GQTogIik7CisKKwkJCWlmICh3aW5zdGF0ZS0+bmZhQ29u dGV4dHNBYnNvcmJlZCA+IDApCisJCQl7CisJCQkJZG91YmxlCQlhdmdBYnNvcmJlZCA9IChkb3Vi bGUpIHdpbnN0YXRlLT5uZmFBYnNvcmJlZExlbi50b3RhbCAvIHdpbnN0YXRlLT5uZmFDb250ZXh0 c0Fic29yYmVkOworCisJCQkJYXBwZW5kU3RyaW5nSW5mbyhlcy0+c3RyLAorCQkJCQkJCQkgSU5U NjRfRk9STUFUICIgYWJzb3JiZWQgKGxlbiAiIElOVDY0X0ZPUk1BVCAiLyIgSU5UNjRfRk9STUFU ICIvJS4xZikiLAorCQkJCQkJCQkgd2luc3RhdGUtPm5mYUNvbnRleHRzQWJzb3JiZWQsCisJCQkJ CQkJCSB3aW5zdGF0ZS0+bmZhQWJzb3JiZWRMZW4ubWluLAorCQkJCQkJCQkgd2luc3RhdGUtPm5m YUFic29yYmVkTGVuLm1heCwKKwkJCQkJCQkJIGF2Z0Fic29yYmVkKTsKKwkJCX0KKwkJCWVsc2UK KwkJCXsKKwkJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGVzLT5zdHIsICIwIGFic29yYmVkIik7 CisJCQl9CisKKwkJCWlmICh3aW5zdGF0ZS0+bmZhQ29udGV4dHNTa2lwcGVkID4gMCkKKwkJCXsK KwkJCQlkb3VibGUJCWF2Z1NraXBwZWQgPSAoZG91YmxlKSB3aW5zdGF0ZS0+bmZhU2tpcHBlZExl bi50b3RhbCAvIHdpbnN0YXRlLT5uZmFDb250ZXh0c1NraXBwZWQ7CisKKwkJCQlhcHBlbmRTdHJp bmdJbmZvKGVzLT5zdHIsCisJCQkJCQkJCSAiLCAiIElOVDY0X0ZPUk1BVCAiIHNraXBwZWQgKGxl biAiIElOVDY0X0ZPUk1BVCAiLyIgSU5UNjRfRk9STUFUICIvJS4xZikiLAorCQkJCQkJCQkgd2lu c3RhdGUtPm5mYUNvbnRleHRzU2tpcHBlZCwKKwkJCQkJCQkJIHdpbnN0YXRlLT5uZmFTa2lwcGVk TGVuLm1pbiwKKwkJCQkJCQkJIHdpbnN0YXRlLT5uZmFTa2lwcGVkTGVuLm1heCwKKwkJCQkJCQkJ IGF2Z1NraXBwZWQpOworCQkJfQorCQkJZWxzZQorCQkJeworCQkJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoZXMtPnN0ciwgIiwgMCBza2lwcGVkIik7CisJCQl9CisKKwkJCWFwcGVuZFN0cmluZ0lu Zm9DaGFyKGVzLT5zdHIsICdcbicpOworCQl9CisJfQogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvTWFrZWZpbGUgYi9zcmMvYmFja2VuZC9leGVjdXRvci9NYWtlZmls ZQppbmRleCAxMTExOGQwY2UwMi4uMmIyNTc0Mjc3OTUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL01ha2VmaWxlCkBA IC0yNSw2ICsyNSw3IEBAIE9CSlMgPSBcCiAJZXhlY1BhcmFsbGVsLm8gXAogCWV4ZWNQYXJ0aXRp b24ubyBcCiAJZXhlY1Byb2Nub2RlLm8gXAorCWV4ZWNSUFIubyBcCiAJZXhlY1JlcGxpY2F0aW9u Lm8gXAogCWV4ZWNTUkYubyBcCiAJZXhlY1NjYW4ubyBcCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjRXhwci5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpp bmRleCBjZmVhN2UxNjBjMi4uMzAzNjc4MjUwMzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4 ZWN1dG9yL2V4ZWNFeHByLmMKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHIuYwpA QCAtMTE4OSw2ICsxMTg5LDk4IEBAIEV4ZWNJbml0RXhwclJlYyhFeHByICpub2RlLCBFeHByU3Rh dGUgKnN0YXRlLAogCQkJCWJyZWFrOwogCQkJfQogCisJCWNhc2UgVF9SUFJOYXZFeHByOgorCQkJ eworCQkJCS8qCisJCQkJICogUlBSIG5hdmlnYXRpb24gZnVuY3Rpb25zIChQUkVWL05FWFQvRklS U1QvTEFTVCkgYXJlCisJCQkJICogY29tcGlsZWQgaW50byBFRU9QX1JQUl9OQVZfU0VUIC8gRUVP UF9SUFJfTkFWX1JFU1RPUkUKKwkJCQkgKiBvcGNvZGVzIGluc3RlYWQgb2YgYSBub3JtYWwgZnVu Y3Rpb24gY2FsbC4gIFRoZSBTRVQgb3Bjb2RlCisJCQkJICogc3dhcHMgZWN4dF9vdXRlcnR1cGxl IHRvIHRoZSB0YXJnZXQgcm93LCB0aGUgYXJndW1lbnQKKwkJCQkgKiBleHByZXNzaW9uIGlzIGNv bXBpbGVkIG5vcm1hbGx5IChyZWFkcyBmcm9tIHRoZSBzd2FwcGVkCisJCQkJICogc2xvdCksIGFu ZCB0aGUgUkVTVE9SRSBvcGNvZGUgcmVzdG9yZXMgdGhlIG9yaWdpbmFsIHNsb3QuCisJCQkJICoK KwkJCQkgKiBEZWZhdWx0IG9mZnNldCB3aGVuIG9mZnNldF9hcmcgaXMgTlVMTDogUFJFVi9ORVhU OiAxCisJCQkJICogKHBoeXNpY2FsIG9mZnNldCBmcm9tIGN1cnJlbnRwb3MpIEZJUlNUL0xBU1Q6 IDAgKGxvZ2ljYWwKKwkJCQkgKiBvZmZzZXQgZnJvbSBtYXRjaCBib3VuZGFyeSkKKwkJCQkgKi8K KwkJCQlSUFJOYXZFeHByICpuYXYgPSAoUlBSTmF2RXhwciAqKSBub2RlOworCQkJCVdpbmRvd0Fn Z1N0YXRlICp3aW5zdGF0ZTsKKworCQkJCUFzc2VydChzdGF0ZS0+cGFyZW50ICYmIElzQShzdGF0 ZS0+cGFyZW50LCBXaW5kb3dBZ2dTdGF0ZSkpOworCQkJCXdpbnN0YXRlID0gKFdpbmRvd0FnZ1N0 YXRlICopIHN0YXRlLT5wYXJlbnQ7CisKKwkJCQkvKiBFbWl0IFNFVCBvcGNvZGU6IHN3YXAgc2xv dCB0byB0YXJnZXQgcm93ICovCisJCQkJc2NyYXRjaC5vcGNvZGUgPSBFRU9QX1JQUl9OQVZfU0VU OworCQkJCXNjcmF0Y2guZC5ycHJfbmF2LndpbnN0YXRlID0gd2luc3RhdGU7CisJCQkJc2NyYXRj aC5kLnJwcl9uYXYua2luZCA9IG5hdi0+a2luZDsKKworCQkJCWlmIChuYXYtPmtpbmQgPj0gUlBS X05BVl9QUkVWX0ZJUlNUKQorCQkJCXsKKwkJCQkJLyoKKwkJCQkJICogQ29tcG91bmQgbmF2aWdh dGlvbjogYWxsb2NhdGUgYXJyYXkgb2YgMiBmb3IgaW5uZXIgWzBdCisJCQkJCSAqIGFuZCBvdXRl ciBbMV0gb2Zmc2V0cy4KKwkJCQkJICovCisJCQkJCURhdHVtCSAgICpvZmZzZXRfdmFsdWVzID0g cGFsbG9jX2FycmF5KERhdHVtLCAyKTsKKwkJCQkJYm9vbAkgICAqb2Zmc2V0X2lzbnVsbHMgPSBw YWxsb2NfYXJyYXkoYm9vbCwgMik7CisKKwkJCQkJLyogSW5uZXIgb2Zmc2V0IChkZWZhdWx0IDAg Zm9yIEZJUlNUL0xBU1QpICovCisJCQkJCWlmIChuYXYtPm9mZnNldF9hcmcgIT0gTlVMTCkKKwkJ CQkJCUV4ZWNJbml0RXhwclJlYyhuYXYtPm9mZnNldF9hcmcsIHN0YXRlLAorCQkJCQkJCQkJCSZv ZmZzZXRfdmFsdWVzWzBdLCAmb2Zmc2V0X2lzbnVsbHNbMF0pOworCQkJCQllbHNlCisJCQkJCXsK KwkJCQkJCW9mZnNldF92YWx1ZXNbMF0gPSBJbnQ2NEdldERhdHVtKDApOworCQkJCQkJb2Zmc2V0 X2lzbnVsbHNbMF0gPSBmYWxzZTsKKwkJCQkJfQorCisJCQkJCS8qIE91dGVyIG9mZnNldCAoZGVm YXVsdCAxIGZvciBQUkVWL05FWFQpICovCisJCQkJCWlmIChuYXYtPmNvbXBvdW5kX29mZnNldF9h cmcgIT0gTlVMTCkKKwkJCQkJCUV4ZWNJbml0RXhwclJlYyhuYXYtPmNvbXBvdW5kX29mZnNldF9h cmcsIHN0YXRlLAorCQkJCQkJCQkJCSZvZmZzZXRfdmFsdWVzWzFdLCAmb2Zmc2V0X2lzbnVsbHNb MV0pOworCQkJCQllbHNlCisJCQkJCXsKKwkJCQkJCW9mZnNldF92YWx1ZXNbMV0gPSBJbnQ2NEdl dERhdHVtKDEpOworCQkJCQkJb2Zmc2V0X2lzbnVsbHNbMV0gPSBmYWxzZTsKKwkJCQkJfQorCisJ CQkJCXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSA9IG9mZnNldF92YWx1ZXM7CisJCQkJ CXNjcmF0Y2guZC5ycHJfbmF2Lm9mZnNldF9pc251bGwgPSBvZmZzZXRfaXNudWxsczsKKwkJCQl9 CisJCQkJZWxzZSBpZiAobmF2LT5vZmZzZXRfYXJnICE9IE5VTEwpCisJCQkJeworCQkJCQkvKiBT aW1wbGUgbmF2aWdhdGlvbiB3aXRoIGV4cGxpY2l0IG9mZnNldCAqLworCQkJCQlEYXR1bQkgICAq b2Zmc2V0X3ZhbHVlID0gcGFsbG9jX29iamVjdChEYXR1bSk7CisJCQkJCWJvb2wJICAgKm9mZnNl dF9pc251bGwgPSBwYWxsb2Nfb2JqZWN0KGJvb2wpOworCisJCQkJCUV4ZWNJbml0RXhwclJlYyhu YXYtPm9mZnNldF9hcmcsIHN0YXRlLAorCQkJCQkJCQkJb2Zmc2V0X3ZhbHVlLCBvZmZzZXRfaXNu dWxsKTsKKwkJCQkJc2NyYXRjaC5kLnJwcl9uYXYub2Zmc2V0X3ZhbHVlID0gb2Zmc2V0X3ZhbHVl OworCQkJCQlzY3JhdGNoLmQucnByX25hdi5vZmZzZXRfaXNudWxsID0gb2Zmc2V0X2lzbnVsbDsK KwkJCQl9CisJCQkJZWxzZQorCQkJCXsKKwkJCQkJLyogU2ltcGxlIG5hdmlnYXRpb24gd2l0aCBk ZWZhdWx0IG9mZnNldCAqLworCQkJCQlzY3JhdGNoLmQucnByX25hdi5vZmZzZXRfdmFsdWUgPSBO VUxMOworCQkJCQlzY3JhdGNoLmQucnByX25hdi5vZmZzZXRfaXNudWxsID0gTlVMTDsKKwkJCQl9 CisKKwkJCQlFeHByRXZhbFB1c2hTdGVwKHN0YXRlLCAmc2NyYXRjaCk7CisKKwkJCQkvKiBDb21w aWxlIHRoZSBhcmd1bWVudCBleHByZXNzaW9uIG5vcm1hbGx5ICovCisJCQkJRXhlY0luaXRFeHBy UmVjKG5hdi0+YXJnLCBzdGF0ZSwgcmVzdiwgcmVzbnVsbCk7CisKKwkJCQkvKiBFbWl0IFJFU1RP UkUgb3Bjb2RlOiByZXN0b3JlIG9yaWdpbmFsIHNsb3QgKi8KKwkJCQlzY3JhdGNoLm9wY29kZSA9 IEVFT1BfUlBSX05BVl9SRVNUT1JFOworCQkJCXNjcmF0Y2gucmVzdmFsdWUgPSByZXN2OworCQkJ CXNjcmF0Y2gucmVzbnVsbCA9IHJlc251bGw7CisJCQkJc2NyYXRjaC5kLnJwcl9uYXYud2luc3Rh dGUgPSB3aW5zdGF0ZTsKKwkJCQlnZXRfdHlwbGVuYnl2YWwobmF2LT5yZXN1bHR0eXBlLAorCQkJ CQkJCQkmc2NyYXRjaC5kLnJwcl9uYXYucmVzdWx0dHlwbGVuLAorCQkJCQkJCQkmc2NyYXRjaC5k LnJwcl9uYXYucmVzdWx0dHlwYnl2YWwpOworCQkJCUV4cHJFdmFsUHVzaFN0ZXAoc3RhdGUsICZz Y3JhdGNoKTsKKwkJCQlicmVhazsKKwkJCX0KKwogCQljYXNlIFRfRnVuY0V4cHI6CiAJCQl7CiAJ CQkJRnVuY0V4cHIgICAqZnVuYyA9IChGdW5jRXhwciAqKSBub2RlOwpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvZXhlY3V0b3IvZXhlY0V4cHJJbnRlcnAuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9y L2V4ZWNFeHBySW50ZXJwLmMKaW5kZXggMDYzNGFmOTY0YTkuLjgwNWM4NTgzZmIyIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjRXhwckludGVycC5jCisrKyBiL3NyYy9iYWNr ZW5kL2V4ZWN1dG9yL2V4ZWNFeHBySW50ZXJwLmMKQEAgLTU3LDExICs1NywxMyBAQAogI2luY2x1 ZGUgInBvc3RncmVzLmgiCiAKICNpbmNsdWRlICJhY2Nlc3MvaGVhcHRvYXN0LmgiCisjaW5jbHVk ZSAiY29tbW9uL2ludC5oIgogI2luY2x1ZGUgImFjY2Vzcy90dXBjb252ZXJ0LmgiCiAjaW5jbHVk ZSAiY2F0YWxvZy9wZ190eXBlLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvc2VxdWVuY2UuaCIKICNp bmNsdWRlICJleGVjdXRvci9leGVjRXhwci5oIgogI2luY2x1ZGUgImV4ZWN1dG9yL25vZGVTdWJw bGFuLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5oIgogI2luY2x1ZGUgImZ1 bmNhcGkuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKICNpbmNsdWRlICJub2Rlcy9taXNjbm9k ZXMuaCIKQEAgLTU4Niw2ICs1ODgsOCBAQCBFeGVjSW50ZXJwRXhwcihFeHByU3RhdGUgKnN0YXRl LCBFeHByQ29udGV4dCAqZWNvbnRleHQsIGJvb2wgKmlzbnVsbCkKIAkJJiZDQVNFX0VFT1BfV0lO RE9XX0ZVTkMsCiAJCSYmQ0FTRV9FRU9QX01FUkdFX1NVUFBPUlRfRlVOQywKIAkJJiZDQVNFX0VF T1BfU1VCUExBTiwKKwkJJiZDQVNFX0VFT1BfUlBSX05BVl9TRVQsCisJCSYmQ0FTRV9FRU9QX1JQ Ul9OQVZfUkVTVE9SRSwKIAkJJiZDQVNFX0VFT1BfQUdHX1NUUklDVF9ERVNFUklBTElaRSwKIAkJ JiZDQVNFX0VFT1BfQUdHX0RFU0VSSUFMSVpFLAogCQkmJkNBU0VfRUVPUF9BR0dfU1RSSUNUX0lO UFVUX0NIRUNLX0FSR1MsCkBAIC0yMDEzLDYgKzIwMTcsMjQgQEAgRXhlY0ludGVycEV4cHIoRXhw clN0YXRlICpzdGF0ZSwgRXhwckNvbnRleHQgKmVjb250ZXh0LCBib29sICppc251bGwpCiAJCQlF RU9fTkVYVCgpOwogCQl9CiAKKwkJLyogUlBSIG5hdmlnYXRpb246IHN3YXAgc2xvdCB0byB0YXJn ZXQgcm93ICovCisJCUVFT19DQVNFKEVFT1BfUlBSX05BVl9TRVQpCisJCXsKKwkJCUV4ZWNFdmFs UlBSTmF2U2V0KHN0YXRlLCBvcCwgZWNvbnRleHQpOworCQkJb3V0ZXJzbG90ID0gZWNvbnRleHQt PmVjeHRfb3V0ZXJ0dXBsZTsKKworCQkJRUVPX05FWFQoKTsKKwkJfQorCisJCS8qIFJQUiBuYXZp Z2F0aW9uOiByZXN0b3JlIHNsb3QgdG8gb3JpZ2luYWwgcm93ICovCisJCUVFT19DQVNFKEVFT1Bf UlBSX05BVl9SRVNUT1JFKQorCQl7CisJCQlFeGVjRXZhbFJQUk5hdlJlc3RvcmUoc3RhdGUsIG9w LCBlY29udGV4dCk7CisJCQlvdXRlcnNsb3QgPSBlY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlOwor CisJCQlFRU9fTkVYVCgpOworCQl9CisKIAkJLyogZXZhbHVhdGUgYSBzdHJpY3QgYWdncmVnYXRl IGRlc2VyaWFsaXphdGlvbiBmdW5jdGlvbiAqLwogCQlFRU9fQ0FTRShFRU9QX0FHR19TVFJJQ1Rf REVTRVJJQUxJWkUpCiAJCXsKQEAgLTU5ODgsMyArNjAxMCwyNDggQEAgRXhlY0FnZ1BsYWluVHJh bnNCeVJlZihBZ2dTdGF0ZSAqYWdnc3RhdGUsIEFnZ1N0YXRlUGVyVHJhbnMgcGVydHJhbnMsCiAK IAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkQ29udGV4dCk7CiB9CisKKy8qCisgKiBFeHRyYWN0 IGNvbXBvdW5kIChvdXRlcikgb2Zmc2V0IGZyb20gc3RlcCBkYXRhLgorICogRm9yIGNvbXBvdW5k IG5hdiwgb2Zmc2V0X3ZhbHVlIGlzIGFuIGFycmF5OiBbMF09aW5uZXIsIFsxXT1vdXRlci4KKyAq IFJldHVybnMgdGhlIG91dGVyIG9mZnNldDsgZXJyb3JzIG9uIE5VTEwgb3IgbmVnYXRpdmUuCisg KiBEZWZhdWx0IGlzIDEgKGxpa2UgUFJFVi9ORVhUIGltcGxpY2l0IG9mZnNldCkuCisgKi8KK3N0 YXRpYyBpbnQ2NAorcnByX25hdl9nZXRfY29tcG91bmRfb2Zmc2V0KEV4cHJFdmFsU3RlcCAqb3Ap Cit7CisJaW50NjQJCXZhbDsKKworCUFzc2VydChvcC0+ZC5ycHJfbmF2Lm9mZnNldF92YWx1ZSAh PSBOVUxMKTsKKworCWlmIChvcC0+ZC5ycHJfbmF2Lm9mZnNldF9pc251bGxbMV0pCisJCWVyZXBv cnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJDT0RFX05VTExfVkFMVUVfTk9UX0FMTE9XRUQpLAor CQkJCWVycm1zZygicm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbnVs bCIpKTsKKworCXZhbCA9IERhdHVtR2V0SW50NjQob3AtPmQucnByX25hdi5vZmZzZXRfdmFsdWVb MV0pOworCisJaWYgKHZhbCA8IDApCisJCWVyZXBvcnQoRVJST1IsCisJCQkJZXJyY29kZShFUlJD T0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQllcnJtc2coInJvdyBwYXR0ZXJuIG5h dmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlIikpOworCisJcmV0dXJuIHZhbDsK K30KKworLyoKKyAqIEV2YWx1YXRlIFJQUiBuYXZpZ2F0aW9uIChQUkVWL05FWFQvRklSU1QvTEFT VCk6IHN3YXAgc2xvdCB0byB0YXJnZXQgcm93LgorICoKKyAqIFNhdmVzIHRoZSBjdXJyZW50IG91 dGVydHVwbGUgaW50byB3aW5zdGF0ZSBmb3IgbGF0ZXIgcmVzdG9yZSwgY29tcHV0ZXMKKyAqIHRo ZSB0YXJnZXQgcm93IHBvc2l0aW9uLCBmZXRjaGVzIHRoZSBjb3JyZXNwb25kaW5nIHNsb3QgZnJv bSB0aGUKKyAqIHR1cGxlc3RvcmUsIGFuZCByZXBsYWNlcyBlY29udGV4dC0+ZWN4dF9vdXRlcnR1 cGxlIHdpdGggaXQuCisgKgorICogVGhpcyBpcyBjYWxsZWQgYm90aCBmcm9tIHRoZSBpbnRlcnBy ZXRlciBpbmxpbmUgaGFuZGxlciBhbmQgZnJvbQorICogSklULWNvbXBpbGVkIGV4cHJlc3Npb25z IHZpYSBidWlsZF9FdmFsWEZ1bmMuCisgKi8KK3ZvaWQKK0V4ZWNFdmFsUlBSTmF2U2V0KEV4cHJT dGF0ZSAqc3RhdGUsIEV4cHJFdmFsU3RlcCAqb3AsIEV4cHJDb250ZXh0ICplY29udGV4dCkKK3sK KwlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUgPSBvcC0+ZC5ycHJfbmF2LndpbnN0YXRlOworCWlu dDY0CQlvZmZzZXQ7CisJaW50NjQJCXRhcmdldF9wb3M7CisJVHVwbGVUYWJsZVNsb3QgKnRhcmdl dF9zbG90OworCisJLyogU2F2ZSBjdXJyZW50IHNsb3QgZm9yIGxhdGVyIHJlc3RvcmUgKi8KKwl3 aW5zdGF0ZS0+bmF2X3NhdmVkX291dGVydHVwbGUgPSBlY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxl OworCisJLyoKKwkgKiBEZXRlcm1pbmUgdGhlIGlubmVyIG9mZnNldC4gIE5VTEwgb3IgbmVnYXRp dmUgb2Zmc2V0cyBhcmUgZXJyb3JzIHBlcgorCSAqIHRoZSBTUUwgc3RhbmRhcmQuCisJICoKKwkg KiBEZWZhdWx0IG9mZnNldCB3aGVuIG9mZnNldF9hcmcgaXMgTlVMTDogUFJFVi9ORVhUOiAxIChz dGFuZGFyZCA1LjYuMikKKwkgKiBGSVJTVC9MQVNUIGFuZCBjb21wb3VuZDogMCBmb3IgaW5uZXIs IDEgZm9yIG91dGVyCisJICovCisJaWYgKG9wLT5kLnJwcl9uYXYub2Zmc2V0X3ZhbHVlICE9IE5V TEwpCisJeworCQlpZiAoKm9wLT5kLnJwcl9uYXYub2Zmc2V0X2lzbnVsbCkKKwkJCWVyZXBvcnQo RVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9OVUxMX1ZBTFVFX05PVF9BTExPV0VEKSwKKwkJ CQkJZXJybXNnKCJyb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBudWxs IikpOworCisJCW9mZnNldCA9IERhdHVtR2V0SW50NjQoKm9wLT5kLnJwcl9uYXYub2Zmc2V0X3Zh bHVlKTsKKworCQlpZiAob2Zmc2V0IDwgMCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNv ZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCisJCQkJCWVycm1zZygicm93IHBh dHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUiKSk7CisJfQorCWVs c2UKKwl7CisJCS8qIERlZmF1bHQgb2Zmc2V0OiAxIGZvciBzaW1wbGUgUFJFVi9ORVhULCAwIG90 aGVyd2lzZSAqLworCQlpZiAob3AtPmQucnByX25hdi5raW5kID09IFJQUl9OQVZfUFJFViB8fAor CQkJb3AtPmQucnByX25hdi5raW5kID09IFJQUl9OQVZfTkVYVCkKKwkJCW9mZnNldCA9IDE7CisJ CWVsc2UKKwkJCW9mZnNldCA9IDA7CisJfQorCisJLyoKKwkgKiBDYWxjdWxhdGUgdGFyZ2V0IHBv c2l0aW9uIGJhc2VkIG9uIG5hdmlnYXRpb24gZGlyZWN0aW9uLiAgT24gb3ZlcmZsb3csCisJICog dXNlIC0xIHNvIHRoYXQgRXhlY1JQUk5hdkdldFNsb3QgdHJlYXRzIGl0IGFzIG91dCBvZiByYW5n ZS4KKwkgKi8KKwlzd2l0Y2ggKG9wLT5kLnJwcl9uYXYua2luZCkKKwl7CisJCWNhc2UgUlBSX05B Vl9QUkVWOgorCQkJaWYgKHBnX3N1Yl9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPmN1cnJlbnRwb3Ms IG9mZnNldCwgJnRhcmdldF9wb3MpKQorCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCWJyZWFrOwor CQljYXNlIFJQUl9OQVZfTkVYVDoKKwkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93KHdpbnN0YXRl LT5jdXJyZW50cG9zLCBvZmZzZXQsICZ0YXJnZXRfcG9zKSkKKwkJCQl0YXJnZXRfcG9zID0gLTE7 CisJCQlicmVhazsKKwkJY2FzZSBSUFJfTkFWX0ZJUlNUOgorCQkJLyogRklSU1Q6IG9mZnNldCBm cm9tIG1hdGNoX3N0YXJ0LCBjbGFtcGVkIHRvIGN1cnJlbnRwb3MgKi8KKwkJCWlmIChwZ19hZGRf czY0X292ZXJmbG93KHdpbnN0YXRlLT5uYXZfbWF0Y2hfc3RhcnQsIG9mZnNldCwgJnRhcmdldF9w b3MpKQorCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCWVsc2UgaWYgKHRhcmdldF9wb3MgPiB3aW5z dGF0ZS0+Y3VycmVudHBvcykKKwkJCQl0YXJnZXRfcG9zID0gLTE7CS8qIGJleW9uZCBjdXJyZW50 IG1hdGNoIHJhbmdlICovCisJCQlicmVhazsKKwkJY2FzZSBSUFJfTkFWX0xBU1Q6CisJCQkvKiBM QVNUOiBvZmZzZXQgYmFja3dhcmQgZnJvbSBjdXJyZW50cG9zLCBjbGFtcGVkIHRvIG1hdGNoX3N0 YXJ0ICovCisJCQlpZiAocGdfc3ViX3M2NF9vdmVyZmxvdyh3aW5zdGF0ZS0+Y3VycmVudHBvcywg b2Zmc2V0LCAmdGFyZ2V0X3BvcykpCisJCQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJZWxzZSBpZiAo dGFyZ2V0X3BvcyA8IHdpbnN0YXRlLT5uYXZfbWF0Y2hfc3RhcnQpCisJCQkJdGFyZ2V0X3BvcyA9 IC0xOwkvKiBiZWZvcmUgbWF0Y2hfc3RhcnQgKi8KKwkJCWJyZWFrOworCisJCWNhc2UgUlBSX05B Vl9QUkVWX0ZJUlNUOgorCQljYXNlIFJQUl9OQVZfTkVYVF9GSVJTVDoKKwkJCXsKKwkJCQlpbnQ2 NAkJY29tcG91bmRfb2Zmc2V0OworCQkJCWludDY0CQlpbm5lcl9wb3M7CisKKwkJCQkvKiBJbm5l cjogbWF0Y2hfc3RhcnQgKyBvZmZzZXQgKi8KKwkJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyh3 aW5zdGF0ZS0+bmF2X21hdGNoX3N0YXJ0LCBvZmZzZXQsICZpbm5lcl9wb3MpKQorCQkJCXsKKwkJ CQkJdGFyZ2V0X3BvcyA9IC0xOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJaWYgKGlubmVyX3Bv cyA+IHdpbnN0YXRlLT5jdXJyZW50cG9zIHx8IGlubmVyX3BvcyA8IDApCisJCQkJeworCQkJCQl0 YXJnZXRfcG9zID0gLTE7CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCS8qIE91dGVyIG9mZnNl dCAqLworCQkJCWNvbXBvdW5kX29mZnNldCA9IHJwcl9uYXZfZ2V0X2NvbXBvdW5kX29mZnNldChv cCk7CisKKwkJCQkvKiBBcHBseSBvdXRlcjogUFJFViBzdWJ0cmFjdHMsIE5FWFQgYWRkcyAqLwor CQkJCWlmIChvcC0+ZC5ycHJfbmF2LmtpbmQgPT0gUlBSX05BVl9QUkVWX0ZJUlNUKQorCQkJCXsK KwkJCQkJaWYgKHBnX3N1Yl9zNjRfb3ZlcmZsb3coaW5uZXJfcG9zLCBjb21wb3VuZF9vZmZzZXQs ICZ0YXJnZXRfcG9zKSkKKwkJCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCQl9CisJCQkJZWxzZQor CQkJCXsKKwkJCQkJaWYgKHBnX2FkZF9zNjRfb3ZlcmZsb3coaW5uZXJfcG9zLCBjb21wb3VuZF9v ZmZzZXQsICZ0YXJnZXRfcG9zKSkKKwkJCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCQl9CisJCQl9 CisJCQlicmVhazsKKworCQljYXNlIFJQUl9OQVZfUFJFVl9MQVNUOgorCQljYXNlIFJQUl9OQVZf TkVYVF9MQVNUOgorCQkJeworCQkJCWludDY0CQljb21wb3VuZF9vZmZzZXQ7CisJCQkJaW50NjQJ CWlubmVyX3BvczsKKworCQkJCS8qIElubmVyOiBjdXJyZW50cG9zIC0gb2Zmc2V0ICovCisJCQkJ aWYgKHBnX3N1Yl9zNjRfb3ZlcmZsb3cod2luc3RhdGUtPmN1cnJlbnRwb3MsIG9mZnNldCwgJmlu bmVyX3BvcykpCisJCQkJeworCQkJCQl0YXJnZXRfcG9zID0gLTE7CisJCQkJCWJyZWFrOworCQkJ CX0KKwkJCQlpZiAoaW5uZXJfcG9zIDwgd2luc3RhdGUtPm5hdl9tYXRjaF9zdGFydCkKKwkJCQl7 CisJCQkJCXRhcmdldF9wb3MgPSAtMTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJLyogT3V0 ZXIgb2Zmc2V0ICovCisJCQkJY29tcG91bmRfb2Zmc2V0ID0gcnByX25hdl9nZXRfY29tcG91bmRf b2Zmc2V0KG9wKTsKKworCQkJCS8qIEFwcGx5IG91dGVyOiBQUkVWIHN1YnRyYWN0cywgTkVYVCBh ZGRzICovCisJCQkJaWYgKG9wLT5kLnJwcl9uYXYua2luZCA9PSBSUFJfTkFWX1BSRVZfTEFTVCkK KwkJCQl7CisJCQkJCWlmIChwZ19zdWJfczY0X292ZXJmbG93KGlubmVyX3BvcywgY29tcG91bmRf b2Zmc2V0LCAmdGFyZ2V0X3BvcykpCisJCQkJCQl0YXJnZXRfcG9zID0gLTE7CisJCQkJfQorCQkJ CWVsc2UKKwkJCQl7CisJCQkJCWlmIChwZ19hZGRfczY0X292ZXJmbG93KGlubmVyX3BvcywgY29t cG91bmRfb2Zmc2V0LCAmdGFyZ2V0X3BvcykpCisJCQkJCQl0YXJnZXRfcG9zID0gLTE7CisJCQkJ fQorCQkJfQorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25p emVkIFJQUiBuYXZpZ2F0aW9uIGtpbmQ6ICVkIiwKKwkJCQkgb3AtPmQucnByX25hdi5raW5kKTsK KwkJCWJyZWFrOworCX0KKworCS8qCisJICogU2xvdCBzd2FwIGVsaXNpb246IGlmIHRhcmdldF9w b3MgaXMgdGhlIGN1cnJlbnQgcm93LCBza2lwIHRoZQorCSAqIHR1cGxlc3RvcmUgZmV0Y2ggYW5k IHNsb3Qgc3dhcCBlbnRpcmVseS4gIFRoaXMgYmVuZWZpdHMgTEFTVChleHByKSwKKwkgKiBQUkVW KGV4cHIsIDApLCBORVhUKGV4cHIsIDApLCBhbmQgc2ltaWxhciBjYXNlcy4KKwkgKgorCSAqIFdl IG11c3Qgc3RpbGwgc2V0IG5hdl9zYXZlZF9vdXRlcnR1cGxlIChkb25lIGFib3ZlKSBzbyB0aGF0 CisJICogRUVPUF9SUFJfTkFWX1JFU1RPUkUgaXMgYSBoYXJtbGVzcyBuby1vcC4KKwkgKi8KKwlp ZiAodGFyZ2V0X3BvcyA9PSB3aW5zdGF0ZS0+Y3VycmVudHBvcykKKwkJcmV0dXJuOworCisJLyog RmV0Y2ggdGFyZ2V0IHJvdyBzbG90IChyZXR1cm5zIG5hdl9udWxsX3Nsb3QgaWYgb3V0IG9mIHJh bmdlKSAqLworCXRhcmdldF9zbG90ID0gRXhlY1JQUk5hdkdldFNsb3Qod2luc3RhdGUsIHRhcmdl dF9wb3MpOworCisJLyoKKwkgKiBVcGRhdGUgZWNvbnRleHQgdG8gcG9pbnQgdG8gdGhlIHRhcmdl dCBzbG90LiAgQWxzbyBkZWNvbXByZXNzIHRoZSBuZXcKKwkgKiBzbG90J3MgYXR0cmlidXRlcyBz aW5jZSBGRVRDSFNPTUUgYWxyZWFkeSByYW4gZm9yIHRoZSBvcmlnaW5hbCBzbG90LgorCSAqIFRo ZSBjYWxsZXIgKGludGVycHJldGVyIG9yIEpJVCkgaXMgcmVzcG9uc2libGUgZm9yIHVwZGF0aW5n IGFueSBsb2NhbAorCSAqIHNsb3QgY2FjaGUgKGUuZy4gb3V0ZXJzbG90KSBmcm9tIGVjb250ZXh0 IGFmdGVyIHdlIHJldHVybi4KKwkgKi8KKwlzbG90X2dldGFsbGF0dHJzKHRhcmdldF9zbG90KTsK KwllY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlID0gdGFyZ2V0X3Nsb3Q7Cit9CisKKy8qCisgKiBF dmFsdWF0ZSBSUFIgbmF2aWdhdGlvbjogcmVzdG9yZSBzbG90IHRvIG9yaWdpbmFsIHJvdy4KKyAq CisgKiBSZXN0b3JlcyBlY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlIGZyb20gdGhlIHNhdmVkIHNs b3QgaW4gd2luc3RhdGUuCisgKiBXaGVuIHNsb3Qgc3dhcCB3YXMgZWxpZGVkICh0YXJnZXQgPT0g Y3VycmVudHBvcyksIHRoaXMgaXMgYSBoYXJtbGVzcworICogbm8tb3Agc2luY2Ugc2F2ZWQgYW5k IGN1cnJlbnQgc2xvdHMgYXJlIGlkZW50aWNhbC4KKyAqIFRoZSBjYWxsZXIgaXMgcmVzcG9uc2li bGUgZm9yIHVwZGF0aW5nIGFueSBsb2NhbCBzbG90IGNhY2hlLgorICoKKyAqIEZvciBwYXNzLWJ5 LXJlZmVyZW5jZSByZXN1bHQgdHlwZXMsIHRoZSByZXN1bHQgZGF0dW0gcG9pbnRzIGludG8KKyAq IG5hdl9zbG90J3MgdHVwbGUgbWVtb3J5LiAgSWYgYSBzdWJzZXF1ZW50IG5hdmlnYXRpb24gaW4g dGhlIHNhbWUKKyAqIGV4cHJlc3Npb24gcmUtZmV0Y2hlcyBuYXZfc2xvdCBmb3IgYSBkaWZmZXJl bnQgcG9zaXRpb24sIHRoZSBvbGQKKyAqIHR1cGxlIGlzIGZyZWVkLCBsZWF2aW5nIGEgZGFuZ2xp bmcgcG9pbnRlci4gIFdlIHByZXZlbnQgdGhpcyBieQorICogY29weWluZyBwYXNzLWJ5LXJlZiBy ZXN1bHRzIGludG8gcGVyLXR1cGxlIG1lbW9yeSwgd2hpY2ggc3Vydml2ZXMKKyAqIHVudGlsIHRo ZSBuZXh0IFJlc2V0RXhwckNvbnRleHQuCisgKi8KK3ZvaWQKK0V4ZWNFdmFsUlBSTmF2UmVzdG9y ZShFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAorCQkJCQkgIEV4cHJDb250ZXh0 ICplY29udGV4dCkKK3sKKwlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUgPSBvcC0+ZC5ycHJfbmF2 LndpbnN0YXRlOworCisJZWNvbnRleHQtPmVjeHRfb3V0ZXJ0dXBsZSA9IHdpbnN0YXRlLT5uYXZf c2F2ZWRfb3V0ZXJ0dXBsZTsKKworCS8qIFN0YWJpbGl6ZSBwYXNzLWJ5LXJlZiByZXN1bHQgYWdh aW5zdCBuYXZfc2xvdCByZS1mZXRjaCAqLworCWlmICghb3AtPmQucnByX25hdi5yZXN1bHR0eXBi eXZhbCAmJgorCQkhKm9wLT5yZXNudWxsKQorCXsKKwkJTWVtb3J5Q29udGV4dCBvbGRDb250ZXh0 OworCisJCW9sZENvbnRleHQgPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oZWNvbnRleHQtPmVjeHRf cGVyX3R1cGxlX21lbW9yeSk7CisJCSpvcC0+cmVzdmFsdWUgPSBkYXR1bUNvcHkoKm9wLT5yZXN2 YWx1ZSwKKwkJCQkJCQkJICBmYWxzZSwKKwkJCQkJCQkJICBvcC0+ZC5ycHJfbmF2LnJlc3VsdHR5 cGxlbik7CisJCU1lbW9yeUNvbnRleHRTd2l0Y2hUbyhvbGRDb250ZXh0KTsKKwl9Cit9CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUlBSLmMgYi9zcmMvYmFja2VuZC9leGVj dXRvci9leGVjUlBSLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIz MjZhNThiYmY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY1JQ Ui5jCkBAIC0wLDAgKzEsMTk3OSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXhlY1JQ Ui5jCisgKgkgIE5GQS1iYXNlZCBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiBlbmdpbmUgZm9yIHdp bmRvdyBmdW5jdGlvbnMuCisgKgorICogVGhpcyBmaWxlIGltcGxlbWVudHMgdGhlIE5GQSBleGVj dXRpb24gZW5naW5lIGZvciB0aGUgUk9XUyBCRVRXRUVOCisgKiBQQVRURVJOIGNsYXVzZSAoU1FM IFN0YW5kYXJkIEZlYXR1cmUgUjAyMDogUm93IFBhdHRlcm4gUmVjb2duaXRpb24gaW4KKyAqIFdp bmRvdyBGdW5jdGlvbnMpLgorICoKKyAqIFRoZSBlbmdpbmUgZXhlY3V0ZXMgdGhlIGNvbXBpbGVk IFJQUlBhdHRlcm4gc3RydWN0dXJlIGRpcmVjdGx5LCBhdm9pZGluZworICogcmVnZXggY29tcGls YXRpb24gb3ZlcmhlYWQuICBJdCBpcyBjYWxsZWQgYnkgbm9kZVdpbmRvd0FnZy5jIGFuZCBleHBv c2VzCisgKiB0aGUgaW50ZXJmYWNlIGRlY2xhcmVkIGluIGV4ZWN1dG9yL2V4ZWNSUFIuaC4KKyAq CisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVTUUwgR2xv YmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTQsIFJl Z2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIElERU5USUZJQ0FU SU9OCisgKgkgIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYworICoKKyAqLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICovCisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImNvbW1vbi9p bnQuaCIKKyNpbmNsdWRlICJleGVjdXRvci9leGVjUlBSLmgiCisjaW5jbHVkZSAiZXhlY3V0b3Iv ZXhlY3V0b3IuaCIKKyNpbmNsdWRlICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIv cnByLmgiCisjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKKworLyoKKyAqIEZvciB0aGUgZGVz aWduIGFuZCBleGVjdXRpb24gbW9kZWwgb2YgdGhlIE5GQSBlbmdpbmUgaW1wbGVtZW50ZWQKKyAq IGluIHRoaXMgZmlsZSwgc2VlIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIuCisgKi8K KworLyogQml0bWFwIG1hY3JvcyBmb3IgTkZBIGN5Y2xlIGRldGVjdGlvbiAoY2YuIGJpdG1hcHNl dC5jLCB0aWRiaXRtYXAuYykgKi8KKyNkZWZpbmUgV09SRE5VTSh4KQkoKHgpIC8gQklUU19QRVJf QklUTUFQV09SRCkKKyNkZWZpbmUgQklUTlVNKHgpCSgoeCkgJSBCSVRTX1BFUl9CSVRNQVBXT1JE KQorCisvKgorICogU2V0IHRoZSB2aXNpdGVkIGJpdCBmb3IgZWxlbUlkeCBhbmQgdXBkYXRlIHRo ZSBoaWdoLXdhdGVyIG1hcmtzCisgKiAobmZhVmlzaXRlZE1pbi9NYXhXb3JkKSBzbyB0aGF0IHRo ZSBuZXh0IHJlc2V0IG9ubHkgaGFzIHRvIGNsZWFyCisgKiB0aGUgdG91Y2hlZCByYW5nZSBpbnN0 ZWFkIG9mIHRoZSBmdWxsIG5mYVZpc2l0ZWRFbGVtcyBiaXRtYXAuCisgKi8KK3N0YXRpYyBpbmxp bmUgdm9pZAorbmZhX21hcmtfdmlzaXRlZChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDE2 IGVsZW1JZHgpCit7CisJaW50MTYJCXcgPSBXT1JETlVNKGVsZW1JZHgpOworCisJd2luc3RhdGUt Pm5mYVZpc2l0ZWRFbGVtc1t3XSB8PSAoKGJpdG1hcHdvcmQpIDEgPDwgQklUTlVNKGVsZW1JZHgp KTsKKwl3aW5zdGF0ZS0+bmZhVmlzaXRlZE1pbldvcmQgPSBNaW4od2luc3RhdGUtPm5mYVZpc2l0 ZWRNaW5Xb3JkLCB3KTsKKwl3aW5zdGF0ZS0+bmZhVmlzaXRlZE1heFdvcmQgPSBNYXgod2luc3Rh dGUtPm5mYVZpc2l0ZWRNYXhXb3JkLCB3KTsKK30KKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMg Ki8KK3N0YXRpYyBSUFJORkFTdGF0ZSAqbmZhX3N0YXRlX21ha2UoV2luZG93QWdnU3RhdGUgKndp bnN0YXRlKTsKK3N0YXRpYyB2b2lkIG5mYV9zdGF0ZV9mcmVlKFdpbmRvd0FnZ1N0YXRlICp3aW5z dGF0ZSwgUlBSTkZBU3RhdGUgKnN0YXRlKTsKK3N0YXRpYyB2b2lkIG5mYV9zdGF0ZV9mcmVlX2xp c3QoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFTdGF0ZSAqbGlzdCk7CitzdGF0aWMg UlBSTkZBU3RhdGUgKm5mYV9zdGF0ZV9jbG9uZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGlu dDE2IGVsZW1JZHgsCisJCQkJCQkJCQlpbnQzMiAqY291bnRzLCBib29sIHNvdXJjZUFic29yYmFi bGUpOworc3RhdGljIGJvb2wgbmZhX3N0YXRlc19lcXVhbChXaW5kb3dBZ2dTdGF0ZSAqd2luc3Rh dGUsIFJQUk5GQVN0YXRlICpzMSwKKwkJCQkJCQkgUlBSTkZBU3RhdGUgKnMyKTsKK3N0YXRpYyB2 b2lkIG5mYV9hZGRfc3RhdGVfdW5pcXVlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZB Q29udGV4dCAqY3R4LAorCQkJCQkJCQkgUlBSTkZBU3RhdGUgKnN0YXRlKTsKK3N0YXRpYyB2b2lk IG5mYV9hZGRfbWF0Y2hlZF9zdGF0ZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNv bnRleHQgKmN0eCwKKwkJCQkJCQkJICBSUFJORkFTdGF0ZSAqc3RhdGUsIGludDY0IG1hdGNoRW5k Um93KTsKKworc3RhdGljIFJQUk5GQUNvbnRleHQgKm5mYV9jb250ZXh0X21ha2UoV2luZG93QWdn U3RhdGUgKndpbnN0YXRlKTsKK3N0YXRpYyB2b2lkIG5mYV91bmxpbmtfY29udGV4dChXaW5kb3dB Z2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCk7CisKK3N0YXRpYyB2b2lkIG5m YV91cGRhdGVfbGVuZ3RoX3N0YXRzKGludDY0IGNvdW50LCBORkFMZW5ndGhTdGF0cyAqc3RhdHMs IGludDY0IG5ld0xlbik7CitzdGF0aWMgdm9pZCBuZmFfcmVjb3JkX2NvbnRleHRfc2tpcHBlZChX aW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHNraXBwZWRMZW4pOworc3RhdGljIHZvaWQg bmZhX3JlY29yZF9jb250ZXh0X2Fic29yYmVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50 NjQgYWJzb3JiZWRMZW4pOworCitzdGF0aWMgdm9pZCBuZmFfdXBkYXRlX2Fic29ycHRpb25fZmxh Z3MoUlBSTkZBQ29udGV4dCAqY3R4KTsKK3N0YXRpYyBib29sIG5mYV9zdGF0ZXNfY292ZXJlZChS UFJQYXR0ZXJuICpwYXR0ZXJuLCBSUFJORkFDb250ZXh0ICpvbGRlciwKKwkJCQkJCQkgICBSUFJO RkFDb250ZXh0ICpuZXdlcik7CitzdGF0aWMgdm9pZCBuZmFfdHJ5X2Fic29yYl9jb250ZXh0KFdp bmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4KTsKK3N0YXRpYyB2b2lk IG5mYV9hYnNvcmJfY29udGV4dHMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKTsKKworc3RhdGlj IGJvb2wgbmZhX2V2YWxfdmFyX21hdGNoKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwKKwkJCQkJ CQkgICBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwgYm9vbCAqdmFyTWF0Y2hlZCk7CitzdGF0aWMg dm9pZCBuZmFfbWF0Y2goV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpj dHgsCisJCQkJCSAgYm9vbCAqdmFyTWF0Y2hlZCk7CitzdGF0aWMgdm9pZCBuZmFfcm91dGVfdG9f ZWxlbShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkJ CQkgIFJQUk5GQVN0YXRlICpzdGF0ZSwgUlBSUGF0dGVybkVsZW1lbnQgKm5leHRFbGVtLAorCQkJ CQkJCSAgaW50NjQgY3VycmVudFBvcyk7CitzdGF0aWMgdm9pZCBuZmFfYWR2YW5jZV9hbHQoV2lu ZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJCQkJUlBSTkZB U3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJCQkJCQlpbnQ2NCBjdXJy ZW50UG9zKTsKK3N0YXRpYyB2b2lkIG5mYV9hZHZhbmNlX2JlZ2luKFdpbmRvd0FnZ1N0YXRlICp3 aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJCQkJCSAgUlBSTkZBU3RhdGUgKnN0YXRl LCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJCQkJCQkgIGludDY0IGN1cnJlbnRQb3MpOwor c3RhdGljIHZvaWQgbmZhX2FkdmFuY2VfZW5kKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBS TkZBQ29udGV4dCAqY3R4LAorCQkJCQkJCVJQUk5GQVN0YXRlICpzdGF0ZSwgUlBSUGF0dGVybkVs ZW1lbnQgKmVsZW0sCisJCQkJCQkJaW50NjQgY3VycmVudFBvcyk7CitzdGF0aWMgdm9pZCBuZmFf YWR2YW5jZV92YXIoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgs CisJCQkJCQkJUlBSTkZBU3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJ CQkJCQlpbnQ2NCBjdXJyZW50UG9zKTsKK3N0YXRpYyB2b2lkIG5mYV9hZHZhbmNlX3N0YXRlKFdp bmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJCQkJCSAgUlBS TkZBU3RhdGUgKnN0YXRlLCBpbnQ2NCBjdXJyZW50UG9zKTsKK3N0YXRpYyB2b2lkIG5mYV9hZHZh bmNlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4dCAqY3R4LAorCQkJCQkJ aW50NjQgY3VycmVudFBvcyk7CisKK3N0YXRpYyB2b2lkIG5mYV9yZWV2YWx1YXRlX2RlcGVuZGVu dF92YXJzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwKKwkJCQkJCQkJCQkgIFJQUk5GQUNvbnRl eHQgKmN0eCwKKwkJCQkJCQkJCQkgIGludDY0IGN1cnJlbnRQb3MpOworCisvKgorICogTkZBLWJh c2VkIHBhdHRlcm4gbWF0Y2hpbmcgaW1wbGVtZW50YXRpb24KKyAqCisgKiBUaGVzZSBmdW5jdGlv bnMgaW1wbGVtZW50IGRpcmVjdCBORkEgZXhlY3V0aW9uIHVzaW5nIHRoZSBjb21waWxlZAorICog UlBSUGF0dGVybiBzdHJ1Y3R1cmUsIGF2b2lkaW5nIHJlZ2V4IGNvbXBpbGF0aW9uIG92ZXJoZWFk LgorICoKKyAqIEV4ZWN1dGlvbiBGbG93OiBtYXRjaCAtPiBhYnNvcmIgLT4gYWR2YW5jZQorICog LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFRoZSBORkEgZXhl Y3V0aW9uIGZvbGxvd3MgYSB0aHJlZS1waGFzZSBjeWNsZSBmb3IgZWFjaCByb3c6CisgKgorICog MS4gTUFUQ0ggKGNvbnZlcmdlbmNlKTogRXZhbHVhdGUgYWxsIHdhaXRpbmcgc3RhdGVzIGFnYWlu c3QgY3VycmVudCByb3cuCisgKiAgICBTdGF0ZXMgb24gVkFSIGVsZW1lbnRzIGFyZSBjaGVja2Vk IGFnYWluc3QgdGhlaXIgZGVmaW5pbmcgY29uZGl0aW9ucy4KKyAqICAgIEZhaWxlZCBtYXRjaGVz IGFyZSByZW1vdmVkLCBzdWNjZXNzZnVsIG9uZXMgbWF5IHRyYW5zaXRpb24gZm9yd2FyZC4KKyAq ICAgIFRoaXMgaXMgYSAiY29udmVyZ2VuY2UiIHBoYXNlIC0gdGhlIG51bWJlciBvZiBzdGF0ZXMg dGVuZHMgdG8gZGVjcmVhc2UuCisgKgorICogMi4gQUJTT1JCOiBBZnRlciBtYXRjaGluZywgY2hl Y2sgaWYgYW55IGNvbnRleHQgY2FuIGFic29yYiBhbm90aGVyLgorICogICAgQ29udGV4dCBhYnNv cnB0aW9uIGlzIGFuIG9wdGltaXphdGlvbiB0aGF0IG1lcmdlcyBlcXVpdmFsZW50IGNvbnRleHRz LgorICogICAgQSBjb250ZXh0IGNhbiBvbmx5IGJlIGFic29yYmVkIGlmIEFMTCBpdHMgc3RhdGVz IGFyZSBhYnNvcmJhYmxlLgorICoKKyAqIDMuIEFEVkFOQ0UgKGRpdmVyZ2VuY2UpOiBFeHBhbmQg c3RhdGVzIHRocm91Z2ggZXBzaWxvbiB0cmFuc2l0aW9ucy4KKyAqICAgIFN0YXRlcyBhZHZhbmNl IHRocm91Z2ggQUxUIChhbHRlcm5hdGlvbiksIEVORCAoZ3JvdXAgZW5kKSwgYW5kCisgKiAgICBv cHRpb25hbCBlbGVtZW50cyB1bnRpbCByZWFjaGluZyBWQVIgb3IgRklOIGVsZW1lbnRzIHdoZXJl IHRoZXkgd2FpdC4KKyAqICAgIFRoaXMgaXMgYSAiZGl2ZXJnZW5jZSIgcGhhc2UgLSBBTFQgY3Jl YXRlcyBtdWx0aXBsZSBicmFuY2ggc3RhdGVzLgorICoKKyAqIEtleSBEZXNpZ24gRGVjaXNpb25z OgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAtIFZBUi0+RU5EIHRyYW5zaXRpb24gaW4g bWF0Y2ggcGhhc2U6IFdoZW4gYSBzaW1wbGUgVkFSIChtYXg9MSkgbWF0Y2hlcworICogICBhbmQg dGhlIG5leHQgZWxlbWVudCBpcyBFTkQsIHdlIHRyYW5zaXRpb24gaW1tZWRpYXRlbHkgaW4gdGhl IG1hdGNoCisgKiAgIHBoYXNlIHJhdGhlciB0aGFuIHdhaXRpbmcgZm9yIGFkdmFuY2UuIFRoaXMg aXMgbmVjZXNzYXJ5IGZvciBjb3JyZWN0CisgKiAgIGFic29ycHRpb246IHN0YXRlcyBtdXN0IGJl IGF0IEVORCB0byBiZSBtYXJrZWQgYWJzb3JiYWJsZSBiZWZvcmUgdGhlCisgKiAgIGFic29ycHRp b24gY2hlY2sgb2NjdXJzLgorICoKKyAqIC0gT3B0aW9uYWwgVkFSIHNraXAgcGF0aHM6IFdoZW4g YWR2YW5jZSBsYW5kcyBvbiBhIFZBUiB3aXRoIG1pbj0wLAorICogICB3ZSBjcmVhdGUgYm90aCBh IHdhaXRpbmcgc3RhdGUgQU5EIGEgc2tpcCBzdGF0ZSAobGlrZSBBTFQgYnJhbmNoZXMpLgorICog ICBUaGlzIGVuc3VyZXMgcGF0dGVybnMgbGlrZSAiQSBCPyBDIiB3b3JrIGNvcnJlY3RseSAtIHdl IG5lZWQgYSBzdGF0ZQorICogICB3YWl0aW5nIGZvciBCIEFORCBhIHN0YXRlIHRoYXQgaGFzIGFs cmVhZHkgc2tpcHBlZCB0byBDLgorICoKKyAqIC0gRU5ELT5FTkQgY291bnQgaW5jcmVtZW50OiBX aGVuIHRyYW5zaXRpb25pbmcgZnJvbSBvbmUgRU5EIHRvIGFub3RoZXIKKyAqICAgRU5EIHdpdGhp biBhZHZhbmNlLCB3ZSBtdXN0IGluY3JlbWVudCB0aGUgb3V0ZXIgRU5EJ3MgY291bnQuIFRoaXMK KyAqICAgaGFuZGxlcyBuZXN0ZWQgZ3JvdXBzIGxpa2UgIigoQXxCKSspKyIgY29ycmVjdGx5IC0g ZXhpdGluZyB0aGUgaW5uZXIKKyAqICAgZ3JvdXAgY291bnRzIGFzIG9uZSBpdGVyYXRpb24gb2Yg dGhlIG91dGVyIGdyb3VwLgorICoKKyAqIC0gRW1wdHkgbWF0Y2ggaGFuZGxpbmc6IFRoZSBpbml0 aWFsIGFkdmFuY2UgdXNlcyBjdXJyZW50UG9zID0KKyAqICAgc3RhcnRQb3MgLSAxIChiZWZvcmUg YW55IHJvdyBpcyBjb25zdW1lZCkuIElmIEZJTiBpcyByZWFjaGVkIHZpYQorICogICBlcHNpbG9u IHRyYW5zaXRpb25zIGFsb25lLCBtYXRjaEVuZFJvdyA9IHN0YXJ0UG9zIC0gMSA8IG1hdGNoU3Rh cnRSb3cuCisgKiAgIElmIG1hdGNoZWRTdGF0ZSBpcyBzZXQgKEZJTiB3YXMgcmVhY2hlZCksIHRo aXMgaXMgYW4gZW1wdHkgbWF0Y2gKKyAqICAgKFJGX0VNUFRZX01BVENIKTsgb3RoZXJ3aXNlIGl0 IGlzIHVubWF0Y2hlZCAoUkZfVU5NQVRDSEVEKS4KKyAqICAgRm9yIHJlbHVjdGFudCBtaW49MCBw YXR0ZXJucyAoQSo/LCBBPz8pLCB0aGUgc2tpcCBwYXRoIHJlYWNoZXMKKyAqICAgRklOIGZpcnN0 IGFuZCBlYXJseSB0ZXJtaW5hdGlvbiBwcnVuZXMgZW50ZXIgcGF0aHMsIHlpZWxkaW5nIGFuCisg KiAgIGltbWVkaWF0ZSBlbXB0eSBtYXRjaCByZXN1bHQuIEZvciBncmVlZHkgcGF0dGVybnMgKEEq KSwgdGhlIGVudGVyCisgKiAgIHBhdGggYWRkcyBWQVIgc3RhdGVzIGZpcnN0LCB0aGVuIHRoZSBz a2lwIEZJTiBpcyByZWNvcmRlZCBidXQgVkFSCisgKiAgIHN0YXRlcyBzdXJ2aXZlIGZvciBsYXRl ciBtYXRjaGluZy4KKyAqCisgKiBDb250ZXh0IEFic29ycHRpb24gUnVudGltZToKKyAqIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogQWJzb3JwdGlvbiB1c2VzIGZsYWdzIGNvbXB1dGVk IGF0IHBsYW5uaW5nIHRpbWUgKGluIHJwci5jKSBhbmQgdHdvCisgKiBjb250ZXh0LWxldmVsIGZs YWdzIG1haW50YWluZWQgYXQgcnVudGltZToKKyAqCisgKiBTdGF0ZS1sZXZlbDoKKyAqICAgc3Rh dGUuaXNBYnNvcmJhYmxlOiB0cnVlIGlmIHN0YXRlIGlzIGluIHRoZSBhYnNvcmJhYmxlIHJlZ2lv bi4KKyAqICAgICAtIFNldCBhdCBjcmVhdGlvbjogZWxlbS0+ZmxhZ3MgJiBSUFJfRUxFTV9BQlNP UkJBQkxFX0JSQU5DSAorICogICAgIC0gQXQgdHJhbnNpdGlvbjogcHJldkFic29yYmFibGUgJiYg KG5ld0VsZW0tPmZsYWdzICYgQUJTT1JCQUJMRV9CUkFOQ0gpCisgKiAgICAgLSBNb25vdG9uaWM6 IG9uY2UgZmFsc2UsIHN0YXlzIGZhbHNlIGZvcmV2ZXIKKyAqCisgKiBDb250ZXh0LWxldmVsOgor ICogICBjdHguaGFzQWJzb3JiYWJsZVN0YXRlOiBjYW4gdGhpcyBjb250ZXh0IGFic29yYiBvdGhl cnM/CisgKiAgICAgLSBUcnVlIGlmIGF0IGxlYXN0IG9uZSBzdGF0ZSBoYXMgaXNBYnNvcmJhYmxl PXRydWUKKyAqICAgICAtIE1vbm90b25pYzogdHJ1ZS0+ZmFsc2Ugb25seSAob3B0aW1pemF0aW9u OiBza2lwIHJlY2FsYyB3aGVuIGZhbHNlKQorICoKKyAqICAgY3R4LmFsbFN0YXRlc0Fic29yYmFi bGU6IGNhbiB0aGlzIGNvbnRleHQgYmUgYWJzb3JiZWQ/CisgKiAgICAgLSBUcnVlIGlmIEFMTCBz dGF0ZXMgaGF2ZSBpc0Fic29yYmFibGU9dHJ1ZQorICogICAgIC0gRHluYW1pYzogY2FuIGNoYW5n ZSBmYWxzZS0+dHJ1ZSAod2hlbiBub24tYWJzb3JiYWJsZSBzdGF0ZXMgZGllKQorICoKKyAqIEFi c29ycHRpb24gQWxnb3JpdGhtOgorICogICBGb3IgZWFjaCBwYWlyIChvbGRlciBDdHgxLCBuZXdl ciBDdHgyKToKKyAqICAgMS4gUHJlLWNoZWNrOiBDdHgxLmhhc0Fic29yYmFibGVTdGF0ZSAmJiBD dHgyLmFsbFN0YXRlc0Fic29yYmFibGUKKyAqICAgICAgLT4gSWYgZmFsc2UsIHNraXAgKGZhc3Qg ZmlsdGVyKQorICogICAyLiBDb3ZlcmFnZSBjaGVjazogRm9yIGVhY2ggQ3R4MiBzdGF0ZSB3aXRo IGlzQWJzb3JiYWJsZT10cnVlLAorICogICAgICBmaW5kIEN0eDEgc3RhdGUgd2l0aCBzYW1lIGVs ZW1JZHggYW5kIGNvdW50ID49IEN0eDIuY291bnQKKyAqICAgMy4gSWYgYWxsIEN0eDIgYWJzb3Ji YWJsZSBzdGF0ZXMgYXJlIGNvdmVyZWQsIGFic29yYiBDdHgyCisgKgorICogRXhhbXBsZTogUGF0 dGVybiBBKyBCCisgKiAgIFJvdyAxOiBDdHgxIGF0IEEgKGNvdW50PTEpCisgKiAgIFJvdyAyOiBD dHgxIGF0IEEgKGNvdW50PTIpLCBDdHgyIGF0IEEgKGNvdW50PTEpCisgKiAgIC0+IEJvdGggYXQg c2FtZSBlbGVtSWR4IChBKSwgQ3R4MS5jb3VudCA+PSBDdHgyLmNvdW50CisgKiAgIC0+IEN0eDIg YWJzb3JiZWQKKyAqCisgKiBUaGUgYXN5bW1ldHJpYyBkZXNpZ24gKEN0eDEgbmVlZHMgaGFzQWJz b3JiYWJsZSwgQ3R4MiBuZWVkcyBhbGxBYnNvcmJhYmxlKQorICogYWxsb3dzIGFic29ycHRpb24g ZXZlbiB3aGVuIEN0eDEgaGFzIGV4dHJhIG5vbi1hYnNvcmJhYmxlIHN0YXRlcy4KKyAqLworCisv KgorICogbmZhX3N0YXRlX21ha2UKKyAqCisgKiBBbGxvY2F0ZSBhbiBORkEgc3RhdGUsIHJldXNp bmcgZnJvbSBmcmVlTGlzdCBpZiBhdmFpbGFibGUuCisgKiBmcmVlTGlzdCBpcyBzdG9yZWQgaW4g V2luZG93QWdnU3RhdGUgZm9yIHJldXNlIGFjcm9zcyBtYXRjaCBhdHRlbXB0cy4KKyAqIFVzZXMg ZmxleGlibGUgYXJyYXkgbWVtYmVyIGZvciBjb3VudHNbXS4KKyAqLworc3RhdGljIFJQUk5GQVN0 YXRlICoKK25mYV9zdGF0ZV9tYWtlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKK3sKKwlSUFJO RkFTdGF0ZSAqc3RhdGU7CisKKwkvKiBUcnkgdG8gcmV1c2UgZnJvbSBmcmVlIGxpc3QgZmlyc3Qg Ki8KKwlpZiAod2luc3RhdGUtPm5mYVN0YXRlRnJlZSAhPSBOVUxMKQorCXsKKwkJc3RhdGUgPSB3 aW5zdGF0ZS0+bmZhU3RhdGVGcmVlOworCQl3aW5zdGF0ZS0+bmZhU3RhdGVGcmVlID0gc3RhdGUt Pm5leHQ7CisJfQorCWVsc2UKKwl7CisJCS8qIEFsbG9jYXRlIGluIHBhcnRpdGlvbiBjb250ZXh0 IGZvciBwcm9wZXIgbGlmZXRpbWUgKi8KKwkJc3RhdGUgPSBNZW1vcnlDb250ZXh0QWxsb2Mod2lu c3RhdGUtPnBhcnRjb250ZXh0LCB3aW5zdGF0ZS0+bmZhU3RhdGVTaXplKTsKKwl9CisKKwkvKiBJ bml0aWFsaXplIGVudGlyZSBzdGF0ZSB0byB6ZXJvICovCisJbWVtc2V0KHN0YXRlLCAwLCB3aW5z dGF0ZS0+bmZhU3RhdGVTaXplKTsKKworCS8qIFVwZGF0ZSBzdGF0aXN0aWNzICovCisJd2luc3Rh dGUtPm5mYVN0YXRlc0FjdGl2ZSsrOworCXdpbnN0YXRlLT5uZmFTdGF0ZXNUb3RhbENyZWF0ZWQr KzsKKwl3aW5zdGF0ZS0+bmZhU3RhdGVzTWF4ID0gTWF4KHdpbnN0YXRlLT5uZmFTdGF0ZXNNYXgs CisJCQkJCQkJCSB3aW5zdGF0ZS0+bmZhU3RhdGVzQWN0aXZlKTsKKworCXJldHVybiBzdGF0ZTsK K30KKworLyoKKyAqIG5mYV9zdGF0ZV9mcmVlCisgKgorICogUmV0dXJuIGEgc3RhdGUgdG8gdGhl IGZyZWUgbGlzdCBmb3IgbGF0ZXIgcmV1c2UuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfc3RhdGVf ZnJlZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQVN0YXRlICpzdGF0ZSkKK3sKKwl3 aW5zdGF0ZS0+bmZhU3RhdGVzQWN0aXZlLS07CisJc3RhdGUtPm5leHQgPSB3aW5zdGF0ZS0+bmZh U3RhdGVGcmVlOworCXdpbnN0YXRlLT5uZmFTdGF0ZUZyZWUgPSBzdGF0ZTsKK30KKworLyoKKyAq IG5mYV9zdGF0ZV9mcmVlX2xpc3QKKyAqCisgKiBSZXR1cm4gYWxsIHN0YXRlcyBpbiBhIGxpc3Qg dG8gdGhlIGZyZWUgbGlzdC4KKyAqLworc3RhdGljIHZvaWQKK25mYV9zdGF0ZV9mcmVlX2xpc3Qo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFTdGF0ZSAqbGlzdCkKK3sKKwlSUFJORkFT dGF0ZSAqbmV4dDsKKworCWZvciAoOyBsaXN0ICE9IE5VTEw7IGxpc3QgPSBuZXh0KQorCXsKKwkJ bmV4dCA9IGxpc3QtPm5leHQ7CisJCW5mYV9zdGF0ZV9mcmVlKHdpbnN0YXRlLCBsaXN0KTsKKwl9 Cit9CisKKy8qCisgKiBuZmFfc3RhdGVfY2xvbmUKKyAqCisgKiBDbG9uZSBhIHN0YXRlIGZyb20g dGhlIGdpdmVuIGVsZW1JZHggYW5kIGNvdW50cy4KKyAqIGlzQWJzb3JiYWJsZSBpcyBjb21wdXRl ZCBpbW1lZGlhdGVseTogaW5oZXJpdGVkIEFORCBuZXcgZWxlbWVudCdzIGZsYWcuCisgKiBNb25v dG9uaWMgcHJvcGVydHk6IG9uY2UgZmFsc2UsIHN0YXlzIGZhbHNlIHRocm91Z2ggYWxsIHRyYW5z aXRpb25zLgorICoKKyAqIENhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbGlua2luZyB0aGUgcmV0 dXJuZWQgc3RhdGUuCisgKi8KK3N0YXRpYyBSUFJORkFTdGF0ZSAqCituZmFfc3RhdGVfY2xvbmUo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQxNiBlbGVtSWR4LAorCQkJCWludDMyICpjb3Vu dHMsIGJvb2wgc291cmNlQWJzb3JiYWJsZSkKK3sKKwlSUFJQYXR0ZXJuICpwYXR0ZXJuID0gd2lu c3RhdGUtPnJwUGF0dGVybjsKKwlpbnQJCQltYXhEZXB0aCA9IHBhdHRlcm4tPm1heERlcHRoOwor CVJQUk5GQVN0YXRlICpzdGF0ZSA9IG5mYV9zdGF0ZV9tYWtlKHdpbnN0YXRlKTsKKwlSUFJQYXR0 ZXJuRWxlbWVudCAqZWxlbSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tlbGVtSWR4XTsKKworCXN0YXRl LT5lbGVtSWR4ID0gZWxlbUlkeDsKKwkvKiBFdmVyeSByZWFjaGFibGUgY2FsbGVyIHBhc3NlcyBh IGxpdmUgc3RhdGUncyBjb3VudHM7IG1heERlcHRoID49IDEuICovCisJQXNzZXJ0KGNvdW50cyAh PSBOVUxMICYmIG1heERlcHRoID4gMCk7CisJbWVtY3B5KHN0YXRlLT5jb3VudHMsIGNvdW50cywg c2l6ZW9mKGludDMyKSAqIG1heERlcHRoKTsKKworCS8qCisJICogQ29tcHV0ZSBpc0Fic29yYmFi bGUgaW1tZWRpYXRlbHkgYXQgdHJhbnNpdGlvbiB0aW1lLiBpc0Fic29yYmFibGUgPQorCSAqIHNv dXJjZUFic29yYmFibGUgJiYgKGVsZW0tPmZsYWdzICYgQUJTT1JCQUJMRV9CUkFOQ0gpIE1vbm90 b25pYzogb25jZQorCSAqIGZhbHNlLCBzdGF5cyBmYWxzZSAoY2FuJ3QgcmUtZW50ZXIgYWJzb3Ji YWJsZSByZWdpb24pLgorCSAqLworCXN0YXRlLT5pc0Fic29yYmFibGUgPSBzb3VyY2VBYnNvcmJh YmxlICYmIFJQUkVsZW1Jc0Fic29yYmFibGVCcmFuY2goZWxlbSk7CisKKwlyZXR1cm4gc3RhdGU7 Cit9CisKKy8qCisgKiBuZmFfc3RhdGVzX2VxdWFsCisgKgorICogQ2hlY2sgaWYgdHdvIHN0YXRl cyBhcmUgZXF1aXZhbGVudCAoc2FtZSBlbGVtSWR4IGFuZCBjb3VudHMpLgorICovCitzdGF0aWMg Ym9vbAorbmZhX3N0YXRlc19lcXVhbChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQVN0 YXRlICpzMSwgUlBSTkZBU3RhdGUgKnMyKQoreworCVJQUlBhdHRlcm4gKnBhdHRlcm4gPSB3aW5z dGF0ZS0+cnBQYXR0ZXJuOworCVJQUlBhdHRlcm5FbGVtZW50ICplbGVtOworCWludAkJCWNvbXBh cmVEZXB0aDsKKworCWlmIChzMS0+ZWxlbUlkeCAhPSBzMi0+ZWxlbUlkeCkKKwkJcmV0dXJuIGZh bHNlOworCisJLyoKKwkgKiBDb21wYXJlIGNvdW50cyB1cCB0byBjdXJyZW50IGVsZW1lbnQncyBk ZXB0aC4gIFR3byBzdGF0ZXMgc2hhcmluZworCSAqIGVsZW1JZHggYXJlIGVxdWl2YWxlbnQgaWZm IGV2ZXJ5IGVuY2xvc2luZy1vci1jdXJyZW50IGRlcHRoIGNvdW50CisJICogbWF0Y2hlcy4KKwkg KgorCSAqIFRoZSArMSBpcyB0aGUgc2xvdCBhcml0aG1ldGljOiBjb21wYXJpbmcgdGhyb3VnaCBk ZXB0aCBOIHJlcXVpcmVzCisJICogY291bnRzWzAuLk5dLCBpLmUuLCBOKzEgZW50cmllcy4gIERl ZXBlciBzbG90cyAoY291bnRzW2RdIHdpdGggZCA+CisJICogZWxlbS0+ZGVwdGgpIGFyZSBleGNs dWRlZCBiZWNhdXNlIHRoZXkgaG9sZCBzY3JhdGNoIHN0YXRlIGZyb20gaW5uZXIKKwkgKiBncm91 cHMuICBQZXIgdGhlIGNvdW50LWNsZWFyIHBvbGljeSBzdWNoIGEgc2xvdCBpcyB6ZXJvZWQgd2hl biBpdHMKKwkgKiBvd25pbmcgZWxlbWVudCBleGl0cyAoc2VlIG5mYV9hZHZhbmNlX3ZhciBhbmQg dGhlIGlubGluZSBmYXN0IHBhdGggaW4KKwkgKiBuZmFfbWF0Y2gpLCBzbyBpdCBtdXN0IG5vdCBw YXJ0aWNpcGF0ZSBpbiBlcXVpdmFsZW5jZSBqdWRnbWVudC4KKwkgKi8KKwllbGVtID0gJnBhdHRl cm4tPmVsZW1lbnRzW3MxLT5lbGVtSWR4XTsKKwljb21wYXJlRGVwdGggPSBlbGVtLT5kZXB0aCAr IDE7CisKKwlpZiAobWVtY21wKHMxLT5jb3VudHMsIHMyLT5jb3VudHMsIHNpemVvZihpbnQzMikg KiBjb21wYXJlRGVwdGgpICE9IDApCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOwor fQorCisvKgorICogbmZhX2FkZF9zdGF0ZV91bmlxdWUKKyAqCisgKiBBZGQgdGhlIHN0YXRlIHRv IHRoZSBlbmQgb2YgdGhlIGN0eC0+c3RhdGVzIGxpbmtlZCBsaXN0LCBidXQgb25seSBpZiBhCisg KiBkdXBsaWNhdGUgc3RhdGUgaXMgbm90IGFscmVhZHkgcHJlc2VudC4KKyAqIEVhcmxpZXIgc3Rh dGVzIGhhdmUgYmV0dGVyIGxleGljYWwgb3JkZXIgKERGUyB0cmF2ZXJzYWwgb3JkZXIpLCBzbyBl eGlzdGluZworICogd2luczsgdGhlIG5ldyBzdGF0ZSBpcyBmcmVlZCB3aGVuIGEgZHVwbGljYXRl IGlzIGZvdW5kLgorICovCitzdGF0aWMgdm9pZAorbmZhX2FkZF9zdGF0ZV91bmlxdWUoV2luZG93 QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsIFJQUk5GQVN0YXRlICpzdGF0 ZSkKK3sKKwlSUFJORkFTdGF0ZSAqczsKKwlSUFJORkFTdGF0ZSAqdGFpbCA9IE5VTEw7CisKKwkv KgorCSAqIE1hcmsgVkFSIGluIHZpc2l0ZWQgYmVmb3JlIGR1cGxpY2F0ZSBjaGVjayB0byBwcmV2 ZW50IERGUyBsb29wcy4gVGhpcworCSAqIGlzIHRoZSBkZWZlcnJlZCBoYWxmIG9mIHRoZSBhc3lt bWV0cmljIHZpc2l0ZWQtbWFya2luZyBzY2hlbWU7IHNlZQorCSAqIG5mYV9hZHZhbmNlX3N0YXRl IGZvciB0aGUgbm9uLVZBUiAoRU5EL0FMVC9CRUdJTi9GSU4pIGhhbGYgYW5kIHRoZQorCSAqIHJh dGlvbmFsZSBmb3IgdGhlIGFzeW1tZXRyeS4KKwkgKi8KKwluZmFfbWFya192aXNpdGVkKHdpbnN0 YXRlLCBzdGF0ZS0+ZWxlbUlkeCk7CisKKwkvKiBDaGVjayBmb3IgZHVwbGljYXRlIGFuZCBmaW5k IHRhaWwgKi8KKwlmb3IgKHMgPSBjdHgtPnN0YXRlczsgcyAhPSBOVUxMOyBzID0gcy0+bmV4dCkK Kwl7CisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJaWYgKG5mYV9zdGF0ZXNfZXF1YWwo d2luc3RhdGUsIHMsIHN0YXRlKSkKKwkJeworCQkJLyoKKwkJCSAqIER1cGxpY2F0ZSBmb3VuZCAt IGV4aXN0aW5nIGhhcyBiZXR0ZXIgbGV4aWNhbCBvcmRlciwgZGlzY2FyZAorCQkJICogbmV3CisJ CQkgKi8KKwkJCW5mYV9zdGF0ZV9mcmVlKHdpbnN0YXRlLCBzdGF0ZSk7CisJCQl3aW5zdGF0ZS0+ bmZhU3RhdGVzTWVyZ2VkKys7CisJCQlyZXR1cm47CisJCX0KKwkJdGFpbCA9IHM7CisJfQorCisJ LyogTm8gZHVwbGljYXRlLCBhZGQgYXQgZW5kICovCisJc3RhdGUtPm5leHQgPSBOVUxMOworCWlm ICh0YWlsID09IE5VTEwpCisJCWN0eC0+c3RhdGVzID0gc3RhdGU7CisJZWxzZQorCQl0YWlsLT5u ZXh0ID0gc3RhdGU7Cit9CisKKy8qCisgKiBuZmFfYWRkX21hdGNoZWRfc3RhdGUKKyAqCisgKiBS ZWNvcmQgYSBzdGF0ZSB0aGF0IHJlYWNoZWQgRklOLCByZXBsYWNpbmcgYW55IHByZXZpb3VzIG1h dGNoLgorICoKKyAqIEZvciBTS0lQIFBBU1QgTEFTVCBST1csIGFsc28gcHJ1bmUgc3Vic2VxdWVu dCBjb250ZXh0cyB3aG9zZSBzdGFydCByb3cKKyAqIGZhbGxzIHdpdGhpbiB0aGUgbWF0Y2ggcmFu Z2UsIGFzIHRoZXkgY2Fubm90IHByb2R1Y2Ugb3V0cHV0IHJvd3MuCisgKi8KK3N0YXRpYyB2b2lk CituZmFfYWRkX21hdGNoZWRfc3RhdGUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFD b250ZXh0ICpjdHgsCisJCQkJCSAgUlBSTkZBU3RhdGUgKnN0YXRlLCBpbnQ2NCBtYXRjaEVuZFJv dykKK3sKKwlpZiAoY3R4LT5tYXRjaGVkU3RhdGUgIT0gTlVMTCkKKwkJbmZhX3N0YXRlX2ZyZWUo d2luc3RhdGUsIGN0eC0+bWF0Y2hlZFN0YXRlKTsKKworCWN0eC0+bWF0Y2hlZFN0YXRlID0gc3Rh dGU7CisJc3RhdGUtPm5leHQgPSBOVUxMOworCWN0eC0+bWF0Y2hFbmRSb3cgPSBtYXRjaEVuZFJv dzsKKworCS8qIFBydW5lIGNvbnRleHRzIHRoYXQgc3RhcnRlZCB3aXRoaW4gdGhpcyBtYXRjaCdz IHJhbmdlICovCisJaWYgKHdpbnN0YXRlLT5ycFNraXBUbyA9PSBTVF9QQVNUX0xBU1RfUk9XKQor CXsKKwkJaW50NjQJCXNraXBwZWRMZW47CisKKwkJd2hpbGUgKGN0eC0+bmV4dCAhPSBOVUxMICYm CisJCQkgICBjdHgtPm5leHQtPm1hdGNoU3RhcnRSb3cgPD0gbWF0Y2hFbmRSb3cpCisJCXsKKwkJ CVJQUk5GQUNvbnRleHQgKm5leHRDdHggPSBjdHgtPm5leHQ7CisKKwkJCUFzc2VydChuZXh0Q3R4 LT5sYXN0UHJvY2Vzc2VkUm93ID49IG5leHRDdHgtPm1hdGNoU3RhcnRSb3cpOworCQkJc2tpcHBl ZExlbiA9IG5leHRDdHgtPmxhc3RQcm9jZXNzZWRSb3cgLSBuZXh0Q3R4LT5tYXRjaFN0YXJ0Um93 ICsgMTsKKwkJCW5mYV9yZWNvcmRfY29udGV4dF9za2lwcGVkKHdpbnN0YXRlLCBza2lwcGVkTGVu KTsKKworCQkJRXhlY1JQUkZyZWVDb250ZXh0KHdpbnN0YXRlLCBuZXh0Q3R4KTsKKwkJfQorCX0K K30KKworLyoKKyAqIG5mYV9jb250ZXh0X21ha2UKKyAqCisgKiBBbGxvY2F0ZSBhbiBORkEgY29u dGV4dCwgcmV1c2luZyBmcm9tIGZyZWUgbGlzdCBpZiBhdmFpbGFibGUuCisgKi8KK3N0YXRpYyBS UFJORkFDb250ZXh0ICoKK25mYV9jb250ZXh0X21ha2UoV2luZG93QWdnU3RhdGUgKndpbnN0YXRl KQoreworCVJQUk5GQUNvbnRleHQgKmN0eDsKKworCWlmICh3aW5zdGF0ZS0+bmZhQ29udGV4dEZy ZWUgIT0gTlVMTCkKKwl7CisJCWN0eCA9IHdpbnN0YXRlLT5uZmFDb250ZXh0RnJlZTsKKwkJd2lu c3RhdGUtPm5mYUNvbnRleHRGcmVlID0gY3R4LT5uZXh0OworCX0KKwllbHNlCisJeworCQkvKiBB bGxvY2F0ZSBpbiBwYXJ0aXRpb24gY29udGV4dCBmb3IgcHJvcGVyIGxpZmV0aW1lICovCisJCWN0 eCA9IE1lbW9yeUNvbnRleHRBbGxvYyh3aW5zdGF0ZS0+cGFydGNvbnRleHQsIHNpemVvZihSUFJO RkFDb250ZXh0KSk7CisJfQorCisJY3R4LT5uZXh0ID0gTlVMTDsKKwljdHgtPnByZXYgPSBOVUxM OworCWN0eC0+c3RhdGVzID0gTlVMTDsKKwljdHgtPm1hdGNoU3RhcnRSb3cgPSAtMTsKKwljdHgt Pm1hdGNoRW5kUm93ID0gLTE7CisJY3R4LT5sYXN0UHJvY2Vzc2VkUm93ID0gLTE7CisJY3R4LT5t YXRjaGVkU3RhdGUgPSBOVUxMOworCisJLyogSW5pdGlhbGl6ZSB0d28tZmxhZyBhYnNvcnB0aW9u IGRlc2lnbiBiYXNlZCBvbiBwYXR0ZXJuICovCisJY3R4LT5oYXNBYnNvcmJhYmxlU3RhdGUgPSB3 aW5zdGF0ZS0+cnBQYXR0ZXJuLT5pc0Fic29yYmFibGU7CisJY3R4LT5hbGxTdGF0ZXNBYnNvcmJh YmxlID0gd2luc3RhdGUtPnJwUGF0dGVybi0+aXNBYnNvcmJhYmxlOworCisJLyogVXBkYXRlIHN0 YXRpc3RpY3MgKi8KKwl3aW5zdGF0ZS0+bmZhQ29udGV4dHNBY3RpdmUrKzsKKwl3aW5zdGF0ZS0+ bmZhQ29udGV4dHNUb3RhbENyZWF0ZWQrKzsKKwl3aW5zdGF0ZS0+bmZhQ29udGV4dHNNYXggPSBN YXgod2luc3RhdGUtPm5mYUNvbnRleHRzTWF4LAorCQkJCQkJCQkgICB3aW5zdGF0ZS0+bmZhQ29u dGV4dHNBY3RpdmUpOworCisJcmV0dXJuIGN0eDsKK30KKworLyoKKyAqIG5mYV91bmxpbmtfY29u dGV4dAorICoKKyAqIFJlbW92ZSBhIGNvbnRleHQgZnJvbSB0aGUgZG91Ymx5LWxpbmtlZCBhY3Rp dmUgY29udGV4dCBsaXN0LgorICogVXBkYXRlcyBoZWFkIChuZmFDb250ZXh0KSBhbmQgdGFpbCAo bmZhQ29udGV4dFRhaWwpIGFzIG5lZWRlZC4KKyAqLworc3RhdGljIHZvaWQKK25mYV91bmxpbmtf Y29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCkKK3sK KwlpZiAoY3R4LT5wcmV2ICE9IE5VTEwpCisJCWN0eC0+cHJldi0+bmV4dCA9IGN0eC0+bmV4dDsK KwllbHNlCisJCXdpbnN0YXRlLT5uZmFDb250ZXh0ID0gY3R4LT5uZXh0OwkvKiB3YXMgaGVhZCAq LworCisJaWYgKGN0eC0+bmV4dCAhPSBOVUxMKQorCQljdHgtPm5leHQtPnByZXYgPSBjdHgtPnBy ZXY7CisJZWxzZQorCQl3aW5zdGF0ZS0+bmZhQ29udGV4dFRhaWwgPSBjdHgtPnByZXY7CS8qIHdh cyB0YWlsICovCisKKwljdHgtPm5leHQgPSBOVUxMOworCWN0eC0+cHJldiA9IE5VTEw7Cit9CisK Ky8qCisgKiBuZmFfdXBkYXRlX2xlbmd0aF9zdGF0cworICoKKyAqIEhlbHBlciBmdW5jdGlvbiB0 byB1cGRhdGUgbWluL21heC90b3RhbCBsZW5ndGggc3RhdGlzdGljcy4KKyAqIENhbGxlZCB3aGVu IHRyYWNraW5nIG1hdGNoL21pc21hdGNoL2Fic29yYmVkL3NraXBwZWQgbGVuZ3Rocy4KKyAqLwor c3RhdGljIHZvaWQKK25mYV91cGRhdGVfbGVuZ3RoX3N0YXRzKGludDY0IGNvdW50LCBORkFMZW5n dGhTdGF0cyAqc3RhdHMsIGludDY0IG5ld0xlbikKK3sKKwlpZiAoY291bnQgPT0gMSkKKwl7CisJ CXN0YXRzLT5taW4gPSBuZXdMZW47CisJCXN0YXRzLT5tYXggPSBuZXdMZW47CisJfQorCWVsc2UK Kwl7CisJCXN0YXRzLT5taW4gPSBNaW4oc3RhdHMtPm1pbiwgbmV3TGVuKTsKKwkJc3RhdHMtPm1h eCA9IE1heChzdGF0cy0+bWF4LCBuZXdMZW4pOworCX0KKwlzdGF0cy0+dG90YWwgKz0gbmV3TGVu OworfQorCisvKgorICogbmZhX3JlY29yZF9jb250ZXh0X3NraXBwZWQKKyAqCisgKiBSZWNvcmQg YSBza2lwcGVkIGNvbnRleHQgaW4gc3RhdGlzdGljcy4KKyAqLworc3RhdGljIHZvaWQKK25mYV9y ZWNvcmRfY29udGV4dF9za2lwcGVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgc2tp cHBlZExlbikKK3sKKwl3aW5zdGF0ZS0+bmZhQ29udGV4dHNTa2lwcGVkKys7CisJbmZhX3VwZGF0 ZV9sZW5ndGhfc3RhdHMod2luc3RhdGUtPm5mYUNvbnRleHRzU2tpcHBlZCwKKwkJCQkJCQkmd2lu c3RhdGUtPm5mYVNraXBwZWRMZW4sCisJCQkJCQkJc2tpcHBlZExlbik7Cit9CisKKy8qCisgKiBu ZmFfcmVjb3JkX2NvbnRleHRfYWJzb3JiZWQKKyAqCisgKiBSZWNvcmQgYW4gYWJzb3JiZWQgY29u dGV4dCBpbiBzdGF0aXN0aWNzLgorICovCitzdGF0aWMgdm9pZAorbmZhX3JlY29yZF9jb250ZXh0 X2Fic29yYmVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgYWJzb3JiZWRMZW4pCit7 CisJd2luc3RhdGUtPm5mYUNvbnRleHRzQWJzb3JiZWQrKzsKKwluZmFfdXBkYXRlX2xlbmd0aF9z dGF0cyh3aW5zdGF0ZS0+bmZhQ29udGV4dHNBYnNvcmJlZCwKKwkJCQkJCQkmd2luc3RhdGUtPm5m YUFic29yYmVkTGVuLAorCQkJCQkJCWFic29yYmVkTGVuKTsKK30KKworLyoKKyAqIG5mYV91cGRh dGVfYWJzb3JwdGlvbl9mbGFncworICoKKyAqIFVwZGF0ZSBjb250ZXh0J3MgYWJzb3JwdGlvbiBm bGFncyBhZnRlciBzdGF0ZSBjaGFuZ2VzLgorICoKKyAqIFR3byBmbGFncyBjb250cm9sIGFic29y cHRpb24gYmVoYXZpb3I6CisgKiAgIGhhc0Fic29yYmFibGVTdGF0ZTogdHJ1ZSBpZiBjb250ZXh0 IGhhcyBhdCBsZWFzdCBvbmUgYWJzb3JiYWJsZSBzdGF0ZS4KKyAqICAgICBUaGlzIGZsYWcgaXMg bW9ub3RvbmljICh0cnVlIC0+IGZhbHNlIG9ubHkpLiBPbmNlIGFsbCBhYnNvcmJhYmxlIHN0YXRl cworICogICAgIGRpZSwgbm8gbmV3IGFic29yYmFibGUgc3RhdGVzIGNhbiBiZSBjcmVhdGVkIHRo cm91Z2ggdHJhbnNpdGlvbnMuCisgKiAgIGFsbFN0YXRlc0Fic29yYmFibGU6IHRydWUgaWYgQUxM IHN0YXRlcyBpbiBjb250ZXh0IGFyZSBhYnNvcmJhYmxlLgorICogICAgIFRoaXMgZmxhZyBpcyBk eW5hbWljIGFuZCBjYW4gY2hhbmdlIGZhbHNlIC0+IHRydWUgd2hlbiBub24tYWJzb3JiYWJsZQor ICogICAgIHN0YXRlcyBkaWUgb2ZmLgorICoKKyAqIE9wdGltaXphdGlvbjogT25jZSBoYXNBYnNv cmJhYmxlU3RhdGUgYmVjb21lcyBmYWxzZSwgYm90aCBmbGFncyByZW1haW4gZmFsc2UKKyAqIHBl cm1hbmVudGx5LCBzbyB3ZSBza2lwIHJlY2FsY3VsYXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitu ZmFfdXBkYXRlX2Fic29ycHRpb25fZmxhZ3MoUlBSTkZBQ29udGV4dCAqY3R4KQoreworCVJQUk5G QVN0YXRlICpzdGF0ZTsKKwlib29sCQloYXNBYnNvcmJhYmxlID0gZmFsc2U7CisJYm9vbAkJYWxs QWJzb3JiYWJsZSA9IHRydWU7CisKKwkvKgorCSAqIE9wdGltaXphdGlvbjogT25jZSBoYXNBYnNv cmJhYmxlU3RhdGUgYmVjb21lcyBmYWxzZSwgaXQgc3RheXMgZmFsc2UuIE5vCisJICogbmVlZCB0 byByZWNhbGN1bGF0ZSAtIGJvdGggZmxhZ3MgcmVtYWluIGZhbHNlIHBlcm1hbmVudGx5LgorCSAq LworCWlmICghY3R4LT5oYXNBYnNvcmJhYmxlU3RhdGUpCisJeworCQljdHgtPmFsbFN0YXRlc0Fi c29yYmFibGUgPSBmYWxzZTsKKwkJcmV0dXJuOworCX0KKworCS8qIE5vIHN0YXRlcyBtZWFucyBu byBhYnNvcmJhYmxlIHN0YXRlcyAqLworCWlmIChjdHgtPnN0YXRlcyA9PSBOVUxMKQorCXsKKwkJ Y3R4LT5oYXNBYnNvcmJhYmxlU3RhdGUgPSBmYWxzZTsKKwkJY3R4LT5hbGxTdGF0ZXNBYnNvcmJh YmxlID0gZmFsc2U7CisJCXJldHVybjsKKwl9CisKKwkvKgorCSAqIEl0ZXJhdGUgdGhyb3VnaCBh bGwgc3RhdGVzIHRvIGNoZWNrIGFic29ycHRpb24gc3RhdHVzLiBVc2VzCisJICogc3RhdGUtPmlz QWJzb3JiYWJsZSB3aGljaCB0cmFja3MgaWYgc3RhdGUgaXMgaW4gYWJzb3JiYWJsZSByZWdpb24u IFRoaXMKKwkgKiBpcyBkaWZmZXJlbnQgZnJvbSBSUFJFbGVtSXNBYnNvcmJhYmxlKGVsZW0pIHdo aWNoIGNoZWNrcyBqdWRnbWVudAorCSAqIHBvaW50LgorCSAqLworCWZvciAoc3RhdGUgPSBjdHgt PnN0YXRlczsgc3RhdGUgIT0gTlVMTDsgc3RhdGUgPSBzdGF0ZS0+bmV4dCkKKwl7CisJCUNIRUNL X0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJaWYgKHN0YXRlLT5pc0Fic29yYmFibGUpCisJCQloYXNB YnNvcmJhYmxlID0gdHJ1ZTsKKwkJZWxzZQorCQkJYWxsQWJzb3JiYWJsZSA9IGZhbHNlOworCX0K KworCWN0eC0+aGFzQWJzb3JiYWJsZVN0YXRlID0gaGFzQWJzb3JiYWJsZTsKKwljdHgtPmFsbFN0 YXRlc0Fic29yYmFibGUgPSBhbGxBYnNvcmJhYmxlOworfQorCisvKgorICogbmZhX3N0YXRlc19j b3ZlcmVkCisgKgorICogQ2hlY2sgaWYgYWxsIHN0YXRlcyBpbiBuZXdlciBjb250ZXh0IGFyZSAi Y292ZXJlZCIgYnkgb2xkZXIgY29udGV4dC4KKyAqCisgKiBBIG5ld2VyIHN0YXRlIGlzIGNvdmVy ZWQgd2hlbiBvbGRlciBjb250ZXh0IGhhcyBhbiBhYnNvcmJhYmxlIHN0YXRlIGF0IHRoZQorICog c2FtZSBwYXR0ZXJuIGVsZW1lbnQgKGVsZW1JZHgpIHdpdGggY291bnQgPj0gbmV3ZXIncyBjb3Vu dCBhdCB0aGF0IGRlcHRoLgorICogVGhlIGNvdmVyaW5nIHN0YXRlIG11c3QgYmUgYWJzb3JiYWJs ZSBiZWNhdXNlIG9ubHkgYWJzb3JiYWJsZSBzdGF0ZXMgY2FuCisgKiBndWFyYW50ZWUgdG8gcHJv ZHVjZSBzdXBlcnNldCBtYXRjaGVzLgorICoKKyAqIElmIGFsbCBuZXdlciBzdGF0ZXMgYXJlIGNv dmVyZWQsIG5ld2VyIGNvbnRleHQncyBldmVudHVhbCBtYXRjaGVzIHdpbGwgYmUKKyAqIGEgc3Vi c2V0IG9mIG9sZGVyIGNvbnRleHQncyBtYXRjaGVzLCBtYWtpbmcgbmV3ZXIgcmVkdW5kYW50Lgor ICovCitzdGF0aWMgYm9vbAorbmZhX3N0YXRlc19jb3ZlcmVkKFJQUlBhdHRlcm4gKnBhdHRlcm4s IFJQUk5GQUNvbnRleHQgKm9sZGVyLCBSUFJORkFDb250ZXh0ICpuZXdlcikKK3sKKwlSUFJORkFT dGF0ZSAqbmV3ZXJTdGF0ZTsKKworCWZvciAobmV3ZXJTdGF0ZSA9IG5ld2VyLT5zdGF0ZXM7IG5l d2VyU3RhdGUgIT0gTlVMTDsgbmV3ZXJTdGF0ZSA9IG5ld2VyU3RhdGUtPm5leHQpCisJeworCQlS UFJORkFTdGF0ZSAqb2xkZXJTdGF0ZTsKKwkJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW07CisJCWlu dAkJCWRlcHRoOworCQlib29sCQlmb3VuZCA9IGZhbHNlOworCisJCS8qIEFsbCBzdGF0ZXMgYXJl IGFic29yYmFibGUgKGNhbGxlciBjaGVja3MgYWxsU3RhdGVzQWJzb3JiYWJsZSkgKi8KKwkJZWxl bSA9ICZwYXR0ZXJuLT5lbGVtZW50c1tuZXdlclN0YXRlLT5lbGVtSWR4XTsKKwkJZGVwdGggPSBl bGVtLT5kZXB0aDsKKworCQkvKgorCQkgKiBPbmx5IGNvbXBhcmUgYXQgYWJzb3JwdGlvbiBqdWRn bWVudCBwb2ludHMgKFJQUl9FTEVNX0FCU09SQkFCTEUpLgorCQkgKiBKdWRnbWVudCBwb2ludHMg YXJlIHdoZXJlIGNvdW50LWRvbWluYW5jZSBndWFyYW50ZWVzIHRoZSBuZXdlcgorCQkgKiBjb250 ZXh0J3MgZnV0dXJlIG1hdGNoZXMgYXJlIGEgc3Vic2V0IG9mIHRoZSBvbGRlcidzLgorCQkgKi8K KwkJaWYgKCFSUFJFbGVtSXNBYnNvcmJhYmxlKGVsZW0pKQorCQkJcmV0dXJuIGZhbHNlOworCisJ CWZvciAob2xkZXJTdGF0ZSA9IG9sZGVyLT5zdGF0ZXM7IG9sZGVyU3RhdGUgIT0gTlVMTDsgb2xk ZXJTdGF0ZSA9IG9sZGVyU3RhdGUtPm5leHQpCisJCXsKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRT KCk7CisKKwkJCS8qIENvdmVyaW5nIHN0YXRlIG11c3QgYWxzbyBiZSBhYnNvcmJhYmxlICovCisJ CQlpZiAob2xkZXJTdGF0ZS0+aXNBYnNvcmJhYmxlICYmCisJCQkJb2xkZXJTdGF0ZS0+ZWxlbUlk eCA9PSBuZXdlclN0YXRlLT5lbGVtSWR4ICYmCisJCQkJb2xkZXJTdGF0ZS0+Y291bnRzW2RlcHRo XSA+PSBuZXdlclN0YXRlLT5jb3VudHNbZGVwdGhdKQorCQkJeworCQkJCWZvdW5kID0gdHJ1ZTsK KwkJCQlicmVhazsKKwkJCX0KKwkJfQorCisJCWlmICghZm91bmQpCisJCQlyZXR1cm4gZmFsc2U7 CisJfQorCisJcmV0dXJuIHRydWU7Cit9CisKKy8qCisgKiBuZmFfdHJ5X2Fic29yYl9jb250ZXh0 CisgKgorICogVHJ5IHRvIGFic29yYiBjdHggKG5ld2VyKSBpbnRvIGFuIG9sZGVyIGluLXByb2dy ZXNzIGNvbnRleHQuCisgKiBSZXR1cm5zIHRydWUgaWYgY3R4IHdhcyBhYnNvcmJlZCBhbmQgZnJl ZWQuCisgKgorICogQWJzb3JwdGlvbiByZXF1aXJlcyB0aHJlZSBjb25kaXRpb25zOgorICogICAx LiBjdHggbXVzdCBoYXZlIGFsbCBzdGF0ZXMgYWJzb3JiYWJsZSAoYWxsU3RhdGVzQWJzb3JiYWJs ZSkuCisgKiAgICAgIElmIGN0eCBoYXMgYW55IG5vbi1hYnNvcmJhYmxlIHN0YXRlLCBpdCBtYXkg cHJvZHVjZSB1bmlxdWUgbWF0Y2hlcy4KKyAqICAgMi4gb2xkZXIgbXVzdCBoYXZlIGF0IGxlYXN0 IG9uZSBhYnNvcmJhYmxlIHN0YXRlIChoYXNBYnNvcmJhYmxlU3RhdGUpLgorICogICAgICBXaXRo b3V0IGFic29yYmFibGUgc3RhdGVzLCBvbGRlciBjYW5ub3QgY292ZXIgbmV3ZXIncyBzdGF0ZXMu CisgKiAgIDMuIEFsbCBjdHggc3RhdGVzIG11c3QgYmUgY292ZXJlZCBieSBvbGRlcidzIGFic29y YmFibGUgc3RhdGVzLgorICogICAgICBUaGlzIGVuc3VyZXMgb2xkZXIgd2lsbCBwcm9kdWNlIGFs bCBtYXRjaGVzIHRoYXQgY3R4IHdvdWxkIHByb2R1Y2UuCisgKgorICogQ29udGV4dCBsaXN0IGlz IG9yZGVyZWQgYnkgY3JlYXRpb24gdGltZSAob2xkZXN0IGZpcnN0IHZpYSBwcmV2IGNoYWluKS4K KyAqIEVhY2ggcm93IGNyZWF0ZXMgYXQgbW9zdCBvbmUgY29udGV4dCwgc28gZWFybGllciBjb250 ZXh0cyBoYXZlIHNtYWxsZXIKKyAqIG1hdGNoU3RhcnRSb3cgdmFsdWVzLgorICovCitzdGF0aWMg dm9pZAorbmZhX3RyeV9hYnNvcmJfY29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQ Uk5GQUNvbnRleHQgKmN0eCkKK3sKKwlSUFJQYXR0ZXJuICpwYXR0ZXJuID0gd2luc3RhdGUtPnJw UGF0dGVybjsKKwlSUFJORkFDb250ZXh0ICpvbGRlcjsKKworCS8qIEVhcmx5IGV4aXQ6IGN0eCBt dXN0IGhhdmUgYWxsIHN0YXRlcyBhYnNvcmJhYmxlICovCisJaWYgKCFjdHgtPmFsbFN0YXRlc0Fi c29yYmFibGUpCisJCXJldHVybjsKKworCWZvciAob2xkZXIgPSBjdHgtPnByZXY7IG9sZGVyICE9 IE5VTEw7IG9sZGVyID0gb2xkZXItPnByZXYpCisJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygp OworCisJCS8qCisJCSAqIEJ5IGludmFyaWFudDogY3R4LT5wcmV2IGNoYWluIGlzIGluIGNyZWF0 aW9uIG9yZGVyIChvbGRlc3QgZmlyc3QpLAorCQkgKiBhbmQgZWFjaCByb3cgY3JlYXRlcyBhdCBt b3N0IG9uZSBjb250ZXh0LiBTbyBhbGwgY29udGV4dHMgaW4gdGhpcworCQkgKiBjaGFpbiBoYXZl IG1hdGNoU3RhcnRSb3cgPCBjdHgtPm1hdGNoU3RhcnRSb3cuCisJCSAqLworCisJCS8qIE9sZGVy IG11c3QgYWxzbyBiZSBpbi1wcm9ncmVzcyAqLworCQlpZiAob2xkZXItPnN0YXRlcyA9PSBOVUxM KQorCQkJY29udGludWU7CisKKwkJLyogT2xkZXIgbXVzdCBoYXZlIGF0IGxlYXN0IG9uZSBhYnNv cmJhYmxlIHN0YXRlICovCisJCWlmICghb2xkZXItPmhhc0Fic29yYmFibGVTdGF0ZSkKKwkJCWNv bnRpbnVlOworCisJCS8qIENoZWNrIGlmIGFsbCBuZXdlciBzdGF0ZXMgYXJlIGNvdmVyZWQgYnkg b2xkZXIgKi8KKwkJaWYgKG5mYV9zdGF0ZXNfY292ZXJlZChwYXR0ZXJuLCBvbGRlciwgY3R4KSkK KwkJeworCQkJaW50NjQJCWFic29yYmVkTGVuID0gY3R4LT5sYXN0UHJvY2Vzc2VkUm93IC0gY3R4 LT5tYXRjaFN0YXJ0Um93ICsgMTsKKworCQkJRXhlY1JQUkZyZWVDb250ZXh0KHdpbnN0YXRlLCBj dHgpOworCQkJbmZhX3JlY29yZF9jb250ZXh0X2Fic29yYmVkKHdpbnN0YXRlLCBhYnNvcmJlZExl bik7CisJCQlyZXR1cm47CisJCX0KKwl9Cit9CisKKy8qCisgKiBuZmFfYWJzb3JiX2NvbnRleHRz CisgKgorICogQWJzb3JiIHJlZHVuZGFudCBjb250ZXh0cyB0byByZWR1Y2UgbWVtb3J5IHVzYWdl IGFuZCBjb21wdXRhdGlvbi4KKyAqCisgKiBGb3IgcGF0dGVybnMgbGlrZSBBKywgbmV3ZXIgY29u dGV4dHMgc3RhcnRpbmcgbGF0ZXIgd2lsbCBwcm9kdWNlIHN1YnNldAorICogbWF0Y2hlcyBvZiBv bGRlciBjb250ZXh0cyB3aXRoIGhpZ2hlciBjb3VudHMuIEJ5IGFic29yYmluZyB0aGVzZSByZWR1 bmRhbnQKKyAqIGNvbnRleHRzIGVhcmx5LCB3ZSBhdm9pZCBkdXBsaWNhdGUgd29yay4KKyAqCisg KiBJdGVyYXRlcyBmcm9tIHRhaWwgKG5ld2VzdCkgdG93YXJkIGhlYWQgKG9sZGVzdCkgdmlhIHBy ZXYgY2hhaW4uCisgKiBPbmx5IGluLXByb2dyZXNzIGNvbnRleHRzIChzdGF0ZXMgIT0gTlVMTCkg YXJlIGNhbmRpZGF0ZXMgZm9yIGFic29ycHRpb247CisgKiBjb21wbGV0ZWQgY29udGV4dHMgcmVw cmVzZW50IHZhbGlkIG1hdGNoIHJlc3VsdHMuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfYWJzb3Ji X2NvbnRleHRzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKK3sKKwlSUFJORkFDb250ZXh0ICpj dHg7CisJUlBSTkZBQ29udGV4dCAqbmV4dEN0eDsKKworCWZvciAoY3R4ID0gd2luc3RhdGUtPm5m YUNvbnRleHRUYWlsOyBjdHggIT0gTlVMTDsgY3R4ID0gbmV4dEN0eCkKKwl7CisJCW5leHRDdHgg PSBjdHgtPnByZXY7CisKKwkJLyoKKwkJICogT25seSBhYnNvcmIgaW4tcHJvZ3Jlc3MgY29udGV4 dHM7IGNvbXBsZXRlZCBjb250ZXh0cyBhcmUgdmFsaWQKKwkJICogcmVzdWx0cworCQkgKi8KKwkJ aWYgKGN0eC0+c3RhdGVzICE9IE5VTEwpCisJCQluZmFfdHJ5X2Fic29yYl9jb250ZXh0KHdpbnN0 YXRlLCBjdHgpOworCX0KK30KKworLyoKKyAqIG5mYV9ldmFsX3Zhcl9tYXRjaAorICoKKyAqIEV2 YWx1YXRlIGlmIGEgVkFSIGVsZW1lbnQgbWF0Y2hlcyB0aGUgY3VycmVudCByb3cuCisgKgorICog dmFyTWF0Y2hlZCBpcyBhIHByZS1ldmFsdWF0ZWQgYm9vbGVhbiBhcnJheSBpbmRleGVkIGJ5IHZh cklkLCBjb21wdXRlZAorICogb25jZSBwZXIgcm93IGJ5IGV2YWx1YXRpbmcgYWxsIERFRklORSBl eHByZXNzaW9ucy4gIE5VTEwgbWVhbnMgbm8gREVGSU5FCisgKiBjbGF1c2VzIGV4aXN0IChvbmx5 IHBvc3NpYmxlIGR1cmluZyBlYXJseSBkZXZlbG9wbWVudC90ZXN0aW5nKS4KKyAqCisgKiBQZXIg SVNPL0lFQyAxOTA3NS01IEZlYXR1cmUgUjAyMCwgcGF0dGVybiB2YXJpYWJsZXMgbm90IGxpc3Rl ZCBpbiBERUZJTkUKKyAqIGFyZSBpbXBsaWNpdGx5IFRSVUUgLS0gdGhleSBtYXRjaCBldmVyeSBy b3cuICBUaGlzIGlzIGNoZWNrZWQgdmlhCisgKiB2YXJJZCA+PSBsaXN0X2xlbmd0aC4KKyAqLwor c3RhdGljIGJvb2wKK25mYV9ldmFsX3Zhcl9tYXRjaChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUs IFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCSAgIGJvb2wgKnZhck1hdGNoZWQpCit7CisJ LyogVGhpcyBmdW5jdGlvbiBzaG91bGQgb25seSBiZSBjYWxsZWQgZm9yIFZBUiBlbGVtZW50cyAq LworCUFzc2VydChSUFJFbGVtSXNWYXIoZWxlbSkpOworCisJaWYgKHZhck1hdGNoZWQgPT0gTlVM TCkKKwkJcmV0dXJuIGZhbHNlOworCWlmIChlbGVtLT52YXJJZCA+PSBsaXN0X2xlbmd0aCh3aW5z dGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0KSkKKwkJcmV0dXJuIHRydWU7CisJcmV0dXJuIHZhck1h dGNoZWRbZWxlbS0+dmFySWRdOworfQorCisvKgorICogbmZhX21hdGNoCisgKgorICogTWF0Y2gg cGhhc2UgKGNvbnZlcmdlbmNlKTogZXZhbHVhdGUgVkFSIGVsZW1lbnRzIGFnYWluc3QgY3VycmVu dCByb3cuCisgKiBPbmx5IHVwZGF0ZXMgY291bnRzIGFuZCByZW1vdmVzIGRlYWQgc3RhdGVzLiBN aW5pbWFsIHRyYW5zaXRpb25zLgorICoKKyAqIEZvciBWQVIgZWxlbWVudHM6CisgKiAgIC0gbWF0 Y2hlZDogY291bnQrKywga2VlcCBzdGF0ZSAodW5sZXNzIGNvdW50ID4gbWF4KQorICogICAtIG5v dCBtYXRjaGVkOiByZW1vdmUgc3RhdGUgKGV4aXQgYWx0ZXJuYXRpdmVzIGFscmVhZHkgZXhpc3Qg ZnJvbQorICogICAgIHByZXZpb3VzIGFkdmFuY2Ugd2hlbiBjb3VudCA+PSBtaW4gd2FzIHNhdGlz ZmllZCkKKyAqCisgKiBGb3IgVkFScyB0aGF0IHJlYWNoZWQgbWF4IGNvdW50IGZvbGxvd2VkIGJ5 IEVORDoKKyAqICAgLSBBZHZhbmNlIHRocm91Z2ggdGhlIEVORC1lbGVtZW50IGNoYWluIHRvIHRo ZSBhYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50CisgKiAgIC0gT25seSBkZXRlcm1pbmlzdGljIGV4 aXRzIChjb3VudCA+PSBtYXgsIG1heCAhPSBJTkYpIGFyZSBoYW5kbGVkCisgKiAgIC0gQ2hhaW5z IHRocm91Z2ggRU5EIGVsZW1lbnRzIHdoaWxlIGNvdW50ID49IG1heCAobXVzdC1leGl0IHBhdGgp CisgKgorICogTm9uLVZBUiBlbGVtZW50cyAoQUxULCBFTkQsIEZJTikgYXJlIGtlcHQgYXMtaXMg Zm9yIGFkdmFuY2UgcGhhc2UuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfbWF0Y2goV2luZG93QWdn U3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsIGJvb2wgKnZhck1hdGNoZWQpCit7 CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRlcm47CisJUlBSUGF0dGVy bkVsZW1lbnQgKmVsZW1lbnRzID0gcGF0dGVybi0+ZWxlbWVudHM7CisJUlBSTkZBU3RhdGUgKipw cmV2UHRyID0gJmN0eC0+c3RhdGVzOworCVJQUk5GQVN0YXRlICpzdGF0ZTsKKwlSUFJORkFTdGF0 ZSAqbmV4dFN0YXRlOworCisJLyoKKwkgKiBFdmFsdWF0ZSBWQVIgZWxlbWVudHMgYWdhaW5zdCBj dXJyZW50IHJvdy4gRm9yIFZBUnMgdGhhdCByZWFjaCBtYXgKKwkgKiBjb3VudCB3aXRoIEVORCBu ZXh0LCBhZHZhbmNlIHRocm91Z2ggdGhlIGNoYWluIG9mIEVORCBlbGVtZW50cyBpbmxpbmUKKwkg KiBzbyBhYnNvcmIgcGhhc2UgY2FuIGNvbXBhcmUgc3RhdGVzIGF0IGp1ZGdtZW50IHBvaW50cy4K KwkgKi8KKwlmb3IgKHN0YXRlID0gY3R4LT5zdGF0ZXM7IHN0YXRlICE9IE5VTEw7IHN0YXRlID0g bmV4dFN0YXRlKQorCXsKKwkJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0gPSAmZWxlbWVudHNbc3Rh dGUtPmVsZW1JZHhdOworCisJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisKKwkJbmV4dFN0YXRl ID0gc3RhdGUtPm5leHQ7CisKKwkJaWYgKFJQUkVsZW1Jc1ZhcihlbGVtKSkKKwkJeworCQkJYm9v bAkJbWF0Y2hlZDsKKwkJCWludAkJCWRlcHRoID0gZWxlbS0+ZGVwdGg7CisJCQlpbnQzMgkJY291 bnQgPSBzdGF0ZS0+Y291bnRzW2RlcHRoXTsKKworCQkJbWF0Y2hlZCA9IG5mYV9ldmFsX3Zhcl9t YXRjaCh3aW5zdGF0ZSwgZWxlbSwgdmFyTWF0Y2hlZCk7CisKKwkJCWlmIChtYXRjaGVkKQorCQkJ eworCQkJCS8qIEluY3JlbWVudCBjb3VudCAqLworCQkJCWlmIChjb3VudCA8IFJQUl9DT1VOVF9N QVgpCisJCQkJCWNvdW50Kys7CisKKwkJCQkvKiBNYXggY29uc3RyYWludCBzaG91bGQgbm90IGJl IGV4Y2VlZGVkICovCisJCQkJQXNzZXJ0KGVsZW0tPm1heCA9PSBSUFJfUVVBTlRJVFlfSU5GIHx8 IGNvdW50IDw9IGVsZW0tPm1heCk7CisKKwkJCQlzdGF0ZS0+Y291bnRzW2RlcHRoXSA9IGNvdW50 OworCisJCQkJLyoKKwkJCQkgKiBGb3IgVkFSIGF0IG1heCBjb3VudCB3aXRoIEVORCBuZXh0LCBh ZHZhbmNlIHRocm91Z2ggRU5ECisJCQkJICogY2hhaW4gdG8gcmVhY2ggdGhlIGFic29ycHRpb24g anVkZ21lbnQgcG9pbnQuICBPbmx5CisJCQkJICogZGV0ZXJtaW5pc3RpYyBleGl0cyAoY291bnQg Pj0gbWF4LCBtYXggZmluaXRlKSBhcmUgaGFuZGxlZDsKKwkJCQkgKiB1bmJvdW5kZWQgVkFScyBz dGF5IGZvciBhZHZhbmNlIHBoYXNlLgorCQkJCSAqCisJCQkJICogSW4gbmVzdGVkIHBhdHRlcm5z IGxpa2UgKChBIEIpezJ9KXszfSwgYSBWQVIgcmVhY2hpbmcgaXRzCisJCQkJICogbWF4IHRyaWdn ZXJzIGFuIGV4aXQgY2FzY2FkZTogaW5uZXIgRU5EIGluY3JlbWVudHMgaW5uZXIKKwkJCQkgKiBn cm91cCBjb3VudCwgd2hpY2ggbWF5IGl0c2VsZiByZWFjaCBtYXgsIHJlcXVpcmluZyBhbiBleGl0 CisJCQkJICogdG8gdGhlIG5leHQgb3V0ZXIgRU5ELiAgVGhlIGxvb3AgYmVsb3cgd2Fsa3MgdGhp cyBjaGFpbi4KKwkJCQkgKgorCQkJCSAqIEFCU09SQkFCTEVfQlJBTkNIIG1hcmtzIGVsZW1lbnRz IGluc2lkZSB0aGUgYWJzb3JiYWJsZQorCQkJCSAqIHJlZ2lvbjsgQUJTT1JCQUJMRSBtYXJrcyB0 aGUgb3V0ZXJtb3N0IGp1ZGdtZW50IHBvaW50IHdoZXJlCisJCQkJICogY291bnQtZG9taW5hbmNl IGlzIGV2YWx1YXRlZC4gIFdlIGNoYWluIHRocm91Z2ggQlJBTkNICisJCQkJICogZWxlbWVudHMg dW50aWwgcmVhY2hpbmcgdGhlIEFCU09SQkFCTEUgcG9pbnQgb3IgYW4gZWxlbWVudAorCQkJCSAq IHRoYXQgY2FuIHN0aWxsIGxvb3AgKGNvdW50IDwgbWF4KS4KKwkJCQkgKi8KKwkJCQlpZiAoUlBS RWxlbUlzQWJzb3JiYWJsZUJyYW5jaChlbGVtKSAmJgorCQkJCQkhUlBSRWxlbUlzQWJzb3JiYWJs ZShlbGVtKSAmJgorCQkJCQljb3VudCA+PSBlbGVtLT5tYXggJiYKKwkJCQkJUlBSRWxlbUlzRW5k KCZlbGVtZW50c1tlbGVtLT5uZXh0XSkpCisJCQkJeworCQkJCQlSUFJQYXR0ZXJuRWxlbWVudCAq ZW5kRWxlbSA9ICZlbGVtZW50c1tlbGVtLT5uZXh0XTsKKwkJCQkJaW50CQkJZW5kRGVwdGggPSBl bmRFbGVtLT5kZXB0aDsKKwkJCQkJaW50MzIJCWVuZENvdW50ID0gc3RhdGUtPmNvdW50c1tlbmRE ZXB0aF07CisKKwkJCQkJLyogSW5jcmVtZW50IGdyb3VwIGNvdW50ICovCisJCQkJCWlmIChlbmRD b3VudCA8IFJQUl9DT1VOVF9NQVgpCisJCQkJCQllbmRDb3VudCsrOworCQkJCQlBc3NlcnQoZW5k RWxlbS0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwKKwkJCQkJCSAgIGVuZENvdW50IDw9IGVu ZEVsZW0tPm1heCk7CisKKwkJCQkJc3RhdGUtPmVsZW1JZHggPSBlbGVtLT5uZXh0OworCQkJCQlz dGF0ZS0+Y291bnRzW2VuZERlcHRoXSA9IGVuZENvdW50OworCisJCQkJCS8qCisJCQkJCSAqIExl YWYgVkFSIGV4aXRlZCAocmVhY2hlZCBtYXgpOiBjbGVhciBpdHMgb3duIGNvdW50IHNvCisJCQkJ CSAqIHRoZSBuZXh0IG9jY3VwYW50IGVudGVycyB3aXRoIHplcm8sIGFzIG5mYV9hZHZhbmNlX3Zh cgorCQkJCQkgKiBkb2VzIG9uIGV4aXQgKHRoaXMgaW5saW5lIHBhdGggcmVwbGFjZXMgdGhhdCBl eGl0KS4KKwkJCQkJICogZGVwdGggPiBlbmREZXB0aCwgc28gdGhpcyBsZWF2ZXMgdGhlIGdyb3Vw IGNvdW50IGp1c3QKKwkJCQkJICogd3JpdHRlbiBpbnRhY3QuCisJCQkJCSAqLworCQkJCQlBc3Nl cnQoZW5kRGVwdGggPCBkZXB0aCk7CisJCQkJCXN0YXRlLT5jb3VudHNbZGVwdGhdID0gMDsKKwor CQkJCQkvKgorCQkJCQkgKiBDaGFpbiB0aHJvdWdoIEVORCBlbGVtZW50cyB3aXRoaW4gdGhlIGFi c29yYmFibGUgcmVnaW9uCisJCQkJCSAqIChBQlNPUkJBQkxFX0JSQU5DSCkgdW50aWwgcmVhY2hp bmcgdGhlIGp1ZGdtZW50IHBvaW50CisJCQkJCSAqIChBQlNPUkJBQkxFKS4gIENvbnRpbnVlIG9u bHkgb24gbXVzdC1leGl0IHBhdGggKGNvdW50CisJCQkJCSAqID49IG1heCkgd2l0aCBFTkQgbmV4 dC4KKwkJCQkJICovCisJCQkJCXdoaWxlIChSUFJFbGVtSXNBYnNvcmJhYmxlQnJhbmNoKGVuZEVs ZW0pICYmCisJCQkJCQkgICAhUlBSRWxlbUlzQWJzb3JiYWJsZShlbmRFbGVtKSAmJgorCQkJCQkJ ICAgZW5kQ291bnQgPj0gZW5kRWxlbS0+bWF4ICYmCisJCQkJCQkgICBSUFJFbGVtSXNFbmQoJmVs ZW1lbnRzW2VuZEVsZW0tPm5leHRdKSkKKwkJCQkJeworCQkJCQkJUlBSUGF0dGVybkVsZW1lbnQg Km91dGVyRW5kID0gJmVsZW1lbnRzW2VuZEVsZW0tPm5leHRdOworCQkJCQkJaW50CQkJb3V0ZXJE ZXB0aCA9IG91dGVyRW5kLT5kZXB0aDsKKwkJCQkJCWludDMyCQlvdXRlckNvdW50ID0gc3RhdGUt PmNvdW50c1tvdXRlckRlcHRoXTsKKworCQkJCQkJLyoKKwkJCQkJCSAqIEV4aXQgdGhpcyBpbnRl cm1lZGlhdGUgZ3JvdXA6IGNsZWFyIGl0cyBvd24gY291bnQKKwkJCQkJCSAqIChjb3VudC1jbGVh ciBwb2xpY3kpLiAgSXQgc2l0cyBiZWxvdyB0aGUgYWJzb3JiYWJsZQorCQkJCQkJICoganVkZ21l bnQgcG9pbnQsIHNvIGl0IGlzIGV4Y2x1ZGVkIGZyb20gdGhlCisJCQkJCQkgKiBkb21pbmFuY2Ug Y29tcGFyaXNvbjsgdGhlIGp1ZGdtZW50IHBvaW50IHdoZXJlIHRoZQorCQkJCQkJICogY2hhaW4g c3RvcHMga2VlcHMgaXRzIGNvdW50LgorCQkJCQkJICovCisJCQkJCQlzdGF0ZS0+Y291bnRzW2Vu ZERlcHRoXSA9IDA7CisKKwkJCQkJCS8qIEluY3JlbWVudCBvdXRlciBncm91cCBjb3VudCAqLwor CQkJCQkJaWYgKG91dGVyQ291bnQgPCBSUFJfQ09VTlRfTUFYKQorCQkJCQkJCW91dGVyQ291bnQr KzsKKwkJCQkJCUFzc2VydChvdXRlckVuZC0+bWF4ID09IFJQUl9RVUFOVElUWV9JTkYgfHwKKwkJ CQkJCQkgICBvdXRlckNvdW50IDw9IG91dGVyRW5kLT5tYXgpOworCisJCQkJCQlzdGF0ZS0+ZWxl bUlkeCA9IGVuZEVsZW0tPm5leHQ7CisJCQkJCQlzdGF0ZS0+Y291bnRzW291dGVyRGVwdGhdID0g b3V0ZXJDb3VudDsKKworCQkJCQkJLyogQWR2YW5jZSB0byBuZXh0IEVORCBpbiBjaGFpbiAqLwor CQkJCQkJZW5kRWxlbSA9IG91dGVyRW5kOworCQkJCQkJZW5kRGVwdGggPSBvdXRlckRlcHRoOwor CQkJCQkJZW5kQ291bnQgPSBvdXRlckNvdW50OworCQkJCQl9CisJCQkJfQorCQkJCS8qIGVsc2U6 IHN0YXkgYXQgVkFSIGZvciBhZHZhbmNlIHBoYXNlICovCisJCQl9CisJCQllbHNlCisJCQl7CisJ CQkJLyoKKwkJCQkgKiBOb3QgbWF0Y2hlZCAtIHJlbW92ZSBzdGF0ZS4gRXhpdCBhbHRlcm5hdGl2 ZXMgd2VyZSBhbHJlYWR5CisJCQkJICogY3JlYXRlZCBieSBhZHZhbmNlIHBoYXNlIHdoZW4gY291 bnQgPj0gbWluIHdhcyBzYXRpc2ZpZWQuCisJCQkJICovCisJCQkJKnByZXZQdHIgPSBuZXh0U3Rh dGU7CisJCQkJbmZhX3N0YXRlX2ZyZWUod2luc3RhdGUsIHN0YXRlKTsKKwkJCQljb250aW51ZTsK KwkJCX0KKwkJfQorCQkvKiBOb24tVkFSIGVsZW1lbnRzOiBrZWVwIGFzLWlzIGZvciBhZHZhbmNl IHBoYXNlICovCisKKwkJcHJldlB0ciA9ICZzdGF0ZS0+bmV4dDsKKwl9Cit9CisKKy8qCisgKiBu ZmFfcm91dGVfdG9fZWxlbQorICoKKyAqIFJvdXRlIHN0YXRlIHRvIG5leHQgZWxlbWVudC4gSWYg VkFSLCBhZGQgdG8gY3R4LT5zdGF0ZXMgYW5kIHByb2Nlc3MKKyAqIHNraXAgcGF0aCBpZiBvcHRp b25hbC4gT3RoZXJ3aXNlLCBjb250aW51ZSBlcHNpbG9uIGV4cGFuc2lvbiB2aWEgcmVjdXJzaW9u LgorICovCitzdGF0aWMgdm9pZAorbmZhX3JvdXRlX3RvX2VsZW0oV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJICBSUFJORkFTdGF0ZSAqc3RhdGUsIFJQ UlBhdHRlcm5FbGVtZW50ICpuZXh0RWxlbSwKKwkJCQkgIGludDY0IGN1cnJlbnRQb3MpCit7CisJ aWYgKFJQUkVsZW1Jc1ZhcihuZXh0RWxlbSkpCisJeworCQlSUFJORkFTdGF0ZSAqc2tpcFN0YXRl ID0gTlVMTDsKKworCQkvKgorCQkgKiBFbnRyeS1zaWRlIGNoZWNrIG9mIHRoZSBjb3VudC1jbGVh ciBwb2xpY3k6IGEgVkFSIGlzIGFsd2F5cyByb3V0ZWQKKwkJICogdG8gd2l0aCBhIGNsZWFuIHNs b3QuICBFYWNoIGVsZW1lbnQgemVyb2VzIGl0cyBvd24gY291bnQgb24gZXhpdCwKKwkJICogc28g YSBub256ZXJvIGNvdW50IGhlcmUgd291bGQgYmUgYSBsZWFrIGZyb20gYW4gZWFybGllciBlbGVt ZW50CisJCSAqIChzZWUgbmZhX2FkdmFuY2VfdmFyIC8gbmZhX2FkdmFuY2VfZW5kIGV4aXQgaGFu ZGxpbmcgYW5kIHRoZSBpbmxpbmUKKwkJICogZmFzdCBwYXRoIGluIG5mYV9tYXRjaCkuCisJCSAq LworCQlBc3NlcnQoc3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdID09IDApOworCisJCS8q IENyZWF0ZSBza2lwIHN0YXRlIGJlZm9yZSBhZGRfdW5pcXVlLCB3aGljaCBtYXkgZnJlZSBzdGF0 ZSAqLworCQlpZiAoUlBSRWxlbUNhblNraXAobmV4dEVsZW0pKQorCQkJc2tpcFN0YXRlID0gbmZh X3N0YXRlX2Nsb25lKHdpbnN0YXRlLCBuZXh0RWxlbS0+bmV4dCwKKwkJCQkJCQkJCQlzdGF0ZS0+ Y291bnRzLCBzdGF0ZS0+aXNBYnNvcmJhYmxlKTsKKworCQlpZiAoc2tpcFN0YXRlICE9IE5VTEwg JiYgUlBSRWxlbUlzUmVsdWN0YW50KG5leHRFbGVtKSkKKwkJeworCQkJUlBSTkZBU3RhdGUgKnNh dmVkTWF0Y2ggPSBjdHgtPm1hdGNoZWRTdGF0ZTsKKworCQkJLyoKKwkJCSAqIFJlbHVjdGFudCBv cHRpb25hbCBWQVI6IHByZWZlciBza2lwcGluZy4gIEV4cGxvcmUgdGhlIHNraXAgcGF0aAorCQkJ ICogZmlyc3Qgc28gaXQgb3V0cmFua3MgdGhlIGVudGVyIChtYXRjaCkgcGF0aDsgaWYgaXQgcmVh Y2hlcyBGSU4KKwkJCSAqIHRoZSBzaG9ydGVzdCBtYXRjaCBpcyBmb3VuZCBhbmQgdGhlIGVudGVy IHN0YXRlIGlzIGRyb3BwZWQuCisJCQkgKiBUaGlzIG1pcnJvcnMgdGhlIHJlbHVjdGFudCBicmFu Y2ggb2YgbmZhX2FkdmFuY2VfYmVnaW4gdXNlZCBieQorCQkJICogdGhlIGxlYWRpbmctcG9zaXRp b24gYW5kIG9wdGlvbmFsLWdyb3VwIHBhdGhzLgorCQkJICovCisJCQluZmFfYWR2YW5jZV9zdGF0 ZSh3aW5zdGF0ZSwgY3R4LCBza2lwU3RhdGUsIGN1cnJlbnRQb3MpOworCisJCQlpZiAoY3R4LT5t YXRjaGVkU3RhdGUgIT0gc2F2ZWRNYXRjaCkKKwkJCXsKKwkJCQluZmFfc3RhdGVfZnJlZSh3aW5z dGF0ZSwgc3RhdGUpOworCQkJCXJldHVybjsKKwkJCX0KKworCQkJbmZhX2FkZF9zdGF0ZV91bmlx dWUod2luc3RhdGUsIGN0eCwgc3RhdGUpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogR3JlZWR5 IChvciBub24tc2tpcHBhYmxlKTogZW50ZXIgZmlyc3QsIHRoZW4gc2tpcCAqLworCQkJbmZhX2Fk ZF9zdGF0ZV91bmlxdWUod2luc3RhdGUsIGN0eCwgc3RhdGUpOworCisJCQlpZiAoc2tpcFN0YXRl ICE9IE5VTEwpCisJCQkJbmZhX2FkdmFuY2Vfc3RhdGUod2luc3RhdGUsIGN0eCwgc2tpcFN0YXRl LCBjdXJyZW50UG9zKTsKKwkJfQorCX0KKwllbHNlCisJeworCQluZmFfYWR2YW5jZV9zdGF0ZSh3 aW5zdGF0ZSwgY3R4LCBzdGF0ZSwgY3VycmVudFBvcyk7CisJfQorfQorCisvKgorICogbmZhX2Fk dmFuY2VfYWx0CisgKgorICogSGFuZGxlIEFMVCBlbGVtZW50OiBleHBhbmQgYWxsIGJyYW5jaGVz IGluIGxleGljYWwgb3JkZXIgdmlhIERGUy4KKyAqLworc3RhdGljIHZvaWQKK25mYV9hZHZhbmNl X2FsdChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQlS UFJORkFTdGF0ZSAqc3RhdGUsIFJQUlBhdHRlcm5FbGVtZW50ICplbGVtLAorCQkJCWludDY0IGN1 cnJlbnRQb3MpCit7CisJUlBSUGF0dGVybiAqcGF0dGVybiA9IHdpbnN0YXRlLT5ycFBhdHRlcm47 CisJUlBSUGF0dGVybkVsZW1lbnQgKmVsZW1lbnRzID0gcGF0dGVybi0+ZWxlbWVudHM7CisJUlBS RWxlbUlkeAlhbHRJZHggPSBlbGVtLT5uZXh0OworCisJd2hpbGUgKGFsdElkeCA+PSAwKQorCXsK KwkJUlBSUGF0dGVybkVsZW1lbnQgKmFsdEVsZW07CisJCVJQUk5GQVN0YXRlICpuZXdTdGF0ZTsK KworCQkvKiBCcmFuY2gganVtcC9uZXh0IGxpbmtzIGFyZSBhbHdheXMgLTEgb3IgYSB2YWxpZCBp bmRleCAqLworCQlBc3NlcnQoYWx0SWR4IDwgcGF0dGVybi0+bnVtRWxlbWVudHMpOworCQlhbHRF bGVtID0gJmVsZW1lbnRzW2FsdElkeF07CisKKwkJLyoKKwkJICogU3RvcCBpZiBlbGVtZW50IGlz IG91dHNpZGUgQUxUIHNjb3BlIChub3QgYSBicmFuY2gpLiAgVGhlIGNoZWNrCisJCSAqIGZpcmVz IHdoZW4gdGhlIGxhc3QgYnJhbmNoIGlzIGEgcXVhbnRpZmllZCBncm91cCB3aG9zZSBCRUdJTi5q dW1wCisJCSAqIChzZXQgYnkgZmlsbFJQUlBhdHRlcm5Hcm91cCkgaXMgcHJlc2VydmVkIC0tIG5v dCBvdmVycmlkZGVuIGJ5CisJCSAqIGZpbGxSUFJQYXR0ZXJuQWx0LCB3aGljaCBvbmx5IGxpbmtz IG5vbi1sYXN0IGJyYW5jaCBoZWFkcyAtLSBhbmQKKwkJICogbGVhZHMgdG8gYSBwb3N0LUFMVCBl bGVtZW50LiAgT3RoZXIgYnJhbmNoIHNoYXBlcyB0ZXJtaW5hdGUgdGhlCisJCSAqIHdhbGsgZWFy bGllciB2aWEgYWx0SWR4ID0gUlBSX0VMRU1JRFhfSU5WQUxJRC4gIFVzZSA8PSwgbm90IDw6IHRo ZQorCQkgKiBwb3N0LUFMVCBlbGVtZW50IG1heSBzaXQgYXQgdGhlIHNhbWUgZGVwdGggYXMgdGhl IEFMVCB3aGVuIHRoZSBBTFQKKwkJICogaGFzIGEgc2libGluZyBhdCB0aGF0IGxldmVsLgorCQkg Ki8KKwkJaWYgKGFsdEVsZW0tPmRlcHRoIDw9IGVsZW0tPmRlcHRoKQorCQkJYnJlYWs7CisKKwkJ LyogQ3JlYXRlIGluZGVwZW5kZW50IHN0YXRlIGZvciBlYWNoIGJyYW5jaCAqLworCQluZXdTdGF0 ZSA9IG5mYV9zdGF0ZV9jbG9uZSh3aW5zdGF0ZSwgYWx0SWR4LAorCQkJCQkJCQkgICBzdGF0ZS0+ Y291bnRzLCBzdGF0ZS0+aXNBYnNvcmJhYmxlKTsKKworCQkvKiBSZWN1cnNpdmVseSBwcm9jZXNz IHRoaXMgYnJhbmNoIGJlZm9yZSBuZXh0ICovCisJCW5mYV9hZHZhbmNlX3N0YXRlKHdpbnN0YXRl LCBjdHgsIG5ld1N0YXRlLCBjdXJyZW50UG9zKTsKKwkJYWx0SWR4ID0gYWx0RWxlbS0+anVtcDsK Kwl9CisKKwluZmFfc3RhdGVfZnJlZSh3aW5zdGF0ZSwgc3RhdGUpOworfQorCisvKgorICogbmZh X2FkdmFuY2VfYmVnaW4KKyAqCisgKiBIYW5kbGUgQkVHSU4gZWxlbWVudDogZ3JvdXAgZW50cnkg bG9naWMuCisgKiBCRUdJTiBpcyBvbmx5IHZpc2l0ZWQgYXQgaW5pdGlhbCBncm91cCBlbnRyeTsg bG9vcC1iYWNrIGZyb20gRU5EIGdvZXMKKyAqIGRpcmVjdGx5IHRvIGZpcnN0IGNoaWxkLCBieXBh c3NpbmcgQkVHSU4uICBQZXIgdGhlIGNvdW50LWNsZWFyIHBvbGljeSB0aGUKKyAqIGdyb3VwJ3Mg b3duIGNvdW50IHNsb3QgaXMgdGhlcmVmb3JlIGFscmVhZHkgemVybyBvbiBlbnRyeSAoYXNzZXJ0 ZWQgYmVsb3cpLgorICogSWYgbWluPTAsIGNyZWF0ZXMgYSBza2lwIHBhdGggcGFzdCB0aGUgZ3Jv dXAuCisgKi8KK3N0YXRpYyB2b2lkCituZmFfYWR2YW5jZV9iZWdpbihXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkgIFJQUk5GQVN0YXRlICpzdGF0ZSwg UlBSUGF0dGVybkVsZW1lbnQgKmVsZW0sCisJCQkJICBpbnQ2NCBjdXJyZW50UG9zKQoreworCVJQ UlBhdHRlcm4gKnBhdHRlcm4gPSB3aW5zdGF0ZS0+cnBQYXR0ZXJuOworCVJQUlBhdHRlcm5FbGVt ZW50ICplbGVtZW50cyA9IHBhdHRlcm4tPmVsZW1lbnRzOworCVJQUk5GQVN0YXRlICpza2lwU3Rh dGUgPSBOVUxMOworCisJLyoKKwkgKiBFbnRyeS1zaWRlIGNoZWNrIG9mIHRoZSBjb3VudC1jbGVh ciBwb2xpY3k6IHRoZSBncm91cCdzIG93biBjb3VudCBzbG90CisJICogaXMgYWxyZWFkeSB6ZXJv IGhlcmUuICBCRUdJTiBpcyBvbmx5IHZpc2l0ZWQgYXQgaW5pdGlhbCBncm91cCBlbnRyeSwKKwkg KiBhbmQgdGhlIHByZXZpb3VzIG9jY3VwYW50IG9mIHRoaXMgZGVwdGggc2xvdCBjbGVhcmVkIGl0 IG9uIGV4aXQuCisJICovCisJQXNzZXJ0KHN0YXRlLT5jb3VudHNbZWxlbS0+ZGVwdGhdID09IDAp OworCisJLyogT3B0aW9uYWwgZ3JvdXA6IGNyZWF0ZSBza2lwIHBhdGggKGJ1dCBkb24ndCByb3V0 ZSB5ZXQpICovCisJaWYgKGVsZW0tPm1pbiA9PSAwKQorCXsKKwkJc2tpcFN0YXRlID0gbmZhX3N0 YXRlX2Nsb25lKHdpbnN0YXRlLCBlbGVtLT5qdW1wLAorCQkJCQkJCQkJc3RhdGUtPmNvdW50cywg c3RhdGUtPmlzQWJzb3JiYWJsZSk7CisJfQorCisJaWYgKHNraXBTdGF0ZSAhPSBOVUxMICYmIFJQ UkVsZW1Jc1JlbHVjdGFudChlbGVtKSkKKwl7CisJCVJQUk5GQVN0YXRlICpzYXZlZE1hdGNoID0g Y3R4LT5tYXRjaGVkU3RhdGU7CisKKwkJLyogUmVsdWN0YW50OiBza2lwIGZpcnN0IChwcmVmZXIg ZmV3ZXIgaXRlcmF0aW9ucyksIGVudGVyIHNlY29uZCAqLworCQluZmFfcm91dGVfdG9fZWxlbSh3 aW5zdGF0ZSwgY3R4LCBza2lwU3RhdGUsCisJCQkJCQkgICZlbGVtZW50c1tlbGVtLT5qdW1wXSwg Y3VycmVudFBvcyk7CisKKwkJLyoKKwkJICogSWYgc2tpcCBwYXRoIHJlYWNoZWQgRklOLCBzaG9y dGVzdCBtYXRjaCBpcyBmb3VuZC4gU2tpcCBncm91cCBlbnRyeQorCQkgKiB0byBwcmV2ZW50IGxv bmdlciBtYXRjaGVzLgorCQkgKi8KKwkJaWYgKGN0eC0+bWF0Y2hlZFN0YXRlICE9IHNhdmVkTWF0 Y2gpCisJCXsKKwkJCW5mYV9zdGF0ZV9mcmVlKHdpbnN0YXRlLCBzdGF0ZSk7CisJCQlyZXR1cm47 CisJCX0KKworCQlzdGF0ZS0+ZWxlbUlkeCA9IGVsZW0tPm5leHQ7CisJCW5mYV9yb3V0ZV90b19l bGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRlLAorCQkJCQkJICAmZWxlbWVudHNbc3RhdGUtPmVsZW1J ZHhdLCBjdXJyZW50UG9zKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogR3JlZWR5LW9yLW5v bi1udWxsYWJsZTogcm91dGUgdG8gdGhlIGZpcnN0IGNoaWxkLiAgRm9yIG9wdGlvbmFsCisJCSAq IGdyb3VwcyAoc2tpcFN0YXRlICE9IE5VTEwsIGdyZWVkeSBtaW49MCkgYWRkaXRpb25hbGx5IGNy ZWF0ZSB0aGUKKwkJICogc2tpcCBwYXRoOyBmb3Igbm9uLW51bGxhYmxlIGdyb3VwcyAoc2tpcFN0 YXRlID09IE5VTEwsIG1pbj4wKSB0aGUKKwkJICogc2tpcC1wYXRoIGFjdGlvbiBpcyBzdXBwcmVz c2VkIGJ5IHRoZSBndWFyZCBiZWxvdy4KKwkJICovCisJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+ bmV4dDsKKwkJbmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsCisJCQkJCQkg ICZlbGVtZW50c1tzdGF0ZS0+ZWxlbUlkeF0sIGN1cnJlbnRQb3MpOworCisJCWlmIChza2lwU3Rh dGUgIT0gTlVMTCkKKwkJeworCQkJbmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgc2tp cFN0YXRlLAorCQkJCQkJCSAgJmVsZW1lbnRzW2VsZW0tPmp1bXBdLCBjdXJyZW50UG9zKTsKKwkJ fQorCX0KK30KKworLyoKKyAqIG5mYV9hZHZhbmNlX2VuZAorICoKKyAqIEhhbmRsZSBFTkQgZWxl bWVudDogZ3JvdXAgcmVwZXRpdGlvbiBsb2dpYy4KKyAqIERlY2lkZXMgd2hldGhlciB0byBsb29w IGJhY2sgb3IgZXhpdCBiYXNlZCBvbiBjb3VudCB2cyBtaW4vbWF4LgorICovCitzdGF0aWMgdm9p ZAorbmZhX2FkdmFuY2VfZW5kKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBSTkZBQ29udGV4 dCAqY3R4LAorCQkJCVJQUk5GQVN0YXRlICpzdGF0ZSwgUlBSUGF0dGVybkVsZW1lbnQgKmVsZW0s CisJCQkJaW50NjQgY3VycmVudFBvcykKK3sKKwlSUFJQYXR0ZXJuICpwYXR0ZXJuID0gd2luc3Rh dGUtPnJwUGF0dGVybjsKKwlSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbWVudHMgPSBwYXR0ZXJuLT5l bGVtZW50czsKKwlpbnQJCQlkZXB0aCA9IGVsZW0tPmRlcHRoOworCWludDMyCQljb3VudCA9IHN0 YXRlLT5jb3VudHNbZGVwdGhdOworCisJaWYgKGNvdW50IDwgZWxlbS0+bWluKQorCXsKKwkJUlBS UGF0dGVybkVsZW1lbnQgKmp1bXBFbGVtOworCQlSUFJORkFTdGF0ZSAqZmZTdGF0ZSA9IE5VTEw7 CisJCVJQUlBhdHRlcm5FbGVtZW50ICpuZXh0RWxlbSA9IE5VTEw7CisKKwkJLyotLS0tLS0tLS0t CisJCSAqIFR3byBwYXRocyBhcmUgZXhwbG9yZWQgd2hlbiB0aGUgZ3JvdXAgYm9keSBpcyBudWxs YWJsZQorCQkgKiAoUlBSX0VMRU1fRU1QVFlfTE9PUCk6CisJCSAqCisJCSAqIDEuIExvb3AtYmFj ayBwYXRoOiBhdHRlbXB0IHJlYWwgbWF0Y2hlcyBpbiB0aGUgbmV4dCBpdGVyYXRpb24KKwkJICog ICAgKHN0YXRlLCBtb2RpZmllZCBiZWxvdykuCisJCSAqCisJCSAqIDIuIEZhc3QtZm9yd2FyZCBw YXRoOiBza2lwIGRpcmVjdGx5IHRvIGFmdGVyIHRoZSBncm91cCwgdHJlYXRpbmcKKwkJICogICAg YWxsIHJlbWFpbmluZyByZXF1aXJlZCBpdGVyYXRpb25zIGFzIGVtcHR5IG1hdGNoZXMgKGZmU3Rh dGUpLgorCQkgKiAgICBSb3V0ZSB0byBlbGVtLT5uZXh0IChub3QgbmZhX2FkdmFuY2VfZW5kKSB0 byBhdm9pZCBjcmVhdGluZworCQkgKiAgICBjb21wZXRpbmcgZ3JlZWR5L3JlbHVjdGFudCBsb29w IHN0YXRlcy4KKwkJICoKKwkJICogR3JlZWR5IHByZWZlcnMgdGhlIGxvb3AtYmFjayBmaXJzdCAo bW9yZSBpdGVyYXRpb25zKTsgcmVsdWN0YW50CisJCSAqIHByZWZlcnMgdGhlIGZhc3QtZm9yd2Fy ZCAoZXhpdCkgZmlyc3QgYW5kLCBpZiBpdCByZWFjaGVzIEZJTiwgZHJvcHMKKwkJICogdGhlIGxv b3AtYmFjayBzbyBhIGxvbmdlciBtYXRjaCBjYW5ub3QgcmVwbGFjZSB0aGUgc2hvcnRlc3Qgb25l IC0tCisJCSAqIG1pcnJvcmluZyB0aGUgbWluPD1jb3VudDxtYXggYnJhbmNoIGJlbG93LiAgVGhl IGZmU3RhdGUgc25hcHNob3QgaXMKKwkJICogdGFrZW4gQkVGT1JFIG1vZGlmeWluZyBzdGF0ZSwg c2luY2UgYm90aCBwYXRocyBkaXZlcmdlIGZyb20gaGVyZS4KKwkJICotLS0tLS0tLS0tCisJCSAq LworCQlpZiAoUlBSRWxlbUNhbkVtcHR5TG9vcChlbGVtKSkKKwkJeworCQkJZmZTdGF0ZSA9IG5m YV9zdGF0ZV9jbG9uZSh3aW5zdGF0ZSwgc3RhdGUtPmVsZW1JZHgsCisJCQkJCQkJCQkgIHN0YXRl LT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUpOworCisJCQkvKiBFeGl0IHRoZSBncm91cDog Y2xlYXIgaXRzIG93biBjb3VudCAoY291bnQtY2xlYXIgcG9saWN5KSAqLworCQkJZmZTdGF0ZS0+ Y291bnRzW2RlcHRoXSA9IDA7CisJCQlmZlN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+bmV4dDsKKwkJ CW5leHRFbGVtID0gJmVsZW1lbnRzW2ZmU3RhdGUtPmVsZW1JZHhdOworCisJCQkvKgorCQkJICog VW5saWtlIHRoZSBtdXN0LWV4aXQgcGF0aCwgbm8gaXNBYnNvcmJhYmxlIHVwZGF0ZSBpcyBuZWVk ZWQ6CisJCQkgKiB0aGUgZmFzdC1mb3J3YXJkIHBhdGggcnVucyBvbmx5IGZvciBFTVBUWV9MT09Q IChudWxsYWJsZSkKKwkJCSAqIGdyb3Vwcywgd2hpY2ggYXJlIG5ldmVyIGluc2lkZSBhbiBhYnNv cmJhYmxlIHJlZ2lvbiwgc28KKwkJCSAqIGlzQWJzb3JiYWJsZSBpcyBhbHJlYWR5IGZhbHNlIGhl cmUuCisJCQkgKi8KKworCQkJLyogRU5ELT5FTkQ6IGluY3JlbWVudCBvdXRlciBFTkQncyBjb3Vu dCAqLworCQkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0RWxlbSkgJiYKKwkJCQlmZlN0YXRlLT5jb3Vu dHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJCQkJZmZTdGF0ZS0+Y291bnRz W25leHRFbGVtLT5kZXB0aF0rKzsKKwkJfQorCisJCS8qIFByZXBhcmUgdGhlIGxvb3AtYmFjayBz dGF0ZSAqLworCQlzdGF0ZS0+ZWxlbUlkeCA9IGVsZW0tPmp1bXA7CisJCWp1bXBFbGVtID0gJmVs ZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKKworCQlpZiAoZmZTdGF0ZSAhPSBOVUxMICYmIFJQUkVs ZW1Jc1JlbHVjdGFudChlbGVtKSkKKwkJeworCQkJUlBSTkZBU3RhdGUgKnNhdmVkTWF0Y2ggPSBj dHgtPm1hdGNoZWRTdGF0ZTsKKworCQkJLyogUmVsdWN0YW50OiB0YWtlIHRoZSBmYXN0LWZvcndh cmQgKGV4aXQpIGZpcnN0ICovCisJCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBm ZlN0YXRlLCBuZXh0RWxlbSwKKwkJCQkJCQkgIGN1cnJlbnRQb3MpOworCisJCQkvKgorCQkJICog SWYgdGhlIGV4aXQgcmVhY2hlZCBGSU4sIHRoZSBzaG9ydGVzdCBtYXRjaCBpcyBmb3VuZC4gIFNr aXAgdGhlCisJCQkgKiBsb29wLWJhY2sgdG8gcHJldmVudCBsb25nZXIgbWF0Y2hlcyBmcm9tIHJl cGxhY2luZyBpdC4KKwkJCSAqLworCQkJaWYgKGN0eC0+bWF0Y2hlZFN0YXRlICE9IHNhdmVkTWF0 Y2gpCisJCQl7CisJCQkJbmZhX3N0YXRlX2ZyZWUod2luc3RhdGUsIHN0YXRlKTsKKwkJCQlyZXR1 cm47CisJCQl9CisKKwkJCS8qIExvb3AtYmFjayBzZWNvbmQgKi8KKwkJCW5mYV9yb3V0ZV90b19l bGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBqdW1wRWxlbSwKKwkJCQkJCQkgIGN1cnJlbnRQb3Mp OworCQl9CisJCWVsc2UKKwkJeworCQkJLyogR3JlZWR5IChvciBub24tbnVsbGFibGUpOiBsb29w LWJhY2sgZmlyc3QsIGZhc3QtZm9yd2FyZCBzZWNvbmQgKi8KKwkJCW5mYV9yb3V0ZV90b19lbGVt KHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBqdW1wRWxlbSwKKwkJCQkJCQkgIGN1cnJlbnRQb3MpOwor CQkJaWYgKGZmU3RhdGUgIT0gTlVMTCkKKwkJCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwg Y3R4LCBmZlN0YXRlLCBuZXh0RWxlbSwKKwkJCQkJCQkJICBjdXJyZW50UG9zKTsKKwkJfQorCX0K KwllbHNlIGlmIChlbGVtLT5tYXggIT0gUlBSX1FVQU5USVRZX0lORiAmJiBjb3VudCA+PSBlbGVt LT5tYXgpCisJeworCQkvKiBNdXN0IGV4aXQ6IHJlYWNoZWQgbWF4IGl0ZXJhdGlvbnMuICovCisJ CVJQUlBhdHRlcm5FbGVtZW50ICpuZXh0RWxlbTsKKworCQkvKiBFeGl0OiBjbGVhciB0aGUgZ3Jv dXAncyBvd24gY291bnQgKGNvdW50LWNsZWFyIHBvbGljeSkgKi8KKwkJc3RhdGUtPmNvdW50c1tk ZXB0aF0gPSAwOworCQlzdGF0ZS0+ZWxlbUlkeCA9IGVsZW0tPm5leHQ7CisJCW5leHRFbGVtID0g JmVsZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKKworCQkvKiBVcGRhdGUgaXNBYnNvcmJhYmxlIGZv ciB0YXJnZXQgZWxlbWVudCAobW9ub3RvbmljKSAqLworCQlzdGF0ZS0+aXNBYnNvcmJhYmxlID0g c3RhdGUtPmlzQWJzb3JiYWJsZSAmJgorCQkJUlBSRWxlbUlzQWJzb3JiYWJsZUJyYW5jaChuZXh0 RWxlbSk7CisKKwkJLyogRU5ELT5FTkQ6IGluY3JlbWVudCBvdXRlciBFTkQncyBjb3VudCAqLwor CQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSAmJiBzdGF0ZS0+Y291bnRzW25leHRFbGVtLT5k ZXB0aF0gPCBSUFJfQ09VTlRfTUFYKQorCQkJc3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhd Kys7CisKKwkJbmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgc3RhdGUsIG5leHRFbGVt LCBjdXJyZW50UG9zKTsKKwl9CisJZWxzZQorCXsKKwkJLyoKKwkJICogQmV0d2VlbiBtaW4gYW5k IG1heCAod2l0aCBhdCBsZWFzdCBvbmUgaXRlcmF0aW9uKSAtIGNhbiBleGl0IG9yCisJCSAqIGxv b3AuIEdyZWVkeTogbG9vcCBmaXJzdCAocHJlZmVyIG1vcmUgaXRlcmF0aW9ucykuIFJlbHVjdGFu dDogZXhpdAorCQkgKiBmaXJzdCAocHJlZmVyIGZld2VyIGl0ZXJhdGlvbnMpLgorCQkgKi8KKwkJ UlBSTkZBU3RhdGUgKmV4aXRTdGF0ZTsKKwkJUlBSUGF0dGVybkVsZW1lbnQgKmp1bXBFbGVtOwor CQlSUFJQYXR0ZXJuRWxlbWVudCAqbmV4dEVsZW07CisKKwkJLyoKKwkJICogQ3JlYXRlIGV4aXQg c3RhdGUgZmlyc3QgKG5lZWQgb3JpZ2luYWwgY291bnRzIGJlZm9yZSBtb2RpZnlpbmcKKwkJICog c3RhdGUpCisJCSAqLworCQlleGl0U3RhdGUgPSBuZmFfc3RhdGVfY2xvbmUod2luc3RhdGUsIGVs ZW0tPm5leHQsCisJCQkJCQkJCQlzdGF0ZS0+Y291bnRzLCBzdGF0ZS0+aXNBYnNvcmJhYmxlKTsK KwkJLyogRXhpdCBicmFuY2g6IGNsZWFyIHRoZSBncm91cCdzIG93biBjb3VudCAoY291bnQtY2xl YXIgcG9saWN5KSAqLworCQlleGl0U3RhdGUtPmNvdW50c1tkZXB0aF0gPSAwOworCQluZXh0RWxl bSA9ICZlbGVtZW50c1tleGl0U3RhdGUtPmVsZW1JZHhdOworCisJCS8qIEVORC0+RU5EOiBpbmNy ZW1lbnQgb3V0ZXIgRU5EJ3MgY291bnQgKi8KKwkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0RWxlbSkg JiYgZXhpdFN0YXRlLT5jb3VudHNbbmV4dEVsZW0tPmRlcHRoXSA8IFJQUl9DT1VOVF9NQVgpCisJ CQlleGl0U3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdKys7CisKKwkJLyogUHJlcGFyZSBs b29wIHN0YXRlICovCisJCXN0YXRlLT5lbGVtSWR4ID0gZWxlbS0+anVtcDsKKwkJanVtcEVsZW0g PSAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOworCisJCWlmIChSUFJFbGVtSXNSZWx1Y3RhbnQo ZWxlbSkpCisJCXsKKwkJCVJQUk5GQVN0YXRlICpzYXZlZE1hdGNoID0gY3R4LT5tYXRjaGVkU3Rh dGU7CisKKwkJCS8qIEV4aXQgZmlyc3QgKHByZWZlcnJlZCBmb3IgcmVsdWN0YW50KSAqLworCQkJ bmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUsIGN0eCwgZXhpdFN0YXRlLCBuZXh0RWxlbSwKKwkJ CQkJCQkgIGN1cnJlbnRQb3MpOworCisJCQkvKgorCQkJICogSWYgZXhpdCBwYXRoIHJlYWNoZWQg RklOLCBzaG9ydGVzdCBtYXRjaCBpcyBmb3VuZC4gU2tpcCBsb29wIHRvCisJCQkgKiBwcmV2ZW50 IGxvbmdlciBtYXRjaGVzIGZyb20gcmVwbGFjaW5nIGl0LgorCQkJICovCisJCQlpZiAoY3R4LT5t YXRjaGVkU3RhdGUgIT0gc2F2ZWRNYXRjaCkKKwkJCXsKKwkJCQluZmFfc3RhdGVfZnJlZSh3aW5z dGF0ZSwgc3RhdGUpOworCQkJCXJldHVybjsKKwkJCX0KKworCQkJLyogTG9vcCBzZWNvbmQgKi8K KwkJCW5mYV9yb3V0ZV90b19lbGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBqdW1wRWxlbSwKKwkJ CQkJCQkgIGN1cnJlbnRQb3MpOworCQl9CisJCWVsc2UKKwkJeworCQkJLyogTG9vcCBmaXJzdCAo cHJlZmVycmVkIGZvciBncmVlZHkpICovCisJCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwg Y3R4LCBzdGF0ZSwganVtcEVsZW0sCisJCQkJCQkJICBjdXJyZW50UG9zKTsKKwkJCS8qIEV4aXQg c2Vjb25kICovCisJCQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBleGl0U3RhdGUs IG5leHRFbGVtLAorCQkJCQkJCSAgY3VycmVudFBvcyk7CisJCX0KKwl9Cit9CisKKy8qCisgKiBu ZmFfYWR2YW5jZV92YXIKKyAqCisgKiBIYW5kbGUgVkFSIGVsZW1lbnQ6IGxvb3AvZXhpdCB0cmFu c2l0aW9ucy4KKyAqIEFmdGVyIG1hdGNoIHBoYXNlLCBhbGwgVkFSIHN0YXRlcyBoYXZlIG1hdGNo ZWQgLSBkZWNpZGUgbmV4dCBhY3Rpb24uCisgKi8KK3N0YXRpYyB2b2lkCituZmFfYWR2YW5jZV92 YXIoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgsCisJCQkJUlBS TkZBU3RhdGUgKnN0YXRlLCBSUFJQYXR0ZXJuRWxlbWVudCAqZWxlbSwKKwkJCQlpbnQ2NCBjdXJy ZW50UG9zKQoreworCVJQUlBhdHRlcm4gKnBhdHRlcm4gPSB3aW5zdGF0ZS0+cnBQYXR0ZXJuOwor CVJQUlBhdHRlcm5FbGVtZW50ICplbGVtZW50cyA9IHBhdHRlcm4tPmVsZW1lbnRzOworCWludAkJ CWRlcHRoID0gZWxlbS0+ZGVwdGg7CisJaW50MzIJCWNvdW50ID0gc3RhdGUtPmNvdW50c1tkZXB0 aF07CisJYm9vbAkJY2FuTG9vcCA9IChlbGVtLT5tYXggPT0gUlBSX1FVQU5USVRZX0lORiB8fCBj b3VudCA8IGVsZW0tPm1heCk7CisJYm9vbAkJY2FuRXhpdCA9IChjb3VudCA+PSBlbGVtLT5taW4p OworCisJLyogbWluIDw9IG1heCwgc28gIWNhbkV4aXQgKGNvdW50IDwgbWluKSBpbXBsaWVzIGNh bkxvb3AgKGNvdW50IDwgbWF4KSAqLworCUFzc2VydChjYW5Mb29wIHx8IGNhbkV4aXQpOworCisJ LyogZWxlbS0+bmV4dCBtdXN0IGJlIGEgdmFsaWQgaW5kZXggZm9yIGFueSByZWFjaGFibGUgVkFS ICovCisJQXNzZXJ0KGVsZW0tPm5leHQgPj0gMCAmJiBlbGVtLT5uZXh0IDwgcGF0dGVybi0+bnVt RWxlbWVudHMpOworCisJaWYgKGNhbkxvb3AgJiYgY2FuRXhpdCkKKwl7CisJCS8qCisJCSAqIEJv dGggbG9vcCBhbmQgZXhpdCBwb3NzaWJsZS4gR3JlZWR5OiBsb29wIGZpcnN0IChwcmVmZXIgbG9u Z2VyCisJCSAqIG1hdGNoKS4gUmVsdWN0YW50OiBleGl0IGZpcnN0IChwcmVmZXIgc2hvcnRlciBt YXRjaCkuCisJCSAqLworCQlSUFJORkFTdGF0ZSAqY2xvbmVTdGF0ZTsKKwkJUlBSUGF0dGVybkVs ZW1lbnQgKm5leHRFbGVtOworCQlib29sCQlyZWx1Y3RhbnQgPSBSUFJFbGVtSXNSZWx1Y3RhbnQo ZWxlbSk7CisKKwkJLyoKKwkJICogQ2xvbmUgc3RhdGUgZm9yIHRoZSBmaXJzdC1wcmlvcml0eSBw YXRoLiBGb3IgZ3JlZWR5LCBjbG9uZSBpcyB0aGUKKwkJICogbG9vcCBzdGF0ZTsgZm9yIHJlbHVj dGFudCwgY2xvbmUgaXMgdGhlIGV4aXQgc3RhdGUuCisJCSAqLworCQlpZiAocmVsdWN0YW50KQor CQl7CisJCQlSUFJORkFTdGF0ZSAqc2F2ZWRNYXRjaCA9IGN0eC0+bWF0Y2hlZFN0YXRlOworCisJ CQkvKiBDbG9uZSBmb3IgZXhpdCwgb3JpZ2luYWwgc3RheXMgZm9yIGxvb3AgKi8KKwkJCWNsb25l U3RhdGUgPSBuZmFfc3RhdGVfY2xvbmUod2luc3RhdGUsIGVsZW0tPm5leHQsCisJCQkJCQkJCQkJ IHN0YXRlLT5jb3VudHMsIHN0YXRlLT5pc0Fic29yYmFibGUpOworCQkJLyogRXhpdDogY2xlYXIg dGhlIFZBUidzIG93biBjb3VudCAoY291bnQtY2xlYXIgcG9saWN5KSAqLworCQkJY2xvbmVTdGF0 ZS0+Y291bnRzW2RlcHRoXSA9IDA7CisJCQluZXh0RWxlbSA9ICZlbGVtZW50c1tjbG9uZVN0YXRl LT5lbGVtSWR4XTsKKworCQkJLyogV2hlbiBleGl0aW5nIGRpcmVjdGx5IHRvIGFuIG91dGVyIEVO RCwgaW5jcmVtZW50IGl0cyBjb3VudCAqLworCQkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0RWxlbSkp CisJCQl7CisJCQkJaWYgKGNsb25lU3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBS X0NPVU5UX01BWCkKKwkJCQkJY2xvbmVTdGF0ZS0+Y291bnRzW25leHRFbGVtLT5kZXB0aF0rKzsK KwkJCX0KKworCQkJLyogRXhpdCBmaXJzdCAocHJlZmVycmVkIGZvciByZWx1Y3RhbnQpICovCisJ CQluZmFfcm91dGVfdG9fZWxlbSh3aW5zdGF0ZSwgY3R4LCBjbG9uZVN0YXRlLCBuZXh0RWxlbSwK KwkJCQkJCQkgIGN1cnJlbnRQb3MpOworCisJCQkvKgorCQkJICogSWYgZXhpdCBwYXRoIHJlYWNo ZWQgRklOLCB0aGUgc2hvcnRlc3QgbWF0Y2ggaXMgZm91bmQuIFNraXAKKwkJCSAqIGxvb3Agc3Rh dGUgdG8gcHJldmVudCBsb25nZXIgbWF0Y2hlcyBmcm9tIHJlcGxhY2luZyBpdC4KKwkJCSAqLwor CQkJaWYgKGN0eC0+bWF0Y2hlZFN0YXRlICE9IHNhdmVkTWF0Y2gpCisJCQl7CisJCQkJbmZhX3N0 YXRlX2ZyZWUod2luc3RhdGUsIHN0YXRlKTsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCS8qIExv b3Agc2Vjb25kICovCisJCQluZmFfYWRkX3N0YXRlX3VuaXF1ZSh3aW5zdGF0ZSwgY3R4LCBzdGF0 ZSk7CisJCX0KKwkJZWxzZQorCQl7CisJCQkvKiBDbG9uZSBmb3IgbG9vcCwgb3JpZ2luYWwgdXNl ZCBmb3IgZXhpdCAqLworCQkJY2xvbmVTdGF0ZSA9IG5mYV9zdGF0ZV9jbG9uZSh3aW5zdGF0ZSwg c3RhdGUtPmVsZW1JZHgsCisJCQkJCQkJCQkJIHN0YXRlLT5jb3VudHMsIHN0YXRlLT5pc0Fic29y YmFibGUpOworCisJCQkvKiBMb29wIGZpcnN0IChwcmVmZXJyZWQgZm9yIGdyZWVkeSkgKi8KKwkJ CW5mYV9hZGRfc3RhdGVfdW5pcXVlKHdpbnN0YXRlLCBjdHgsIGNsb25lU3RhdGUpOworCisJCQkv KiBFeGl0IHNlY29uZDogY2xlYXIgdGhlIFZBUidzIG93biBjb3VudCAoY291bnQtY2xlYXIgcG9s aWN5KSAqLworCQkJc3RhdGUtPmNvdW50c1tkZXB0aF0gPSAwOworCQkJc3RhdGUtPmVsZW1JZHgg PSBlbGVtLT5uZXh0OworCQkJbmV4dEVsZW0gPSAmZWxlbWVudHNbc3RhdGUtPmVsZW1JZHhdOwor CisJCQkvKgorCQkJICogVXBkYXRlIGlzQWJzb3JiYWJsZSBmb3IgdGFyZ2V0IGVsZW1lbnQgKG1v bm90b25pYzogQU5ECisJCQkgKiBwcmVzZXJ2ZXMgZmFsc2UpCisJCQkgKi8KKwkJCXN0YXRlLT5p c0Fic29yYmFibGUgPSBzdGF0ZS0+aXNBYnNvcmJhYmxlICYmCisJCQkJUlBSRWxlbUlzQWJzb3Ji YWJsZUJyYW5jaChuZXh0RWxlbSk7CisKKwkJCS8qCisJCQkgKiBXaGVuIGV4aXRpbmcgZGlyZWN0 bHkgdG8gYW4gb3V0ZXIgRU5ELCBpbmNyZW1lbnQgaXRzIGl0ZXJhdGlvbgorCQkJICogY291bnQu ICBTaW1wbGUgVkFScyAobWluPW1heD0xKSBoYW5kbGUgdGhpcyB2aWEgaW5saW5lIGFkdmFuY2UK KwkJCSAqIGluIG5mYV9tYXRjaCwgYnV0IHF1YW50aWZpZWQgVkFScyBieXBhc3MgdGhhdCBwYXRo LgorCQkJICovCisJCQlpZiAoUlBSRWxlbUlzRW5kKG5leHRFbGVtKSkKKwkJCXsKKwkJCQlpZiAo c3RhdGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdIDwgUlBSX0NPVU5UX01BWCkKKwkJCQkJc3Rh dGUtPmNvdW50c1tuZXh0RWxlbS0+ZGVwdGhdKys7CisJCQl9CisKKwkJCW5mYV9yb3V0ZV90b19l bGVtKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBuZXh0RWxlbSwKKwkJCQkJCQkgIGN1cnJlbnRQb3Mp OworCQl9CisJfQorCWVsc2UgaWYgKGNhbkxvb3ApCisJeworCQkvKiBMb29wIG9ubHk6IGtlZXAg c3RhdGUgYXMtaXMgKi8KKwkJbmZhX2FkZF9zdGF0ZV91bmlxdWUod2luc3RhdGUsIGN0eCwgc3Rh dGUpOworCX0KKwllbHNlCisJeworCQkvKiBFeGl0IG9ubHk6IGFkdmFuY2UgdG8gbmV4dCBlbGVt ZW50IChjYW5FeGl0IG5lY2Vzc2FyaWx5IHRydWUpICovCisJCVJQUlBhdHRlcm5FbGVtZW50ICpu ZXh0RWxlbTsKKworCQlBc3NlcnQoY2FuRXhpdCk7CisJCS8qIEV4aXQ6IGNsZWFyIHRoZSBWQVIn cyBvd24gY291bnQgKGNvdW50LWNsZWFyIHBvbGljeSkgKi8KKwkJc3RhdGUtPmNvdW50c1tkZXB0 aF0gPSAwOworCQlzdGF0ZS0+ZWxlbUlkeCA9IGVsZW0tPm5leHQ7CisJCW5leHRFbGVtID0gJmVs ZW1lbnRzW3N0YXRlLT5lbGVtSWR4XTsKKworCQkvKgorCQkgKiBVcGRhdGUgaXNBYnNvcmJhYmxl IGZvciB0YXJnZXQgZWxlbWVudCAobW9ub3RvbmljOiBBTkQgcHJlc2VydmVzCisJCSAqIGZhbHNl KQorCQkgKi8KKwkJc3RhdGUtPmlzQWJzb3JiYWJsZSA9IHN0YXRlLT5pc0Fic29yYmFibGUgJiYK KwkJCVJQUkVsZW1Jc0Fic29yYmFibGVCcmFuY2gobmV4dEVsZW0pOworCisJCS8qIFNlZSBjb21t ZW50IGFib3ZlOiBpbmNyZW1lbnQgb3V0ZXIgRU5EIGNvdW50IGZvciBxdWFudGlmaWVkIFZBUnMg Ki8KKwkJaWYgKFJQUkVsZW1Jc0VuZChuZXh0RWxlbSkpCisJCXsKKwkJCWlmIChzdGF0ZS0+Y291 bnRzW25leHRFbGVtLT5kZXB0aF0gPCBSUFJfQ09VTlRfTUFYKQorCQkJCXN0YXRlLT5jb3VudHNb bmV4dEVsZW0tPmRlcHRoXSsrOworCQl9CisKKwkJbmZhX3JvdXRlX3RvX2VsZW0od2luc3RhdGUs IGN0eCwgc3RhdGUsIG5leHRFbGVtLCBjdXJyZW50UG9zKTsKKwl9Cit9CisKKy8qCisgKiBuZmFf YWR2YW5jZV9zdGF0ZQorICoKKyAqIFJlY3Vyc2l2ZWx5IHByb2Nlc3MgYSBzaW5nbGUgc3RhdGUg dGhyb3VnaCBlcHNpbG9uIHRyYW5zaXRpb25zLgorICogREZTIHRyYXZlcnNhbCBlbnN1cmVzIHN0 YXRlcyBhcmUgYWRkZWQgdG8gY3R4LT5zdGF0ZXMgaW4gbGV4aWNhbCBvcmRlci4KKyAqLworc3Rh dGljIHZvaWQKK25mYV9hZHZhbmNlX3N0YXRlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgUlBS TkZBQ29udGV4dCAqY3R4LAorCQkJCSAgUlBSTkZBU3RhdGUgKnN0YXRlLCBpbnQ2NCBjdXJyZW50 UG9zKQoreworCVJQUlBhdHRlcm4gKnBhdHRlcm4gPSB3aW5zdGF0ZS0+cnBQYXR0ZXJuOworCVJQ UlBhdHRlcm5FbGVtZW50ICplbGVtOworCisJQXNzZXJ0KHN0YXRlLT5lbGVtSWR4ID49IDAgJiYg c3RhdGUtPmVsZW1JZHggPCBwYXR0ZXJuLT5udW1FbGVtZW50cyk7CisKKwkvKiBQcm90ZWN0IGFn YWluc3Qgc3RhY2sgb3ZlcmZsb3cgZm9yIGRlZXBseSBjb21wbGV4IHBhdHRlcm5zICovCisJY2hl Y2tfc3RhY2tfZGVwdGgoKTsKKworCS8qIEN5Y2xlIGRldGVjdGlvbjogaWYgdGhpcyBlbGVtSWR4 IHdhcyBhbHJlYWR5IHZpc2l0ZWQgaW4gdGhpcyBERlMsIGJhaWwgKi8KKwlpZiAod2luc3RhdGUt Pm5mYVZpc2l0ZWRFbGVtc1tXT1JETlVNKHN0YXRlLT5lbGVtSWR4KV0gJgorCQkoKGJpdG1hcHdv cmQpIDEgPDwgQklUTlVNKHN0YXRlLT5lbGVtSWR4KSkpCisJeworCQluZmFfc3RhdGVfZnJlZSh3 aW5zdGF0ZSwgc3RhdGUpOworCQlyZXR1cm47CisJfQorCisJZWxlbSA9ICZwYXR0ZXJuLT5lbGVt ZW50c1tzdGF0ZS0+ZWxlbUlkeF07CisKKwkvKgorCSAqIE1hcmsgZXBzaWxvbiBlbGVtZW50cyAo RU5ELCBBTFQsIEJFR0lOLCBGSU4pIGluIHZpc2l0ZWQgdG8gcHJldmVudAorCSAqIGluZmluaXRl IGVwc2lsb24gY3ljbGVzLiAgVkFSIGVsZW1lbnRzIGFyZSBtYXJrZWQgbGF0ZXIgd2hlbiBhZGRl ZCB0bworCSAqIHRoZSBzdGF0ZSBsaXN0IChuZmFfYWRkX3N0YXRlX3VuaXF1ZSksIGFsbG93aW5n IGxlZ2l0aW1hdGUgbG9vcC1iYWNrIHRvCisJICogdGhlIHNhbWUgVkFSIGluIGEgbmV3IGl0ZXJh dGlvbi4KKwkgKi8KKwlpZiAoIVJQUkVsZW1Jc1ZhcihlbGVtKSkKKwkJbmZhX21hcmtfdmlzaXRl ZCh3aW5zdGF0ZSwgc3RhdGUtPmVsZW1JZHgpOworCisJc3dpdGNoIChlbGVtLT52YXJJZCkKKwl7 CisJCWNhc2UgUlBSX1ZBUklEX0ZJTjoKKwkJCS8qIEZJTjogcmVjb3JkIG1hdGNoICovCisJCQlu ZmFfYWRkX21hdGNoZWRfc3RhdGUod2luc3RhdGUsIGN0eCwgc3RhdGUsIGN1cnJlbnRQb3MpOwor CQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfVkFSSURfQUxUOgorCQkJbmZhX2FkdmFuY2VfYWx0KHdp bnN0YXRlLCBjdHgsIHN0YXRlLCBlbGVtLCBjdXJyZW50UG9zKTsKKwkJCWJyZWFrOworCisJCWNh c2UgUlBSX1ZBUklEX0JFR0lOOgorCQkJbmZhX2FkdmFuY2VfYmVnaW4od2luc3RhdGUsIGN0eCwg c3RhdGUsIGVsZW0sIGN1cnJlbnRQb3MpOworCQkJYnJlYWs7CisKKwkJY2FzZSBSUFJfVkFSSURf RU5EOgorCQkJbmZhX2FkdmFuY2VfZW5kKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBlbGVtLCBjdXJy ZW50UG9zKTsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJCQkvKiBWQVIgZWxlbWVudCAqLwor CQkJbmZhX2FkdmFuY2VfdmFyKHdpbnN0YXRlLCBjdHgsIHN0YXRlLCBlbGVtLCBjdXJyZW50UG9z KTsKKwkJCWJyZWFrOworCX0KK30KKworLyoKKyAqIG5mYV9hZHZhbmNlCisgKgorICogQWR2YW5j ZSBwaGFzZSAoZGl2ZXJnZW5jZSk6IHRyYW5zaXRpb24gZnJvbSBhbGwgc3Vydml2aW5nIHN0YXRl cy4KKyAqIENhbGxlZCBhZnRlciBtYXRjaCBwaGFzZSB3aXRoIG1hdGNoZWQgVkFSIHN0YXRlcywg b3IgYXQgY29udGV4dCBjcmVhdGlvbgorICogZm9yIGluaXRpYWwgZXBzaWxvbiBleHBhbnNpb24g KHdpdGggY3VycmVudFBvcyA9IHN0YXJ0UG9zIC0gMSkuCisgKgorICogUHJvY2Vzc2VzIHN0YXRl cyBpbiBvcmRlciwgdXNpbmcgcmVjdXJzaXZlIERGUyB0byBtYWludGFpbiBsZXhpY2FsIG9yZGVy LgorICovCitzdGF0aWMgdm9pZAorbmZhX2FkdmFuY2UoV2luZG93QWdnU3RhdGUgKndpbnN0YXRl LCBSUFJORkFDb250ZXh0ICpjdHgsIGludDY0IGN1cnJlbnRQb3MpCit7CisJUlBSTkZBU3RhdGUg KnN0YXRlcyA9IGN0eC0+c3RhdGVzOworCVJQUk5GQVN0YXRlICpzdGF0ZTsKKwlSUFJORkFTdGF0 ZSAqc2F2ZWRNYXRjaGVkU3RhdGU7CisKKwljdHgtPnN0YXRlcyA9IE5VTEw7CQkJLyogV2lsbCBy ZWJ1aWxkICovCisKKwkvKiBQcm9jZXNzIGVhY2ggc3RhdGUgaW4gbGV4aWNhbCBvcmRlciAoREZT IG9yZGVyIGZyb20gcHJldmlvdXMgYWR2YW5jZSkgKi8KKwl3aGlsZSAoc3RhdGVzICE9IE5VTEwp CisJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCQlzYXZlZE1hdGNoZWRTdGF0ZSA9IGN0 eC0+bWF0Y2hlZFN0YXRlOworCisJCS8qCisJCSAqIENsZWFyIHZpc2l0ZWQgYml0bWFwIGJlZm9y ZSBlYWNoIHN0YXRlJ3MgREZTIGV4cGFuc2lvbi4gIE9ubHkgdGhlCisJCSAqIHJhbmdlIHRvdWNo ZWQgc2luY2UgdGhlIHByZXZpb3VzIHJlc2V0ICh0cmFja2VkIHZpYSB0aGUgaGlnaC13YXRlcgor CQkgKiBtYXJrcyB1cGRhdGVkIGluIG5mYV9tYXJrX3Zpc2l0ZWQpIG5lZWRzIHRvIGJlIGNsZWFy ZWQ7IGZvciBzbWFsbAorCQkgKiBORkFzIHRoaXMgaXMgdGhlIHdob2xlIGFycmF5LCBidXQgZm9y IGxhcmdlIE5GQXMgd2hvc2UgREZTIG9ubHkKKwkJICogcmVhY2hlcyBhIGZldyBlbGVtZW50cyBw ZXIgYWR2YW5jZSBpdCBhdm9pZHMgd2Fsa2luZyB0aGUgZnVsbAorCQkgKiBiaXRtYXAuCisJCSAq LworCQlpZiAod2luc3RhdGUtPm5mYVZpc2l0ZWRNYXhXb3JkID49IHdpbnN0YXRlLT5uZmFWaXNp dGVkTWluV29yZCkKKwkJeworCQkJbWVtc2V0KCZ3aW5zdGF0ZS0+bmZhVmlzaXRlZEVsZW1zW3dp bnN0YXRlLT5uZmFWaXNpdGVkTWluV29yZF0sIDAsCisJCQkJICAgc2l6ZW9mKGJpdG1hcHdvcmQp ICoKKwkJCQkgICAod2luc3RhdGUtPm5mYVZpc2l0ZWRNYXhXb3JkIC0KKwkJCQkJd2luc3RhdGUt Pm5mYVZpc2l0ZWRNaW5Xb3JkICsgMSkpOworCQkJd2luc3RhdGUtPm5mYVZpc2l0ZWRNaW5Xb3Jk ID0gUEdfSU5UMTZfTUFYOworCQkJd2luc3RhdGUtPm5mYVZpc2l0ZWRNYXhXb3JkID0gLTE7CisJ CX0KKworCQlzdGF0ZSA9IHN0YXRlczsKKwkJc3RhdGVzID0gc3RhdGVzLT5uZXh0OworCisJCS8q CisJCSAqIEJvdW5kYXJ5IGNvbnRyYWN0OiBzdGF0ZS0+bmV4dCBpcyByZXNldCB0byBOVUxMIGhl cmUsIGJlZm9yZQorCQkgKiBjcm9zc2luZyBpbnRvIG5mYV9hZHZhbmNlX3N0YXRlJ3MgZXBzaWxv bi1leHBhbnNpb24gREZTLiAgVGhlIGlubmVyCisJCSAqIGJyYW5jaGVzIChuZmFfYWR2YW5jZV92 YXIsIG5mYV9hZHZhbmNlX2JlZ2luL2VuZC9hbHQpIHRyZWF0CisJCSAqIHN0YXRlLT5uZXh0IGFz IGFscmVhZHktTlVMTCBhbmQgZG9uJ3QgcmVzZXQgaXQgdGhlbXNlbHZlczsgdGhlCisJCSAqIG90 aGVyIGxpbmtpbmcgc2l0ZSBpcyBuZmFfYWRkX3N0YXRlX3VuaXF1ZSwgd2hpY2ggc2V0cyBpdCB3 aGVuCisJCSAqIGFwcGVuZGluZyB0byBjdHgtPnN0YXRlcy4KKwkJICovCisJCXN0YXRlLT5uZXh0 ID0gTlVMTDsKKworCQluZmFfYWR2YW5jZV9zdGF0ZSh3aW5zdGF0ZSwgY3R4LCBzdGF0ZSwgY3Vy cmVudFBvcyk7CisKKwkJLyoKKwkJICogRWFybHkgdGVybWluYXRpb246IGlmIGEgRklOIHdhcyBu ZXdseSByZWFjaGVkIGluIHRoaXMgYWR2YW5jZSwKKwkJICogcmVtYWluaW5nIG9sZCBzdGF0ZXMg aGF2ZSB3b3JzZSBsZXhpY2FsIG9yZGVyIGFuZCBjYW4gYmUgcHJ1bmVkLgorCQkgKiBPbmx5IGNo ZWNrIGZvciBuZXcgRklOIGFycml2YWxzIChub3Qgb25lcyBmcm9tIHByZXZpb3VzIHJvd3MpLgor CQkgKi8KKwkJaWYgKGN0eC0+bWF0Y2hlZFN0YXRlICE9IHNhdmVkTWF0Y2hlZFN0YXRlICYmIHN0 YXRlcyAhPSBOVUxMKQorCQl7CisJCQluZmFfc3RhdGVfZnJlZV9saXN0KHdpbnN0YXRlLCBzdGF0 ZXMpOworCQkJYnJlYWs7CisJCX0KKwl9Cit9CisKKy8qCisgKiBuZmFfcmVldmFsdWF0ZV9kZXBl bmRlbnRfdmFycworICoJCVJlLWV2YWx1YXRlIG1hdGNoX3N0YXJ0LWRlcGVuZGVudCBERUZJTkUg dmFyaWFibGVzIGZvciBhIHNwZWNpZmljCisgKgkJY29udGV4dCB3aG9zZSBtYXRjaFN0YXJ0Um93 IGRpZmZlcnMgZnJvbSB0aGUgc2hhcmVkIGV2YWx1YXRpb24ncworICoJCW5hdl9tYXRjaF9zdGFy dC4KKyAqCisgKiBPbmx5IHZhcmlhYmxlcyBpbiBkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50IGFy ZSByZS1ldmFsdWF0ZWQuICBUaGUKKyAqIGN1cnJlbnQgcm93J3Mgc2xvdCAoZWN4dF9vdXRlcnR1 cGxlKSBtdXN0IGFscmVhZHkgYmUgc2V0IHVwIGJ5CisgKiBuZmFfZXZhbHVhdGVfcm93KCkuCisg Ki8KK3N0YXRpYyB2b2lkCituZmFfcmVldmFsdWF0ZV9kZXBlbmRlbnRfdmFycyhXaW5kb3dBZ2dT dGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCwKKwkJCQkJCQkgIGludDY0IGN1cnJl bnRQb3MpCit7CisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gd2luc3RhdGUtPnNzLnBzLnBzX0V4 cHJDb250ZXh0OworCWludDY0CQlzYXZlZF9tYXRjaF9zdGFydCA9IHdpbnN0YXRlLT5uYXZfbWF0 Y2hfc3RhcnQ7CisJaW50NjQJCXNhdmVkX3BvcyA9IHdpbnN0YXRlLT5jdXJyZW50cG9zOworCisJ LyogVGVtcG9yYXJpbHkgc2V0IG5hdl9tYXRjaF9zdGFydCBhbmQgY3VycmVudHBvcyBmb3IgRklS U1QvTEFTVCAqLworCXdpbnN0YXRlLT5uYXZfbWF0Y2hfc3RhcnQgPSBjdHgtPm1hdGNoU3RhcnRS b3c7CisJd2luc3RhdGUtPmN1cnJlbnRwb3MgPSBjdXJyZW50UG9zOworCisJLyogSW52YWxpZGF0 ZSBuYXZfc2xvdCBjYWNoZSBzaW5jZSBtYXRjaF9zdGFydCBjaGFuZ2VkICovCisJd2luc3RhdGUt Pm5hdl9zbG90X3BvcyA9IC0xOworCisJZm9yZWFjaF9wdHIoRXhwclN0YXRlLCBleHByU3RhdGUs IHdpbnN0YXRlLT5kZWZpbmVDbGF1c2VMaXN0KQorCXsKKwkJaW50CQkJdmFySWR4ID0gZm9yZWFj aF9jdXJyZW50X2luZGV4KGV4cHJTdGF0ZSk7CisKKwkJaWYgKGJtc19pc19tZW1iZXIodmFySWR4 LCB3aW5zdGF0ZS0+ZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudCkpCisJCXsKKwkJCURhdHVtCQly ZXN1bHQ7CisJCQlib29sCQlpc251bGw7CisKKwkJCXJlc3VsdCA9IEV4ZWNFdmFsRXhwcihleHBy U3RhdGUsIGVjb250ZXh0LCAmaXNudWxsKTsKKwkJCXdpbnN0YXRlLT5uZmFWYXJNYXRjaGVkW3Zh cklkeF0gPSAoIWlzbnVsbCAmJiBEYXR1bUdldEJvb2wocmVzdWx0KSk7CisJCX0KKworCQlpZiAo dmFySWR4ICsgMSA+PSBsaXN0X2xlbmd0aCh3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0KSkK KwkJCWJyZWFrOworCX0KKworCS8qIFJlc3RvcmUgb3JpZ2luYWwgbWF0Y2hfc3RhcnQsIGN1cnJl bnRwb3MsIGFuZCBpbnZhbGlkYXRlIGNhY2hlICovCisJd2luc3RhdGUtPm5hdl9tYXRjaF9zdGFy dCA9IHNhdmVkX21hdGNoX3N0YXJ0OworCXdpbnN0YXRlLT5jdXJyZW50cG9zID0gc2F2ZWRfcG9z OworCXdpbnN0YXRlLT5uYXZfc2xvdF9wb3MgPSAtMTsKK30KKworCisvKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioK KyAqIEFQSSBleHBvc2VkIHRvIG5vZGVXaW5kb3dBZ2cuYworICoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisv KgorICogRXhlY1JQUlN0YXJ0Q29udGV4dAorICoKKyAqIFN0YXJ0IGEgbmV3IG1hdGNoIGNvbnRl eHQgYXQgZ2l2ZW4gcG9zaXRpb24uCisgKiBJbml0aWFsaXplcyBjb250ZXh0LCBzdGF0ZSBhYnNv cnB0aW9uIGZsYWdzLCBhbmQgcGVyZm9ybXMgaW5pdGlhbCBhZHZhbmNlCisgKiB0byBleHBhbmQg ZXBzaWxvbiB0cmFuc2l0aW9ucyAoQUxUIGJyYW5jaGVzLCBvcHRpb25hbCBlbGVtZW50cykuCisg KiBBZGRzIGNvbnRleHQgdG8gdGhlIHRhaWwgb2Ygd2luc3RhdGUtPm5mYUNvbnRleHQgbGlzdC4K KyAqLworUlBSTkZBQ29udGV4dCAqCitFeGVjUlBSU3RhcnRDb250ZXh0KFdpbmRvd0FnZ1N0YXRl ICp3aW5zdGF0ZSwgaW50NjQgc3RhcnRQb3MpCit7CisJUlBSTkZBQ29udGV4dCAqY3R4OworCVJQ UlBhdHRlcm4gKnBhdHRlcm4gPSB3aW5zdGF0ZS0+cnBQYXR0ZXJuOworCVJQUlBhdHRlcm5FbGVt ZW50ICplbGVtOworCisJY3R4ID0gbmZhX2NvbnRleHRfbWFrZSh3aW5zdGF0ZSk7CisJY3R4LT5t YXRjaFN0YXJ0Um93ID0gc3RhcnRQb3M7CisJY3R4LT5zdGF0ZXMgPSBuZmFfc3RhdGVfbWFrZSh3 aW5zdGF0ZSk7IC8qIGluaXRpYWwgc3RhdGUgYXQgZWxlbSAwICovCisKKwllbGVtID0gJnBhdHRl cm4tPmVsZW1lbnRzWzBdOworCisJaWYgKFJQUkVsZW1Jc0Fic29yYmFibGVCcmFuY2goZWxlbSkp CisJeworCQljdHgtPnN0YXRlcy0+aXNBYnNvcmJhYmxlID0gdHJ1ZTsKKwl9CisJZWxzZQorCXsK KwkJY3R4LT5oYXNBYnNvcmJhYmxlU3RhdGUgPSBmYWxzZTsKKwkJY3R4LT5hbGxTdGF0ZXNBYnNv cmJhYmxlID0gZmFsc2U7CisJCWN0eC0+c3RhdGVzLT5pc0Fic29yYmFibGUgPSBmYWxzZTsKKwl9 CisKKwkvKiBBZGQgdG8gdGFpbCBvZiBhY3RpdmUgY29udGV4dCBsaXN0IChkb3VibHktbGlua2Vk LCBvbGRlc3QtZmlyc3QpICovCisJY3R4LT5wcmV2ID0gd2luc3RhdGUtPm5mYUNvbnRleHRUYWls OworCWN0eC0+bmV4dCA9IE5VTEw7CisJaWYgKHdpbnN0YXRlLT5uZmFDb250ZXh0VGFpbCAhPSBO VUxMKQorCQl3aW5zdGF0ZS0+bmZhQ29udGV4dFRhaWwtPm5leHQgPSBjdHg7CisJZWxzZQorCQl3 aW5zdGF0ZS0+bmZhQ29udGV4dCA9IGN0eDsgLyogZmlyc3QgY29udGV4dCBiZWNvbWVzIGhlYWQg Ki8KKwl3aW5zdGF0ZS0+bmZhQ29udGV4dFRhaWwgPSBjdHg7CisKKwkvKgorCSAqIEluaXRpYWwg YWR2YW5jZSAoZGl2ZXJnZW5jZSk6IGV4cGFuZCBBTFQgYnJhbmNoZXMgYW5kIGNyZWF0ZSBleGl0 CisJICogc3RhdGVzIGZvciBWQVIgZWxlbWVudHMgd2l0aCBtaW49MC4gVGhpcyBwcmVwYXJlcyB0 aGUgY29udGV4dCBmb3IgdGhlCisJICogZmlyc3Qgcm93J3MgbWF0Y2ggcGhhc2UuCisJICoKKwkg KiBVc2Ugc3RhcnRQb3MgLSAxIGFzIGN1cnJlbnRQb3Mgc2luY2Ugbm8gcm93IGhhcyBiZWVuIGNv bnN1bWVkIHlldC4gSWYKKwkgKiBGSU4gaXMgcmVhY2hlZCB2aWEgZXBzaWxvbiB0cmFuc2l0aW9u cywgbWF0Y2hFbmRSb3cgPSBzdGFydFBvcyAtIDEKKwkgKiB3aGljaCBpcyBsZXNzIHRoYW4gbWF0 Y2hTdGFydFJvdywgcmVzdWx0aW5nIGluIFVOTUFUQ0hFRCB0cmVhdG1lbnQuCisJICovCisJbmZh X2FkdmFuY2Uod2luc3RhdGUsIGN0eCwgc3RhcnRQb3MgLSAxKTsKKworCXJldHVybiBjdHg7Cit9 CisKKy8qCisgKiBFeGVjUlBSR2V0SGVhZENvbnRleHQKKyAqCisgKiBSZXR1cm4gdGhlIGhlYWQg Y29udGV4dCBpZiBpdHMgc3RhcnQgcG9zaXRpb24gbWF0Y2hlcyBwb3MuCisgKiBSZXR1cm5zIE5V TEwgaWYgbm8gY29udGV4dCBleGlzdHMgb3IgaGVhZCBkb2Vzbid0IG1hdGNoIHBvcy4KKyAqLwor UlBSTkZBQ29udGV4dCAqCitFeGVjUlBSR2V0SGVhZENvbnRleHQoV2luZG93QWdnU3RhdGUgKndp bnN0YXRlLCBpbnQ2NCBwb3MpCit7CisJUlBSTkZBQ29udGV4dCAqY3R4ID0gd2luc3RhdGUtPm5m YUNvbnRleHQ7CisKKwkvKgorCSAqIENvbnRleHRzIGFyZSBzb3J0ZWQgYnkgbWF0Y2hTdGFydFJv dyBhc2NlbmRpbmcuICBJZiB0aGUgaGVhZCBjb250ZXh0CisJICogZG9lc24ndCBtYXRjaCBwb3Ms IG5vIGNvbnRleHQgZXhpc3RzIGZvciB0aGlzIHBvc2l0aW9uLgorCSAqLworCWlmIChjdHggPT0g TlVMTCB8fCBjdHgtPm1hdGNoU3RhcnRSb3cgIT0gcG9zKQorCQlyZXR1cm4gTlVMTDsKKworCXJl dHVybiBjdHg7Cit9CisKKy8qCisgKiBFeGVjUlBSRnJlZUNvbnRleHQKKyAqCisgKiBVbmxpbmsg Y29udGV4dCBmcm9tIGFjdGl2ZSBsaXN0IGFuZCByZXR1cm4gaXQgdG8gZnJlZSBsaXN0LgorICog QWxzbyBmcmVlcyBhbnkgc3RhdGVzIGluIHRoZSBjb250ZXh0LgorICovCit2b2lkCitFeGVjUlBS RnJlZUNvbnRleHQoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBSUFJORkFDb250ZXh0ICpjdHgp Cit7CisJLyogVW5saW5rIGZyb20gYWN0aXZlIGxpc3QgZmlyc3QgKi8KKwluZmFfdW5saW5rX2Nv bnRleHQod2luc3RhdGUsIGN0eCk7CisKKwkvKiBVcGRhdGUgc3RhdGlzdGljcyAqLworCXdpbnN0 YXRlLT5uZmFDb250ZXh0c0FjdGl2ZS0tOworCisJaWYgKGN0eC0+c3RhdGVzICE9IE5VTEwpCisJ CW5mYV9zdGF0ZV9mcmVlX2xpc3Qod2luc3RhdGUsIGN0eC0+c3RhdGVzKTsKKwlpZiAoY3R4LT5t YXRjaGVkU3RhdGUgIT0gTlVMTCkKKwkJbmZhX3N0YXRlX2ZyZWUod2luc3RhdGUsIGN0eC0+bWF0 Y2hlZFN0YXRlKTsKKworCWN0eC0+c3RhdGVzID0gTlVMTDsKKwljdHgtPm1hdGNoZWRTdGF0ZSA9 IE5VTEw7CisJY3R4LT5uZXh0ID0gd2luc3RhdGUtPm5mYUNvbnRleHRGcmVlOworCXdpbnN0YXRl LT5uZmFDb250ZXh0RnJlZSA9IGN0eDsKK30KKworLyoKKyAqIEV4ZWNSUFJSZWNvcmRDb250ZXh0 U3VjY2VzcworICoKKyAqIFJlY29yZCBhIHN1Y2Nlc3NmdWwgY29udGV4dCBpbiBzdGF0aXN0aWNz LgorICovCit2b2lkCitFeGVjUlBSUmVjb3JkQ29udGV4dFN1Y2Nlc3MoV2luZG93QWdnU3RhdGUg KndpbnN0YXRlLCBpbnQ2NCBtYXRjaExlbikKK3sKKwl3aW5zdGF0ZS0+bmZhTWF0Y2hlc1N1Y2Nl ZWRlZCsrOworCW5mYV91cGRhdGVfbGVuZ3RoX3N0YXRzKHdpbnN0YXRlLT5uZmFNYXRjaGVzU3Vj Y2VlZGVkLAorCQkJCQkJCSZ3aW5zdGF0ZS0+bmZhTWF0Y2hMZW4sCisJCQkJCQkJbWF0Y2hMZW4p OworfQorCisvKgorICogRXhlY1JQUlJlY29yZENvbnRleHRGYWlsdXJlCisgKgorICogUmVjb3Jk IGEgZmFpbGVkIGNvbnRleHQgaW4gc3RhdGlzdGljcy4KKyAqIElmIGZhaWxlZExlbiA9PSAxLCBj b3VudCBhcyBwcnVuZWQgKGZhaWxlZCBvbiBmaXJzdCByb3cpLgorICogSWYgZmFpbGVkTGVuID4g MSwgY291bnQgYXMgbWlzbWF0Y2hlZCBhbmQgdXBkYXRlIGxlbmd0aCBzdGF0cy4KKyAqLwordm9p ZAorRXhlY1JQUlJlY29yZENvbnRleHRGYWlsdXJlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwg aW50NjQgZmFpbGVkTGVuKQoreworCWlmIChmYWlsZWRMZW4gPT0gMSkKKwl7CisJCXdpbnN0YXRl LT5uZmFDb250ZXh0c1BydW5lZCsrOworCX0KKwllbHNlCisJeworCQl3aW5zdGF0ZS0+bmZhTWF0 Y2hlc0ZhaWxlZCsrOworCQluZmFfdXBkYXRlX2xlbmd0aF9zdGF0cyh3aW5zdGF0ZS0+bmZhTWF0 Y2hlc0ZhaWxlZCwKKwkJCQkJCQkJJndpbnN0YXRlLT5uZmFGYWlsTGVuLAorCQkJCQkJCQlmYWls ZWRMZW4pOworCX0KK30KKworLyoKKyAqIEV4ZWNSUFJQcm9jZXNzUm93CisgKgorICogUHJvY2Vz cyBhbGwgY29udGV4dHMgZm9yIG9uZSByb3c6CisgKiAgIDEuIE1hdGNoIGFsbCBjb250ZXh0cyAo Y29udmVyZ2VuY2UpIC0gZXZhbHVhdGUgVkFScywgcHJ1bmUgZGVhZCBzdGF0ZXMKKyAqICAgMi4g QWJzb3JiIHJlZHVuZGFudCBjb250ZXh0cyAtIGlkZWFsIHRpbWluZyBhZnRlciBjb252ZXJnZW5j ZQorICogICAzLiBBZHZhbmNlIGFsbCBjb250ZXh0cyAoZGl2ZXJnZW5jZSkgLSBjcmVhdGUgbmV3 IHN0YXRlcyBmb3IgbmV4dCByb3cKKyAqLwordm9pZAorRXhlY1JQUlByb2Nlc3NSb3coV2luZG93 QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBjdXJyZW50UG9zLAorCQkJCSAgYm9vbCBoYXNMaW1p dGVkRnJhbWUsIGludDY0IGZyYW1lT2Zmc2V0KQoreworCVJQUk5GQUNvbnRleHQgKmN0eDsKKwli b29sCSAgICp2YXJNYXRjaGVkID0gd2luc3RhdGUtPm5mYVZhck1hdGNoZWQ7CisJYm9vbAkJaGFz RGVwZW5kZW50ID0gIWJtc19pc19lbXB0eSh3aW5zdGF0ZS0+ZGVmaW5lTWF0Y2hTdGFydERlcGVu ZGVudCk7CisKKwkvKiBBbGxvdyBxdWVyeSBjYW5jZWxsYXRpb24gb25jZSBwZXIgcm93IGZvciBz aW1wbGUvbG93LXN0YXRlIHBhdHRlcm5zICovCisJQ0hFQ0tfRk9SX0lOVEVSUlVQVFMoKTsKKwor CS8qCisJICogUGhhc2UgMTogTWF0Y2ggYWxsIGNvbnRleHRzIChjb252ZXJnZW5jZSkuICBFdmFs dWF0ZSBWQVIgZWxlbWVudHMsCisJICogdXBkYXRlIGNvdW50cywgcmVtb3ZlIGRlYWQgc3RhdGVz LgorCSAqLworCWZvciAoY3R4ID0gd2luc3RhdGUtPm5mYUNvbnRleHQ7IGN0eCAhPSBOVUxMOyBj dHggPSBjdHgtPm5leHQpCisJeworCQlpZiAoY3R4LT5zdGF0ZXMgPT0gTlVMTCkKKwkJCWNvbnRp bnVlOworCisJCS8qIENoZWNrIGZyYW1lIGJvdW5kYXJ5IC0gZmluYWxpemUgdGhlIGNvbnRleHQg d2hlbiBpdCBpcyByZWFjaGVkICovCisJCWlmIChoYXNMaW1pdGVkRnJhbWUpCisJCXsKKwkJCWlu dDY0CQljdHhGcmFtZUVuZDsKKworCQkJLyoKKwkJCSAqIENsYW1wIHRvIFBHX0lOVDY0X01BWCBv biBvdmVyZmxvdy4gIGZyYW1lT2Zmc2V0IGNhbiBiZSBhcyBsYXJnZQorCQkJICogYXMgUEdfSU5U NjRfTUFYIChlLmcuICJST1dTIDxodWdlPiBGT0xMT1dJTkciKSwgc28gYWRkIHRoZQorCQkJICog b2Zmc2V0IGFuZCB0aGUgdHJhaWxpbmcgKzEgaW4gdHdvIHNlcGFyYXRlbHkgY2hlY2tlZCBzdGVw cyB0bworCQkJICogYXZvaWQgc2lnbmVkLWludGVnZXIgb3ZlcmZsb3cgaW4gdGhlICJmcmFtZU9m ZnNldCArIDEiCisJCQkgKiBzdWJleHByZXNzaW9uLgorCQkJICovCisJCQlpZiAocGdfYWRkX3M2 NF9vdmVyZmxvdyhjdHgtPm1hdGNoU3RhcnRSb3csIGZyYW1lT2Zmc2V0LAorCQkJCQkJCQkJJmN0 eEZyYW1lRW5kKSB8fAorCQkJCXBnX2FkZF9zNjRfb3ZlcmZsb3coY3R4RnJhbWVFbmQsIDEsICZj dHhGcmFtZUVuZCkpCisJCQkJY3R4RnJhbWVFbmQgPSBQR19JTlQ2NF9NQVg7CisKKwkJCS8qCisJ CQkgKiBjdXJyZW50UG9zIGFkdmFuY2VzIGJ5IGV4YWN0bHkgb25lIHBlciBjYWxsLCBhbmQgYSBm aW5hbGl6ZWQKKwkJCSAqIGNvbnRleHQgaXMgc2tpcHBlZCBieSB0aGUgc3RhdGVzID09IE5VTEwg Z3VhcmQgYWJvdmUsIHNvIGl0IGNhbgorCQkJICogb25seSBldmVyIHJlYWNoIGN0eEZyYW1lRW5k LCBuZXZlciBvdmVyc2hvb3QgaXQuICBUaGUgQXNzZXJ0CisJCQkgKiB0dXJucyBhIGZ1dHVyZSBj aGFuZ2UgdGhhdCBicm9rZSB0aGF0IGludmFyaWFudCBpbnRvIGFuCisJCQkgKiBpbW1lZGlhdGUg ZmFpbHVyZSByYXRoZXIgdGhhbiBhIHNpbGVudCBzbGlwIHBhc3QgdGhlIGJvdW5kYXJ5LgorCQkJ ICovCisJCQlBc3NlcnQoY3VycmVudFBvcyA8PSBjdHhGcmFtZUVuZCk7CisKKwkJCWlmIChjdXJy ZW50UG9zID09IGN0eEZyYW1lRW5kKQorCQkJeworCQkJCS8qIEZyYW1lIGJvdW5kYXJ5IHJlYWNo ZWQ6IGZvcmNlIG1pc21hdGNoICovCisJCQkJbmZhX21hdGNoKHdpbnN0YXRlLCBjdHgsIE5VTEwp OworCQkJCWNvbnRpbnVlOworCQkJfQorCQl9CisKKwkJLyoKKwkJICogSWYgdGhpcyBjb250ZXh0 IGhhcyBhIGRpZmZlcmVudCBtYXRjaFN0YXJ0Um93IHRoYW4gdGhlIG9uZSB1c2VkIGluCisJCSAq IHRoZSBzaGFyZWQgZXZhbHVhdGlvbiwgcmUtZXZhbHVhdGUgbWF0Y2hfc3RhcnQtZGVwZW5kZW50 IHZhcmlhYmxlcworCQkgKiB3aXRoIHRoaXMgY29udGV4dCdzIG1hdGNoU3RhcnRSb3cuCisJCSAq LworCQlpZiAoaGFzRGVwZW5kZW50ICYmIGN0eC0+bWF0Y2hTdGFydFJvdyAhPSB3aW5zdGF0ZS0+ bmF2X21hdGNoX3N0YXJ0KQorCQkJbmZhX3JlZXZhbHVhdGVfZGVwZW5kZW50X3ZhcnMod2luc3Rh dGUsIGN0eCwgY3VycmVudFBvcyk7CisJCW5mYV9tYXRjaCh3aW5zdGF0ZSwgY3R4LCB2YXJNYXRj aGVkKTsKKwkJY3R4LT5sYXN0UHJvY2Vzc2VkUm93ID0gY3VycmVudFBvczsKKwl9CisKKwkvKgor CSAqIFBoYXNlIDI6IEFic29yYiByZWR1bmRhbnQgY29udGV4dHMuICBBZnRlciBtYXRjaCBwaGFz ZSwgc3RhdGVzIGhhdmUKKwkgKiBjb252ZXJnZWQgLSBpZGVhbCBmb3IgYWJzb3JwdGlvbi4gIEZp cnN0IHVwZGF0ZSBhYnNvcnB0aW9uIGZsYWdzIHRoYXQKKwkgKiBtYXkgaGF2ZSBjaGFuZ2VkIGR1 ZSB0byBzdGF0ZSByZW1vdmFsLgorCSAqLworCWlmICh3aW5zdGF0ZS0+cnBQYXR0ZXJuLT5pc0Fi c29yYmFibGUpCisJeworCQlmb3IgKGN0eCA9IHdpbnN0YXRlLT5uZmFDb250ZXh0OyBjdHggIT0g TlVMTDsgY3R4ID0gY3R4LT5uZXh0KQorCQkJbmZhX3VwZGF0ZV9hYnNvcnB0aW9uX2ZsYWdzKGN0 eCk7CisKKwkJbmZhX2Fic29yYl9jb250ZXh0cyh3aW5zdGF0ZSk7CisJfQorCisJLyoKKwkgKiBQ aGFzZSAzOiBBZHZhbmNlIGFsbCBjb250ZXh0cyAoZGl2ZXJnZW5jZSkuICBDcmVhdGUgbmV3IHN0 YXRlcworCSAqIChsb29wL2V4aXQpIGZyb20gc3Vydml2aW5nIG1hdGNoZWQgc3RhdGVzLgorCSAq LworCWZvciAoY3R4ID0gd2luc3RhdGUtPm5mYUNvbnRleHQ7IGN0eCAhPSBOVUxMOyBjdHggPSBj dHgtPm5leHQpCisJeworCQlpZiAoY3R4LT5zdGF0ZXMgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOwor CisJCS8qCisJCSAqIFBoYXNlIDEgYWxyZWFkeSBoYW5kbGVkIGZyYW1lIGJvdW5kYXJ5IGV4Y2Vl ZGVkIGNvbnRleHRzIGJ5IGZvcmNpbmcKKwkJICogbWlzbWF0Y2ggKG5mYV9tYXRjaCB3aXRoIE5V TEwpLCB3aGljaCByZW1vdmVzIGFsbCBzdGF0ZXMgKGFsbAorCQkgKiBzdGF0ZXMgYXJlIGF0IFZB UiBwb3NpdGlvbnMgYWZ0ZXIgYWR2YW5jZSkuIFNvIGFueSBzdXJ2aXZpbmcKKwkJICogY29udGV4 dCBoZXJlIG11c3QgYmUgd2l0aGluIGl0cyBmcmFtZSBib3VuZGFyeS4KKwkJICoKKwkJICogQ29t cHV0ZSB0aGUgKGNsYW1wZWQpIGZyYW1lIGVuZCB0aGUgc2FtZSB3YXkgYXMgUGhhc2UgMSwgdXNp bmcgdHdvCisJCSAqIHNlcGFyYXRlbHkgY2hlY2tlZCBhZGRzIHNvIHRoYXQgImZyYW1lT2Zmc2V0 ICsgMSIgY2Fubm90IG92ZXJmbG93CisJCSAqIHdoZW4gZnJhbWVPZmZzZXQgaXMgbmVhciBQR19J TlQ2NF9NQVguCisJCSAqLworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwkJaWYgKGhhc0xp bWl0ZWRGcmFtZSkKKwkJeworCQkJaW50NjQJCWN0eEZyYW1lRW5kOworCisJCQlpZiAocGdfYWRk X3M2NF9vdmVyZmxvdyhjdHgtPm1hdGNoU3RhcnRSb3csIGZyYW1lT2Zmc2V0LAorCQkJCQkJCQkJ JmN0eEZyYW1lRW5kKSB8fAorCQkJCXBnX2FkZF9zNjRfb3ZlcmZsb3coY3R4RnJhbWVFbmQsIDEs ICZjdHhGcmFtZUVuZCkpCisJCQkJY3R4RnJhbWVFbmQgPSBQR19JTlQ2NF9NQVg7CisJCQlBc3Nl cnQoY3VycmVudFBvcyA8IGN0eEZyYW1lRW5kKTsKKwkJfQorI2VuZGlmCisKKwkJbmZhX2FkdmFu Y2Uod2luc3RhdGUsIGN0eCwgY3VycmVudFBvcyk7CisJfQorfQorCisvKgorICogRXhlY1JQUkNs ZWFudXBEZWFkQ29udGV4dHMKKyAqCisgKiBSZW1vdmUgY29udGV4dHMgdGhhdCBoYXZlIGZhaWxl ZCAobm8gYWN0aXZlIHN0YXRlcyBhbmQgbm8gbWF0Y2gpLgorICogVGhlc2UgYXJlIGNvbnRleHRz IHRoYXQgZmFpbGVkIGR1cmluZyBub3JtYWwgcHJvY2Vzc2luZyBhbmQgc2hvdWxkIGJlCisgKiBj b3VudGVkIGFzIHBydW5lZCAoaWYgbGVuZ3RoIDEpIG9yIG1pc21hdGNoZWQgKGlmIGxlbmd0aCA+ IDEpLgorICovCit2b2lkCitFeGVjUlBSQ2xlYW51cERlYWRDb250ZXh0cyhXaW5kb3dBZ2dTdGF0 ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmV4Y2x1ZGVDdHgpCit7CisJUlBSTkZBQ29udGV4 dCAqY3R4OworCVJQUk5GQUNvbnRleHQgKm5leHQ7CisKKwlmb3IgKGN0eCA9IHdpbnN0YXRlLT5u ZmFDb250ZXh0OyBjdHggIT0gTlVMTDsgY3R4ID0gbmV4dCkKKwl7CisJCUNIRUNLX0ZPUl9JTlRF UlJVUFRTKCk7CisKKwkJbmV4dCA9IGN0eC0+bmV4dDsKKworCQkvKiBTa2lwIHRoZSB0YXJnZXQg Y29udGV4dCBhbmQgY29udGV4dHMgc3RpbGwgcHJvY2Vzc2luZyAqLworCQlpZiAoY3R4ID09IGV4 Y2x1ZGVDdHggfHwgY3R4LT5zdGF0ZXMgIT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCS8qIFNr aXAgc3VjY2Vzc2Z1bGx5IG1hdGNoZWQgY29udGV4dHMgKHdpbGwgYmUgaGFuZGxlZCBieSBTS0lQ IGxvZ2ljKSAqLworCQlpZiAoY3R4LT5tYXRjaEVuZFJvdyA+PSBjdHgtPm1hdGNoU3RhcnRSb3cp CisJCQljb250aW51ZTsKKworCQkvKgorCQkgKiBGYWlsZWQgY29udGV4dDogYWx3YXlzIHJlbW92 ZWQgYmVsb3cuICBPbmx5IHJlY29yZCB0aGUgZmFpbHVyZQorCQkgKiBzdGF0aXN0aWMgaWYgaXQg YWN0dWFsbHkgcHJvY2Vzc2VkIGl0cyBzdGFydCByb3c7IGNvbnRleHRzIGNyZWF0ZWQKKwkJICog Zm9yIGJleW9uZC1wYXJ0aXRpb24gcm93cyBhcmUgcmVtb3ZlZCB3aXRob3V0IGJlaW5nIGNvdW50 ZWQuCisJCSAqLworCQlpZiAoY3R4LT5sYXN0UHJvY2Vzc2VkUm93ID49IGN0eC0+bWF0Y2hTdGFy dFJvdykKKwkJeworCQkJaW50NjQJCWZhaWxlZExlbiA9IGN0eC0+bGFzdFByb2Nlc3NlZFJvdyAt IGN0eC0+bWF0Y2hTdGFydFJvdyArIDE7CisKKwkJCUV4ZWNSUFJSZWNvcmRDb250ZXh0RmFpbHVy ZSh3aW5zdGF0ZSwgZmFpbGVkTGVuKTsKKwkJfQorCisJCUV4ZWNSUFJGcmVlQ29udGV4dCh3aW5z dGF0ZSwgY3R4KTsKKwl9Cit9CisKKy8qCisgKiBFeGVjUlBSRmluYWxpemVBbGxDb250ZXh0cwor ICoKKyAqIFBhcnRpdGlvbi1lbmQgY2xhc3NpZmljYXRpb24gcG9saWN5OiBraWxsIGFueSBWQVIg c3RhdGVzIHN0aWxsIHB1cnN1aW5nCisgKiB3aGVuIHJvd3MgcnVuIG91dCwgc28gY2xlYW51cCBz ZWVzIGEgdW5pZm9ybSBjdHgtPnN0YXRlcyA9PSBOVUxMIGFjcm9zcworICogZXZlcnkgY29udGV4 dC4gIEJ5IHRoZSB0aW1lIHRoaXMgcnVucywgYWxsIGdlbnVpbmUgRklOIHJlYWNoZXMgaGF2ZQor ICogYWxyZWFkeSBiZWVuIHJlY29yZGVkIGluLWZsaWdodDsgdGhyZWUgc2hhcGVzIHN1cnZpdmUg aGVyZToKKyAqCisgKiAgIC0gUHVyZSBwdXJzdWl0IChtYXRjaGVkU3RhdGUgPT0gTlVMTCk6IFZB UiBzdGF0ZXMgd2FpdGluZyBmb3IgaW5wdXQKKyAqICAgICB0aGF0IG5ldmVyIGFycml2ZXMgKGUu Zy4sIEErIEIgbWlkLXBhdHRlcm4gYXQgcGFydGl0aW9uIGVuZCkuCisgKiAgIC0gRW1wdHktbWF0 Y2ggY2FuZGlkYXRlICsgcHVyc3VpdCAobWF0Y2hlZFN0YXRlICE9IE5VTEwsCisgKiAgICAgbWF0 Y2hFbmRSb3cgPCBtYXRjaFN0YXJ0Um93KTogaW5pdGlhbC1hZHZhbmNlIEZJTi12aWEtc2tpcCBy ZWNvcmRlZAorICogICAgIGFuIGVtcHR5IG1hdGNoIHdoaWxlIFZBUiBzdGF0ZXMgYXJlIHN0aWxs IGNoYXNpbmcgYSBsb25nZXIgb25lCisgKiAgICAgKGUuZy4sIGdyZWVkeSBBKikuCisgKiAgIC0g UmVhbCBtYXRjaCArIHB1cnN1aXQgKG1hdGNoZWRTdGF0ZSAhPSBOVUxMLAorICogICAgIG1hdGNo RW5kUm93ID49IG1hdGNoU3RhcnRSb3cpOiBhIG1hdGNoIGhhcyBiZWVuIHJlY29yZGVkIGFuZCBW QVIKKyAqICAgICBzdGF0ZXMgYXJlIHN0aWxsIGxvb3BpbmcgZm9yIGEgbG9uZ2VyIG9uZS4KKyAq CisgKiBLaWxsaW5nIHRoZSBWQVIgcmVjbGFzc2lmaWVzIHRoZSBmaXJzdCB0d28gYXMgZmFpbHVy ZXMgaW4gY2xlYW51cAorICogKG90aGVyd2lzZSB0aGV5IGxpbmdlciB3aXRob3V0IGNvbnRyaWJ1 dGluZyB0byBzdGF0cykuICBUaGUgdGhpcmQgaXMKKyAqIHN0YXQtbmV1dHJhbCAtLSBjbGVhbnVw IHNraXBzIGl0IGVpdGhlciB3YXkgLS0gYnV0IGdvZXMgdGhyb3VnaCB0aGUKKyAqIHNhbWUgdW5p Zm9ybSBwYXRoIHNvIHBhcnRpdGlvbi1lbmQgY2xhc3NpZmljYXRpb24gc3RheXMgY2VudHJhbGl6 ZWQuCisgKgorICogSW1wbGVtZW50YXRpb246IG5mYV9tYXRjaCB3aXRoIE5VTEwgZm9yY2VzIFZB UiBtaXNtYXRjaDsgbmZhX2FkdmFuY2UKKyAqIHRoZW4gZHJhaW5zIGFueSByZW1haW5pbmcgZXBz aWxvbiB0cmFuc2l0aW9ucy4KKyAqLwordm9pZAorRXhlY1JQUkZpbmFsaXplQWxsQ29udGV4dHMo V2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBpbnQ2NCBsYXN0UG9zKQoreworCVJQUk5GQUNvbnRl eHQgKmN0eDsKKworCWZvciAoY3R4ID0gd2luc3RhdGUtPm5mYUNvbnRleHQ7IGN0eCAhPSBOVUxM OyBjdHggPSBjdHgtPm5leHQpCisJeworCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOworCisJCWlm IChjdHgtPnN0YXRlcyAhPSBOVUxMKQorCQl7CisJCQluZmFfbWF0Y2god2luc3RhdGUsIGN0eCwg TlVMTCk7CisJCQluZmFfYWR2YW5jZSh3aW5zdGF0ZSwgY3R4LCBsYXN0UG9zKTsKKwkJfQorCX0K K30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL21lc29uLmJ1aWxkIGIvc3JjL2Jh Y2tlbmQvZXhlY3V0b3IvbWVzb24uYnVpbGQKaW5kZXggZGM0NWJlMGIyY2UuLjBmZjRhNWIxZDgz IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZAorKysgYi9zcmMv YmFja2VuZC9leGVjdXRvci9tZXNvbi5idWlsZApAQCAtMTMsNiArMTMsNyBAQCBiYWNrZW5kX3Nv dXJjZXMgKz0gZmlsZXMoCiAgICdleGVjUGFyYWxsZWwuYycsCiAgICdleGVjUGFydGl0aW9uLmMn LAogICAnZXhlY1Byb2Nub2RlLmMnLAorICAnZXhlY1JQUi5jJywKICAgJ2V4ZWNSZXBsaWNhdGlv bi5jJywKICAgJ2V4ZWNTUkYuYycsCiAgICdleGVjU2Nhbi5jJywKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuYwppbmRleCBmMWM1MjRkMDBkZi4uY2I2YTQ4NGI3ZGUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuYworKysgYi9zcmMvYmFja2VuZC9l eGVjdXRvci9ub2RlV2luZG93QWdnLmMKQEAgLTM5LDEyICszOSwxNSBAQAogI2luY2x1ZGUgImNh dGFsb2cvcGdfcHJvYy5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKICNpbmNsdWRlICJleGVj dXRvci9leGVjdXRvci5oIgorI2luY2x1ZGUgImV4ZWN1dG9yL2V4ZWNSUFIuaCIKICNpbmNsdWRl ICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5jbHVkZSAiZXhlY3V0b3Ivbm9kZVdpbmRvd0Fn Zy5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgogI2luY2x1ZGUgIm5vZGVzL25vZGVGdW5jcy5o IgorI2luY2x1ZGUgIm5vZGVzL3BsYW5ub2Rlcy5oIgogI2luY2x1ZGUgIm9wdGltaXplci9jbGF1 c2VzLmgiCiAjaW5jbHVkZSAib3B0aW1pemVyL29wdGltaXplci5oIgorI2luY2x1ZGUgIm9wdGlt aXplci9ycHIuaCIKICNpbmNsdWRlICJwYXJzZXIvcGFyc2VfYWdnLmgiCiAjaW5jbHVkZSAicGFy c2VyL3BhcnNlX2NvZXJjZS5oIgogI2luY2x1ZGUgInV0aWxzL2FjbC5oIgpAQCAtMTc0LDYgKzE3 Nyw3IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRvd1N0YXRlUGVyQWdnRGF0YQogCWJvb2wJCXJlc3Rh cnQ7CQkvKiBuZWVkIHRvIHJlc3RhcnQgdGhpcyBhZ2cgaW4gdGhpcyBjeWNsZT8gKi8KIH0gV2lu ZG93U3RhdGVQZXJBZ2dEYXRhOwogCisKIHN0YXRpYyB2b2lkIGluaXRpYWxpemVfd2luZG93YWdn cmVnYXRlKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwKIAkJCQkJCQkJCSAgIFdpbmRvd1N0YXRl UGVyRnVuYyBwZXJmdW5jc3RhdGUsCiAJCQkJCQkJCQkgICBXaW5kb3dTdGF0ZVBlckFnZyBwZXJh Z2dzdGF0ZSk7CkBAIC0yMTAsNiArMjE0LDkgQEAgc3RhdGljIERhdHVtIEdldEFnZ0luaXRWYWwo RGF0dW0gdGV4dEluaXRWYWwsIE9pZCB0cmFuc3R5cGUpOwogCiBzdGF0aWMgYm9vbCBhcmVfcGVl cnMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdDEsCiAJCQkJ CSAgVHVwbGVUYWJsZVNsb3QgKnNsb3QyKTsKK3N0YXRpYyBpbnQJV2luR2V0U2xvdEluRnJhbWUo V2luZG93T2JqZWN0IHdpbm9iaiwgVHVwbGVUYWJsZVNsb3QgKnNsb3QsCisJCQkJCQkJICBpbnQg cmVscG9zLCBpbnQgc2Vla3R5cGUsIGJvb2wgc2V0X21hcmssCisJCQkJCQkJICBib29sICppc251 bGwsIGJvb2wgKmlzb3V0KTsKIHN0YXRpYyBib29sIHdpbmRvd19nZXR0dXBsZXNsb3QoV2luZG93 T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLAogCQkJCQkJCQlUdXBsZVRhYmxlU2xvdCAqc2xvdCk7 CiAKQEAgLTIyOCw2ICsyMzUsMTggQEAgc3RhdGljIHVpbnQ4IGdldF9ub3RudWxsX2luZm8oV2lu ZG93T2JqZWN0IHdpbm9iaiwKIAkJCQkJCQkgIGludDY0IHBvcywgaW50IGFyZ25vKTsKIHN0YXRp YyB2b2lkIHB1dF9ub3RudWxsX2luZm8oV2luZG93T2JqZWN0IHdpbm9iaiwKIAkJCQkJCQkgaW50 NjQgcG9zLCBpbnQgYXJnbm8sIGJvb2wgaXNudWxsKTsKK3N0YXRpYyBib29sIHJwcl9pc19kZWZp bmVkKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSk7CitzdGF0aWMgaW50NjQgcm93X2lzX2luX3Jl ZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zKTsKKworc3RhdGljIHZv aWQgY2xlYXJfcmVkdWNlZF9mcmFtZShXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpOworc3RhdGlj IGludAlnZXRfcmVkdWNlZF9mcmFtZV9zdGF0dXMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLCBp bnQ2NCBwb3MpOworc3RhdGljIHZvaWQgdXBkYXRlX3JlZHVjZWRfZnJhbWUoV2luZG93T2JqZWN0 IHdpbm9iaiwgaW50NjQgcG9zKTsKKworLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgLSBORkEgcm93 IGV2YWx1YXRpb24gKi8KK3N0YXRpYyBib29sIG5mYV9ldmFsdWF0ZV9yb3coV2luZG93T2JqZWN0 IHdpbm9iaiwgaW50NjQgcG9zLCBib29sICp2YXJNYXRjaGVkKTsKKworLyogRm9yd2FyZCBkZWNs YXJhdGlvbnMgLSBuYXZpZ2F0aW9uIG9mZnNldCBldmFsdWF0aW9uICovCitzdGF0aWMgdm9pZCBl dmFsX2RlZmluZV9vZmZzZXRzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgTGlzdCAqZGVmaW5l Q2xhdXNlKTsKIAogLyoKICAqIE5vdCBudWxsIGluZm8gYml0IGFycmF5IGNvbnNpc3RzIG9mIDIt Yml0IGl0ZW1zCkBAIC04MjEsNiArODQwLDkgQEAgZXZhbF93aW5kb3dhZ2dyZWdhdGVzKFdpbmRv d0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkgKgkgICB0cmFuc2l0aW9uIGZ1bmN0aW9uLCBvcgogCSAq CSAtIHdlIGhhdmUgYW4gRVhDTFVTSU9OIGNsYXVzZSwgb3IKIAkgKgkgLSBpZiB0aGUgbmV3IGZy YW1lIGRvZXNuJ3Qgb3ZlcmxhcCB0aGUgb2xkIG9uZQorCSAqICAgLSBpZiBSUFIgKFJvdyBQYXR0 ZXJuIFJlY29nbml0aW9uKSBpcyBlbmFibGVkLCBiZWNhdXNlIHRoZSByZWR1Y2VkCisJICogICAg IGZyYW1lIGRlcGVuZHMgb24gcGF0dGVybiBtYXRjaGluZyByZXN1bHRzIHdoaWNoIGNhbiBkaWZm ZXIgZW50aXJlbHkKKwkgKiAgICAgZnJvbSByb3cgdG8gcm93LCBtYWtpbmcgaW52ZXJzZSB0cmFu c2l0aW9uIG9wdGltaXphdGlvbiBpbmFwcGxpY2FibGUKIAkgKgogCSAqIE5vdGUgdGhhdCB3ZSBk b24ndCBzdHJpY3RseSBuZWVkIHRvIHJlc3RhcnQgaW4gdGhlIGxhc3QgY2FzZSwgYnV0IGlmCiAJ ICogd2UncmUgZ29pbmcgdG8gcmVtb3ZlIGFsbCByb3dzIGZyb20gdGhlIGFnZ3JlZ2F0aW9uIGFu eXdheSwgYSByZXN0YXJ0CkBAIC04MzUsNyArODU3LDggQEAgZXZhbF93aW5kb3dhZ2dyZWdhdGVz KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkKIAkJCSh3aW5zdGF0ZS0+YWdncmVnYXRlZGJhc2Ug IT0gd2luc3RhdGUtPmZyYW1laGVhZHBvcyAmJgogCQkJICFPaWRJc1ZhbGlkKHBlcmFnZ3N0YXRl LT5pbnZ0cmFuc2ZuX29pZCkpIHx8CiAJCQkod2luc3RhdGUtPmZyYW1lT3B0aW9ucyAmIEZSQU1F T1BUSU9OX0VYQ0xVU0lPTikgfHwKLQkJCXdpbnN0YXRlLT5hZ2dyZWdhdGVkdXB0byA8PSB3aW5z dGF0ZS0+ZnJhbWVoZWFkcG9zKQorCQkJd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvIDw9IHdpbnN0 YXRlLT5mcmFtZWhlYWRwb3MgfHwKKwkJCXJwcl9pc19kZWZpbmVkKHdpbnN0YXRlKSkKIAkJewog CQkJcGVyYWdnc3RhdGUtPnJlc3RhcnQgPSB0cnVlOwogCQkJbnVtYWdnc19yZXN0YXJ0Kys7CkBA IC05NjQsNiArOTg3LDE0IEBAIGV2YWxfd2luZG93YWdncmVnYXRlcyhXaW5kb3dBZ2dTdGF0ZSAq d2luc3RhdGUpCiAJewogCQl3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8gPSB3aW5zdGF0ZS0+ZnJh bWVoZWFkcG9zOwogCQlFeGVjQ2xlYXJUdXBsZShhZ2dfcm93X3Nsb3QpOworCisJCS8qCisJCSAq IElmIFJQUiBpcyBkZWZpbmVkLCB3ZSBkbyBub3QgdXNlIGFnZ3JlZ2F0ZWR1cHRvX25vbnJlc3Rh cnRlZC4gIFRvCisJCSAqIGF2b2lkIGFzc2VydGlvbiBmYWlsdXJlIGJlbG93LCB3ZSByZXNldCBh Z2dyZWdhdGVkdXB0b19ub25yZXN0YXJ0ZWQKKwkJICogdG8gZnJhbWVoZWFkcG9zLgorCQkgKi8K KwkJaWYgKHJwcl9pc19kZWZpbmVkKHdpbnN0YXRlKSkKKwkJCWFnZ3JlZ2F0ZWR1cHRvX25vbnJl c3RhcnRlZCA9IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3M7CiAJfQogCiAJLyoKQEAgLTk3NSw3ICsx MDA2LDcgQEAgZXZhbF93aW5kb3dhZ2dyZWdhdGVzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSkK IAkgKi8KIAlmb3IgKDs7KQogCXsKLQkJaW50CQkJcmV0OworCQlpbnQ2NAkJcmV0OwogCiAJCS8q IEZldGNoIG5leHQgcm93IGlmIHdlIGRpZG4ndCBhbHJlYWR5ICovCiAJCWlmIChUdXBJc051bGwo YWdnX3Jvd19zbG90KSkKQEAgLTk5Myw5ICsxMDI0LDQwIEBAIGV2YWxfd2luZG93YWdncmVnYXRl cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiAJCQkJCQkJICBhZ2dfcm93X3Nsb3QsIGZhbHNl KTsKIAkJaWYgKHJldCA8IDApCiAJCQlicmVhazsKKwogCQlpZiAocmV0ID09IDApCiAJCQlnb3Rv IG5leHRfdHVwbGU7CiAKKwkJaWYgKHJwcl9pc19kZWZpbmVkKHdpbnN0YXRlKSkKKwkJeworCQkJ LyoKKwkJCSAqIElmIGN1cnJlbnRwb3MgaXMgYWxyZWFkeSBkZWNpZGVkIGJ1dCBhZ2dyZWdhdGVk dXB0byBpcyBub3QgeWV0CisJCQkgKiBkZXRlcm1pbmVkLCB3ZSd2ZSBwYXNzZWQgdGhlIGxhc3Qg cmVkdWNlZCBmcmFtZS4KKwkJCSAqLworCQkJaWYgKGdldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cyh3 aW5zdGF0ZSwgd2luc3RhdGUtPmN1cnJlbnRwb3MpCisJCQkJIT0gUkZfTk9UX0RFVEVSTUlORUQg JiYKKwkJCQlnZXRfcmVkdWNlZF9mcmFtZV9zdGF0dXMod2luc3RhdGUsIHdpbnN0YXRlLT5hZ2dy ZWdhdGVkdXB0bykKKwkJCQk9PSBSRl9OT1RfREVURVJNSU5FRCkKKwkJCQlicmVhazsKKworCQkJ LyoKKwkJCSAqIENhbGN1bGF0ZSB0aGUgcmVkdWNlZCBmcmFtZSBmb3IgYWdncmVnYXRlZHVwdG8u CisJCQkgKi8KKwkJCXJldCA9IHJvd19pc19pbl9yZWR1Y2VkX2ZyYW1lKHdpbnN0YXRlLT5hZ2df d2lub2JqLAorCQkJCQkJCQkJCSAgd2luc3RhdGUtPmFnZ3JlZ2F0ZWR1cHRvKTsKKwkJCWlmIChy ZXQgPT0gLTEpCQkvKiB1bm1hdGNoZWQgcm93ICovCisJCQkJYnJlYWs7CisKKwkJCS8qCisJCQkg KiBDaGVjayBpZiBjdXJyZW50IHJvdyBpcyBpbnNpZGUgYSBtYXRjaCBidXQgbm90IHRoZSBoZWFk CisJCQkgKiAoc2tpcHBlZCksIGFuZCBpdCdzIHRoZSBiYXNlIHJvdyBmb3IgYWdncmVnYXRpb24u CisJCQkgKi8KKwkJCWlmIChnZXRfcmVkdWNlZF9mcmFtZV9zdGF0dXMod2luc3RhdGUsCisJCQkJ CQkJCQkJIHdpbnN0YXRlLT5hZ2dyZWdhdGVkdXB0bykgPT0gUkZfU0tJUFBFRCAmJgorCQkJCXdp bnN0YXRlLT5hZ2dyZWdhdGVkdXB0byA9PSB3aW5zdGF0ZS0+YWdncmVnYXRlZGJhc2UpCisJCQkJ YnJlYWs7CisJCX0KKwogCQkvKiBTZXQgdHVwbGUgY29udGV4dCBmb3IgZXZhbHVhdGlvbiBvZiBh Z2dyZWdhdGUgYXJndW1lbnRzICovCiAJCXdpbnN0YXRlLT50bXBjb250ZXh0LT5lY3h0X291dGVy dHVwbGUgPSBhZ2dfcm93X3Nsb3Q7CiAKQEAgLTEwMjQsNiArMTA4Niw3IEBAIG5leHRfdHVwbGU6 CiAJCUV4ZWNDbGVhclR1cGxlKGFnZ19yb3dfc2xvdCk7CiAJfQogCisKIAkvKiBUaGUgZnJhbWUn cyBlbmQgaXMgbm90IHN1cHBvc2VkIHRvIG1vdmUgYmFja3dhcmRzLCBldmVyICovCiAJQXNzZXJ0 KGFnZ3JlZ2F0ZWR1cHRvX25vbnJlc3RhcnRlZCA8PSB3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8p OwogCkBAIC0xMTkxLDYgKzEyNTQsMjggQEAgcHJlcGFyZV90dXBsZXN0b3JlKFdpbmRvd0FnZ1N0 YXRlICp3aW5zdGF0ZSkKIAkJfQogCX0KIAorCS8qIENyZWF0ZSByZWFkL21hcmsgcG9pbnRlcnMg Zm9yIFJQUiBuYXZpZ2F0aW9uIGlmIG5lZWRlZCAqLworCWlmICh3aW5zdGF0ZS0+bmF2X3dpbm9i aikKKwl7CisJCS8qCisJCSAqIEFsbG9jYXRlIG1hcmsgYW5kIHJlYWQgcG9pbnRlcnMgZm9yIFJQ UiBuYXZpZ2F0aW9uLgorCQkgKgorCQkgKiBJZiBuYXZNYXhPZmZzZXRLaW5kID09IFJQUl9OQVZf T0ZGU0VUX0ZJWEVELCB3ZSBhZHZhbmNlIHRoZSBtYXJrCisJCSAqIGJhc2VkIG9uIChjdXJyZW50 cG9zIC0gbmF2TWF4T2Zmc2V0KSBhbmQgb3B0aW9uYWxseQorCQkgKiAobmZhQ29udGV4dC0+bWF0 Y2hTdGFydFJvdyArIG5hdkZpcnN0T2Zmc2V0KSwgYWxsb3dpbmcKKwkJICogdHVwbGVzdG9yZV90 cmltKCkgdG8gZnJlZSByb3dzIHRoYXQgYXJlIG5vIGxvbmdlciByZWFjaGFibGUuCisJCSAqCisJ CSAqIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwgaXMgcmVzb2x2ZWQgYXQgZXhlY3V0b3IgaW5p dDsgYnkgdGhpcworCQkgKiBwb2ludCBpdCBpcyBlaXRoZXIgRklYRUQgb3IgUkVUQUlOX0FMTC4K KwkJICovCisJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5tYXJrcHRyID0KKwkJCXR1cGxlc3RvcmVf YWxsb2NfcmVhZF9wb2ludGVyKHdpbnN0YXRlLT5idWZmZXIsIDApOworCQl3aW5zdGF0ZS0+bmF2 X3dpbm9iai0+cmVhZHB0ciA9CisJCQl0dXBsZXN0b3JlX2FsbG9jX3JlYWRfcG9pbnRlcih3aW5z dGF0ZS0+YnVmZmVyLAorCQkJCQkJCQkJCSAgRVhFQ19GTEFHX0JBQ0tXQVJEKTsKKwkJd2luc3Rh dGUtPm5hdl93aW5vYmotPm1hcmtwb3MgPSAwOworCX0KKwogCS8qCiAJICogSWYgd2UgYXJlIGlu IFJBTkdFIG9yIEdST1VQUyBtb2RlLCB0aGVuIGRldGVybWluaW5nIGZyYW1lIGJvdW5kYXJpZXMK IAkgKiByZXF1aXJlcyBwaHlzaWNhbCBhY2Nlc3MgdG8gdGhlIGZyYW1lIGVuZHBvaW50IHJvd3Ms IGV4Y2VwdCBpbiBjZXJ0YWluCkBAIC0xMjQ3LDYgKzEzMzIsOCBAQCBiZWdpbl9wYXJ0aXRpb24o V2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQogCXdpbnN0YXRlLT5mcmFtZWhlYWRfdmFsaWQgPSBm YWxzZTsKIAl3aW5zdGF0ZS0+ZnJhbWV0YWlsX3ZhbGlkID0gZmFsc2U7CiAJd2luc3RhdGUtPmdy b3VwdGFpbF92YWxpZCA9IGZhbHNlOworCWlmIChycHJfaXNfZGVmaW5lZCh3aW5zdGF0ZSkpCisJ CWNsZWFyX3JlZHVjZWRfZnJhbWUod2luc3RhdGUpOwogCXdpbnN0YXRlLT5zcG9vbGVkX3Jvd3Mg PSAwOwogCXdpbnN0YXRlLT5jdXJyZW50cG9zID0gMDsKIAl3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9z ID0gMDsKQEAgLTEzMDAsNiArMTM4NywxMyBAQCBiZWdpbl9wYXJ0aXRpb24oV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlKQogCQl3aW5zdGF0ZS0+YWdncmVnYXRlZHVwdG8gPSAwOwogCX0KIAorCS8q IHJlc2V0IG1hcmsgYW5kIHNlZWsgcG9zaXRpb25zIGZvciBSUFIgbmF2aWdhdGlvbiAqLworCWlm ICh3aW5zdGF0ZS0+bmF2X3dpbm9iaikKKwl7CisJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5tYXJr cG9zID0gLTE7CisJCXdpbnN0YXRlLT5uYXZfd2lub2JqLT5zZWVrcG9zID0gLTE7CisJfQorCiAJ LyogcmVzZXQgbWFyayBhbmQgc2VlayBwb3NpdGlvbnMgZm9yIGVhY2ggcmVhbCB3aW5kb3cgZnVu Y3Rpb24gKi8KIAlmb3IgKGludCBpID0gMDsgaSA8IG51bWZ1bmNzOyBpKyspCiAJewpAQCAtMTQ2 OCw2ICsxNTYyLDIxIEBAIHJlbGVhc2VfcGFydGl0aW9uKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0 ZSkKIAkJdHVwbGVzdG9yZV9jbGVhcih3aW5zdGF0ZS0+YnVmZmVyKTsKIAl3aW5zdGF0ZS0+cGFy dGl0aW9uX3Nwb29sZWQgPSBmYWxzZTsKIAl3aW5zdGF0ZS0+bmV4dF9wYXJ0aXRpb24gPSB0cnVl OworCisJLyogUmVzZXQgUlBSIG1hdGNoIHJlc3VsdHMgKi8KKwljbGVhcl9yZWR1Y2VkX2ZyYW1l KHdpbnN0YXRlKTsKKworCS8qIFJlc2V0IE5GQSBzdGF0ZSBmb3IgbmV3IHBhcnRpdGlvbiAqLwor CXdpbnN0YXRlLT5uZmFDb250ZXh0ID0gTlVMTDsKKwl3aW5zdGF0ZS0+bmZhQ29udGV4dFRhaWwg PSBOVUxMOworCXdpbnN0YXRlLT5uZmFDb250ZXh0RnJlZSA9IE5VTEw7CisJd2luc3RhdGUtPm5m YVN0YXRlRnJlZSA9IE5VTEw7CisJd2luc3RhdGUtPm5mYUxhc3RQcm9jZXNzZWRSb3cgPSAtMTsK Kwl3aW5zdGF0ZS0+bmZhU3RhdGVzQWN0aXZlID0gMDsKKwl3aW5zdGF0ZS0+bmZhQ29udGV4dHNB Y3RpdmUgPSAwOworCisJLyogSW52YWxpZGF0ZSB0aGUgbmF2IHNsb3QgcG9zaXRpb24gY2FjaGUg Zm9yIHRoZSBuZXcgcGFydGl0aW9uLiAqLworCXdpbnN0YXRlLT5uYXZfc2xvdF9wb3MgPSAtMTsK IH0KIAogLyoKQEAgLTIyNjMsNiArMjM3MiwxNiBAQCBjYWxjdWxhdGVfZnJhbWVfb2Zmc2V0cyhQ bGFuU3RhdGUgKnBzdGF0ZSkKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BSRUNFRElOR19PUl9GT0xMT1dJTkdfU0laRSksCiAJCQkJCQkgZXJybXNn KCJmcmFtZSBlbmRpbmcgb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlIikpKTsKKworCQkJLyoK KwkJCSAqIFJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGZvcmJpZHMgYSB6ZXJvLWxlbmd0aCBmcmFt ZSBlbmQ7CisJCQkgKiBjaGVja2VkIGhlcmUgc28gYSBub24tY29uc3RhbnQgb2Zmc2V0IChlLmcu IGEgYmluZCBwYXJhbWV0ZXIpCisJCQkgKiBpcyBjYXVnaHQsIG5vdCBqdXN0IGEgbGl0ZXJhbCAw LgorCQkJICovCisJCQlpZiAod2luc3RhdGUtPnJwUGF0dGVybiAhPSBOVUxMICYmIG9mZnNldCA9 PSAwKQorCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQllcnJjb2RlKEVSUkNPREVfV0lORE9XSU5H X0VSUk9SKSwKKwkJCQkJCWVycm1zZygiZnJhbWUgZW5kaW5nIG9mZnNldCBtdXN0IGJlIHBvc2l0 aXZlIHdpdGggcm93IHBhdHRlcm4gcmVjb2duaXRpb24iKSk7CiAJCX0KIAl9CiAJd2luc3RhdGUt PmFsbF9maXJzdCA9IGZhbHNlOwpAQCAtMjM5Niw2ICsyNTE1LDE2IEBAIEV4ZWNXaW5kb3dBZ2co UGxhblN0YXRlICpwc3RhdGUpCiAJCS8qIGRvbid0IGV2YWx1YXRlIHRoZSB3aW5kb3cgZnVuY3Rp b25zIHdoZW4gd2UncmUgaW4gcGFzcy10aHJvdWdoIG1vZGUgKi8KIAkJaWYgKHdpbnN0YXRlLT5z dGF0dXMgPT0gV0lORE9XQUdHX1JVTikKIAkJeworCQkJLyoKKwkJCSAqIElmIFJQUiBpcyBkZWZp bmVkIGFuZCBza2lwIG1vZGUgaXMgbmV4dCByb3csIGNsZWFyIHRoZSBjdXJyZW50CisJCQkgKiBt YXRjaCBzbyB0aGUgbmV4dCByb3cgdHJpZ2dlcnMgcmUtZXZhbHVhdGlvbi4KKwkJCSAqLworCQkJ aWYgKHJwcl9pc19kZWZpbmVkKHdpbnN0YXRlKSkKKwkJCXsKKwkJCQlpZiAod2luc3RhdGUtPnJw U2tpcFRvID09IFNUX05FWFRfUk9XKQorCQkJCQljbGVhcl9yZWR1Y2VkX2ZyYW1lKHdpbnN0YXRl KTsKKwkJCX0KKwogCQkJLyoKIAkJCSAqIEV2YWx1YXRlIHRydWUgd2luZG93IGZ1bmN0aW9ucwog CQkJICovCkBAIC0yNDM1LDYgKzI1NjQsNDMgQEAgRXhlY1dpbmRvd0FnZyhQbGFuU3RhdGUgKnBz dGF0ZSkKIAkJaWYgKHdpbnN0YXRlLT5ncm91cHRhaWxfcHRyID49IDApCiAJCQl1cGRhdGVfZ3Jv dXB0YWlscG9zKHdpbnN0YXRlKTsKIAorCQkvKgorCQkgKiBBZHZhbmNlIFJQUiBuYXZpZ2F0aW9u IG1hcmsgcG9pbnRlciBpZiBwb3NzaWJsZSwgc28gdGhhdAorCQkgKiB0dXBsZXN0b3JlX3RyaW0o KSBjYW4gZnJlZSByb3dzIG5vIGxvbmdlciByZWFjaGFibGUgYnkgbmF2aWdhdGlvbi4KKwkJICov CisJCWlmICh3aW5zdGF0ZS0+bmF2X3dpbm9iaiAmJgorCQkJd2luc3RhdGUtPnJwUGF0dGVybiAh PSBOVUxMICYmCisJCQl3aW5zdGF0ZS0+bmF2TWF4T2Zmc2V0S2luZCA9PSBSUFJfTkFWX09GRlNF VF9GSVhFRCkKKwkJeworCQkJaW50NjQJCW5hdm1hcmtwb3M7CisKKwkJCS8qIEJhY2t3YXJkIHJl YWNoIGZyb20gUFJFVi9MQVNUL2NvbXBvdW5kIFBSRVZfTEFTVC9ORVhUX0xBU1QgKi8KKwkJCWlm ICh3aW5zdGF0ZS0+Y3VycmVudHBvcyA+IHdpbnN0YXRlLT5uYXZNYXhPZmZzZXQpCisJCQkJbmF2 bWFya3BvcyA9IHdpbnN0YXRlLT5jdXJyZW50cG9zIC0gd2luc3RhdGUtPm5hdk1heE9mZnNldDsK KwkJCWVsc2UKKwkJCQluYXZtYXJrcG9zID0gMDsKKworCQkJLyoKKwkJCSAqIElmIEZJUlNUIGlz IHVzZWQsIGFsc28gY29uc2lkZXIgbWF0Y2hfc3RhcnQgKyBuYXZGaXJzdE9mZnNldC4KKwkJCSAq IFRoZSBvbGRlc3QgYWN0aXZlIGNvbnRleHQgKG5mYUNvbnRleHQpIGhhcyB0aGUgc21hbGxlc3QK KwkJCSAqIG1hdGNoU3RhcnRSb3cuCisJCQkgKi8KKwkJCWlmICh3aW5zdGF0ZS0+aGFzRmlyc3RO YXYgJiYKKwkJCQl3aW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZGU0VU X0ZJWEVEICYmCisJCQkJd2luc3RhdGUtPm5mYUNvbnRleHQgIT0gTlVMTCkKKwkJCXsKKwkJCQlp bnQ2NAkJZmlyc3RyZWFjaDsKKworCQkJCWlmICghcGdfYWRkX3M2NF9vdmVyZmxvdyh3aW5zdGF0 ZS0+bmZhQ29udGV4dC0+bWF0Y2hTdGFydFJvdywKKwkJCQkJCQkJCQkgd2luc3RhdGUtPm5hdkZp cnN0T2Zmc2V0LAorCQkJCQkJCQkJCSAmZmlyc3RyZWFjaCkpCisJCQkJCW5hdm1hcmtwb3MgPSBN aW4obmF2bWFya3BvcywgTWF4KGZpcnN0cmVhY2gsIDApKTsKKwkJCX0KKworCQkJaWYgKG5hdm1h cmtwb3MgPiB3aW5zdGF0ZS0+bmF2X3dpbm9iai0+bWFya3BvcykKKwkJCQlXaW5TZXRNYXJrUG9z aXRpb24od2luc3RhdGUtPm5hdl93aW5vYmosIG5hdm1hcmtwb3MpOworCQl9CisKIAkJLyoKIAkJ ICogVHJ1bmNhdGUgYW55IG5vLWxvbmdlci1uZWVkZWQgcm93cyBmcm9tIHRoZSB0dXBsZXN0b3Jl LgogCQkgKi8KQEAgLTI2NjAsNiArMjgyNiwyMCBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dB Z2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCXdpbnN0YXRlLT50ZW1wX3Ns b3RfMiA9IEV4ZWNJbml0RXh0cmFUdXBsZVNsb3QoZXN0YXRlLCBzY2FuRGVzYywKIAkJCQkJCQkJ CQkJCSAgICZUVFNPcHNNaW5pbWFsVHVwbGUpOwogCisJaWYgKG5vZGUtPnJwUGF0dGVybiAhPSBO VUxMKQorCXsKKwkJd2luc3RhdGUtPm5hdl9zbG90ID0gRXhlY0luaXRFeHRyYVR1cGxlU2xvdChl c3RhdGUsIHNjYW5EZXNjLAorCQkJCQkJCQkJCQkJCSZUVFNPcHNNaW5pbWFsVHVwbGUpOworCQl3 aW5zdGF0ZS0+bmF2X3Nsb3RfcG9zID0gLTE7CisKKwkJd2luc3RhdGUtPm5hdl9udWxsX3Nsb3Qg PSBFeGVjSW5pdEV4dHJhVHVwbGVTbG90KGVzdGF0ZSwgc2NhbkRlc2MsCisJCQkJCQkJCQkJCQkJ CSAmVFRTT3BzTWluaW1hbFR1cGxlKTsKKwkJd2luc3RhdGUtPm5hdl9udWxsX3Nsb3QgPSBFeGVj U3RvcmVBbGxOdWxsVHVwbGUod2luc3RhdGUtPm5hdl9udWxsX3Nsb3QpOworCisJCXdpbnN0YXRl LT5uYXZfc2F2ZWRfb3V0ZXJ0dXBsZSA9IE5VTEw7CisJCXdpbnN0YXRlLT5uYXZfbWF0Y2hfc3Rh cnQgPSAwOworCX0KKwogCS8qCiAJICogY3JlYXRlIGZyYW1lIGhlYWQgYW5kIHRhaWwgc2xvdHMg b25seSBpZiBuZWVkZWQgKG11c3QgY3JlYXRlIHNsb3RzIGluCiAJICogZXhhY3RseSB0aGUgc2Ft ZSBjYXNlcyB0aGF0IHVwZGF0ZV9mcmFtZWhlYWRwb3MgYW5kIHVwZGF0ZV9mcmFtZXRhaWxwb3MK QEAgLTI4MjgsNiArMzAwOCwyMyBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUs IEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWZsYWdzKQogCQl3aW5zdGF0ZS0+YWdnX3dpbm9iaiA9IGFn Z193aW5vYmo7CiAJfQogCisJLyoKKwkgKiBTZXQgdXAgV2luZG93T2JqZWN0IGZvciBSUFIgbmF2 aWdhdGlvbiBvcGNvZGVzLiAgVGhpcyBpcyBzZXBhcmF0ZSBmcm9tCisJICogYWdnX3dpbm9iaiBi ZWNhdXNlIGl0IG5lZWRzIGl0cyBvd24gcmVhZCBwb2ludGVyIHRvIGF2b2lkIGludGVyZmVyaW5n CisJICogd2l0aCBhZ2dyZWdhdGUgcHJvY2Vzc2luZy4KKwkgKi8KKwlpZiAobm9kZS0+cnBQYXR0 ZXJuICE9IE5VTEwpCisJeworCQlXaW5kb3dPYmplY3QgbmF2X3dpbm9iaiA9IG1ha2VOb2RlKFdp bmRvd09iamVjdERhdGEpOworCisJCW5hdl93aW5vYmotPndpbnN0YXRlID0gd2luc3RhdGU7CisJ CW5hdl93aW5vYmotPmFyZ3N0YXRlcyA9IE5JTDsKKwkJbmF2X3dpbm9iai0+bG9jYWxtZW0gPSBO VUxMOworCQluYXZfd2lub2JqLT5tYXJrcHRyID0gLTE7CisJCW5hdl93aW5vYmotPnJlYWRwdHIg PSAtMTsKKwkJd2luc3RhdGUtPm5hdl93aW5vYmogPSBuYXZfd2lub2JqOworCX0KKwogCS8qIFNl dCB0aGUgc3RhdHVzIHRvIHJ1bm5pbmcgKi8KIAl3aW5zdGF0ZS0+c3RhdHVzID0gV0lORE9XQUdH X1JVTjsKIApAQCAtMjg0Niw2ICszMDQzLDgxIEBAIEV4ZWNJbml0V2luZG93QWdnKFdpbmRvd0Fn ZyAqbm9kZSwgRVN0YXRlICplc3RhdGUsIGludCBlZmxhZ3MpCiAJd2luc3RhdGUtPmluUmFuZ2VB c2MgPSBub2RlLT5pblJhbmdlQXNjOwogCXdpbnN0YXRlLT5pblJhbmdlTnVsbHNGaXJzdCA9IG5v ZGUtPmluUmFuZ2VOdWxsc0ZpcnN0OwogCisJLyogU2V0IHVwIFNLSVAgVE8gdHlwZSAqLworCXdp bnN0YXRlLT5ycFNraXBUbyA9IG5vZGUtPnJwU2tpcFRvOworCS8qIFNldCB1cCByb3cgcGF0dGVy biByZWNvZ25pdGlvbiBQQVRURVJOIGNsYXVzZSAoY29tcGlsZWQgTkZBKSAqLworCXdpbnN0YXRl LT5ycFBhdHRlcm4gPSBub2RlLT5ycFBhdHRlcm47CisJLyogU2V0IHVwIG5hdiBvZmZzZXRzIGZv ciB0dXBsZXN0b3JlIHRyaW07IHJlc29sdmUgYW55IE5FRURTX0VWQUwga2luZHMgKi8KKwl3aW5z dGF0ZS0+bmF2TWF4T2Zmc2V0S2luZCA9IG5vZGUtPm5hdk1heE9mZnNldEtpbmQ7CisJd2luc3Rh dGUtPm5hdk1heE9mZnNldCA9IG5vZGUtPm5hdk1heE9mZnNldDsKKwl3aW5zdGF0ZS0+aGFzRmly c3ROYXYgPSBub2RlLT5oYXNGaXJzdE5hdjsKKwl3aW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXRLaW5k ID0gbm9kZS0+bmF2Rmlyc3RPZmZzZXRLaW5kOworCXdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldCA9 IG5vZGUtPm5hdkZpcnN0T2Zmc2V0OworCWV2YWxfZGVmaW5lX29mZnNldHMod2luc3RhdGUsIG5v ZGUtPmRlZmluZUNsYXVzZSk7CisKKwkvKiBDb3B5IG1hdGNoX3N0YXJ0IGRlcGVuZGVuY3kgYml0 bWFwc2V0IGZvciBwZXItY29udGV4dCBldmFsdWF0aW9uICovCisJd2luc3RhdGUtPmRlZmluZU1h dGNoU3RhcnREZXBlbmRlbnQgPSBibXNfY29weShub2RlLT5kZWZpbmVNYXRjaFN0YXJ0RGVwZW5k ZW50KTsKKworCS8qIENhbGN1bGF0ZSBORkEgc3RhdGUgc2l6ZSBhbmQgYWxsb2NhdGUgY3ljbGUg ZGV0ZWN0aW9uIGJpdG1hcCAqLworCWlmIChub2RlLT5ycFBhdHRlcm4gIT0gTlVMTCkKKwl7CisJ CWludAkJCW5mYVZpc2l0ZWROV29yZHM7CisKKwkJd2luc3RhdGUtPm5mYVN0YXRlU2l6ZSA9IG9m ZnNldG9mKFJQUk5GQVN0YXRlLCBjb3VudHMpICsKKwkJCXNpemVvZihpbnQzMikgKiBub2RlLT5y cFBhdHRlcm4tPm1heERlcHRoOworCQluZmFWaXNpdGVkTldvcmRzID0KKwkJCShub2RlLT5ycFBh dHRlcm4tPm51bUVsZW1lbnRzIC0gMSkgLyBCSVRTX1BFUl9CSVRNQVBXT1JEICsgMTsKKwkJd2lu c3RhdGUtPm5mYVZpc2l0ZWRFbGVtcyA9IHBhbGxvYzAoc2l6ZW9mKGJpdG1hcHdvcmQpICoKKwkJ CQkJCQkJCQkJbmZhVmlzaXRlZE5Xb3Jkcyk7CisJCS8qIEhpZ2gtd2F0ZXIgbWFyayBzZW50aW5l bHM6IG5vIGJpdHMgc2V0IHlldC4gKi8KKwkJd2luc3RhdGUtPm5mYVZpc2l0ZWRNaW5Xb3JkID0g UEdfSU5UMTZfTUFYOworCQl3aW5zdGF0ZS0+bmZhVmlzaXRlZE1heFdvcmQgPSAtMTsKKwl9CisK KwkvKiBTZXQgdXAgcm93IHBhdHRlcm4gcmVjb2duaXRpb24gREVGSU5FIGNsYXVzZSAqLworCXdp bnN0YXRlLT5kZWZpbmVWYXJpYWJsZUxpc3QgPSBOSUw7CisJd2luc3RhdGUtPmRlZmluZUNsYXVz ZUxpc3QgPSBOSUw7CisJaWYgKG5vZGUtPmRlZmluZUNsYXVzZSAhPSBOSUwpCisJeworCQkvKgor CQkgKiBDb21waWxlIERFRklORSBjbGF1c2UgZXhwcmVzc2lvbnMuICBQUkVWL05FWFQgbmF2aWdh dGlvbiBpcyBoYW5kbGVkCisJCSAqIGJ5IEVFT1BfUlBSX05BVl9TRVQvUkVTVE9SRSBvcGNvZGVz IGVtaXR0ZWQgZHVyaW5nIEV4ZWNJbml0RXhwciwgc28KKwkJICogbm8gdmFybm8gcmV3cml0aW5n IGlzIG5lZWRlZCBoZXJlLgorCQkgKi8KKwkJZm9yZWFjaF9ub2RlKFRhcmdldEVudHJ5LCB0ZSwg bm9kZS0+ZGVmaW5lQ2xhdXNlKQorCQl7CisJCQljaGFyCSAgICpuYW1lID0gdGUtPnJlc25hbWU7 CisJCQlFeHByCSAgICpleHByID0gdGUtPmV4cHI7CisJCQlFeHByU3RhdGUgICpleHBzOworCisJ CQl3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVMaXN0ID0KKwkJCQlsYXBwZW5kKHdpbnN0YXRlLT5k ZWZpbmVWYXJpYWJsZUxpc3QsCisJCQkJCQltYWtlU3RyaW5nKHBzdHJkdXAobmFtZSkpKTsKKwkJ CWV4cHMgPSBFeGVjSW5pdEV4cHIoZXhwciwgKFBsYW5TdGF0ZSAqKSB3aW5zdGF0ZSk7CisJCQl3 aW5zdGF0ZS0+ZGVmaW5lQ2xhdXNlTGlzdCA9CisJCQkJbGFwcGVuZCh3aW5zdGF0ZS0+ZGVmaW5l Q2xhdXNlTGlzdCwgZXhwcyk7CisJCX0KKwl9CisKKwkvKiBJbml0aWFsaXplIE5GQSBmcmVlIGxp c3RzIGZvciByb3cgcGF0dGVybiBtYXRjaGluZyAqLworCXdpbnN0YXRlLT5uZmFDb250ZXh0ID0g TlVMTDsKKwl3aW5zdGF0ZS0+bmZhQ29udGV4dFRhaWwgPSBOVUxMOworCXdpbnN0YXRlLT5uZmFD b250ZXh0RnJlZSA9IE5VTEw7CisJd2luc3RhdGUtPm5mYVN0YXRlRnJlZSA9IE5VTEw7CisJd2lu c3RhdGUtPm5mYUxhc3RQcm9jZXNzZWRSb3cgPSAtMTsKKwl3aW5zdGF0ZS0+bmZhU3RhdGVzQWN0 aXZlID0gMDsKKwl3aW5zdGF0ZS0+bmZhQ29udGV4dHNBY3RpdmUgPSAwOworCisJLyoKKwkgKiBB bGxvY2F0ZSB2YXJNYXRjaGVkIGFycmF5IGZvciBORkEgZXZhbHVhdGlvbi4gV2l0aCB0aGUgbmV3 IHZhck5hbWVzCisJICogb3JkZXJpbmcgKERFRklORSBvcmRlciBmaXJzdCksIHZhcklkID09IGRl ZmluZUlkeCBmb3IgYWxsIGRlZmluZWQKKwkgKiB2YXJpYWJsZXMsIHNvIG5vIG1hcHBpbmcgaXMg bmVlZGVkLgorCSAqLworCWlmIChsaXN0X2xlbmd0aCh3aW5zdGF0ZS0+ZGVmaW5lVmFyaWFibGVM aXN0KSA+IDApCisJCXdpbnN0YXRlLT5uZmFWYXJNYXRjaGVkID0gcGFsbG9jMChzaXplb2YoYm9v bCkgKgorCQkJCQkJCQkJCSAgbGlzdF9sZW5ndGgod2luc3RhdGUtPmRlZmluZVZhcmlhYmxlTGlz dCkpOworCWVsc2UKKwkJd2luc3RhdGUtPm5mYVZhck1hdGNoZWQgPSBOVUxMOwogCXdpbnN0YXRl LT5hbGxfZmlyc3QgPSB0cnVlOwogCXdpbnN0YXRlLT5wYXJ0aXRpb25fc3Bvb2xlZCA9IGZhbHNl OwogCXdpbnN0YXRlLT5tb3JlX3BhcnRpdGlvbnMgPSBmYWxzZTsKQEAgLTI4NTQsNiArMzEyNiw0 MiBAQCBFeGVjSW5pdFdpbmRvd0FnZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBp bnQgZWZsYWdzKQogCXJldHVybiB3aW5zdGF0ZTsKIH0KIAorLyoKKyAqIEV4ZWNSUFJOYXZHZXRT bG90CisgKgorICogRmV0Y2ggdHVwbGUgYXQgZ2l2ZW4gcG9zaXRpb24gZm9yIFJQUiBuYXZpZ2F0 aW9uIG9wY29kZXMuCisgKiBSZXR1cm5zIG5hdl9zbG90IHdpdGggdGhlIHR1cGxlIGxvYWRlZCwg b3IgbmF2X251bGxfc2xvdCBpZiBvdXQgb2YgcmFuZ2UuCisgKi8KK1R1cGxlVGFibGVTbG90ICoK K0V4ZWNSUFJOYXZHZXRTbG90KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwgaW50NjQgcG9zKQor eworCVdpbmRvd09iamVjdCB3aW5vYmogPSB3aW5zdGF0ZS0+bmF2X3dpbm9iajsKKwlUdXBsZVRh YmxlU2xvdCAqc2xvdCA9IHdpbnN0YXRlLT5uYXZfc2xvdDsKKworCWlmIChwb3MgPCAwKQorCQly ZXR1cm4gd2luc3RhdGUtPm5hdl9udWxsX3Nsb3Q7CisKKwkvKgorCSAqIElmIG5hdl9zbG90IGFs cmVhZHkgaG9sZHMgdGhpcyBwb3NpdGlvbiwgcmV0dXJuIGl0IHdpdGhvdXQgcmUtZmV0Y2hpbmcu CisJICogVGhpcyBpcyBjcml0aWNhbCB3aGVuIG11bHRpcGxlIFBSRVYvTkVYVCBjYWxscyBpbiB0 aGUgc2FtZSBleHByZXNzaW9uCisJICogbmF2aWdhdGUgdG8gdGhlIHNhbWUgcm93LCBiZWNhdXNl IHJlLWZldGNoaW5nIHdvdWxkIGZyZWUgdGhlIHNsb3QncworCSAqIHR1cGxlIG1lbW9yeSBhbmQg aW52YWxpZGF0ZSBhbnkgcGFzcy1ieS1yZWYgRGF0dW0gcG9pbnRlcnMgZnJvbSBlYXJsaWVyCisJ ICogbmF2aWdhdGlvbiByZXN1bHRzLgorCSAqLworCWlmICh3aW5zdGF0ZS0+bmF2X3Nsb3RfcG9z ID09IHBvcykKKwkJcmV0dXJuIHNsb3Q7CisKKwlpZiAoIXdpbmRvd19nZXR0dXBsZXNsb3Qod2lu b2JqLCBwb3MsIHNsb3QpKQorCXsKKwkJd2luc3RhdGUtPm5hdl9zbG90X3BvcyA9IC0xOworCQly ZXR1cm4gd2luc3RhdGUtPm5hdl9udWxsX3Nsb3Q7CisJfQorCisJd2luc3RhdGUtPm5hdl9zbG90 X3BvcyA9IHBvczsKKwlyZXR1cm4gc2xvdDsKK30KKworCiAvKiAtLS0tLS0tLS0tLS0tLS0tLQog ICogRXhlY0VuZFdpbmRvd0FnZwogICogLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI5MTEsNiArMzIx OSw4IEBAIEV4ZWNSZVNjYW5XaW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpCiAJRXhlY0Ns ZWFyVHVwbGUobm9kZS0+YWdnX3Jvd19zbG90KTsKIAlFeGVjQ2xlYXJUdXBsZShub2RlLT50ZW1w X3Nsb3RfMSk7CiAJRXhlY0NsZWFyVHVwbGUobm9kZS0+dGVtcF9zbG90XzIpOworCWlmIChub2Rl LT5uYXZfc2xvdCkKKwkJRXhlY0NsZWFyVHVwbGUobm9kZS0+bmF2X3Nsb3QpOwogCWlmIChub2Rl LT5mcmFtZWhlYWRfc2xvdCkKIAkJRXhlY0NsZWFyVHVwbGUobm9kZS0+ZnJhbWVoZWFkX3Nsb3Qp OwogCWlmIChub2RlLT5mcmFtZXRhaWxfc2xvdCkKQEAgLTMyNzEsNyArMzU4MSw4IEBAIHdpbmRv d19nZXR0dXBsZXNsb3QoV2luZG93T2JqZWN0IHdpbm9iaiwgaW50NjQgcG9zLCBUdXBsZVRhYmxl U2xvdCAqc2xvdCkKIAkJcmV0dXJuIGZhbHNlOwogCiAJaWYgKHBvcyA8IHdpbm9iai0+bWFya3Bv cykKLQkJZWxvZyhFUlJPUiwgImNhbm5vdCBmZXRjaCByb3cgYmVmb3JlIFdpbmRvd09iamVjdCdz IG1hcmsgcG9zaXRpb24iKTsKKwkJZWxvZyhFUlJPUiwgImNhbm5vdCBmZXRjaCByb3c6ICIgSU5U NjRfRk9STUFUICIgYmVmb3JlIFdpbmRvd09iamVjdCdzIG1hcmsgcG9zaXRpb246ICIgSU5UNjRf Rk9STUFULAorCQkJIHBvcywgd2lub2JqLT5tYXJrcG9zKTsKIAogCW9sZGNvbnRleHQgPSBNZW1v cnlDb250ZXh0U3dpdGNoVG8od2luc3RhdGUtPnNzLnBzLnBzX0V4cHJDb250ZXh0LT5lY3h0X3Bl cl9xdWVyeV9tZW1vcnkpOwogCkBAIC0zMzg5LDYgKzM3MDAsNyBAQCBpZ25vcmVudWxsc19nZXRm dW5jYXJnaW5mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAJaW50CQkJbm90 bnVsbF9vZmZzZXQ7CiAJaW50CQkJbm90bnVsbF9yZWxwb3M7CiAJaW50CQkJZm9yd2FyZDsKKwlp bnQ2NAkJbnVtX3JlZHVjZWRfZnJhbWU7CiAKIAlBc3NlcnQoV2luZG93T2JqZWN0SXNWYWxpZCh3 aW5vYmopKTsKIAl3aW5zdGF0ZSA9IHdpbm9iai0+d2luc3RhdGU7CkBAIC0zNDE3LDYgKzM3Mjks MTMgQEAgaWdub3JlbnVsbHNfZ2V0ZnVuY2FyZ2luZnJhbWUoV2luZG93T2JqZWN0IHdpbm9iaiwg aW50IGFyZ25vLAogCQkJLyogcmVqZWN0aW5nIHJlbHBvcyA+IDAgaXMgZWFzeSBhbmQgc2ltcGxp ZmllcyBjb2RlIGJlbG93ICovCiAJCQlpZiAocmVscG9zID4gMCkKIAkJCQlnb3RvIG91dF9vZl9m cmFtZTsKKworCQkJLyoKKwkJCSAqIFJQUiBjYXJlcyBhYm91dCBmcmFtZSBoZWFkIHBvcy4gTmVl ZCB0byBjYWxsCisJCQkgKiB1cGRhdGVfZnJhbWVoZWFkcG9zCisJCQkgKi8KKwkJCXVwZGF0ZV9m cmFtZWhlYWRwb3Mod2luc3RhdGUpOworCiAJCQl1cGRhdGVfZnJhbWV0YWlscG9zKHdpbnN0YXRl KTsKIAkJCWFic19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zIC0gMTsKIAkJCW1hcmtfcG9z ID0gMDsJCS8qIGtlZXAgY29tcGlsZXIgcXVpZXQgKi8KQEAgLTM0MzIsNiArMzc1MSwzNSBAQCBp Z25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJn bm8sCiAJICogR2V0IHRoZSBuZXh0IG5vbm51bGwgdmFsdWUgaW4gdGhlIGZyYW1lLCBtb3Zpbmcg Zm9yd2FyZCBvciBiYWNrd2FyZAogCSAqIHVudGlsIHdlIGZpbmQgYSB2YWx1ZSBvciByZWFjaCB0 aGUgZnJhbWUncyBlbmQuCiAJICovCisKKwkvKgorCSAqIENoZWNrIHdoZXRoZXIgY3VycmVudCBy b3cgaXMgaW4gcmVkdWNlZCBmcmFtZS4KKwkgKi8KKwludW1fcmVkdWNlZF9mcmFtZSA9IHJvd19p c19pbl9yZWR1Y2VkX2ZyYW1lKHdpbm9iaiwgd2luc3RhdGUtPmZyYW1laGVhZHBvcyk7CisJaWYg KG51bV9yZWR1Y2VkX2ZyYW1lIDwgMCkJLyogdW5tYXRjaGVkIG9yIHNraXBwZWQgcm93ICovCisJ CWdvdG8gb3V0X29mX2ZyYW1lOworCWVsc2UgaWYgKG51bV9yZWR1Y2VkX2ZyYW1lID4gMCkgLyog dGhlIGZpcnN0IHJvdyBvZiB0aGUgcmVkdWNlZCBmcmFtZSAqLworCXsKKwkJLyoKKwkJICogRWFy bHkgY2hlY2sgaWYgcm93IGNvdWxkIGJlIG91dCBvZiByZWR1Y2VkIGZyYW1lLiAgV2hlbiBSUFIg aXMKKwkJICogZW5hYmxlZCwgRVhDTFVERSBjbGF1c2UgY2Fubm90IGJlIHNwZWNpZmllZCBhbmQg dGhlIGZyYW1lIGlzIGFsd2F5cworCQkgKiBjb250aWd1b3VzLiAgU28gd2UgY2FuIHNhZmVseSBw ZXJmb3JtIHRoZSBmb2xsb3dpbmcgY2hlY2tzLiBOb3RlLAorCQkgKiBob3dldmVyLCBpdCBpcyBw b3NzaWJsZSB0aGF0IGEgcm93IGlzIG91dCBvZiByZWR1Y2VkIGZyYW1lIGlmCisJCSAqIHRoZXJl J3MgYSBOVUxMIGluIHRoZSBtaWRkbGUuIFNvIHdlIG5lZWQgdG8gY2hlY2sgaXQgaW4gdGhlCisJ CSAqIGZvbGxvd2luZyBkbyBsb29wLgorCQkgKi8KKwkJaWYgKHNlZWt0eXBlID09IFdJTkRPV19T RUVLX0hFQUQgJiYgcmVscG9zID49IG51bV9yZWR1Y2VkX2ZyYW1lKQorCQkJZ290byBvdXRfb2Zf ZnJhbWU7CisJCWlmIChzZWVrdHlwZSA9PSBXSU5ET1dfU0VFS19UQUlMKQorCQl7CisJCQlpZiAo bm90bnVsbF9yZWxwb3MgPj0gbnVtX3JlZHVjZWRfZnJhbWUpCisJCQkJZ290byBvdXRfb2ZfZnJh bWU7CisKKwkJCS8qIG5vdCBvdXQgb2YgcmVkdWNlZCBmcmFtZS4gU2V0IGFic3BvcyBhcyBhIHN0 YXJ0aW5nIHBvaW50ICovCisJCQlhYnNfcG9zID0gd2luc3RhdGUtPmZyYW1laGVhZHBvcyArIG51 bV9yZWR1Y2VkX2ZyYW1lIC0gMTsKKwkJfQorCX0KKwogCWRvCiAJewogCQlpbnQJCQlpbmZyYW1l OwpAQCAtMzQ5Myw2ICszODQxLDE2IEBAIGlnbm9yZW51bGxzX2dldGZ1bmNhcmdpbmZyYW1lKFdp bmRvd09iamVjdCB3aW5vYmosIGludCBhcmdubywKIAkJfQogYWR2YW5jZToKIAkJYWJzX3BvcyAr PSBmb3J3YXJkOworCQlpZiAocnByX2lzX2RlZmluZWQod2luc3RhdGUpKQorCQl7CisJCQkvKgor CQkJICogQ2hlY2sgd2hldGhlciB3ZSBhcmUgc3RpbGwgaW4gdGhlIHJlZHVjZWQgZnJhbWUuICAo YWxzbyBjaGVjaworCQkJICogaWYgd2Ugc3VjY2VlZGVkIGluIGdldHRpbmcgdGhlIHRhcmdldCBy b3cpLgorCQkJICovCisJCQludW1fcmVkdWNlZF9mcmFtZS0tOworCQkJaWYgKG51bV9yZWR1Y2Vk X2ZyYW1lIDw9IDAgJiYgbm90bnVsbF9vZmZzZXQgPD0gbm90bnVsbF9yZWxwb3MpCisJCQkJZ290 byBvdXRfb2ZfZnJhbWU7CisJCX0KIAl9IHdoaWxlIChub3RudWxsX29mZnNldCA8PSBub3RudWxs X3JlbHBvcyk7CiAKIAlpZiAoc2V0X21hcmspCkBAIC0zNjM1LDg3ICszOTkzLDk0MCBAQCBwdXRf bm90bnVsbF9pbmZvKFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywgaW50IGFyZ25vLCBi b29sIGlzbnVsbCkKIAltYnBbYnBvc10gPSBtYjsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gKiBB UEkgZXhwb3NlZCB0byB3aW5kb3cgZnVuY3Rpb25zCi0gKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICog ZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcgorICoJCUV2YWx1YXRlIGFuIG9mZnNldCBleHByZXNzaW9u IGF0IGV4ZWN1dG9yIGluaXQgdGltZSBmb3IgdHJpbQorICoJCW9wdGltaXphdGlvbi4gIFJldHVy bnMgdGhlIG9mZnNldCB2YWx1ZSwgb3IgMCBmb3IgTlVMTC9uZWdhdGl2ZQorICoJCSh0aGVzZSB3 aWxsIGNhdXNlIGEgcnVudGltZSBlcnJvciBkdXJpbmcgYWN0dWFsIG5hdmlnYXRpb24sIHNvIHRo ZQorICoJCXRyaW0gdmFsdWUgaXMgaXJyZWxldmFudCkuCisgKi8KK3N0YXRpYyBpbnQ2NAorZXZh bF9uYXZfb2Zmc2V0X2hlbHBlcihXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIEV4cHIgKm9mZnNl dF9leHByLAorCQkJCQkgICBpbnQ2NCBkZWZhdWx0T2Zmc2V0KQoreworCUV4cHJDb250ZXh0ICpl Y29udGV4dCA9IHdpbnN0YXRlLT5zcy5wcy5wc19FeHByQ29udGV4dDsKKwlFeHByU3RhdGUgICpl c3RhdGU7CisJRGF0dW0JCXZhbDsKKwlib29sCQlpc251bGw7CisJaW50NjQJCW9mZnNldDsKKwor CWlmIChvZmZzZXRfZXhwciA9PSBOVUxMKQorCQlyZXR1cm4gZGVmYXVsdE9mZnNldDsKKworCWVz dGF0ZSA9IEV4ZWNJbml0RXhwcihvZmZzZXRfZXhwciwgKFBsYW5TdGF0ZSAqKSB3aW5zdGF0ZSk7 CisJdmFsID0gRXhlY0V2YWxFeHByU3dpdGNoQ29udGV4dChlc3RhdGUsIGVjb250ZXh0LCAmaXNu dWxsKTsKIAorCWlmIChpc251bGwpCisJCXJldHVybiAwOworCisJb2Zmc2V0ID0gRGF0dW1HZXRJ bnQ2NCh2YWwpOworCWlmIChvZmZzZXQgPCAwKQorCQlyZXR1cm4gMDsKKworCXJldHVybiBvZmZz ZXQ7Cit9CisKK3R5cGVkZWYgc3RydWN0Cit7CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlOwor CWludDY0CQltYXhPZmZzZXQ7CQkvKiBtYXggYmFja3dhcmQtcmVhY2ggb2Zmc2V0IGFjcm9zcyBh bGwgbmF2CisJCQkJCQkJCSAqIGV4cHJzICovCisJYm9vbAkJbWF4T3ZlcmZsb3c7CS8qIHRydWUg aWYgYmFja3dhcmQtcmVhY2ggb3ZlcmZsb3cgZGV0ZWN0ZWQgKi8KKwlpbnQ2NAkJbWluRmlyc3RP ZmZzZXQ7IC8qIG1pbiBmb3J3YXJkLWZyb20tbWF0Y2hfc3RhcnQgb2Zmc2V0OyBtYXkgYmUKKwkJ CQkJCQkJICogbmVnYXRpdmUgKFBSRVZfRklSU1Q6IGlubmVyIC0gb3V0ZXIgPCAwKSAqLworfSBF dmFsRGVmaW5lT2Zmc2V0c0NvbnRleHQ7CiAKIC8qCi0gKiBXaW5DaGVja0FuZEluaXRpYWxpemVO dWxsVHJlYXRtZW50Ci0gKgkJQ2hlY2sgbnVsbCB0cmVhdG1lbnQgY2xhdXNlIGFuZCBzZXRzIGln bm9yZV9udWxscworICogdmlzaXRfbmF2X2V4ZWMKKyAqCQluYXZfdHJhdmVyc2FsX3dhbGtlciBj YWxsYmFjayAoTmF2VmlzaXRGbikgZm9yIHRoZSBleGVjdXRvciBzaWRlLgorICoJCUF0IGVhY2gg UlBSTmF2RXhwciwgZXZhbHVhdGVzIHRoZSBuYXYncyBvZmZzZXQgZXhwcmVzc2lvbihzKSBhdAor ICoJCXJ1bnRpbWUgdmlhIGV2YWxfbmF2X29mZnNldF9oZWxwZXIgYW5kIGFjY3VtdWxhdGVzOgog ICoKLSAqIFdpbmRvdyBmdW5jdGlvbnMgc2hvdWxkIGNhbGwgdGhpcyB0byBjaGVjayBpZiB0aGV5 IGFyZSBiZWluZyBjYWxsZWQgd2l0aAotICogYSBudWxsIHRyZWF0bWVudCBjbGF1c2Ugd2hlbiB0 aGV5IGRvbid0IGFsbG93IGl0LCBvciB0byBzZXQgaWdub3JlX251bGxzLgorICoJCSAgLSBtYXhP ZmZzZXQgKGJhY2t3YXJkIHJlYWNoKTogUFJFViwgTEFTVC13aXRoLW9mZnNldCwgY29tcG91bmQK KyAqCQkJUFJFVl9MQVNUIChzZXRzIG1heE92ZXJmbG93IG9uIGludDY0IG92ZXJmbG93KSwgY29t cG91bmQKKyAqCQkJTkVYVF9MQVNUICg9IG1heChpbm5lciAtIG91dGVyLCAwKSkKKyAqCQkgIC0g bWluRmlyc3RPZmZzZXQgKGZvcndhcmQgcmVhY2ggZnJvbSBtYXRjaF9zdGFydCk6IEZJUlNULAor ICoJCQljb21wb3VuZCBQUkVWX0ZJUlNUICg9IGlubmVyIC0gb3V0ZXIsIG1heSBiZSBuZWdhdGl2 ZSksCisgKgkJCWNvbXBvdW5kIE5FWFRfRklSU1QgKD0gaW5uZXIgKyBvdXRlciwgY2xhbXBlZCB0 byBQR19JTlQ2NF9NQVggb24KKyAqCQkJb3ZlcmZsb3c7IGFsd2F5cyA+PSAwIHNvIG5ldmVyIHVw ZGF0ZXMgbWluRmlyc3RPZmZzZXQgaW4gcHJhY3RpY2UpCisgKgorICogQ291bnRlcnBhcnQgb2Yg dmlzaXRfbmF2X3BsYW4gYnV0IHVzaW5nIHJ1bnRpbWUgZXZhbHVhdGlvbiBpbnN0ZWFkIG9mCisg KiBDb25zdCBmb2xkaW5nOyBydW5zIG9ubHkgZm9yIG9mZnNldHMgdGhlIHBsYW5uZXIgbWFya2Vk IE5FRURTX0VWQUwuCisgKiBNYXRjaC1zdGFydCBkZXBlbmRlbmN5IGlzIG5vdCByZWNvbXB1dGVk IGhlcmUgLS0gdGhlIHBsYW5uZXIncyBiaXRtYXBzZXQKKyAqIGlzIHJldXNlZCB2aWEgd2luc3Rh dGUtPmRlZmluZU1hdGNoU3RhcnREZXBlbmRlbnQuCiAgKi8KLXZvaWQKLVdpbkNoZWNrQW5kSW5p dGlhbGl6ZU51bGxUcmVhdG1lbnQoV2luZG93T2JqZWN0IHdpbm9iaiwKLQkJCQkJCQkJICAgYm9v bCBhbGxvd051bGxUcmVhdG1lbnQsCi0JCQkJCQkJCSAgIEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZv KQorc3RhdGljIHZvaWQKK3Zpc2l0X25hdl9leGVjKE5hdlRyYXZlcnNhbCAqdCwgUlBSTmF2RXhw ciAqbmF2KQogewotCUFzc2VydChXaW5kb3dPYmplY3RJc1ZhbGlkKHdpbm9iaikpOwotCWlmICh3 aW5vYmotPmlnbm9yZV9udWxscyAhPSBOT19OVUxMVFJFQVRNRU5UICYmICFhbGxvd051bGxUcmVh dG1lbnQpCisJRXZhbERlZmluZU9mZnNldHNDb250ZXh0ICpjb250ZXh0ID0gKEV2YWxEZWZpbmVP ZmZzZXRzQ29udGV4dCAqKSB0LT5kYXRhOworCisJLyoKKwkgKiBQYXJzZXIgZ3VhcmFudGVlICht aXJyb3JzIHZpc2l0X25hdl9wbGFuKTogbmF2J3MgZGlyZWN0IGNoaWxkcmVuIGFyZQorCSAqIG5l dmVyIFJQUk5hdkV4cHIgLS0gY29tcG91bmQgbmVzdGluZyBpcyBmbGF0dGVuZWQgaW4gcGxhY2Ug YW5kIGFueQorCSAqIG90aGVyIG5lc3RpbmcgaXMgcmVqZWN0ZWQuICBPdXRlci1raW5kIGRpc3Bh dGNoIGlzIHN1ZmZpY2llbnQuCisJICovCisJQXNzZXJ0KG5hdi0+YXJnID09IE5VTEwgfHwgIUlz QShuYXYtPmFyZywgUlBSTmF2RXhwcikpOworCUFzc2VydChuYXYtPm9mZnNldF9hcmcgPT0gTlVM TCB8fCAhSXNBKG5hdi0+b2Zmc2V0X2FyZywgUlBSTmF2RXhwcikpOworCUFzc2VydChuYXYtPmNv bXBvdW5kX29mZnNldF9hcmcgPT0gTlVMTCB8fAorCQkgICAhSXNBKG5hdi0+Y29tcG91bmRfb2Zm c2V0X2FyZywgUlBSTmF2RXhwcikpOworCisJLyogQmFja3dhcmQgcmVhY2g6IFBSRVYsIExBU1Qt d2l0aC1vZmZzZXQgKi8KKwlpZiAoIWNvbnRleHQtPm1heE92ZXJmbG93KQogCXsKLQkJY29uc3Qg Y2hhciAqZnVuY25hbWUgPSBnZXRfZnVuY19uYW1lKGZjaW5mby0+ZmxpbmZvLT5mbl9vaWQpOwor CQlpbnQ2NAkJcmVhY2ggPSAwOworCQlib29sCQlnb3RSZWFjaCA9IGZhbHNlOwogCi0JCWlmICgh ZnVuY25hbWUpCi0JCQllbG9nKEVSUk9SLCAiY291bGQgbm90IGdldCBmdW5jdGlvbiBuYW1lIik7 Ci0JCWVyZXBvcnQoRVJST1IsCi0JCQkJKGVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQ T1JURUQpLAotCQkJCSBlcnJtc2coImZ1bmN0aW9uICVzIGRvZXMgbm90IGFsbG93IFJFU1BFQ1Qv SUdOT1JFIE5VTExTIiwKLQkJCQkJCWZ1bmNuYW1lKSkpOworCQlpZiAobmF2LT5raW5kID09IFJQ Ul9OQVZfUFJFVikKKwkJeworCQkJcmVhY2ggPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRl eHQtPndpbnN0YXRlLAorCQkJCQkJCQkJCSAgIG5hdi0+b2Zmc2V0X2FyZywgMSk7CisJCQlnb3RS ZWFjaCA9IHRydWU7CisJCX0KKwkJZWxzZSBpZiAobmF2LT5raW5kID09IFJQUl9OQVZfTEFTVCAm JiBuYXYtPm9mZnNldF9hcmcgIT0gTlVMTCkKKwkJeworCQkJcmVhY2ggPSBldmFsX25hdl9vZmZz ZXRfaGVscGVyKGNvbnRleHQtPndpbnN0YXRlLAorCQkJCQkJCQkJCSAgIG5hdi0+b2Zmc2V0X2Fy ZywgMCk7CisJCQlnb3RSZWFjaCA9IHRydWU7CisJCX0KKwkJZWxzZSBpZiAobmF2LT5raW5kID09 IFJQUl9OQVZfUFJFVl9MQVNUIHx8CisJCQkJIG5hdi0+a2luZCA9PSBSUFJfTkFWX05FWFRfTEFT VCkKKwkJeworCQkJaW50NjQJCWlubmVyID0gZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcihjb250ZXh0 LT53aW5zdGF0ZSwKKwkJCQkJCQkJCQkJCQkgICBuYXYtPm9mZnNldF9hcmcsIDApOworCQkJaW50 NjQJCW91dGVyID0gZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcihjb250ZXh0LT53aW5zdGF0ZSwKKwkJ CQkJCQkJCQkJCQkgICBuYXYtPmNvbXBvdW5kX29mZnNldF9hcmcsIDEpOworCisJCQlpZiAobmF2 LT5raW5kID09IFJQUl9OQVZfUFJFVl9MQVNUKQorCQkJeworCQkJCWlmIChwZ19hZGRfczY0X292 ZXJmbG93KGlubmVyLCBvdXRlciwgJnJlYWNoKSkKKwkJCQkJY29udGV4dC0+bWF4T3ZlcmZsb3cg PSB0cnVlOworCQkJCWVsc2UKKwkJCQkJZ290UmVhY2ggPSB0cnVlOworCQkJfQorCQkJZWxzZQor CQkJeworCQkJCXJlYWNoID0gTWF4KGlubmVyIC0gb3V0ZXIsIDApOworCQkJCWdvdFJlYWNoID0g dHJ1ZTsKKwkJCX0KKwkJfQorCisJCWlmIChnb3RSZWFjaCkKKwkJCWNvbnRleHQtPm1heE9mZnNl dCA9IE1heChjb250ZXh0LT5tYXhPZmZzZXQsIHJlYWNoKTsKKwl9CisKKwkvKiBGb3J3YXJkIHJl YWNoIGZyb20gbWF0Y2hfc3RhcnQ6IEZJUlNULCBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklS U1QgKi8KKwlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfRklSU1QpCisJeworCQlpbnQ2NAkJcmVh Y2g7CisKKwkJcmVhY2ggPSBldmFsX25hdl9vZmZzZXRfaGVscGVyKGNvbnRleHQtPndpbnN0YXRl LAorCQkJCQkJCQkJICAgbmF2LT5vZmZzZXRfYXJnLCAwKTsKKwkJY29udGV4dC0+bWluRmlyc3RP ZmZzZXQgPSBNaW4oY29udGV4dC0+bWluRmlyc3RPZmZzZXQsIHJlYWNoKTsKKwl9CisJZWxzZSBp ZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9GSVJTVCB8fAorCQkJIG5hdi0+a2luZCA9PSBS UFJfTkFWX05FWFRfRklSU1QpCisJeworCQlpbnQ2NAkJaW5uZXIgPSBldmFsX25hdl9vZmZzZXRf aGVscGVyKGNvbnRleHQtPndpbnN0YXRlLAorCQkJCQkJCQkJCQkJICAgbmF2LT5vZmZzZXRfYXJn LCAwKTsKKwkJaW50NjQJCW91dGVyID0gZXZhbF9uYXZfb2Zmc2V0X2hlbHBlcihjb250ZXh0LT53 aW5zdGF0ZSwKKwkJCQkJCQkJCQkJCSAgIG5hdi0+Y29tcG91bmRfb2Zmc2V0X2FyZywgMSk7CisJ CWludDY0CQlyZWFjaDsKKworCQlpZiAobmF2LT5raW5kID09IFJQUl9OQVZfUFJFVl9GSVJTVCkK KwkJeworCQkJLyoKKwkJCSAqIHJlYWNoID0gaW5uZXIgLSBvdXRlci4gIEJvdGggYXJlIG5vbi1u ZWdhdGl2ZSwgc28gdGhlIHJlc3VsdCA+PQorCQkJICogLVBHX0lOVDY0X01BWCwgd2hpY2ggY2Fu bm90IHVuZGVyZmxvdyBpbnQ2NC4KKwkJCSAqLworCQkJcmVhY2ggPSBpbm5lciAtIG91dGVyOwor CQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIE5FWFRfRklSU1Q6IHJlYWNoID0gaW5uZXIg KyBvdXRlci4gIFRoaXMgY2FuIG92ZXJmbG93LCBidXQgdGhlCisJCQkgKiByZXN1bHQgaXMgYWx3 YXlzID49IDAsIHNvIGl0IG5ldmVyIHVwZGF0ZXMgbWluRmlyc3RPZmZzZXQKKwkJCSAqICh3aGlj aCB0cmFja3MgdGhlIG1pbmltdW0pLiAgQ2xhbXAgdG8gUEdfSU5UNjRfTUFYIG9uIG92ZXJmbG93 LgorCQkJICovCisJCQlpZiAocGdfYWRkX3M2NF9vdmVyZmxvdyhpbm5lciwgb3V0ZXIsICZyZWFj aCkpCisJCQkJcmVhY2ggPSBQR19JTlQ2NF9NQVg7CisJCX0KKwkJY29udGV4dC0+bWluRmlyc3RP ZmZzZXQgPSBNaW4oY29udGV4dC0+bWluRmlyc3RPZmZzZXQsIHJlYWNoKTsKIAl9Ci0JZWxzZSBp ZiAod2lub2JqLT5pZ25vcmVfbnVsbHMgPT0gUEFSU0VSX0lHTk9SRV9OVUxMUykKLQkJd2lub2Jq LT5pZ25vcmVfbnVsbHMgPSBJR05PUkVfTlVMTFM7CiB9CiAKIC8qCi0gKiBXaW5HZXRQYXJ0aXRp b25Mb2NhbE1lbW9yeQotICoJCUdldCB3b3JraW5nIG1lbW9yeSB0aGF0IGxpdmVzIHRpbGwgZW5k IG9mIHBhcnRpdGlvbiBwcm9jZXNzaW5nCisgKiBldmFsX2RlZmluZV9vZmZzZXRzCisgKgkJRXZh bHVhdGUgbm9uLWNvbnN0YW50IG5hdiBvZmZzZXRzIGF0IGV4ZWN1dG9yIGluaXQgdGltZS4KICAq Ci0gKiBPbiBmaXJzdCBjYWxsIHdpdGhpbiBhIGdpdmVuIHBhcnRpdGlvbiwgdGhpcyBhbGxvY2F0 ZXMgYW5kIHplcm9lcyB0aGUKLSAqIHJlcXVlc3RlZCBhbW91bnQgb2Ygc3BhY2UuICBTdWJzZXF1 ZW50IGNhbGxzIGp1c3QgcmV0dXJuIHRoZSBzYW1lIGNodW5rLgorICogQ2FsbGVkIHdoZW4gdGhl IHBsYW5uZXIgc2V0IG5hdk1heE9mZnNldEtpbmQgYW5kL29yIG5hdkZpcnN0T2Zmc2V0S2luZAor ICogdG8gUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCBiZWNhdXNlIHNvbWUgb2Zmc2V0IGNvbnRh aW5zIGEgcGFyYW1ldGVyCisgKiBvciBub24tZm9sZGFibGUgZXhwcmVzc2lvbi4gIFVwZGF0ZXMg b25seSB0aGUgZmllbGRzIHdob3NlIGtpbmQgd2FzCisgKiBORUVEU19FVkFMOyBGSVhFRCBraW5k cyBhcmUgbGVmdCB1bmNoYW5nZWQuCiAgKgotICogTWVtb3J5IG9idGFpbmVkIHRoaXMgd2F5IGlz IG5vcm1hbGx5IHVzZWQgdG8gaG9sZCBzdGF0ZSB0aGF0IHNob3VsZCBiZQotICogYXV0b21hdGlj YWxseSByZXNldCBmb3IgZWFjaCBuZXcgcGFydGl0aW9uLiAgSWYgYSB3aW5kb3cgZnVuY3Rpb24g d2FudHMKLSAqIHRvIGhvbGQgc3RhdGUgYWNyb3NzIHRoZSB3aG9sZSBxdWVyeSwgZmNpbmZvLT5m bl9leHRyYSBjYW4gYmUgdXNlZCBpbiB0aGUKLSAqIHVzdWFsIHdheSBmb3IgdGhhdC4KKyAqIE9u IGJhY2t3YXJkLXJlYWNoIG92ZXJmbG93LCBzZXRzIG5hdk1heE9mZnNldEtpbmQgdG8KKyAqIFJQ Ul9OQVZfT0ZGU0VUX1JFVEFJTl9BTEwgc28gdGhhdCB0dXBsZXN0b3JlIHRyaW0gaXMgZGlzYWJs ZWQgZm9yCisgKiBiYWNrd2FyZCBuYXZpZ2F0aW9uLgogICovCi12b2lkICoKLVdpbkdldFBhcnRp dGlvbkxvY2FsTWVtb3J5KFdpbmRvd09iamVjdCB3aW5vYmosIFNpemUgc3opCitzdGF0aWMgdm9p ZAorZXZhbF9kZWZpbmVfb2Zmc2V0cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIExpc3QgKmRl ZmluZUNsYXVzZSkKIHsKLQlBc3NlcnQoV2luZG93T2JqZWN0SXNWYWxpZCh3aW5vYmopKTsKLQlp ZiAod2lub2JqLT5sb2NhbG1lbSA9PSBOVUxMKQotCQl3aW5vYmotPmxvY2FsbWVtID0KLQkJCU1l bW9yeUNvbnRleHRBbGxvY1plcm8od2lub2JqLT53aW5zdGF0ZS0+cGFydGNvbnRleHQsIHN6KTsK LQlyZXR1cm4gd2lub2JqLT5sb2NhbG1lbTsKKwlFdmFsRGVmaW5lT2Zmc2V0c0NvbnRleHQgY3R4 OworCU5hdlRyYXZlcnNhbCB0cmF2OworCWJvb2wJCW5lZWRzTWF4ID0gKHdpbnN0YXRlLT5uYXZN YXhPZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwpOworCWJvb2wJCW5lZWRz Rmlyc3QgPSAod2luc3RhdGUtPmhhc0ZpcnN0TmF2ICYmCisJCQkJCQkJICB3aW5zdGF0ZS0+bmF2 Rmlyc3RPZmZzZXRLaW5kID09IFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwpOworCisJaWYgKCFu ZWVkc01heCAmJiAhbmVlZHNGaXJzdCkKKwkJcmV0dXJuOworCisJY3R4LndpbnN0YXRlID0gd2lu c3RhdGU7CisJY3R4Lm1heE9mZnNldCA9IDA7CisJY3R4Lm1heE92ZXJmbG93ID0gZmFsc2U7CisJ Y3R4Lm1pbkZpcnN0T2Zmc2V0ID0gUEdfSU5UNjRfTUFYOworCisJdHJhdi52aXNpdCA9IHZpc2l0 X25hdl9leGVjOworCXRyYXYuZGF0YSA9ICZjdHg7CisKKwlmb3JlYWNoX25vZGUoVGFyZ2V0RW50 cnksIHRlLCBkZWZpbmVDbGF1c2UpCisJeworCQluYXZfdHJhdmVyc2FsX3dhbGtlcigoTm9kZSAq KSB0ZS0+ZXhwciwgJnRyYXYpOworCX0KKworCWlmIChuZWVkc01heCkKKwl7CisJCWlmIChjdHgu bWF4T3ZlcmZsb3cpCisJCXsKKwkJCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXRLaW5kID0gUlBSX05B Vl9PRkZTRVRfUkVUQUlOX0FMTDsKKwkJCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXQgPSAwOworCQl9 CisJCWVsc2UKKwkJeworCQkJd2luc3RhdGUtPm5hdk1heE9mZnNldEtpbmQgPSBSUFJfTkFWX09G RlNFVF9GSVhFRDsKKwkJCXdpbnN0YXRlLT5uYXZNYXhPZmZzZXQgPSBjdHgubWF4T2Zmc2V0Owor CQl9CisJfQorCisJaWYgKG5lZWRzRmlyc3QpCisJeworCQl3aW5zdGF0ZS0+bmF2Rmlyc3RPZmZz ZXRLaW5kID0gUlBSX05BVl9PRkZTRVRfRklYRUQ7CisJCWlmIChjdHgubWluRmlyc3RPZmZzZXQg PCBQR19JTlQ2NF9NQVgpCisJCQl3aW5zdGF0ZS0+bmF2Rmlyc3RPZmZzZXQgPSBjdHgubWluRmly c3RPZmZzZXQ7CisJCWVsc2UKKwkJCXdpbnN0YXRlLT5uYXZGaXJzdE9mZnNldCA9IFBHX0lOVDY0 X01BWDsKKwl9CiB9CiAKIC8qCi0gKiBXaW5HZXRDdXJyZW50UG9zaXRpb24KLSAqCQlSZXR1cm4g dGhlIGN1cnJlbnQgcm93J3MgcG9zaXRpb24gKGNvdW50aW5nIGZyb20gMCkgd2l0aGluIHRoZSBj dXJyZW50Ci0gKgkJcGFydGl0aW9uLgorICogcnByX2lzX2RlZmluZWQKKyAqIFJldHVybiB0cnVl IGlmIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIGRlZmluZWQuCiAgKi8KLWludDY0Ci1XaW5H ZXRDdXJyZW50UG9zaXRpb24oV2luZG93T2JqZWN0IHdpbm9iaikKK3N0YXRpYyBib29sCitycHJf aXNfZGVmaW5lZChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUpCiB7Ci0JQXNzZXJ0KFdpbmRvd09i amVjdElzVmFsaWQod2lub2JqKSk7Ci0JcmV0dXJuIHdpbm9iai0+d2luc3RhdGUtPmN1cnJlbnRw b3M7CisJcmV0dXJuIHdpbnN0YXRlLT5ycFBhdHRlcm4gIT0gTlVMTDsKIH0KIAogLyoKLSAqIFdp bkdldFBhcnRpdGlvblJvd0NvdW50Ci0gKgkJUmV0dXJuIHRvdGFsIG51bWJlciBvZiByb3dzIGNv bnRhaW5lZCBpbiB0aGUgY3VycmVudCBwYXJ0aXRpb24uCisgKiAtLS0tLS0tLS0tLS0tLS0tLQor ICogcm93X2lzX2luX3JlZHVjZWRfZnJhbWUKKyAqIERldGVybWluZSB3aGV0aGVyIGEgcm93IGlz IGluIHRoZSBjdXJyZW50IHJvdydzIHJlZHVjZWQgd2luZG93IGZyYW1lCisgKiBhY2NvcmRpbmcg dG8gcm93IHBhdHRlcm4gbWF0Y2hpbmcKICAqCi0gKiBOb3RlOiB0aGlzIGlzIGEgcmVsYXRpdmVs eSBleHBlbnNpdmUgb3BlcmF0aW9uIGJlY2F1c2UgaXQgZm9yY2VzIHRoZQotICogd2hvbGUgcGFy dGl0aW9uIHRvIGJlICJzcG9vbGVkIiBpbnRvIHRoZSB0dXBsZXN0b3JlIGF0IG9uY2UuICBPbmNl Ci0gKiBleGVjdXRlZCwgaG93ZXZlciwgYWRkaXRpb25hbCBjYWxscyB3aXRoaW4gdGhlIHNhbWUg cGFydGl0aW9uIGFyZSBjaGVhcC4KKyAqIFRoZSByb3cgbXVzdCBoYXZlIGFscmVhZHkgYmVlbiBk ZXRlcm1pbmVkIHRvIGJlIGluIGEgZnVsbCB3aW5kb3cgZnJhbWUKKyAqIGFuZCBmZXRjaGVkIGlu dG8gdGhlIHNsb3QuCisgKgorICogUmV0dXJuczoKKyAqID0gMCwgUlBSIGlzIG5vdCBkZWZpbmVk LgorICogPjAsIGlmIHRoZSByb3cgaXMgdGhlIGZpcnN0IGluIHRoZSByZWR1Y2VkIGZyYW1lLiBS ZXR1cm4gdGhlIG51bWJlciBvZiByb3dzCisgKiBpbiB0aGUgcmVkdWNlZCBmcmFtZS4KKyAqIC0x LCBpZiB0aGUgcm93IGlzIGFuIHVubWF0Y2hlZCByb3cKKyAqIC0yLCBpZiB0aGUgcm93IGlzIGlu IHRoZSByZWR1Y2VkIGZyYW1lIGJ1dCBuZWVkZWQgdG8gYmUgc2tpcHBlZCBiZWNhdXNlIG9mCisg KiBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAqIC0tLS0tLS0tLS0tLS0tLS0tCiAg Ki8KLWludDY0Ci1XaW5HZXRQYXJ0aXRpb25Sb3dDb3VudChXaW5kb3dPYmplY3Qgd2lub2JqKQor c3RhdGljIGludDY0Cityb3dfaXNfaW5fcmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qgd2lub2Jq LCBpbnQ2NCBwb3MpCiB7Ci0JQXNzZXJ0KFdpbmRvd09iamVjdElzVmFsaWQod2lub2JqKSk7Ci0J c3Bvb2xfdHVwbGVzKHdpbm9iai0+d2luc3RhdGUsIC0xKTsKLQlyZXR1cm4gd2lub2JqLT53aW5z dGF0ZS0+c3Bvb2xlZF9yb3dzOworCVdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSA9IHdpbm9iai0+ d2luc3RhdGU7CisJaW50CQkJc3RhdGU7CisJaW50NjQJCXJ0bjsKKworCWlmICghcnByX2lzX2Rl ZmluZWQod2luc3RhdGUpKQorCXsKKwkJLyoKKwkJICogUlBSIGlzIG5vdCBkZWZpbmVkLiBBc3N1 bWUgdGhhdCB3ZSBhcmUgYWx3YXlzIGluIHRoZSByZWR1Y2VkIHdpbmRvdworCQkgKiBmcmFtZS4K KwkJICovCisJCXJ0biA9IDA7CisJCXJldHVybiBydG47CisJfQorCisJc3RhdGUgPSBnZXRfcmVk dWNlZF9mcmFtZV9zdGF0dXMod2luc3RhdGUsIHBvcyk7CisKKwlpZiAoc3RhdGUgPT0gUkZfTk9U X0RFVEVSTUlORUQpCisJeworCQl1cGRhdGVfZnJhbWVoZWFkcG9zKHdpbnN0YXRlKTsKKwkJdXBk YXRlX3JlZHVjZWRfZnJhbWUod2lub2JqLCBwb3MpOworCX0KKworCXN0YXRlID0gZ2V0X3JlZHVj ZWRfZnJhbWVfc3RhdHVzKHdpbnN0YXRlLCBwb3MpOworCisJc3dpdGNoIChzdGF0ZSkKKwl7CisJ CWNhc2UgUkZfRlJBTUVfSEVBRDoKKwkJCXJ0biA9IHdpbnN0YXRlLT5ycHJfbWF0Y2hfbGVuZ3Ro OworCQkJYnJlYWs7CisKKwkJY2FzZSBSRl9TS0lQUEVEOgorCQkJcnRuID0gLTI7CisJCQlicmVh azsKKworCQljYXNlIFJGX1VOTUFUQ0hFRDoKKwkJY2FzZSBSRl9FTVBUWV9NQVRDSDoKKwkJCXJ0 biA9IC0xOworCQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJlY29n bml6ZWQgc3RhdGU6ICVkIGF0OiAiIElOVDY0X0ZPUk1BVCwKKwkJCQkgc3RhdGUsIHBvcyk7CisJ CQlicmVhazsKKwl9CisKKwlyZXR1cm4gcnRuOworfQorCisvKgorICogY2xlYXJfcmVkdWNlZF9m cmFtZQorICogQ2xlYXIgcmVkdWNlZCBmcmFtZSBzdGF0dXMKKyAqLworc3RhdGljIHZvaWQKK2Ns ZWFyX3JlZHVjZWRfZnJhbWUoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlKQoreworCXdpbnN0YXRl LT5ycHJfbWF0Y2hfdmFsaWQgPSBmYWxzZTsKKwl3aW5zdGF0ZS0+cnByX21hdGNoX21hdGNoZWQg PSBmYWxzZTsKKwl3aW5zdGF0ZS0+cnByX21hdGNoX3N0YXJ0ID0gLTE7CisJd2luc3RhdGUtPnJw cl9tYXRjaF9sZW5ndGggPSAwOworfQorCisvKgorICogZ2V0X3JlZHVjZWRfZnJhbWVfc3RhdHVz CisgKgkJTG9vayB1cCBhIHBvc2l0aW9uIGFnYWluc3QgdGhlIGN1cnJlbnQgbWF0Y2guCisgKgor ICogUmV0dXJucyBvbmUgb2YgdGhlIFJGXyogY29uc3RhbnRzOgorICogICBSRl9OT1RfREVURVJN SU5FRCAgcG9zIGhhcyBub3QgYmVlbiBwcm9jZXNzZWQgeWV0CisgKiAgIFJGX0ZSQU1FX0hFQUQg ICAgICBwb3MgaXMgdGhlIHN0YXJ0IG9mIHRoZSBjdXJyZW50IG1hdGNoCisgKiAgIFJGX1NLSVBQ RUQgICAgICAgICBwb3MgaXMgaW5zaWRlIHRoZSBjdXJyZW50IG1hdGNoIGJ1dCBub3QgdGhlIHN0 YXJ0CisgKiAgIFJGX1VOTUFUQ0hFRCAgICAgICBwb3MgaXMgcHJvY2Vzc2VkIGJ1dCBub3QgcGFy dCBvZiBhbnkgbWF0Y2gKKyAqICAgUkZfRU1QVFlfTUFUQ0ggICAgIHBvcyBpcyB0aGUgc3RhcnQg b2YgYW4gZW1wdHkgKHplcm8tbGVuZ3RoKSBtYXRjaAorICoKKyAqIHVwZGF0ZV9yZWR1Y2VkX2Zy YW1lKCkgcmVjb3JkcyB0aGUgY3VycmVudCBtYXRjaCBhcyBleGFjdGx5IG9uZSBvZiB0aHJlZQor ICogKHJwcl9tYXRjaF9tYXRjaGVkLCBycHJfbWF0Y2hfbGVuZ3RoKSBzaGFwZXM6IChmYWxzZSwg MSkgZm9yIHVubWF0Y2hlZCwKKyAqICh0cnVlLCAwKSBmb3IgYW4gZW1wdHkgbWF0Y2gsIGFuZCAo dHJ1ZSwgPj0gMSkgZm9yIGEgcmVhbCBtYXRjaC4gIFRoZQorICogdGVzdHMgYmVsb3cgZm9ybSBh IGNhc2NhZGUgd2l0aCBlYXJseSByZXR1cm5zOiBlYWNoIGlzIGEgbWluaW1hbCBjaGVjaworICog dGhhdCByZWxpZXMgb24gdGhlIG5lZ2F0aW9ucyB0aGUgcHJlY2VkaW5nIHJldHVybnMgaGF2ZSBh bHJlYWR5CisgKiBlc3RhYmxpc2hlZCwgc28gdGhlaXIgb3JkZXIgaXMgc2lnbmlmaWNhbnQuICBU aGUgImJ5IGhlcmUiIG5vdGVzIHNwZWxsCisgKiBvdXQgdGhlIHJ1bm5pbmcgaW52YXJpYW50OyBy ZW9yZGVyaW5nIGEgdGVzdCB3b3VsZCBtaXNjbGFzc2lmeSBvbmUgb2YKKyAqIHRoZSB0aHJlZSBz aGFwZXMuCisgKi8KK3N0YXRpYyBpbnQKK2dldF9yZWR1Y2VkX2ZyYW1lX3N0YXR1cyhXaW5kb3dB Z2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IHBvcykKK3sKKwlpbnQ2NAkJc3RhcnQgPSB3aW5zdGF0 ZS0+cnByX21hdGNoX3N0YXJ0OworCWludDY0CQlsZW5ndGggPSB3aW5zdGF0ZS0+cnByX21hdGNo X2xlbmd0aDsKKworCWlmICghd2luc3RhdGUtPnJwcl9tYXRjaF92YWxpZCkKKwkJcmV0dXJuIFJG X05PVF9ERVRFUk1JTkVEOworCisJLyoKKwkgKiBCeSBoZXJlIHRoZSByZWNvcmQgaXMgdmFsaWQg YW5kIGhvbGRzIG9uZSBvZiB0aGUgdGhyZWUgc2hhcGVzIGFib3ZlLgorCSAqCisJICogVGhlIGVt cHR5IG1hdGNoICh0cnVlLCAwKSBtdXN0IGJlIGNsYXNzaWZpZWQgZmlyc3Q6IGl0IGhhcyBsZW5n dGggMCwgc28KKwkgKiB0aGUgcmFuZ2UgdGVzdCBiZWxvdyB3b3VsZCBjb21wdXRlIHN0YXJ0ICsg bGVuZ3RoID09IHN0YXJ0IGFuZCByZWplY3QKKwkgKiBpdHMgb3duIHN0YXJ0IHBvc2l0aW9uIGFz IG91dCBvZiByYW5nZS4KKwkgKi8KKwlpZiAocG9zID09IHN0YXJ0ICYmIHdpbnN0YXRlLT5ycHJf bWF0Y2hfbWF0Y2hlZCAmJiBsZW5ndGggPT0gMCkKKwkJcmV0dXJuIFJGX0VNUFRZX01BVENIOwor CisJLyoKKwkgKiBCeSBoZXJlIGxlbmd0aCA+PSAxIC0tIHRoZSBvbmx5IHplcm8tbGVuZ3RoIHJl Y29yZCwgdGhlIGVtcHR5IG1hdGNoLAorCSAqIGhhcyBiZWVuIGhhbmRsZWQgLS0gc28gW3N0YXJ0 LCBzdGFydCArIGxlbmd0aCkgaXMgYSB3ZWxsLWZvcm1lZCByYW5nZS4KKwkgKi8KKwlpZiAocG9z IDwgc3RhcnQgfHwgcG9zID49IHN0YXJ0ICsgbGVuZ3RoKQorCQlyZXR1cm4gUkZfTk9UX0RFVEVS TUlORUQ7CisKKwkvKgorCSAqIEJ5IGhlcmUgcG9zIGxpZXMgd2l0aGluIFtzdGFydCwgc3RhcnQg KyBsZW5ndGgpLiAgQW4gdW5tYXRjaGVkIHJlY29yZAorCSAqIGlzIChmYWxzZSwgMSksIHNvIHRo aXMgcmV0dXJucyBmb3IgaXRzIHNpbmdsZSBpbi1yYW5nZSBwb3NpdGlvbi4KKwkgKi8KKwlpZiAo IXdpbnN0YXRlLT5ycHJfbWF0Y2hfbWF0Y2hlZCkKKwkJcmV0dXJuIFJGX1VOTUFUQ0hFRDsKKwor CS8qIEJ5IGhlcmUgdGhlIG1hdGNoIGlzIHJlYWwgKHRydWUsID49IDEpIGFuZCBwb3MgaXMgb25l IG9mIGl0cyByb3dzLiAqLworCWlmIChwb3MgPT0gc3RhcnQpCisJCXJldHVybiBSRl9GUkFNRV9I RUFEOworCisJcmV0dXJuIFJGX1NLSVBQRUQ7Cit9CisKKy8qCisgKiB1cGRhdGVfcmVkdWNlZF9m cmFtZQorICoJCVVwZGF0ZSByZWR1Y2VkIGZyYW1lIGluZm8gdXNpbmcgbXVsdGktY29udGV4dCBO RkEgcGF0dGVybiBtYXRjaGluZy4KKyAqCisgKiBNYWludGFpbnMgbXVsdGlwbGUgTkZBIGNvbnRl eHRzIHNpbXVsdGFuZW91c2x5LCBvbmUgZm9yIGVhY2ggcG90ZW50aWFsCisgKiBtYXRjaCBzdGFy dCBwb3NpdGlvbi4gVGhpcyBhbGxvd3Mgc2hhcmluZyByb3cgZXZhbHVhdGlvbnMgYWNyb3NzIGNv bnRleHRzLAorICogYXZvaWRpbmcgcmVkdW5kYW50IERFRklORSBjbGF1c2UgZXZhbHVhdGlvbnMg d2hlbiByZXdpbmRpbmcgZm9yIFNLSVAgVE8KKyAqIE5FWFQgUk9XIG1vZGUuCisgKgorICogS2V5 IG9wdGltaXphdGlvbnM6CisgKiAtIFJvdyBldmFsdWF0aW9ucyAoZXhwZW5zaXZlIERFRklORSBj bGF1c2VzKSBoYXBwZW4gb25seSBvbmNlIHBlciByb3cKKyAqIC0gQWxsIGFjdGl2ZSBjb250ZXh0 cyBzaGFyZSB0aGUgc2FtZSBldmFsdWF0aW9uIHJlc3VsdHMKKyAqIC0gQ29udGV4dHMgcGVyc2lz dCBhY3Jvc3MgY2FsbHMsIGVuYWJsaW5nIE8obikgREVGSU5FIGV2YWx1YXRpb25zCisgKi8KK3N0 YXRpYyB2b2lkCit1cGRhdGVfcmVkdWNlZF9mcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQ2 NCBwb3MpCit7CisJV2luZG93QWdnU3RhdGUgKndpbnN0YXRlID0gd2lub2JqLT53aW5zdGF0ZTsK KwlSUFJORkFDb250ZXh0ICp0YXJnZXRDdHg7CisJaW50NjQJCWN1cnJlbnRQb3M7CisJaW50NjQJ CXN0YXJ0UG9zOworCWludAkJCWZyYW1lT3B0aW9ucyA9IHdpbnN0YXRlLT5mcmFtZU9wdGlvbnM7 CisJYm9vbAkJaGFzTGltaXRlZEZyYW1lOworCWludDY0CQlmcmFtZU9mZnNldCA9IDA7CisJaW50 NjQJCW1hdGNoTGVuOworCisJLyoKKwkgKiBDaGVjayBpZiB3ZSBoYXZlIGEgbGltaXRlZCBmcmFt ZSAoUk9XUyAuLi4gTiBGT0xMT1dJTkcpLiBFYWNoIGNvbnRleHQKKwkgKiBuZWVkcyBpdHMgb3du IGZyYW1lIGVuZCBiYXNlZCBvbiBtYXRjaFN0YXJ0Um93ICsgb2Zmc2V0LgorCSAqLworCWhhc0xp bWl0ZWRGcmFtZSA9IChmcmFtZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9ST1dTKSAmJgorCQkhKGZy YW1lT3B0aW9ucyAmIEZSQU1FT1BUSU9OX0VORF9VTkJPVU5ERURfRk9MTE9XSU5HKTsKKwlpZiAo aGFzTGltaXRlZEZyYW1lKQorCQlmcmFtZU9mZnNldCA9IERhdHVtR2V0SW50NjQod2luc3RhdGUt PmVuZE9mZnNldFZhbHVlKTsKKworCS8qCisJICogQ2FzZSAxOiBwb3MgaXMgYmVmb3JlIGFueSBl eGlzdGluZyBjb250ZXh0J3Mgc3RhcnQgcG9zaXRpb24uIFRoaXMgbWVhbnMKKwkgKiB0aGUgcG9z aXRpb24gd2FzIGFscmVhZHkgcHJvY2Vzc2VkIGFuZCBkZXRlcm1pbmVkIHVubWF0Y2hlZC4gSGVh ZCBpcworCSAqIHRoZSBvbGRlc3QgY29udGV4dCAobG93ZXN0IG1hdGNoU3RhcnRSb3cpIHNpbmNl IGNvbnRleHRzIGFyZSBhZGRlZCBhdAorCSAqIHRhaWwgd2l0aCBpbmNyZWFzaW5nIHBvc2l0aW9u cy4KKwkgKi8KKwlpZiAod2luc3RhdGUtPm5mYUNvbnRleHQgIT0gTlVMTCAmJgorCQlwb3MgPCB3 aW5zdGF0ZS0+bmZhQ29udGV4dC0+bWF0Y2hTdGFydFJvdykKKwl7CisJCS8qIGFscmVhZHkgcHJv Y2Vzc2VkLCB1bm1hdGNoZWQgKi8KKwkJd2luc3RhdGUtPnJwcl9tYXRjaF92YWxpZCA9IHRydWU7 CisJCXdpbnN0YXRlLT5ycHJfbWF0Y2hfbWF0Y2hlZCA9IGZhbHNlOworCQl3aW5zdGF0ZS0+cnBy X21hdGNoX3N0YXJ0ID0gcG9zOworCQl3aW5zdGF0ZS0+cnByX21hdGNoX2xlbmd0aCA9IDE7CisJ CXJldHVybjsKKwl9CisKKwkvKgorCSAqIENhc2UgMjogRmluZCBleGlzdGluZyBjb250ZXh0IGZv ciB0aGlzIHBvcywgb3IgY3JlYXRlIG5ldyBvbmUuCisJICovCisJdGFyZ2V0Q3R4ID0gRXhlY1JQ UkdldEhlYWRDb250ZXh0KHdpbnN0YXRlLCBwb3MpOworCWlmICh0YXJnZXRDdHggPT0gTlVMTCkK Kwl7CisJCS8qCisJCSAqIE5vIGNvbnRleHQgZXhpc3RzLiBJZiBwb3MgaXMgYWxyZWFkeSBwcm9j ZXNzZWQsIGl0IG1lYW5zIHRoaXMgcm93CisJCSAqIHdhcyBhbHJlYWR5IGRldGVybWluZWQgdG8g YmUgdW5tYXRjaGVkIG9yIHNraXBwZWQgLSBubyBuZWVkIHRvCisJCSAqIHJlcHJvY2Vzcy4KKwkJ ICovCisJCWlmIChwb3MgPD0gd2luc3RhdGUtPm5mYUxhc3RQcm9jZXNzZWRSb3cpCisJCXsKKwkJ CS8qIGFscmVhZHkgcHJvY2Vzc2VkLCB1bm1hdGNoZWQgKi8KKwkJCXdpbnN0YXRlLT5ycHJfbWF0 Y2hfdmFsaWQgPSB0cnVlOworCQkJd2luc3RhdGUtPnJwcl9tYXRjaF9tYXRjaGVkID0gZmFsc2U7 CisJCQl3aW5zdGF0ZS0+cnByX21hdGNoX3N0YXJ0ID0gcG9zOworCQkJd2luc3RhdGUtPnJwcl9t YXRjaF9sZW5ndGggPSAxOworCQkJcmV0dXJuOworCQl9CisJCS8qIE5vdCB5ZXQgcHJvY2Vzc2Vk IC0gY3JlYXRlIG5ldyBjb250ZXh0IGFuZCBzdGFydCBmcmVzaCAqLworCQl0YXJnZXRDdHggPSBF eGVjUlBSU3RhcnRDb250ZXh0KHdpbnN0YXRlLCBwb3MpOworCX0KKwllbHNlIGlmICh0YXJnZXRD dHgtPnN0YXRlcyA9PSBOVUxMKQorCXsKKwkJLyoKKwkJICogVGhlIGhlYWQgY29udGV4dCBhbHJl YWR5IGNvbXBsZXRlZCBpbiBhbiBlYXJsaWVyIGNhbGwuICBSZWFjaGFibGUKKwkJICogdW5kZXIg U0tJUCBUTyBORVhUIFJPVywgd2hlcmUgb3ZlcmxhcHBpbmcgY29udGV4dHMgbGV0IG9uZSByZWFj aAorCQkgKiBGSU4gLS0gcmVjb3JkaW5nIGl0cyByZXN1bHQgLS0gYmVmb3JlIHRoZSBjYWxsIGZv ciBpdHMgb3duIHN0YXJ0CisJCSAqIHJvdyBhcnJpdmVzLiAgUmVnaXN0ZXIgdGhhdCByZXN1bHQu CisJCSAqLworCQlnb3RvIHJlZ2lzdGVyX3Jlc3VsdDsKKwl9CisKKwkvKgorCSAqIERldGVybWlu ZSB3aGVyZSB0byBzdGFydCBwcm9jZXNzaW5nLiBVc3VhbGx5IG5mYUxhc3RQcm9jZXNzZWRSb3cr MSA+PQorCSAqIHBvcyBzaW5jZSBjb250ZXh0cyBhcmUgY3JlYXRlZCBhdCBjdXJyZW50UG9zKzEg ZHVyaW5nIHByb2Nlc3NpbmcuCisJICogSG93ZXZlciwgcG9zIGNhbiBleGNlZWQgdGhpcyB3aGVu IHJvd3MgYXJlIHNraXBwZWQgKGUuZy4sIHVubWF0Y2hlZAorCSAqIHJvd3MgZG9uJ3QgdXBkYXRl IG5mYUxhc3RQcm9jZXNzZWRSb3cpLgorCSAqLworCXN0YXJ0UG9zID0gTWF4KHBvcywgd2luc3Rh dGUtPm5mYUxhc3RQcm9jZXNzZWRSb3cgKyAxKTsKKworCS8qCisJICogUHJvY2VzcyByb3dzIHVu dGlsIHRhcmdldCBjb250ZXh0IGNvbXBsZXRlcyBvciB3ZSBoaXQgYm91bmRhcmllcy4gRWFjaAor CSAqIHJvdyBldmFsdWF0aW9uIGlzIHNoYXJlZCBhY3Jvc3MgYWxsIGFjdGl2ZSBjb250ZXh0cy4K KwkgKi8KKwlmb3IgKGN1cnJlbnRQb3MgPSBzdGFydFBvczsgdGFyZ2V0Q3R4LT5zdGF0ZXMgIT0g TlVMTDsgY3VycmVudFBvcysrKQorCXsKKwkJYm9vbAkJcm93RXhpc3RzOworCisJCS8qCisJCSAq IEV2YWx1YXRlIHZhcmlhYmxlcyBmb3IgdGhpcyByb3cgLSBkb25lIG9ubHkgb25jZSwgc2hhcmVk IGJ5IGFsbAorCQkgKiBjb250ZXh0cy4KKwkJICoKKwkJICogU2V0IG5hdl9tYXRjaF9zdGFydCB0 byB0aGUgaGVhZCBjb250ZXh0J3MgbWF0Y2hTdGFydFJvdyBmb3IKKwkJICogRklSU1QvTEFTVCBu YXZpZ2F0aW9uLiAgTWF0Y2hfc3RhcnQtZGVwZW5kZW50IHZhcmlhYmxlcyAoRklSU1QsCisJCSAq IExBU1Qtd2l0aC1vZmZzZXQpIGFyZSByZS1ldmFsdWF0ZWQgcGVyLWNvbnRleHQgaW4gRXhlY1JQ UlByb2Nlc3NSb3cKKwkJICogd2hlbiBtYXRjaFN0YXJ0Um93IGRpZmZlcnMuCisJCSAqLworCQl3 aW5zdGF0ZS0+bmF2X21hdGNoX3N0YXJ0ID0gdGFyZ2V0Q3R4LT5tYXRjaFN0YXJ0Um93OworCQly b3dFeGlzdHMgPSBuZmFfZXZhbHVhdGVfcm93KHdpbm9iaiwgY3VycmVudFBvcywgd2luc3RhdGUt Pm5mYVZhck1hdGNoZWQpOworCisJCS8qIE5vIG1vcmUgcm93cyBpbiBwYXJ0aXRpb24/IEZpbmFs aXplIGFsbCBjb250ZXh0cyAqLworCQlpZiAoIXJvd0V4aXN0cykKKwkJeworCQkJRXhlY1JQUkZp bmFsaXplQWxsQ29udGV4dHMod2luc3RhdGUsIGN1cnJlbnRQb3MgLSAxKTsKKwkJCS8qIENsZWFu IHVwIGRlYWQgY29udGV4dHMgZnJvbSBmaW5hbGl6YXRpb24gKi8KKwkJCUV4ZWNSUFJDbGVhbnVw RGVhZENvbnRleHRzKHdpbnN0YXRlLCB0YXJnZXRDdHgpOworCQkJYnJlYWs7CisJCX0KKworCQkv KiBVcGRhdGUgbGFzdCBwcm9jZXNzZWQgcm93ICovCisJCXdpbnN0YXRlLT5uZmFMYXN0UHJvY2Vz c2VkUm93ID0gY3VycmVudFBvczsKKworCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJ CSAqIFByb2Nlc3MgYWxsIGNvbnRleHRzIGZvciB0aGlzIHJvdzoKKwkJICogICAxLiBNYXRjaCBh bGwgKGNvbnZlcmdlbmNlKQorCQkgKiAgIDIuIEFic29yYiByZWR1bmRhbnQKKwkJICogICAzLiBB ZHZhbmNlIGFsbCAoZGl2ZXJnZW5jZSkKKwkJICovCisJCUV4ZWNSUFJQcm9jZXNzUm93KHdpbnN0 YXRlLCBjdXJyZW50UG9zLCBoYXNMaW1pdGVkRnJhbWUsIGZyYW1lT2Zmc2V0KTsKKworCQkvKgor CQkgKiBDcmVhdGUgYSBuZXcgY29udGV4dCBmb3IgdGhlIG5leHQgcG90ZW50aWFsIHN0YXJ0IHBv c2l0aW9uLiBUaGlzCisJCSAqIGVuYWJsZXMgb3ZlcmxhcHBpbmcgbWF0Y2ggZGV0ZWN0aW9uIGZv ciBTS0lQIFRPIE5FWFQgUk9XLgorCQkgKi8KKwkJRXhlY1JQUlN0YXJ0Q29udGV4dCh3aW5zdGF0 ZSwgY3VycmVudFBvcyArIDEpOworCisJCS8qCisJCSAqIENsZWFuIHVwIGRlYWQgY29udGV4dHMg KGZhaWxlZCB3aXRoIG5vIGFjdGl2ZSBzdGF0ZXMgYW5kIG5vIG1hdGNoKS4KKwkJICogVGhpcyBy ZW1vdmVzIGNvbnRleHRzIHRoYXQgZmFpbGVkIGR1cmluZyBwcm9jZXNzaW5nIGFuZCBjb3VudHMg dGhlbQorCQkgKiBhcHByb3ByaWF0ZWx5IGFzIHBydW5lZCBvciBtaXNtYXRjaGVkLgorCQkgKi8K KwkJRXhlY1JQUkNsZWFudXBEZWFkQ29udGV4dHMod2luc3RhdGUsIHRhcmdldEN0eCk7CisJfQor CityZWdpc3Rlcl9yZXN1bHQ6CisJQXNzZXJ0KHBvcyA9PSB0YXJnZXRDdHgtPm1hdGNoU3RhcnRS b3cpOworCisJLyoKKwkgKiBSZWNvcmQgbWF0Y2ggcmVzdWx0LgorCSAqLworCXdpbnN0YXRlLT5y cHJfbWF0Y2hfdmFsaWQgPSB0cnVlOworCXdpbnN0YXRlLT5ycHJfbWF0Y2hfc3RhcnQgPSB0YXJn ZXRDdHgtPm1hdGNoU3RhcnRSb3c7CisKKwlpZiAodGFyZ2V0Q3R4LT5tYXRjaEVuZFJvdyA8IHRh cmdldEN0eC0+bWF0Y2hTdGFydFJvdykKKwl7CisJCW1hdGNoTGVuID0gdGFyZ2V0Q3R4LT5sYXN0 UHJvY2Vzc2VkUm93IC0gdGFyZ2V0Q3R4LT5tYXRjaFN0YXJ0Um93ICsgMTsKKworCQlpZiAodGFy Z2V0Q3R4LT5tYXRjaGVkU3RhdGUgIT0gTlVMTCkKKwkJeworCQkJLyogRW1wdHkgbWF0Y2g6IEZJ TiByZWFjaGVkIGJ1dCAwIHJvd3MgY29uc3VtZWQgKi8KKwkJCXdpbnN0YXRlLT5ycHJfbWF0Y2hf bWF0Y2hlZCA9IHRydWU7CisJCQl3aW5zdGF0ZS0+cnByX21hdGNoX2xlbmd0aCA9IDA7CisJCQlF eGVjUlBSUmVjb3JkQ29udGV4dFN1Y2Nlc3Mod2luc3RhdGUsIDApOworCQl9CisJCWVsc2UKKwkJ eworCQkJLyogTm8gbWF0Y2ggKi8KKwkJCXdpbnN0YXRlLT5ycHJfbWF0Y2hfbWF0Y2hlZCA9IGZh bHNlOworCQkJd2luc3RhdGUtPnJwcl9tYXRjaF9sZW5ndGggPSAxOworCQkJRXhlY1JQUlJlY29y ZENvbnRleHRGYWlsdXJlKHdpbnN0YXRlLCBtYXRjaExlbik7CisJCX0KKwkJRXhlY1JQUkZyZWVD b250ZXh0KHdpbnN0YXRlLCB0YXJnZXRDdHgpOworCQlyZXR1cm47CisJfQorCisJLyogTWF0Y2gg c3VjY2VlZGVkICovCisJbWF0Y2hMZW4gPSB0YXJnZXRDdHgtPm1hdGNoRW5kUm93IC0gdGFyZ2V0 Q3R4LT5tYXRjaFN0YXJ0Um93ICsgMTsKKworCXdpbnN0YXRlLT5ycHJfbWF0Y2hfbWF0Y2hlZCA9 IHRydWU7CisJd2luc3RhdGUtPnJwcl9tYXRjaF9sZW5ndGggPSBtYXRjaExlbjsKKwlFeGVjUlBS UmVjb3JkQ29udGV4dFN1Y2Nlc3Mod2luc3RhdGUsIG1hdGNoTGVuKTsKKworCS8qIFJlbW92ZSB0 aGUgbWF0Y2hlZCBjb250ZXh0ICovCisJRXhlY1JQUkZyZWVDb250ZXh0KHdpbnN0YXRlLCB0YXJn ZXRDdHgpOworfQorCisvKgorICogbmZhX2V2YWx1YXRlX3JvdworICoKKyAqIEV2YWx1YXRlIGFs bCBERUZJTkUgdmFyaWFibGVzIGZvciBjdXJyZW50IHJvdy4KKyAqIFJldHVybnMgdHJ1ZSBpZiB0 aGUgcm93IGV4aXN0cywgZmFsc2UgaWYgb3V0IG9mIHBhcnRpdGlvbi4KKyAqIElmIHJvdyBleGlz dHMsIGZpbGxzIHZhck1hdGNoZWQgYXJyYXkuCisgKiB2YXJNYXRjaGVkW2ldID0gdHJ1ZSBpZiB2 YXJpYWJsZSBpIG1hdGNoZWQgYXQgY3VycmVudCByb3cuCisgKgorICogVXNlcyAxLXNsb3QgbW9k ZWw6IG9ubHkgZWN4dF9vdXRlcnR1cGxlIGlzIHNldCB0byB0aGUgY3VycmVudCByb3cuCisgKiBQ UkVWL05FWFQvRklSU1QvTEFTVCBuYXZpZ2F0aW9uIGlzIGhhbmRsZWQgYnkgRUVPUF9SUFJfTkFW X1NFVC9SRVNUT1JFCisgKiBvcGNvZGVzIGR1cmluZyBleHByZXNzaW9uIGV2YWx1YXRpb24sIHdo aWNoIHRlbXBvcmFyaWx5IHN3YXAgdGhlIHNsb3QuCisgKi8KK3N0YXRpYyBib29sCituZmFfZXZh bHVhdGVfcm93KFdpbmRvd09iamVjdCB3aW5vYmosIGludDY0IHBvcywgYm9vbCAqdmFyTWF0Y2hl ZCkKK3sKKwlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUgPSB3aW5vYmotPndpbnN0YXRlOworCUV4 cHJDb250ZXh0ICplY29udGV4dCA9IHdpbnN0YXRlLT5zcy5wcy5wc19FeHByQ29udGV4dDsKKwlp bnQJCQludW1EZWZpbmVWYXJzID0gbGlzdF9sZW5ndGgod2luc3RhdGUtPmRlZmluZVZhcmlhYmxl TGlzdCk7CisJaW50CQkJdmFySWR4ID0gMDsKKwlUdXBsZVRhYmxlU2xvdCAqc2xvdDsKKwlpbnQ2 NAkJc2F2ZWRfcG9zOworCisJLyogRmV0Y2ggY3VycmVudCByb3cgaW50byB0ZW1wX3Nsb3RfMSAq LworCXNsb3QgPSB3aW5zdGF0ZS0+dGVtcF9zbG90XzE7CisJaWYgKCF3aW5kb3dfZ2V0dHVwbGVz bG90KHdpbm9iaiwgcG9zLCBzbG90KSkKKwkJcmV0dXJuIGZhbHNlOwkJCS8qIE5vIHJvdyBleGlz dHMgKi8KKworCS8qIFNldCB1cCAxLXNsb3QgY29udGV4dDogb25seSBlY3h0X291dGVydHVwbGUg Ki8KKwllY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlID0gc2xvdDsKKworCS8qCisJICogU2F2ZSBh bmQgc2V0IGN1cnJlbnRwb3Mgc28gdGhhdCBFRU9QX1JQUl9OQVZfU0VUIG9wY29kZXMgY2FuIGNh bGN1bGF0ZQorCSAqIHRhcmdldCBwb3NpdGlvbnMgKGN1cnJlbnRwb3MgKy8tIG9mZnNldCkuCisJ ICovCisJc2F2ZWRfcG9zID0gd2luc3RhdGUtPmN1cnJlbnRwb3M7CisJd2luc3RhdGUtPmN1cnJl bnRwb3MgPSBwb3M7CisKKwkvKiBJbnZhbGlkYXRlIG5hdl9zbG90IGNhY2hlIHNvIFBSRVYvTkVY VCByZS1mZXRjaCBmb3IgbmV3IHJvdyAqLworCXdpbnN0YXRlLT5uYXZfc2xvdF9wb3MgPSAtMTsK KworCWZvcmVhY2hfcHRyKEV4cHJTdGF0ZSwgZXhwclN0YXRlLCB3aW5zdGF0ZS0+ZGVmaW5lQ2xh dXNlTGlzdCkKKwl7CisJCURhdHVtCQlyZXN1bHQ7CisJCWJvb2wJCWlzbnVsbDsKKworCQkvKiBF dmFsdWF0ZSBERUZJTkUgZXhwcmVzc2lvbiAqLworCQlyZXN1bHQgPSBFeGVjRXZhbEV4cHIoZXhw clN0YXRlLCBlY29udGV4dCwgJmlzbnVsbCk7CisKKwkJdmFyTWF0Y2hlZFt2YXJJZHhdID0gKCFp c251bGwgJiYgRGF0dW1HZXRCb29sKHJlc3VsdCkpOworCisJCXZhcklkeCsrOworCQlpZiAodmFy SWR4ID49IG51bURlZmluZVZhcnMpCisJCQlicmVhazsKKwl9CisKKwl3aW5zdGF0ZS0+Y3VycmVu dHBvcyA9IHNhdmVkX3BvczsKKworCXJldHVybiB0cnVlOwkJCQkvKiBSb3cgZXhpc3RzICovCit9 CisKKy8qCisgKiBXaW5HZXRTbG90SW5GcmFtZQorICogc2xvdDogVHVwbGVUYWJsZVNsb3QgdG8g c3RvcmUgdGhlIHJlc3VsdAorICogcmVscG9zOiBzaWduZWQgcm93Y291bnQgb2Zmc2V0IGZyb20g dGhlIHNlZWsgcG9zaXRpb24KKyAqIHNlZWt0eXBlOiBXSU5ET1dfU0VFS19IRUFEIG9yIFdJTkRP V19TRUVLX1RBSUwKKyAqIHNldF9tYXJrOiBJZiB0aGUgcm93IGlzIGZvdW5kL2luIGZyYW1lIGFu ZCBzZXRfbWFyayBpcyB0cnVlLCB0aGUgbWFyayBpcworICoJCW1vdmVkIHRvIHRoZSByb3cgYXMg YSBzaWRlLWVmZmVjdC4KKyAqIGlzbnVsbDogb3V0cHV0IGFyZ3VtZW50LCByZWNlaXZlcyBpc251 bGwgc3RhdHVzIG9mIHJlc3VsdAorICogaXNvdXQ6IG91dHB1dCBhcmd1bWVudCwgc2V0IHRvIGlu ZGljYXRlIHdoZXRoZXIgdGFyZ2V0IHJvdyBwb3NpdGlvbgorICoJCWlzIG91dCBvZiBmcmFtZSAo Y2FuIHBhc3MgTlVMTCBpZiBjYWxsZXIgZG9lc24ndCBjYXJlIGFib3V0IHRoaXMpCisgKgorICog UmV0dXJucyAwIGlmIHdlIHN1Y2Nlc3NmdWxseSBnb3QgdGhlIHNsb3QsIG9yIG5vbnplcm8gaWYg b3V0IG9mIGZyYW1lLgorICogKGlzb3V0IGlzIGFsc28gc2V0IGluIHRoZSBsYXR0ZXIgY2FzZS4p CisgKi8KK3N0YXRpYyBpbnQKK1dpbkdldFNsb3RJbkZyYW1lKFdpbmRvd09iamVjdCB3aW5vYmos IFR1cGxlVGFibGVTbG90ICpzbG90LAorCQkJCSAgaW50IHJlbHBvcywgaW50IHNlZWt0eXBlLCBi b29sIHNldF9tYXJrLAorCQkJCSAgYm9vbCAqaXNudWxsLCBib29sICppc291dCkKK3sKKwlXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGU7CisJaW50NjQJCWFic19wb3M7CisJaW50NjQJCW1hcmtfcG9z OworCWludDY0CQludW1fcmVkdWNlZF9mcmFtZTsKKworCUFzc2VydChXaW5kb3dPYmplY3RJc1Zh bGlkKHdpbm9iaikpOworCXdpbnN0YXRlID0gd2lub2JqLT53aW5zdGF0ZTsKKworCXN3aXRjaCAo c2Vla3R5cGUpCisJeworCQljYXNlIFdJTkRPV19TRUVLX0NVUlJFTlQ6CisJCQllbG9nKEVSUk9S LCAiV0lORE9XX1NFRUtfQ1VSUkVOVCBpcyBub3Qgc3VwcG9ydGVkIGZvciBXaW5HZXRGdW5jQXJn SW5GcmFtZSIpOworCQkJYWJzX3BvcyA9IG1hcmtfcG9zID0gMDsgLyoga2VlcCBjb21waWxlciBx dWlldCAqLworCQkJYnJlYWs7CisJCWNhc2UgV0lORE9XX1NFRUtfSEVBRDoKKwkJCS8qIHJlamVj dGluZyByZWxwb3MgPCAwIGlzIGVhc3kgYW5kIHNpbXBsaWZpZXMgY29kZSBiZWxvdyAqLworCQkJ aWYgKHJlbHBvcyA8IDApCisJCQkJZ290byBvdXRfb2ZfZnJhbWU7CisJCQl1cGRhdGVfZnJhbWVo ZWFkcG9zKHdpbnN0YXRlKTsKKwkJCWFic19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zICsg cmVscG9zOworCQkJbWFya19wb3MgPSBhYnNfcG9zOworCisJCQkvKgorCQkJICogQWNjb3VudCBm b3IgZXhjbHVzaW9uIG9wdGlvbiBpZiBvbmUgaXMgYWN0aXZlLCBidXQgYWR2YW5jZSBvbmx5CisJ CQkgKiBhYnNfcG9zIG5vdCBtYXJrX3Bvcy4gIFRoaXMgcHJldmVudHMgY2hhbmdlcyBvZiB0aGUg Y3VycmVudAorCQkJICogcm93J3MgcGVlciBncm91cCBmcm9tIHJlc3VsdGluZyBpbiB0cnlpbmcg dG8gZmV0Y2ggYSByb3cgYmVmb3JlCisJCQkgKiBzb21lIHByZXZpb3VzIG1hcmsgcG9zaXRpb24u CisJCQkgKgorCQkJICogTm90ZSB0aGF0IGluIHNvbWUgY29ybmVyIGNhc2VzIHN1Y2ggYXMgY3Vy cmVudCByb3cgYmVpbmcKKwkJCSAqIG91dHNpZGUgZnJhbWUsIHRoZXNlIGNhbGN1bGF0aW9ucyBh cmUgdGhlb3JldGljYWxseSB0b28gc2ltcGxlLAorCQkJICogYnV0IGl0IGRvZXNuJ3QgbWF0dGVy IGJlY2F1c2Ugd2UnbGwgZW5kIHVwIGRlY2lkaW5nIHRoZSByb3cgaXMKKwkJCSAqIG91dCBvZiBm cmFtZS4gIFdlIGRvIG5vdCBhdHRlbXB0IHRvIGF2b2lkIGZldGNoaW5nIHJvd3MgcGFzdAorCQkJ ICogZW5kIG9mIGZyYW1lOyB0aGF0IHdvdWxkIGhhcHBlbiBpbiBzb21lIGNhc2VzIGFueXdheS4K KwkJCSAqLworCQkJc3dpdGNoICh3aW5zdGF0ZS0+ZnJhbWVPcHRpb25zICYgRlJBTUVPUFRJT05f RVhDTFVTSU9OKQorCQkJeworCQkJCWNhc2UgMDoKKwkJCQkJLyogbm8gYWRqdXN0bWVudCBuZWVk ZWQgKi8KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBGUkFNRU9QVElPTl9FWENMVURFX0NVUlJFTlRf Uk9XOgorCQkJCQlpZiAoYWJzX3BvcyA+PSB3aW5zdGF0ZS0+Y3VycmVudHBvcyAmJgorCQkJCQkJ d2luc3RhdGUtPmN1cnJlbnRwb3MgPj0gd2luc3RhdGUtPmZyYW1laGVhZHBvcykKKwkJCQkJCWFi c19wb3MrKzsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBGUkFNRU9QVElPTl9FWENMVURFX0dST1VQ OgorCQkJCQl1cGRhdGVfZ3JvdXB0YWlscG9zKHdpbnN0YXRlKTsKKwkJCQkJaWYgKGFic19wb3Mg Pj0gd2luc3RhdGUtPmdyb3VwaGVhZHBvcyAmJgorCQkJCQkJd2luc3RhdGUtPmdyb3VwdGFpbHBv cyA+IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpCisJCQkJCXsKKwkJCQkJCWludDY0CQlvdmVybGFw c3RhcnQgPSBNYXgod2luc3RhdGUtPmdyb3VwaGVhZHBvcywKKwkJCQkJCQkJCQkJCQkgICB3aW5z dGF0ZS0+ZnJhbWVoZWFkcG9zKTsKKworCQkJCQkJYWJzX3BvcyArPSB3aW5zdGF0ZS0+Z3JvdXB0 YWlscG9zIC0gb3ZlcmxhcHN0YXJ0OworCQkJCQl9CisJCQkJCWJyZWFrOworCQkJCWNhc2UgRlJB TUVPUFRJT05fRVhDTFVERV9USUVTOgorCQkJCQl1cGRhdGVfZ3JvdXB0YWlscG9zKHdpbnN0YXRl KTsKKwkJCQkJaWYgKGFic19wb3MgPj0gd2luc3RhdGUtPmdyb3VwaGVhZHBvcyAmJgorCQkJCQkJ d2luc3RhdGUtPmdyb3VwdGFpbHBvcyA+IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpCisJCQkJCXsK KwkJCQkJCWludDY0CQlvdmVybGFwc3RhcnQgPSBNYXgod2luc3RhdGUtPmdyb3VwaGVhZHBvcywK KwkJCQkJCQkJCQkJCQkgICB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zKTsKKworCQkJCQkJaWYgKGFi c19wb3MgPT0gb3ZlcmxhcHN0YXJ0KQorCQkJCQkJCWFic19wb3MgPSB3aW5zdGF0ZS0+Y3VycmVu dHBvczsKKwkJCQkJCWVsc2UKKwkJCQkJCQlhYnNfcG9zICs9IHdpbnN0YXRlLT5ncm91cHRhaWxw b3MgLSBvdmVybGFwc3RhcnQgLSAxOworCQkJCQl9CisJCQkJCWJyZWFrOworCQkJCWRlZmF1bHQ6 CisJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgZnJhbWUgb3B0aW9uIHN0YXRlOiAweCV4 IiwKKwkJCQkJCSB3aW5zdGF0ZS0+ZnJhbWVPcHRpb25zKTsKKwkJCQkJYnJlYWs7CisJCQl9CisJ CQludW1fcmVkdWNlZF9mcmFtZSA9IHJvd19pc19pbl9yZWR1Y2VkX2ZyYW1lKHdpbm9iaiwKKwkJ CQkJCQkJCQkJCQkJd2luc3RhdGUtPmZyYW1laGVhZHBvcyk7CisJCQlpZiAobnVtX3JlZHVjZWRf ZnJhbWUgPCAwKQorCQkJCWdvdG8gb3V0X29mX2ZyYW1lOworCQkJZWxzZSBpZiAobnVtX3JlZHVj ZWRfZnJhbWUgPiAwKQorCQkJCWlmIChyZWxwb3MgPj0gbnVtX3JlZHVjZWRfZnJhbWUpCisJCQkJ CWdvdG8gb3V0X29mX2ZyYW1lOworCQkJYnJlYWs7CisJCWNhc2UgV0lORE9XX1NFRUtfVEFJTDoK KwkJCS8qIHJlamVjdGluZyByZWxwb3MgPiAwIGlzIGVhc3kgYW5kIHNpbXBsaWZpZXMgY29kZSBi ZWxvdyAqLworCQkJaWYgKHJlbHBvcyA+IDApCisJCQkJZ290byBvdXRfb2ZfZnJhbWU7CisKKwkJ CS8qCisJCQkgKiBSUFIgY2FyZXMgYWJvdXQgZnJhbWUgaGVhZCBwb3MuIE5lZWQgdG8gY2FsbAor CQkJICogdXBkYXRlX2ZyYW1laGVhZHBvcworCQkJICovCisJCQl1cGRhdGVfZnJhbWVoZWFkcG9z KHdpbnN0YXRlKTsKKworCQkJdXBkYXRlX2ZyYW1ldGFpbHBvcyh3aW5zdGF0ZSk7CisJCQlhYnNf cG9zID0gd2luc3RhdGUtPmZyYW1ldGFpbHBvcyAtIDEgKyByZWxwb3M7CisKKwkJCS8qCisJCQkg KiBBY2NvdW50IGZvciBleGNsdXNpb24gb3B0aW9uIGlmIG9uZSBpcyBhY3RpdmUuICBJZiB0aGVy ZSBpcyBubworCQkJICogZXhjbHVzaW9uLCB3ZSBjYW4gc2FmZWx5IHNldCB0aGUgbWFyayBhdCB0 aGUgYWNjZXNzZWQgcm93LiAgQnV0CisJCQkgKiBpZiB0aGVyZSBpcywgd2UgY2FuIG9ubHkgbWFy ayB0aGUgZnJhbWUgc3RhcnQsIGJlY2F1c2Ugd2UgY2FuJ3QKKwkJCSAqIGJlIHN1cmUgaG93IGZh ciBiYWNrIGluIHRoZSBmcmFtZSB0aGUgZXhjbHVzaW9uIG1pZ2h0IGNhdXNlIHVzCisJCQkgKiB0 byBmZXRjaCBpbiBmdXR1cmUuICBGdXJ0aGVybW9yZSwgd2UgaGF2ZSB0byBhY3R1YWxseSBjaGVj aworCQkJICogYWdhaW5zdCBmcmFtZWhlYWRwb3MgaGVyZSwgc2luY2UgaXQncyB1bnNhZmUgdG8g dHJ5IHRvIGZldGNoIGEKKwkJCSAqIHJvdyBiZWZvcmUgZnJhbWUgc3RhcnQgaWYgdGhlIG1hcmsg bWlnaHQgYmUgdGhlcmUgYWxyZWFkeS4KKwkJCSAqLworCQkJc3dpdGNoICh3aW5zdGF0ZS0+ZnJh bWVPcHRpb25zICYgRlJBTUVPUFRJT05fRVhDTFVTSU9OKQorCQkJeworCQkJCWNhc2UgMDoKKwkJ CQkJLyogbm8gYWRqdXN0bWVudCBuZWVkZWQgKi8KKwkJCQkJbWFya19wb3MgPSBhYnNfcG9zOwor CQkJCQlicmVhazsKKwkJCQljYXNlIEZSQU1FT1BUSU9OX0VYQ0xVREVfQ1VSUkVOVF9ST1c6CisJ CQkJCWlmIChhYnNfcG9zIDw9IHdpbnN0YXRlLT5jdXJyZW50cG9zICYmCisJCQkJCQl3aW5zdGF0 ZS0+Y3VycmVudHBvcyA8IHdpbnN0YXRlLT5mcmFtZXRhaWxwb3MpCisJCQkJCQlhYnNfcG9zLS07 CisJCQkJCXVwZGF0ZV9mcmFtZWhlYWRwb3Mod2luc3RhdGUpOworCQkJCQlpZiAoYWJzX3BvcyA8 IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpCisJCQkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJCQkJ bWFya19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zOworCQkJCQlicmVhazsKKwkJCQljYXNl IEZSQU1FT1BUSU9OX0VYQ0xVREVfR1JPVVA6CisJCQkJCXVwZGF0ZV9ncm91cHRhaWxwb3Mod2lu c3RhdGUpOworCQkJCQlpZiAoYWJzX3BvcyA8IHdpbnN0YXRlLT5ncm91cHRhaWxwb3MgJiYKKwkJ CQkJCXdpbnN0YXRlLT5ncm91cGhlYWRwb3MgPCB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zKQorCQkJ CQl7CisJCQkJCQlpbnQ2NAkJb3ZlcmxhcGVuZCA9IE1pbih3aW5zdGF0ZS0+Z3JvdXB0YWlscG9z LAorCQkJCQkJCQkJCQkJCSB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zKTsKKworCQkJCQkJYWJzX3Bv cyAtPSBvdmVybGFwZW5kIC0gd2luc3RhdGUtPmdyb3VwaGVhZHBvczsKKwkJCQkJfQorCQkJCQl1 cGRhdGVfZnJhbWVoZWFkcG9zKHdpbnN0YXRlKTsKKwkJCQkJaWYgKGFic19wb3MgPCB3aW5zdGF0 ZS0+ZnJhbWVoZWFkcG9zKQorCQkJCQkJZ290byBvdXRfb2ZfZnJhbWU7CisJCQkJCW1hcmtfcG9z ID0gd2luc3RhdGUtPmZyYW1laGVhZHBvczsKKwkJCQkJYnJlYWs7CisJCQkJY2FzZSBGUkFNRU9Q VElPTl9FWENMVURFX1RJRVM6CisJCQkJCXVwZGF0ZV9ncm91cHRhaWxwb3Mod2luc3RhdGUpOwor CQkJCQlpZiAoYWJzX3BvcyA8IHdpbnN0YXRlLT5ncm91cHRhaWxwb3MgJiYKKwkJCQkJCXdpbnN0 YXRlLT5ncm91cGhlYWRwb3MgPCB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zKQorCQkJCQl7CisJCQkJ CQlpbnQ2NAkJb3ZlcmxhcGVuZCA9IE1pbih3aW5zdGF0ZS0+Z3JvdXB0YWlscG9zLAorCQkJCQkJ CQkJCQkJCSB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zKTsKKworCQkJCQkJaWYgKGFic19wb3MgPT0g b3ZlcmxhcGVuZCAtIDEpCisJCQkJCQkJYWJzX3BvcyA9IHdpbnN0YXRlLT5jdXJyZW50cG9zOwor CQkJCQkJZWxzZQorCQkJCQkJCWFic19wb3MgLT0gb3ZlcmxhcGVuZCAtIDEgLSB3aW5zdGF0ZS0+ Z3JvdXBoZWFkcG9zOworCQkJCQl9CisJCQkJCXVwZGF0ZV9mcmFtZWhlYWRwb3Mod2luc3RhdGUp OworCQkJCQlpZiAoYWJzX3BvcyA8IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpCisJCQkJCQlnb3Rv IG91dF9vZl9mcmFtZTsKKwkJCQkJbWFya19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zOwor CQkJCQlicmVhazsKKwkJCQlkZWZhdWx0OgorCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVk IGZyYW1lIG9wdGlvbiBzdGF0ZTogMHgleCIsCisJCQkJCQkgd2luc3RhdGUtPmZyYW1lT3B0aW9u cyk7CisJCQkJCW1hcmtfcG9zID0gMDsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLworCQkJCQli cmVhazsKKwkJCX0KKworCQkJbnVtX3JlZHVjZWRfZnJhbWUgPSByb3dfaXNfaW5fcmVkdWNlZF9m cmFtZSh3aW5vYmosCisJCQkJCQkJCQkJCQkJCXdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpOworCQkJ aWYgKG51bV9yZWR1Y2VkX2ZyYW1lIDwgMCkKKwkJCQlnb3RvIG91dF9vZl9mcmFtZTsKKwkJCWVs c2UgaWYgKG51bV9yZWR1Y2VkX2ZyYW1lID4gMCkKKwkJCXsKKwkJCQlpZiAoLXJlbHBvcyA+PSBu dW1fcmVkdWNlZF9mcmFtZSkKKwkJCQkJZ290byBvdXRfb2ZfZnJhbWU7CisJCQkJYWJzX3BvcyA9 IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MgKyByZWxwb3MgKworCQkJCQludW1fcmVkdWNlZF9mcmFt ZSAtIDE7CisJCQl9CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCWVsb2coRVJST1IsICJ1bnJl Y29nbml6ZWQgd2luZG93IHNlZWsgdHlwZTogJWQiLCBzZWVrdHlwZSk7CisJCQlhYnNfcG9zID0g bWFya19wb3MgPSAwOyAvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCisJCQlicmVhazsKKwl9CisK KwlpZiAoIXdpbmRvd19nZXR0dXBsZXNsb3Qod2lub2JqLCBhYnNfcG9zLCBzbG90KSkKKwkJZ290 byBvdXRfb2ZfZnJhbWU7CisKKwkvKiBUaGUgY29kZSBhYm92ZSBkb2VzIG5vdCBkZXRlY3QgYWxs IG91dC1vZi1mcmFtZSBjYXNlcywgc28gY2hlY2sgKi8KKwlpZiAocm93X2lzX2luX2ZyYW1lKHdp bm9iaiwgYWJzX3Bvcywgc2xvdCwgZmFsc2UpIDw9IDApCisJCWdvdG8gb3V0X29mX2ZyYW1lOwor CisJaWYgKGlzb3V0KQorCQkqaXNvdXQgPSBmYWxzZTsKKwlpZiAoc2V0X21hcmspCisJeworCQkv KgorCQkgKiBJZiBSUFIgaXMgZW5hYmxlZCBhbmQgc2VlayB0eXBlIGlzIFdJTkRPV19TRUVLX1RB SUwsIHdlIHNldCB0aGUKKwkJICogbWFyayBwb3NpdGlvbiB1bmNvbmRpdGlvbmFsbHkgdG8gZnJh bWVoZWFkcG9zLiBJbiB0aGlzIGNhc2UgdGhlCisJCSAqIGZyYW1lIGFsd2F5cyBzdGFydHMgYXQg Q1VSUkVOVF9ST1cgYW5kIG5ldmVyIGdvZXMgYmFjaywgdGh1cworCQkgKiBzZXR0aW5nIHRoZSBt YXJrIGF0IHRoZSBwb3NpdGlvbiBpcyBzYWZlLgorCQkgKi8KKwkJaWYgKHdpbnN0YXRlLT5ycFBh dHRlcm4gIT0gTlVMTCAmJiBzZWVrdHlwZSA9PSBXSU5ET1dfU0VFS19UQUlMKQorCQkJbWFya19w b3MgPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zOworCQlXaW5TZXRNYXJrUG9zaXRpb24od2lub2Jq LCBtYXJrX3Bvcyk7CisJfQorCXJldHVybiAwOworCitvdXRfb2ZfZnJhbWU6CisJaWYgKGlzb3V0 KQorCQkqaXNvdXQgPSB0cnVlOworCSppc251bGwgPSB0cnVlOworCXJldHVybiAtMTsKK30KKwor CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioKKyAqIEFQSSBleHBvc2VkIHRvIHdpbmRvdyBmdW5jdGlvbnMKKyAq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKi8KKworCisvKgorICogV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0 bWVudAorICoJCUNoZWNrIG51bGwgdHJlYXRtZW50IGNsYXVzZSBhbmQgc2V0cyBpZ25vcmVfbnVs bHMKKyAqCisgKiBXaW5kb3cgZnVuY3Rpb25zIHNob3VsZCBjYWxsIHRoaXMgdG8gY2hlY2sgaWYg dGhleSBhcmUgYmVpbmcgY2FsbGVkIHdpdGgKKyAqIGEgbnVsbCB0cmVhdG1lbnQgY2xhdXNlIHdo ZW4gdGhleSBkb24ndCBhbGxvdyBpdCwgb3IgdG8gc2V0IGlnbm9yZV9udWxscy4KKyAqLwordm9p ZAorV2luQ2hlY2tBbmRJbml0aWFsaXplTnVsbFRyZWF0bWVudChXaW5kb3dPYmplY3Qgd2lub2Jq LAorCQkJCQkJCQkgICBib29sIGFsbG93TnVsbFRyZWF0bWVudCwKKwkJCQkJCQkJICAgRnVuY3Rp b25DYWxsSW5mbyBmY2luZm8pCit7CisJQXNzZXJ0KFdpbmRvd09iamVjdElzVmFsaWQod2lub2Jq KSk7CisJaWYgKHdpbm9iai0+aWdub3JlX251bGxzICE9IE5PX05VTExUUkVBVE1FTlQgJiYgIWFs bG93TnVsbFRyZWF0bWVudCkKKwl7CisJCWNvbnN0IGNoYXIgKmZ1bmNuYW1lID0gZ2V0X2Z1bmNf bmFtZShmY2luZm8tPmZsaW5mby0+Zm5fb2lkKTsKKworCQlpZiAoIWZ1bmNuYW1lKQorCQkJZWxv ZyhFUlJPUiwgImNvdWxkIG5vdCBnZXQgZnVuY3Rpb24gbmFtZSIpOworCQllcmVwb3J0KEVSUk9S LAorCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCQkgZXJy bXNnKCJmdW5jdGlvbiAlcyBkb2VzIG5vdCBhbGxvdyBSRVNQRUNUL0lHTk9SRSBOVUxMUyIsCisJ CQkJCQlmdW5jbmFtZSkpKTsKKwl9CisJZWxzZSBpZiAod2lub2JqLT5pZ25vcmVfbnVsbHMgPT0g UEFSU0VSX0lHTk9SRV9OVUxMUykKKwkJd2lub2JqLT5pZ25vcmVfbnVsbHMgPSBJR05PUkVfTlVM TFM7Cit9CisKKy8qCisgKiBXaW5HZXRQYXJ0aXRpb25Mb2NhbE1lbW9yeQorICoJCUdldCB3b3Jr aW5nIG1lbW9yeSB0aGF0IGxpdmVzIHRpbGwgZW5kIG9mIHBhcnRpdGlvbiBwcm9jZXNzaW5nCisg KgorICogT24gZmlyc3QgY2FsbCB3aXRoaW4gYSBnaXZlbiBwYXJ0aXRpb24sIHRoaXMgYWxsb2Nh dGVzIGFuZCB6ZXJvZXMgdGhlCisgKiByZXF1ZXN0ZWQgYW1vdW50IG9mIHNwYWNlLiAgU3Vic2Vx dWVudCBjYWxscyBqdXN0IHJldHVybiB0aGUgc2FtZSBjaHVuay4KKyAqCisgKiBNZW1vcnkgb2J0 YWluZWQgdGhpcyB3YXkgaXMgbm9ybWFsbHkgdXNlZCB0byBob2xkIHN0YXRlIHRoYXQgc2hvdWxk IGJlCisgKiBhdXRvbWF0aWNhbGx5IHJlc2V0IGZvciBlYWNoIG5ldyBwYXJ0aXRpb24uICBJZiBh IHdpbmRvdyBmdW5jdGlvbiB3YW50cworICogdG8gaG9sZCBzdGF0ZSBhY3Jvc3MgdGhlIHdob2xl IHF1ZXJ5LCBmY2luZm8tPmZuX2V4dHJhIGNhbiBiZSB1c2VkIGluIHRoZQorICogdXN1YWwgd2F5 IGZvciB0aGF0LgorICovCit2b2lkICoKK1dpbkdldFBhcnRpdGlvbkxvY2FsTWVtb3J5KFdpbmRv d09iamVjdCB3aW5vYmosIFNpemUgc3opCit7CisJQXNzZXJ0KFdpbmRvd09iamVjdElzVmFsaWQo d2lub2JqKSk7CisJaWYgKHdpbm9iai0+bG9jYWxtZW0gPT0gTlVMTCkKKwkJd2lub2JqLT5sb2Nh bG1lbSA9CisJCQlNZW1vcnlDb250ZXh0QWxsb2NaZXJvKHdpbm9iai0+d2luc3RhdGUtPnBhcnRj b250ZXh0LCBzeik7CisJcmV0dXJuIHdpbm9iai0+bG9jYWxtZW07Cit9CisKKy8qCisgKiBXaW5H ZXRDdXJyZW50UG9zaXRpb24KKyAqCQlSZXR1cm4gdGhlIGN1cnJlbnQgcm93J3MgcG9zaXRpb24g KGNvdW50aW5nIGZyb20gMCkgd2l0aGluIHRoZSBjdXJyZW50CisgKgkJcGFydGl0aW9uLgorICov CitpbnQ2NAorV2luR2V0Q3VycmVudFBvc2l0aW9uKFdpbmRvd09iamVjdCB3aW5vYmopCit7CisJ QXNzZXJ0KFdpbmRvd09iamVjdElzVmFsaWQod2lub2JqKSk7CisJcmV0dXJuIHdpbm9iai0+d2lu c3RhdGUtPmN1cnJlbnRwb3M7Cit9CisKKy8qCisgKiBXaW5HZXRQYXJ0aXRpb25Sb3dDb3VudAor ICoJCVJldHVybiB0b3RhbCBudW1iZXIgb2Ygcm93cyBjb250YWluZWQgaW4gdGhlIGN1cnJlbnQg cGFydGl0aW9uLgorICoKKyAqIE5vdGU6IHRoaXMgaXMgYSByZWxhdGl2ZWx5IGV4cGVuc2l2ZSBv cGVyYXRpb24gYmVjYXVzZSBpdCBmb3JjZXMgdGhlCisgKiB3aG9sZSBwYXJ0aXRpb24gdG8gYmUg InNwb29sZWQiIGludG8gdGhlIHR1cGxlc3RvcmUgYXQgb25jZS4gIE9uY2UKKyAqIGV4ZWN1dGVk LCBob3dldmVyLCBhZGRpdGlvbmFsIGNhbGxzIHdpdGhpbiB0aGUgc2FtZSBwYXJ0aXRpb24gYXJl IGNoZWFwLgorICovCitpbnQ2NAorV2luR2V0UGFydGl0aW9uUm93Q291bnQoV2luZG93T2JqZWN0 IHdpbm9iaikKK3sKKwlBc3NlcnQoV2luZG93T2JqZWN0SXNWYWxpZCh3aW5vYmopKTsKKwlzcG9v bF90dXBsZXMod2lub2JqLT53aW5zdGF0ZSwgLTEpOworCXJldHVybiB3aW5vYmotPndpbnN0YXRl LT5zcG9vbGVkX3Jvd3M7CiB9CiAKIC8qCkBAIC00MDAxLDggKzUyMTIsNiBAQCBXaW5HZXRGdW5j QXJnSW5GcmFtZShXaW5kb3dPYmplY3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAJV2luZG93QWdnU3Rh dGUgKndpbnN0YXRlOwogCUV4cHJDb250ZXh0ICplY29udGV4dDsKIAlUdXBsZVRhYmxlU2xvdCAq c2xvdDsKLQlpbnQ2NAkJYWJzX3BvczsKLQlpbnQ2NAkJbWFya19wb3M7CiAKIAlBc3NlcnQoV2lu ZG93T2JqZWN0SXNWYWxpZCh3aW5vYmopKTsKIAl3aW5zdGF0ZSA9IHdpbm9iai0+d2luc3RhdGU7 CkBAIC00MDEzLDE2NiArNTIyMiwxNSBAQCBXaW5HZXRGdW5jQXJnSW5GcmFtZShXaW5kb3dPYmpl Y3Qgd2lub2JqLCBpbnQgYXJnbm8sCiAJCXJldHVybiBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5m cmFtZSh3aW5vYmosIGFyZ25vLCByZWxwb3MsIHNlZWt0eXBlLAogCQkJCQkJCQkJCQkgc2V0X21h cmssIGlzbnVsbCwgaXNvdXQpOwogCi0Jc3dpdGNoIChzZWVrdHlwZSkKKwlpZiAoV2luR2V0U2xv dEluRnJhbWUod2lub2JqLCBzbG90LAorCQkJCQkJICByZWxwb3MsIHNlZWt0eXBlLCBzZXRfbWFy aywKKwkJCQkJCSAgaXNudWxsLCBpc291dCkgPT0gMCkKIAl7Ci0JCWNhc2UgV0lORE9XX1NFRUtf Q1VSUkVOVDoKLQkJCWVsb2coRVJST1IsICJXSU5ET1dfU0VFS19DVVJSRU5UIGlzIG5vdCBzdXBw b3J0ZWQgZm9yIFdpbkdldEZ1bmNBcmdJbkZyYW1lIik7Ci0JCQlhYnNfcG9zID0gbWFya19wb3Mg PSAwOyAvKiBrZWVwIGNvbXBpbGVyIHF1aWV0ICovCi0JCQlicmVhazsKLQkJY2FzZSBXSU5ET1df U0VFS19IRUFEOgotCQkJLyogcmVqZWN0aW5nIHJlbHBvcyA8IDAgaXMgZWFzeSBhbmQgc2ltcGxp ZmllcyBjb2RlIGJlbG93ICovCi0JCQlpZiAocmVscG9zIDwgMCkKLQkJCQlnb3RvIG91dF9vZl9m cmFtZTsKLQkJCXVwZGF0ZV9mcmFtZWhlYWRwb3Mod2luc3RhdGUpOwotCQkJYWJzX3BvcyA9IHdp bnN0YXRlLT5mcmFtZWhlYWRwb3MgKyByZWxwb3M7Ci0JCQltYXJrX3BvcyA9IGFic19wb3M7Ci0K LQkJCS8qCi0JCQkgKiBBY2NvdW50IGZvciBleGNsdXNpb24gb3B0aW9uIGlmIG9uZSBpcyBhY3Rp dmUsIGJ1dCBhZHZhbmNlIG9ubHkKLQkJCSAqIGFic19wb3Mgbm90IG1hcmtfcG9zLiAgVGhpcyBw cmV2ZW50cyBjaGFuZ2VzIG9mIHRoZSBjdXJyZW50Ci0JCQkgKiByb3cncyBwZWVyIGdyb3VwIGZy b20gcmVzdWx0aW5nIGluIHRyeWluZyB0byBmZXRjaCBhIHJvdyBiZWZvcmUKLQkJCSAqIHNvbWUg cHJldmlvdXMgbWFyayBwb3NpdGlvbi4KLQkJCSAqCi0JCQkgKiBOb3RlIHRoYXQgaW4gc29tZSBj b3JuZXIgY2FzZXMgc3VjaCBhcyBjdXJyZW50IHJvdyBiZWluZwotCQkJICogb3V0c2lkZSBmcmFt ZSwgdGhlc2UgY2FsY3VsYXRpb25zIGFyZSB0aGVvcmV0aWNhbGx5IHRvbyBzaW1wbGUsCi0JCQkg KiBidXQgaXQgZG9lc24ndCBtYXR0ZXIgYmVjYXVzZSB3ZSdsbCBlbmQgdXAgZGVjaWRpbmcgdGhl IHJvdyBpcwotCQkJICogb3V0IG9mIGZyYW1lLiAgV2UgZG8gbm90IGF0dGVtcHQgdG8gYXZvaWQg ZmV0Y2hpbmcgcm93cyBwYXN0Ci0JCQkgKiBlbmQgb2YgZnJhbWU7IHRoYXQgd291bGQgaGFwcGVu IGluIHNvbWUgY2FzZXMgYW55d2F5LgotCQkJICovCi0JCQlzd2l0Y2ggKHdpbnN0YXRlLT5mcmFt ZU9wdGlvbnMgJiBGUkFNRU9QVElPTl9FWENMVVNJT04pCi0JCQl7Ci0JCQkJY2FzZSAwOgotCQkJ CQkvKiBubyBhZGp1c3RtZW50IG5lZWRlZCAqLwotCQkJCQlicmVhazsKLQkJCQljYXNlIEZSQU1F T1BUSU9OX0VYQ0xVREVfQ1VSUkVOVF9ST1c6Ci0JCQkJCWlmIChhYnNfcG9zID49IHdpbnN0YXRl LT5jdXJyZW50cG9zICYmCi0JCQkJCQl3aW5zdGF0ZS0+Y3VycmVudHBvcyA+PSB3aW5zdGF0ZS0+ ZnJhbWVoZWFkcG9zKQotCQkJCQkJYWJzX3BvcysrOwotCQkJCQlicmVhazsKLQkJCQljYXNlIEZS QU1FT1BUSU9OX0VYQ0xVREVfR1JPVVA6Ci0JCQkJCXVwZGF0ZV9ncm91cHRhaWxwb3Mod2luc3Rh dGUpOwotCQkJCQlpZiAoYWJzX3BvcyA+PSB3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9zICYmCi0JCQkJ CQl3aW5zdGF0ZS0+Z3JvdXB0YWlscG9zID4gd2luc3RhdGUtPmZyYW1laGVhZHBvcykKLQkJCQkJ ewotCQkJCQkJaW50NjQJCW92ZXJsYXBzdGFydCA9IE1heCh3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9z LAotCQkJCQkJCQkJCQkJCSAgIHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpOwotCi0JCQkJCQlhYnNf cG9zICs9IHdpbnN0YXRlLT5ncm91cHRhaWxwb3MgLSBvdmVybGFwc3RhcnQ7Ci0JCQkJCX0KLQkJ CQkJYnJlYWs7Ci0JCQkJY2FzZSBGUkFNRU9QVElPTl9FWENMVURFX1RJRVM6Ci0JCQkJCXVwZGF0 ZV9ncm91cHRhaWxwb3Mod2luc3RhdGUpOwotCQkJCQlpZiAoYWJzX3BvcyA+PSB3aW5zdGF0ZS0+ Z3JvdXBoZWFkcG9zICYmCi0JCQkJCQl3aW5zdGF0ZS0+Z3JvdXB0YWlscG9zID4gd2luc3RhdGUt PmZyYW1laGVhZHBvcykKLQkJCQkJewotCQkJCQkJaW50NjQJCW92ZXJsYXBzdGFydCA9IE1heCh3 aW5zdGF0ZS0+Z3JvdXBoZWFkcG9zLAotCQkJCQkJCQkJCQkJCSAgIHdpbnN0YXRlLT5mcmFtZWhl YWRwb3MpOwotCi0JCQkJCQlpZiAoYWJzX3BvcyA9PSBvdmVybGFwc3RhcnQpCi0JCQkJCQkJYWJz X3BvcyA9IHdpbnN0YXRlLT5jdXJyZW50cG9zOwotCQkJCQkJZWxzZQotCQkJCQkJCWFic19wb3Mg Kz0gd2luc3RhdGUtPmdyb3VwdGFpbHBvcyAtIG92ZXJsYXBzdGFydCAtIDE7Ci0JCQkJCX0KLQkJ CQkJYnJlYWs7Ci0JCQkJZGVmYXVsdDoKLQkJCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCBm cmFtZSBvcHRpb24gc3RhdGU6IDB4JXgiLAotCQkJCQkJIHdpbnN0YXRlLT5mcmFtZU9wdGlvbnMp OwotCQkJCQlicmVhazsKLQkJCX0KLQkJCWJyZWFrOwotCQljYXNlIFdJTkRPV19TRUVLX1RBSUw6 Ci0JCQkvKiByZWplY3RpbmcgcmVscG9zID4gMCBpcyBlYXN5IGFuZCBzaW1wbGlmaWVzIGNvZGUg YmVsb3cgKi8KLQkJCWlmIChyZWxwb3MgPiAwKQotCQkJCWdvdG8gb3V0X29mX2ZyYW1lOwotCQkJ dXBkYXRlX2ZyYW1ldGFpbHBvcyh3aW5zdGF0ZSk7Ci0JCQlhYnNfcG9zID0gd2luc3RhdGUtPmZy YW1ldGFpbHBvcyAtIDEgKyByZWxwb3M7Ci0KLQkJCS8qCi0JCQkgKiBBY2NvdW50IGZvciBleGNs dXNpb24gb3B0aW9uIGlmIG9uZSBpcyBhY3RpdmUuICBJZiB0aGVyZSBpcyBubwotCQkJICogZXhj bHVzaW9uLCB3ZSBjYW4gc2FmZWx5IHNldCB0aGUgbWFyayBhdCB0aGUgYWNjZXNzZWQgcm93LiAg QnV0Ci0JCQkgKiBpZiB0aGVyZSBpcywgd2UgY2FuIG9ubHkgbWFyayB0aGUgZnJhbWUgc3RhcnQs IGJlY2F1c2Ugd2UgY2FuJ3QKLQkJCSAqIGJlIHN1cmUgaG93IGZhciBiYWNrIGluIHRoZSBmcmFt ZSB0aGUgZXhjbHVzaW9uIG1pZ2h0IGNhdXNlIHVzCi0JCQkgKiB0byBmZXRjaCBpbiBmdXR1cmUu ICBGdXJ0aGVybW9yZSwgd2UgaGF2ZSB0byBhY3R1YWxseSBjaGVjawotCQkJICogYWdhaW5zdCBm cmFtZWhlYWRwb3MgaGVyZSwgc2luY2UgaXQncyB1bnNhZmUgdG8gdHJ5IHRvIGZldGNoIGEKLQkJ CSAqIHJvdyBiZWZvcmUgZnJhbWUgc3RhcnQgaWYgdGhlIG1hcmsgbWlnaHQgYmUgdGhlcmUgYWxy ZWFkeS4KLQkJCSAqLwotCQkJc3dpdGNoICh3aW5zdGF0ZS0+ZnJhbWVPcHRpb25zICYgRlJBTUVP UFRJT05fRVhDTFVTSU9OKQotCQkJewotCQkJCWNhc2UgMDoKLQkJCQkJLyogbm8gYWRqdXN0bWVu dCBuZWVkZWQgKi8KLQkJCQkJbWFya19wb3MgPSBhYnNfcG9zOwotCQkJCQlicmVhazsKLQkJCQlj YXNlIEZSQU1FT1BUSU9OX0VYQ0xVREVfQ1VSUkVOVF9ST1c6Ci0JCQkJCWlmIChhYnNfcG9zIDw9 IHdpbnN0YXRlLT5jdXJyZW50cG9zICYmCi0JCQkJCQl3aW5zdGF0ZS0+Y3VycmVudHBvcyA8IHdp bnN0YXRlLT5mcmFtZXRhaWxwb3MpCi0JCQkJCQlhYnNfcG9zLS07Ci0JCQkJCXVwZGF0ZV9mcmFt ZWhlYWRwb3Mod2luc3RhdGUpOwotCQkJCQlpZiAoYWJzX3BvcyA8IHdpbnN0YXRlLT5mcmFtZWhl YWRwb3MpCi0JCQkJCQlnb3RvIG91dF9vZl9mcmFtZTsKLQkJCQkJbWFya19wb3MgPSB3aW5zdGF0 ZS0+ZnJhbWVoZWFkcG9zOwotCQkJCQlicmVhazsKLQkJCQljYXNlIEZSQU1FT1BUSU9OX0VYQ0xV REVfR1JPVVA6Ci0JCQkJCXVwZGF0ZV9ncm91cHRhaWxwb3Mod2luc3RhdGUpOwotCQkJCQlpZiAo YWJzX3BvcyA8IHdpbnN0YXRlLT5ncm91cHRhaWxwb3MgJiYKLQkJCQkJCXdpbnN0YXRlLT5ncm91 cGhlYWRwb3MgPCB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zKQotCQkJCQl7Ci0JCQkJCQlpbnQ2NAkJ b3ZlcmxhcGVuZCA9IE1pbih3aW5zdGF0ZS0+Z3JvdXB0YWlscG9zLAotCQkJCQkJCQkJCQkJCSB3 aW5zdGF0ZS0+ZnJhbWV0YWlscG9zKTsKLQotCQkJCQkJYWJzX3BvcyAtPSBvdmVybGFwZW5kIC0g d2luc3RhdGUtPmdyb3VwaGVhZHBvczsKLQkJCQkJfQotCQkJCQl1cGRhdGVfZnJhbWVoZWFkcG9z KHdpbnN0YXRlKTsKLQkJCQkJaWYgKGFic19wb3MgPCB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zKQot CQkJCQkJZ290byBvdXRfb2ZfZnJhbWU7Ci0JCQkJCW1hcmtfcG9zID0gd2luc3RhdGUtPmZyYW1l aGVhZHBvczsKLQkJCQkJYnJlYWs7Ci0JCQkJY2FzZSBGUkFNRU9QVElPTl9FWENMVURFX1RJRVM6 Ci0JCQkJCXVwZGF0ZV9ncm91cHRhaWxwb3Mod2luc3RhdGUpOwotCQkJCQlpZiAoYWJzX3BvcyA8 IHdpbnN0YXRlLT5ncm91cHRhaWxwb3MgJiYKLQkJCQkJCXdpbnN0YXRlLT5ncm91cGhlYWRwb3Mg PCB3aW5zdGF0ZS0+ZnJhbWV0YWlscG9zKQotCQkJCQl7Ci0JCQkJCQlpbnQ2NAkJb3ZlcmxhcGVu ZCA9IE1pbih3aW5zdGF0ZS0+Z3JvdXB0YWlscG9zLAotCQkJCQkJCQkJCQkJCSB3aW5zdGF0ZS0+ ZnJhbWV0YWlscG9zKTsKLQotCQkJCQkJaWYgKGFic19wb3MgPT0gb3ZlcmxhcGVuZCAtIDEpCi0J CQkJCQkJYWJzX3BvcyA9IHdpbnN0YXRlLT5jdXJyZW50cG9zOwotCQkJCQkJZWxzZQotCQkJCQkJ CWFic19wb3MgLT0gb3ZlcmxhcGVuZCAtIDEgLSB3aW5zdGF0ZS0+Z3JvdXBoZWFkcG9zOwotCQkJ CQl9Ci0JCQkJCXVwZGF0ZV9mcmFtZWhlYWRwb3Mod2luc3RhdGUpOwotCQkJCQlpZiAoYWJzX3Bv cyA8IHdpbnN0YXRlLT5mcmFtZWhlYWRwb3MpCi0JCQkJCQlnb3RvIG91dF9vZl9mcmFtZTsKLQkJ CQkJbWFya19wb3MgPSB3aW5zdGF0ZS0+ZnJhbWVoZWFkcG9zOwotCQkJCQlicmVhazsKLQkJCQlk ZWZhdWx0OgotCQkJCQllbG9nKEVSUk9SLCAidW5yZWNvZ25pemVkIGZyYW1lIG9wdGlvbiBzdGF0 ZTogMHgleCIsCi0JCQkJCQkgd2luc3RhdGUtPmZyYW1lT3B0aW9ucyk7Ci0JCQkJCW1hcmtfcG9z ID0gMDsJLyoga2VlcCBjb21waWxlciBxdWlldCAqLwotCQkJCQlicmVhazsKLQkJCX0KLQkJCWJy ZWFrOwotCQlkZWZhdWx0OgotCQkJZWxvZyhFUlJPUiwgInVucmVjb2duaXplZCB3aW5kb3cgc2Vl ayB0eXBlOiAlZCIsIHNlZWt0eXBlKTsKLQkJCWFic19wb3MgPSBtYXJrX3BvcyA9IDA7IC8qIGtl ZXAgY29tcGlsZXIgcXVpZXQgKi8KLQkJCWJyZWFrOworCQllY29udGV4dC0+ZWN4dF9vdXRlcnR1 cGxlID0gc2xvdDsKKwkJcmV0dXJuIEV4ZWNFdmFsRXhwcigoRXhwclN0YXRlICopIGxpc3RfbnRo KHdpbm9iai0+YXJnc3RhdGVzLCBhcmdubyksCisJCQkJCQkJZWNvbnRleHQsIGlzbnVsbCk7CiAJ fQogCi0JaWYgKCF3aW5kb3dfZ2V0dHVwbGVzbG90KHdpbm9iaiwgYWJzX3Bvcywgc2xvdCkpCi0J CWdvdG8gb3V0X29mX2ZyYW1lOwotCi0JLyogVGhlIGNvZGUgYWJvdmUgZG9lcyBub3QgZGV0ZWN0 IGFsbCBvdXQtb2YtZnJhbWUgY2FzZXMsIHNvIGNoZWNrICovCi0JaWYgKHJvd19pc19pbl9mcmFt ZSh3aW5vYmosIGFic19wb3MsIHNsb3QsIGZhbHNlKSA8PSAwKQotCQlnb3RvIG91dF9vZl9mcmFt ZTsKLQotCWlmIChpc291dCkKLQkJKmlzb3V0ID0gZmFsc2U7Ci0JaWYgKHNldF9tYXJrKQotCQlX aW5TZXRNYXJrUG9zaXRpb24od2lub2JqLCBtYXJrX3Bvcyk7Ci0JZWNvbnRleHQtPmVjeHRfb3V0 ZXJ0dXBsZSA9IHNsb3Q7Ci0JcmV0dXJuIEV4ZWNFdmFsRXhwcigoRXhwclN0YXRlICopIGxpc3Rf bnRoKHdpbm9iai0+YXJnc3RhdGVzLCBhcmdubyksCi0JCQkJCQllY29udGV4dCwgaXNudWxsKTsK LQotb3V0X29mX2ZyYW1lOgogCWlmIChpc291dCkKIAkJKmlzb3V0ID0gdHJ1ZTsKIAkqaXNudWxs ID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfZXhwci5j IGIvc3JjL2JhY2tlbmQvaml0L2xsdm0vbGx2bWppdF9leHByLmMKaW5kZXggMGUxNjBiODUwMmMu LmU0MmM1ZDY1YmI2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4 cHIuYworKysgYi9zcmMvYmFja2VuZC9qaXQvbGx2bS9sbHZtaml0X2V4cHIuYwpAQCAtMTI5LDYg KzEyOSw5IEBAIGxsdm1fY29tcGlsZV9leHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJTExWTVZhbHVl UmVmIHZfYWdndmFsdWVzOwogCUxMVk1WYWx1ZVJlZiB2X2FnZ251bGxzOwogCisJLyogUlBSIG5h dmlnYXRpb246IHdoZW4gdHJ1ZSwgRUVPUF9PVVRFUl9WQVIgcmVsb2FkcyBmcm9tIGVjb250ZXh0 ICovCisJYm9vbAkJaGFzX3Jwcl9uYXY7CisKIAlpbnN0cl90aW1lCXN0YXJ0dGltZTsKIAlpbnN0 cl90aW1lCWRlZm9ybV9zdGFydHRpbWU7CiAJaW5zdHJfdGltZQllbmR0aW1lOwpAQCAtMjk4LDYg KzMwMSwzNiBAQCBsbHZtX2NvbXBpbGVfZXhwcihFeHByU3RhdGUgKnN0YXRlKQogCQkJCQkJCQkg ICBGSUVMRE5PX0VYUFJDT05URVhUX0FHR05VTExTLAogCQkJCQkJCQkgICAidi5lY29udGV4dC5h Z2dudWxscyIpOwogCisJLyoKKwkgKiBSUFIgbmF2aWdhdGlvbiBvcGNvZGVzIChQUkVWL05FWFQp IHN3YXAgZWN4dF9vdXRlcnR1cGxlIHRvIGEgZGlmZmVyZW50CisJICogcm93IG1pZC1leHByZXNz aW9uLiAgVGhlIEpJVCBjb2RlIGxvYWRzIHZfb3V0ZXJ2YWx1ZXMgYW5kIHZfb3V0ZXJudWxscwor CSAqIG9uY2UgaW4gdGhlIGVudHJ5IGJsb2NrIGFuZCByZXVzZXMgdGhlbSBmb3IgYWxsIEVFT1Bf T1VURVJfVkFSIHN0ZXBzLgorCSAqIEFmdGVyIGEgc2xvdCBzd2FwLCB0aGVzZSBjYWNoZWQgcG9p bnRlcnMgYmVjb21lIHN0YWxlIGJlY2F1c2UgdGhlIG5ldworCSAqIHNsb3QgaGFzIGl0cyBvd24g dHRzX3ZhbHVlcy90dHNfaXNudWxsIGFycmF5cy4KKwkgKgorCSAqIFdoZW4gUlBSIG5hdmlnYXRp b24gb3Bjb2RlcyBhcmUgcHJlc2VudCwgRUVPUF9PVVRFUl9WQVIgcmVsb2FkcyB0aGUKKwkgKiBz bG90IHBvaW50ZXIgZnJvbSBlY29udGV4dC0+ZWN4dF9vdXRlcnR1cGxlIG9uIGV2ZXJ5IGFjY2Vz cyBpbnN0ZWFkIG9mCisJICogdXNpbmcgdGhlIGNhY2hlZCBlbnRyeS1ibG9jayB2YWx1ZXMuICBU aGlzIGF2b2lkcyB0aGUgU1NBL1BISQorCSAqIGNvbXBsZXhpdHkgd2hpbGUga2VlcGluZyB0aGUg cmVzdCBvZiB0aGUgZXhwcmVzc2lvbiBKSVQtY29tcGlsZWQuCisJICogRXhwcmVzc2lvbnMgd2l0 aG91dCBSUFIgbmF2aWdhdGlvbiB1c2UgdGhlIGNhY2hlZCB2YWx1ZXMgYXMgYmVmb3JlLgorCSAq LworCWhhc19ycHJfbmF2ID0gZmFsc2U7CisJaWYgKHBhcmVudCAmJiBJc0EocGFyZW50LCBXaW5k b3dBZ2dTdGF0ZSkgJiYKKwkJKChXaW5kb3dBZ2cgKikgcGFyZW50LT5wbGFuKS0+cnBQYXR0ZXJu ICE9IE5VTEwpCisJeworCQlmb3IgKGludCBvcG5vID0gMDsgb3BubyA8IHN0YXRlLT5zdGVwc19s ZW47IG9wbm8rKykKKwkJeworCQkJRXhwckV2YWxPcAlvcGNvZGUgPSBFeGVjRXZhbFN0ZXBPcChz dGF0ZSwgJnN0YXRlLT5zdGVwc1tvcG5vXSk7CisKKwkJCWlmIChvcGNvZGUgPT0gRUVPUF9SUFJf TkFWX1NFVCB8fAorCQkJCW9wY29kZSA9PSBFRU9QX1JQUl9OQVZfUkVTVE9SRSkKKwkJCXsKKwkJ CQloYXNfcnByX25hdiA9IHRydWU7CisJCQkJYnJlYWs7CisJCQl9CisJCX0KKwl9CisKIAkvKiBh bGxvY2F0ZSBibG9ja3MgZm9yIGVhY2ggb3AgdXBmcm9udCwgc28gd2UgY2FuIGRvIGp1bXBzIGVh c2lseSAqLwogCW9wYmxvY2tzID0gcGFsbG9jX2FycmF5KExMVk1CYXNpY0Jsb2NrUmVmLCBzdGF0 ZS0+c3RlcHNfbGVuKTsKIAlmb3IgKGludCBvcG5vID0gMDsgb3BubyA8IHN0YXRlLT5zdGVwc19s ZW47IG9wbm8rKykKQEAgLTQ2MCw4ICs0OTMsMzcgQEAgbGx2bV9jb21waWxlX2V4cHIoRXhwclN0 YXRlICpzdGF0ZSkKIAkJCQkJfQogCQkJCQllbHNlIGlmIChvcGNvZGUgPT0gRUVPUF9PVVRFUl9W QVIpCiAJCQkJCXsKLQkJCQkJCXZfdmFsdWVzID0gdl9vdXRlcnZhbHVlczsKLQkJCQkJCXZfbnVs bHMgPSB2X291dGVybnVsbHM7CisJCQkJCQlpZiAoaGFzX3Jwcl9uYXYpCisJCQkJCQl7CisJCQkJ CQkJLyoKKwkJCQkJCQkgKiBSUFIgbmF2aWdhdGlvbiBzd2FwcyBlY3h0X291dGVydHVwbGUKKwkJ CQkJCQkgKiBtaWQtZXhwcmVzc2lvbi4gIFJlbG9hZCBzbG90IHBvaW50ZXIgZnJvbQorCQkJCQkJ CSAqIGVjb250ZXh0IG9uIGV2ZXJ5IGFjY2VzcyBzbyB3ZSByZWFkIGZyb20gdGhlCisJCQkJCQkJ ICogY3VycmVudCAocG9zc2libHkgc3dhcHBlZCkgc2xvdC4KKwkJCQkJCQkgKi8KKwkJCQkJCQlM TFZNVmFsdWVSZWYgdl90bXBzbG90OworCisJCQkJCQkJdl90bXBzbG90ID0gbF9sb2FkX3N0cnVj dF9nZXAoYiwKKwkJCQkJCQkJCQkJCQkJICBTdHJ1Y3RFeHByQ29udGV4dCwKKwkJCQkJCQkJCQkJ CQkJICB2X2Vjb250ZXh0LAorCQkJCQkJCQkJCQkJCQkgIEZJRUxETk9fRVhQUkNPTlRFWFRfT1VU RVJUVVBMRSwKKwkJCQkJCQkJCQkJCQkJICAidl9vdXRlcnNsb3RfcmVsb2FkIik7CisJCQkJCQkJ dl92YWx1ZXMgPSBsX2xvYWRfc3RydWN0X2dlcChiLAorCQkJCQkJCQkJCQkJCQkgU3RydWN0VHVw bGVUYWJsZVNsb3QsCisJCQkJCQkJCQkJCQkJCSB2X3RtcHNsb3QsCisJCQkJCQkJCQkJCQkJCSBG SUVMRE5PX1RVUExFVEFCTEVTTE9UX1ZBTFVFUywKKwkJCQkJCQkJCQkJCQkJICJ2X291dGVydmFs dWVzX3JlbG9hZCIpOworCQkJCQkJCXZfbnVsbHMgPSBsX2xvYWRfc3RydWN0X2dlcChiLAorCQkJ CQkJCQkJCQkJCQlTdHJ1Y3RUdXBsZVRhYmxlU2xvdCwKKwkJCQkJCQkJCQkJCQkJdl90bXBzbG90 LAorCQkJCQkJCQkJCQkJCQlGSUVMRE5PX1RVUExFVEFCTEVTTE9UX0lTTlVMTCwKKwkJCQkJCQkJ CQkJCQkJInZfb3V0ZXJudWxsc19yZWxvYWQiKTsKKwkJCQkJCX0KKwkJCQkJCWVsc2UKKwkJCQkJ CXsKKwkJCQkJCQl2X3ZhbHVlcyA9IHZfb3V0ZXJ2YWx1ZXM7CisJCQkJCQkJdl9udWxscyA9IHZf b3V0ZXJudWxsczsKKwkJCQkJCX0KIAkJCQkJfQogCQkJCQllbHNlIGlmIChvcGNvZGUgPT0gRUVP UF9TQ0FOX1ZBUikKIAkJCQkJewpAQCAtMjQzNCw2ICsyNDk2LDE4IEBAIGxsdm1fY29tcGlsZV9l eHByKEV4cHJTdGF0ZSAqc3RhdGUpCiAJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyAr IDFdKTsKIAkJCQlicmVhazsKIAorCQkJY2FzZSBFRU9QX1JQUl9OQVZfU0VUOgorCQkJCWJ1aWxk X0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbFJQUk5hdlNldCIsCisJCQkJCQkJCXZfc3RhdGUs IG9wLCB2X2Vjb250ZXh0KTsKKwkJCQlMTFZNQnVpbGRCcihiLCBvcGJsb2Nrc1tvcG5vICsgMV0p OworCQkJCWJyZWFrOworCisJCQljYXNlIEVFT1BfUlBSX05BVl9SRVNUT1JFOgorCQkJCWJ1aWxk X0V2YWxYRnVuYyhiLCBtb2QsICJFeGVjRXZhbFJQUk5hdlJlc3RvcmUiLAorCQkJCQkJCQl2X3N0 YXRlLCBvcCwgdl9lY29udGV4dCk7CisJCQkJTExWTUJ1aWxkQnIoYiwgb3BibG9ja3Nbb3BubyAr IDFdKTsKKwkJCQlicmVhazsKKwogCQkJY2FzZSBFRU9QX0FHR19TVFJJQ1RfREVTRVJJQUxJWkU6 CiAJCQljYXNlIEVFT1BfQUdHX0RFU0VSSUFMSVpFOgogCQkJCXsKZGlmZiAtLWdpdCBhL3NyYy9i YWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYyBiL3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xs dm1qaXRfdHlwZXMuYwppbmRleCBjOGExZjg0MTI5My4uZTc4YjMxZDc3NWYgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2ppdC9sbHZtL2xsdm1qaXRfdHlwZXMuYworKysgYi9zcmMvYmFja2VuZC9q aXQvbGx2bS9sbHZtaml0X3R5cGVzLmMKQEAgLTE2OCw2ICsxNjgsOCBAQCB2b2lkCSAgICpyZWZl cmVuY2VkX2Z1bmN0aW9uc1tdID0KIAlFeGVjRXZhbFNjYWxhckFycmF5T3AsCiAJRXhlY0V2YWxI YXNoZWRTY2FsYXJBcnJheU9wLAogCUV4ZWNFdmFsU3ViUGxhbiwKKwlFeGVjRXZhbFJQUk5hdlNl dCwKKwlFeGVjRXZhbFJQUk5hdlJlc3RvcmUsCiAJRXhlY0V2YWxTeXNWYXIsCiAJRXhlY0V2YWxX aG9sZVJvd1ZhciwKIAlFeGVjRXZhbFhtbEV4cHIsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hZHQvd2luZG93ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC93aW5kb3dmdW5j cy5jCmluZGV4IDc4YjdmMDVhYmEyLi4zODY5ZjZjODk5NCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvdXRpbHMvYWR0L3dpbmRvd2Z1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3dp bmRvd2Z1bmNzLmMKQEAgLTQxLDcgKzQxLDYgQEAgc3RhdGljIGJvb2wgcmFua191cChXaW5kb3dP YmplY3Qgd2lub2JqKTsKIHN0YXRpYyBEYXR1bSBsZWFkbGFnX2NvbW1vbihGdW5jdGlvbkNhbGxJ bmZvIGZjaW5mbywKIAkJCQkJCQlib29sIGZvcndhcmQsIGJvb2wgd2l0aG9mZnNldCwgYm9vbCB3 aXRoZGVmYXVsdCk7CiAKLQogLyoKICAqIHV0aWxpdHkgcm91dGluZSBmb3IgKl9yYW5rIGZ1bmN0 aW9ucy4KICAqLwpAQCAtNzI0LDMgKzcyMywxMjEgQEAgd2luZG93X250aF92YWx1ZShQR19GVU5D VElPTl9BUkdTKQogCiAJUEdfUkVUVVJOX0RBVFVNKHJlc3VsdCk7CiB9CisKKy8qCisgKiBwcmV2 CisgKiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZvciBSUFIncyBQUkVWIG5hdmlnYXRpb24gb3BlcmF0 b3IuCisgKgorICogVGhlIHBhcnNlciB0cmFuc2Zvcm1zIHByZXYoKSBjYWxscyBpbnNpZGUgREVG SU5FIGludG8gUlBSTmF2RXhwciBub2RlcywKKyAqIHNvIHRoaXMgZnVuY3Rpb24gaXMgbmV2ZXIg cmVhY2hlZCBkdXJpbmcgbm9ybWFsIFJQUiBleGVjdXRpb24uICBJdCBleGlzdHMKKyAqIG9ubHkg c28gdGhhdCB0aGUgcGFyc2VyIGNhbiByZXNvbHZlIHRoZSBmdW5jdGlvbiBuYW1lIGZyb20gcGdf cHJvYy4KKyAqIENhbGxzIG91dHNpZGUgREVGSU5FIGFyZSByZWplY3RlZCBieSBwYXJzZV9mdW5j LmMgKEVYUFJfS0lORF9SUFJfREVGSU5FCisgKiBjaGVjaykuICBUaGUgZXJyb3IgYmVsb3cgaXMg YSBkZWZlbnNpdmUgbWVhc3VyZSBpbiBjYXNlIHRoYXQgY2hlY2sgaXMKKyAqIGJ5cGFzc2VkIChl LmcuLCBkaXJlY3QgQy1sZXZlbCBmdW5jdGlvbiBpbnZvY2F0aW9uKS4KKyAqLworRGF0dW0KK3dp bmRvd19wcmV2KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJCWVycmNv ZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJjYW5ub3QgdXNl IFBSRVYoKSBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZSIpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJ CS8qIG5vdCByZWFjaGVkICovCit9CisKKy8qCisgKiBuZXh0CisgKiBDYXRhbG9nIHBsYWNlaG9s ZGVyIGZvciBSUFIncyBORVhUIG5hdmlnYXRpb24gb3BlcmF0b3IuCisgKiBTZWUgd2luZG93X3By ZXYoKSBmb3IgZGV0YWlscy4KKyAqLworRGF0dW0KK3dpbmRvd19uZXh0KFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJZXJybXNnKCJjYW5ub3QgdXNlIE5FWFQoKSBvdXRzaWRlIGEgREVGSU5F IGNsYXVzZSIpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVkICovCit9CisK Ky8qCisgKiBwcmV2KHZhbHVlLCBvZmZzZXQpCisgKiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZvciBS UFIncyBQUkVWIG5hdmlnYXRpb24gb3BlcmF0b3Igd2l0aCBvZmZzZXQuCisgKiBTZWUgd2luZG93 X3ByZXYoKSBmb3IgZGV0YWlscy4KKyAqLworRGF0dW0KK3dpbmRvd19wcmV2X29mZnNldChQR19G VU5DVElPTl9BUkdTKQoreworCWVyZXBvcnQoRVJST1IsCisJCQllcnJjb2RlKEVSUkNPREVfRkVB VFVSRV9OT1RfU1VQUE9SVEVEKSwKKwkJCWVycm1zZygiY2Fubm90IHVzZSBQUkVWKCkgb3V0c2lk ZSBhIERFRklORSBjbGF1c2UiKSk7CisJUEdfUkVUVVJOX05VTEwoKTsJCQkvKiBub3QgcmVhY2hl ZCAqLworfQorCisvKgorICogbmV4dCh2YWx1ZSwgb2Zmc2V0KQorICogQ2F0YWxvZyBwbGFjZWhv bGRlciBmb3IgUlBSJ3MgTkVYVCBuYXZpZ2F0aW9uIG9wZXJhdG9yIHdpdGggb2Zmc2V0LgorICog U2VlIHdpbmRvd19wcmV2KCkgZm9yIGRldGFpbHMuCisgKi8KK0RhdHVtCit3aW5kb3dfbmV4dF9v ZmZzZXQoUEdfRlVOQ1RJT05fQVJHUykKK3sKKwllcmVwb3J0KEVSUk9SLAorCQkJZXJyY29kZShF UlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJCQllcnJtc2coImNhbm5vdCB1c2UgTkVY VCgpIG91dHNpZGUgYSBERUZJTkUgY2xhdXNlIikpOworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyog bm90IHJlYWNoZWQgKi8KK30KKworLyoKKyAqIGZpcnN0CisgKiBDYXRhbG9nIHBsYWNlaG9sZGVy IGZvciBSUFIncyBGSVJTVCBuYXZpZ2F0aW9uIG9wZXJhdG9yLgorICogU2VlIHdpbmRvd19wcmV2 KCkgZm9yIGRldGFpbHMuCisgKi8KK0RhdHVtCit3aW5kb3dfZmlyc3QoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwllcmVwb3J0KEVSUk9SLAorCQkJZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NV UFBPUlRFRCksCisJCQllcnJtc2coImNhbm5vdCB1c2UgRklSU1QoKSBvdXRzaWRlIGEgREVGSU5F IGNsYXVzZSIpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVkICovCit9CisK Ky8qCisgKiBsYXN0CisgKiBDYXRhbG9nIHBsYWNlaG9sZGVyIGZvciBSUFIncyBMQVNUIG5hdmln YXRpb24gb3BlcmF0b3IuCisgKiBTZWUgd2luZG93X3ByZXYoKSBmb3IgZGV0YWlscy4KKyAqLwor RGF0dW0KK3dpbmRvd19sYXN0KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJZXJlcG9ydChFUlJPUiwK KwkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9TVVBQT1JURUQpLAorCQkJZXJybXNnKCJj YW5ub3QgdXNlIExBU1QoKSBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZSIpKTsKKwlQR19SRVRVUk5f TlVMTCgpOwkJCS8qIG5vdCByZWFjaGVkICovCit9CisKKy8qCisgKiBmaXJzdCh2YWx1ZSwgb2Zm c2V0KQorICogQ2F0YWxvZyBwbGFjZWhvbGRlciBmb3IgUlBSJ3MgRklSU1QgbmF2aWdhdGlvbiBv cGVyYXRvciB3aXRoIG9mZnNldC4KKyAqIFNlZSB3aW5kb3dfcHJldigpIGZvciBkZXRhaWxzLgor ICovCitEYXR1bQord2luZG93X2ZpcnN0X29mZnNldChQR19GVU5DVElPTl9BUkdTKQoreworCWVy ZXBvcnQoRVJST1IsCisJCQllcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCWVycm1zZygiY2Fubm90IHVzZSBGSVJTVCgpIG91dHNpZGUgYSBERUZJTkUgY2xhdXNlIikp OworCVBHX1JFVFVSTl9OVUxMKCk7CQkJLyogbm90IHJlYWNoZWQgKi8KK30KKworLyoKKyAqIGxh c3QodmFsdWUsIG9mZnNldCkKKyAqIENhdGFsb2cgcGxhY2Vob2xkZXIgZm9yIFJQUidzIExBU1Qg bmF2aWdhdGlvbiBvcGVyYXRvciB3aXRoIG9mZnNldC4KKyAqIFNlZSB3aW5kb3dfcHJldigpIGZv ciBkZXRhaWxzLgorICovCitEYXR1bQord2luZG93X2xhc3Rfb2Zmc2V0KFBHX0ZVTkNUSU9OX0FS R1MpCit7CisJZXJlcG9ydChFUlJPUiwKKwkJCWVycmNvZGUoRVJSQ09ERV9GRUFUVVJFX05PVF9T VVBQT1JURUQpLAorCQkJZXJybXNnKCJjYW5ub3QgdXNlIExBU1QoKSBvdXRzaWRlIGEgREVGSU5F IGNsYXVzZSIpKTsKKwlQR19SRVRVUk5fTlVMTCgpOwkJCS8qIG5vdCByZWFjaGVkICovCit9CmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0IGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdAppbmRleCBiZTE1N2E1ZmJlOS4uYjNhYTQyZmM2NmUgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKKysrIGIvc3JjL2luY2x1ZGUv Y2F0YWxvZy9wZ19wcm9jLmRhdApAQCAtMTA5NjcsNiArMTA5NjcsMzAgQEAKIHsgb2lkID0+ICcz MTE0JywgZGVzY3IgPT4gJ2ZldGNoIHRoZSBOdGggcm93IHZhbHVlJywKICAgcHJvbmFtZSA9PiAn bnRoX3ZhbHVlJywgcHJva2luZCA9PiAndycsIHByb3JldHR5cGUgPT4gJ2FueWVsZW1lbnQnLAog ICBwcm9hcmd0eXBlcyA9PiAnYW55ZWxlbWVudCBpbnQ0JywgcHJvc3JjID0+ICd3aW5kb3dfbnRo X3ZhbHVlJyB9LAoreyBvaWQgPT4gJzgxMjYnLCBkZXNjciA9PiAnZmV0Y2ggdGhlIHByZWNlZGlu ZyByb3cgdmFsdWUnLAorICBwcm9uYW1lID0+ICdwcmV2JywgcHJvdm9sYXRpbGUgPT4gJ3MnLCBw cm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQn LCBwcm9zcmMgPT4gJ3dpbmRvd19wcmV2JyB9LAoreyBvaWQgPT4gJzgxMjgnLCBkZXNjciA9PiAn ZmV0Y2ggdGhlIE50aCBwcmVjZWRpbmcgcm93IHZhbHVlJywKKyAgcHJvbmFtZSA9PiAncHJldics IHByb3ZvbGF0aWxlID0+ICdzJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICdh bnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQgaW50OCcsIHByb3NyYyA9 PiAnd2luZG93X3ByZXZfb2Zmc2V0JyB9LAoreyBvaWQgPT4gJzgxMjcnLCBkZXNjciA9PiAnZmV0 Y2ggdGhlIGZvbGxvd2luZyByb3cgdmFsdWUnLAorICBwcm9uYW1lID0+ICduZXh0JywgcHJvdm9s YXRpbGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMg PT4gJ2FueWVsZW1lbnQnLCBwcm9zcmMgPT4gJ3dpbmRvd19uZXh0JyB9LAoreyBvaWQgPT4gJzgx MjknLCBkZXNjciA9PiAnZmV0Y2ggdGhlIE50aCBmb2xsb3dpbmcgcm93IHZhbHVlJywKKyAgcHJv bmFtZSA9PiAnbmV4dCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBw cm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQg aW50OCcsIHByb3NyYyA9PiAnd2luZG93X25leHRfb2Zmc2V0JyB9LAoreyBvaWQgPT4gJzgxMzAn LCBkZXNjciA9PiAnZmV0Y2ggdGhlIGZpcnN0IHJvdyB2YWx1ZSB3aXRoaW4gbWF0Y2gnLAorICBw cm9uYW1lID0+ICdmaXJzdCcsIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcmV0dHlwZSA9PiAnYW55 ZWxlbWVudCcsCisgIHByb2FyZ3R5cGVzID0+ICdhbnllbGVtZW50JywgcHJvc3JjID0+ICd3aW5k b3dfZmlyc3QnIH0sCit7IG9pZCA9PiAnODEzMicsIGRlc2NyID0+ICdmZXRjaCB0aGUgTnRoIHJv dyB2YWx1ZSB3aXRoaW4gbWF0Y2gnLAorICBwcm9uYW1lID0+ICdmaXJzdCcsIHByb3ZvbGF0aWxl ID0+ICdzJywgcHJvaXNzdHJpY3QgPT4gJ2YnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywK KyAgcHJvYXJndHlwZXMgPT4gJ2FueWVsZW1lbnQgaW50OCcsIHByb3NyYyA9PiAnd2luZG93X2Zp cnN0X29mZnNldCcgfSwKK3sgb2lkID0+ICc4MTMxJywgZGVzY3IgPT4gJ2ZldGNoIHRoZSBsYXN0 IHJvdyB2YWx1ZSB3aXRoaW4gbWF0Y2gnLAorICBwcm9uYW1lID0+ICdsYXN0JywgcHJvdm9sYXRp bGUgPT4gJ3MnLCBwcm9yZXR0eXBlID0+ICdhbnllbGVtZW50JywKKyAgcHJvYXJndHlwZXMgPT4g J2FueWVsZW1lbnQnLCBwcm9zcmMgPT4gJ3dpbmRvd19sYXN0JyB9LAoreyBvaWQgPT4gJzgxMzMn LCBkZXNjciA9PiAnZmV0Y2ggdGhlIE50aC1mcm9tLWxhc3Qgcm93IHZhbHVlIHdpdGhpbiBtYXRj aCcsCisgIHByb25hbWUgPT4gJ2xhc3QnLCBwcm92b2xhdGlsZSA9PiAncycsIHByb2lzc3RyaWN0 ID0+ICdmJywgcHJvcmV0dHlwZSA9PiAnYW55ZWxlbWVudCcsCisgIHByb2FyZ3R5cGVzID0+ICdh bnllbGVtZW50IGludDgnLCBwcm9zcmMgPT4gJ3dpbmRvd19sYXN0X29mZnNldCcgfSwKIAogIyBm dW5jdGlvbnMgZm9yIHJhbmdlIHR5cGVzCiB7IG9pZCA9PiAnMzgzMicsIGRlc2NyID0+ICdJL08n LApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY0V4cHIuaCBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKaW5kZXggYzYxYjNkNjI0ZDUuLmRiNjZlYmUzMTNjIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjRXhwci5oCisrKyBiL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNFeHByLmgKQEAgLTI3NCw2ICsyNzQsMTAgQEAgdHlwZWRlZiBlbnVt IEV4cHJFdmFsT3AKIAlFRU9QX01FUkdFX1NVUFBPUlRfRlVOQywKIAlFRU9QX1NVQlBMQU4sCiAK KwkvKiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIChSUFIgUFJFVi9ORVhUKSAqLworCUVFT1BfUlBS X05BVl9TRVQsCisJRUVPUF9SUFJfTkFWX1JFU1RPUkUsCisKIAkvKiBhZ2dyZWdhdGlvbiByZWxh dGVkIG5vZGVzICovCiAJRUVPUF9BR0dfU1RSSUNUX0RFU0VSSUFMSVpFLAogCUVFT1BfQUdHX0RF U0VSSUFMSVpFLApAQCAtNjk1LDYgKzY5OSwxOCBAQCB0eXBlZGVmIHN0cnVjdCBFeHByRXZhbFN0 ZXAKIAkJCVN1YlBsYW5TdGF0ZSAqc3N0YXRlOwogCQl9CQkJc3VicGxhbjsKIAorCQkvKiBmb3Ig RUVPUF9SUFJfTkFWX1NFVCAvIEVFT1BfUlBSX05BVl9SRVNUT1JFICovCisJCXN0cnVjdAorCQl7 CisJCQlXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGU7CisJCQlSUFJOYXZLaW5kCWtpbmQ7CS8qIG5h dmlnYXRpb24ga2luZCAoc2ltcGxlIG9yIGNvbXBvdW5kKSAqLworCQkJRGF0dW0JICAgKm9mZnNl dF92YWx1ZTsJLyogb2Zmc2V0IHZhbHVlKHMpLCBvciBOVUxMICovCisJCQlib29sCSAgICpvZmZz ZXRfaXNudWxsOwkvKiBvZmZzZXQgbnVsbCBmbGFnKHMpICovCisJCQkvKiBGb3IgY29tcG91bmQg bmF2OiBvZmZzZXRfdmFsdWVbMF0gPSBpbm5lciwgWzFdID0gb3V0ZXIgKi8KKwkJCWludDE2CQly ZXN1bHR0eXBsZW47CS8qIFJFU1RPUkU6IHJlc3VsdCB0eXBlIGxlbmd0aCAqLworCQkJYm9vbAkJ cmVzdWx0dHlwYnl2YWw7IC8qIFJFU1RPUkU6IHJlc3VsdCBwYXNzLWJ5LXZhbHVlPyAqLworCQl9 CQkJcnByX25hdjsKKwogCQkvKiBmb3IgRUVPUF9BR0dfKkRFU0VSSUFMSVpFICovCiAJCXN0cnVj dAogCQl7CkBAIC05MDIsNiArOTE4LDEwIEBAIGV4dGVybiB2b2lkIEV4ZWNFdmFsTWVyZ2VTdXBw b3J0RnVuYyhFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJCQkJCQkJIEV4 cHJDb250ZXh0ICplY29udGV4dCk7CiBleHRlcm4gdm9pZCBFeGVjRXZhbFN1YlBsYW4oRXhwclN0 YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKIAkJCQkJCQlFeHByQ29udGV4dCAqZWNvbnRl eHQpOworZXh0ZXJuIHZvaWQgRXhlY0V2YWxSUFJOYXZTZXQoRXhwclN0YXRlICpzdGF0ZSwgRXhw ckV2YWxTdGVwICpvcCwKKwkJCQkJCQkgIEV4cHJDb250ZXh0ICplY29udGV4dCk7CitleHRlcm4g dm9pZCBFeGVjRXZhbFJQUk5hdlJlc3RvcmUoRXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVw ICpvcCwKKwkJCQkJCQkJICBFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhl Y0V2YWxXaG9sZVJvd1ZhcihFeHByU3RhdGUgKnN0YXRlLCBFeHByRXZhbFN0ZXAgKm9wLAogCQkJ CQkJCQlFeHByQ29udGV4dCAqZWNvbnRleHQpOwogZXh0ZXJuIHZvaWQgRXhlY0V2YWxTeXNWYXIo RXhwclN0YXRlICpzdGF0ZSwgRXhwckV2YWxTdGVwICpvcCwKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2V4ZWN1dG9yL2V4ZWNSUFIuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWNSUFIuaApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uN2IyYjBmZWJiNzYKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUlBSLmgKQEAgLTAsMCArMSw0 MCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogZXhlY1JQUi5oCisgKgkgIHByb3RvdHlw ZXMgZm9yIGV4ZWNSUFIuYyAoTkZBLWJhc2VkIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIGVuZ2lu ZSkKKyAqCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYsIFBvc3RncmVT UUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5pYQorICoKKyAqIHNyYy9p bmNsdWRlL2V4ZWN1dG9yL2V4ZWNSUFIuaAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aWZuZGVmIEVYRUNSUFJfSAorI2RlZmluZSBFWEVDUlBSX0gKKworI2luY2x1ZGUgIm5vZGVzL2V4 ZWNub2Rlcy5oIgorI2luY2x1ZGUgIndpbmRvd2FwaS5oIgorCisvKiBORkEgY29udGV4dCBtYW5h Z2VtZW50ICovCitleHRlcm4gUlBSTkZBQ29udGV4dCAqRXhlY1JQUlN0YXJ0Q29udGV4dChXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsCisJCQkJCQkJCQkJICBpbnQ2NCBzdGFydFBvcyk7CitleHRl cm4gUlBSTkZBQ29udGV4dCAqRXhlY1JQUkdldEhlYWRDb250ZXh0KFdpbmRvd0FnZ1N0YXRlICp3 aW5zdGF0ZSwKKwkJCQkJCQkJCQkJaW50NjQgcG9zKTsKK2V4dGVybiB2b2lkIEV4ZWNSUFJGcmVl Q29udGV4dChXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIFJQUk5GQUNvbnRleHQgKmN0eCk7CisK Ky8qIE5GQSBwcm9jZXNzaW5nICovCitleHRlcm4gdm9pZCBFeGVjUlBSUHJvY2Vzc1JvdyhXaW5k b3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IGN1cnJlbnRQb3MsCisJCQkJCQkJICBib29sIGhh c0xpbWl0ZWRGcmFtZSwgaW50NjQgZnJhbWVPZmZzZXQpOworZXh0ZXJuIHZvaWQgRXhlY1JQUkNs ZWFudXBEZWFkQ29udGV4dHMoV2luZG93QWdnU3RhdGUgKndpbnN0YXRlLAorCQkJCQkJCQkJICAg UlBSTkZBQ29udGV4dCAqZXhjbHVkZUN0eCk7CitleHRlcm4gdm9pZCBFeGVjUlBSRmluYWxpemVB bGxDb250ZXh0cyhXaW5kb3dBZ2dTdGF0ZSAqd2luc3RhdGUsIGludDY0IGxhc3RQb3MpOworCisv KiBORkEgc3RhdGlzdGljcyAqLworZXh0ZXJuIHZvaWQgRXhlY1JQUlJlY29yZENvbnRleHRTdWNj ZXNzKFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwKKwkJCQkJCQkJCQlpbnQ2NCBtYXRjaExlbik7 CitleHRlcm4gdm9pZCBFeGVjUlBSUmVjb3JkQ29udGV4dEZhaWx1cmUoV2luZG93QWdnU3RhdGUg KndpbnN0YXRlLAorCQkJCQkJCQkJCWludDY0IGZhaWxlZExlbik7CisKKyNlbmRpZgkJCQkJCQkv KiBFWEVDUlBSX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5k b3dBZ2cuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25vZGVXaW5kb3dBZ2cuaAppbmRleCBhZGE0 YTFjNDU4Yy4uZjZmNjY0NTEzMWMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL25v ZGVXaW5kb3dBZ2cuaAorKysgYi9zcmMvaW5jbHVkZS9leGVjdXRvci9ub2RlV2luZG93QWdnLmgK QEAgLTIwLDQgKzIwLDcgQEAgZXh0ZXJuIFdpbmRvd0FnZ1N0YXRlICpFeGVjSW5pdFdpbmRvd0Fn ZyhXaW5kb3dBZ2cgKm5vZGUsIEVTdGF0ZSAqZXN0YXRlLCBpbnQgZWYKIGV4dGVybiB2b2lkIEV4 ZWNFbmRXaW5kb3dBZ2coV2luZG93QWdnU3RhdGUgKm5vZGUpOwogZXh0ZXJuIHZvaWQgRXhlY1Jl U2NhbldpbmRvd0FnZyhXaW5kb3dBZ2dTdGF0ZSAqbm9kZSk7CiAKKy8qIFJQUiBuYXZpZ2F0aW9u IHN1cHBvcnQgZm9yIGV4cHJlc3Npb24gZXZhbHVhdGlvbiBvcGNvZGVzICovCitleHRlcm4gVHVw bGVUYWJsZVNsb3QgKkV4ZWNSUFJOYXZHZXRTbG90KFdpbmRvd0FnZ1N0YXRlICp3aW5zdGF0ZSwg aW50NjQgcG9zKTsKKwogI2VuZGlmCQkJCQkJCS8qIE5PREVXSU5ET1dBR0dfSCAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9l eGVjbm9kZXMuaAppbmRleCA1M2MxMzgzMTBkYi4uNzkyYWEzZjBkMDUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNu b2Rlcy5oCkBAIC0zOCw2ICszOCw5IEBACiAjaW5jbHVkZSAibm9kZXMvcGxhbm5vZGVzLmgiCiAj aW5jbHVkZSAicGFydGl0aW9uaW5nL3BhcnRkZWZzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWYu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgorI2luY2x1ZGUgInV0 aWxzL2hzZWFyY2guaCIKKyNpbmNsdWRlICJ1dGlscy9xdWVyeWVudmlyb25tZW50LmgiCiAjaW5j bHVkZSAidXRpbHMvcmVsdHJpZ2dlci5oIgogI2luY2x1ZGUgInV0aWxzL3R5cGNhY2hlLmgiCiAK QEAgLTI1MjUsNiArMjUyOCw3MSBAQCB0eXBlZGVmIGVudW0gV2luZG93QWdnU3RhdHVzCiAJCQkJ CQkJCQkgKiB0dXBsZXMgZHVyaW5nIHNwb29sICovCiB9IFdpbmRvd0FnZ1N0YXR1czsKIAorLyog UlBSIHJlZHVjZWQgZnJhbWUgc3RhdGVzIHJldHVybmVkIGJ5IGdldF9yZWR1Y2VkX2ZyYW1lX3N0 YXR1cygpICovCisjZGVmaW5lIFJGX05PVF9ERVRFUk1JTkVECTAJLyogbm90IHlldCBwcm9jZXNz ZWQgKi8KKyNkZWZpbmUgUkZfRlJBTUVfSEVBRAkJMQkvKiBzdGFydCByb3cgb2YgYSBtYXRjaCAq LworI2RlZmluZSBSRl9TS0lQUEVECQkJMgkvKiBpbnRlcmlvciByb3cgb2YgYSBtYXRjaCAqLwor I2RlZmluZSBSRl9VTk1BVENIRUQJCTMJLyogbm8gbWF0Y2ggYXQgdGhpcyByb3cgKi8KKyNkZWZp bmUgUkZfRU1QVFlfTUFUQ0gJCTQJLyogZW1wdHkgbWF0Y2ggKDAgcm93cyk7IHRyZWF0ZWQgYXMg dW5tYXRjaGVkICovCisKKy8qCisgKiBSUFJORkFTdGF0ZSAtIHNpbmdsZSBORkEgc3RhdGUgZm9y IHBhdHRlcm4gbWF0Y2hpbmcKKyAqCisgKiBjb3VudHNbXSB0cmFja3MgcmVwZXRpdGlvbiBjb3Vu dHMgYXQgZWFjaCBuZXN0aW5nIGRlcHRoLgorICoKKyAqIGlzQWJzb3JiYWJsZSB0cmFja3MgaWYg c3RhdGUgaXMgaW4gYWJzb3JiYWJsZSByZWdpb24gKEFCU09SQkFCTEVfQlJBTkNIKS4KKyAqIE1v bm90b25pYyBwcm9wZXJ0eTogb25jZSBmYWxzZSwgc3RheXMgZmFsc2UgKGNhbid0IHJlLWVudGVy IHJlZ2lvbikuCisgKi8KK3R5cGVkZWYgc3RydWN0IFJQUk5GQVN0YXRlCit7CisJc3RydWN0IFJQ Uk5GQVN0YXRlICpuZXh0OwkvKiBuZXh0IHN0YXRlIGluIGxpbmtlZCBsaXN0ICovCisJaW50MTYJ CWVsZW1JZHg7CQkvKiBjdXJyZW50IHBhdHRlcm4gZWxlbWVudCBpbmRleCAqLworCWJvb2wJCWlz QWJzb3JiYWJsZTsJLyogdHJ1ZSBpZiBzdGF0ZSBpcyBpbiBhYnNvcmJhYmxlIHJlZ2lvbiAqLwor CWludDMyCQljb3VudHNbRkxFWElCTEVfQVJSQVlfTUVNQkVSXTsJLyogcmVwZXRpdGlvbiBjb3Vu dHMgYnkgZGVwdGggKi8KK30gUlBSTkZBU3RhdGU7CisKKy8qCisgKiBSUFJORkFDb250ZXh0IC0g Y29udGV4dCBmb3IgTkZBIHBhdHRlcm4gbWF0Y2hpbmcgZXhlY3V0aW9uCisgKgorICogVHdvLWZs YWcgYWJzb3JwdGlvbiBkZXNpZ246CisgKiAgIGhhc0Fic29yYmFibGVTdGF0ZTogY2FuIHRoaXMg Y29udGV4dCBhYnNvcmIgb3RoZXJzPyAoPj0xIGFic29yYmFibGUgc3RhdGUpCisgKiAgICAgLSBN b25vdG9uaWM6IHRydWUtPmZhbHNlIG9ubHksIGNhbm5vdCByZWNvdmVyIG9uY2UgZmFsc2UKKyAq ICAgICAtIFVzZWQgdG8gc2tpcCBhYnNvcnB0aW9uIGF0dGVtcHRzIG9uY2UgYWxsIGFic29yYmFi bGUgc3RhdGVzIGFyZSBnb25lCisgKiAgIGFsbFN0YXRlc0Fic29yYmFibGU6IGNhbiB0aGlzIGNv bnRleHQgYmUgYWJzb3JiZWQ/IChBTEwgc3RhdGVzIGFic29yYmFibGUpCisgKiAgICAgLSBEeW5h bWljOiBjYW4gY2hhbmdlIGZhbHNlLT50cnVlICh3aGVuIG5vbi1hYnNvcmJhYmxlIHN0YXRlcyBk aWUpCisgKiAgICAgLSBVc2VkIHRvIGRldGVybWluZSBpZiB0aGlzIGNvbnRleHQgaXMgZWxpZ2li bGUgZm9yIGFic29ycHRpb24KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUlBSTkZBQ29udGV4dAorewor CXN0cnVjdCBSUFJORkFDb250ZXh0ICpuZXh0OyAvKiBuZXh0IGNvbnRleHQgaW4gbGlua2VkIGxp c3QgKi8KKwlzdHJ1Y3QgUlBSTkZBQ29udGV4dCAqcHJldjsgLyogcHJldmlvdXMgY29udGV4dCAo Zm9yIHJldmVyc2UgdHJhdmVyc2FsKSAqLworCVJQUk5GQVN0YXRlICpzdGF0ZXM7CQkvKiBhY3Rp dmUgc3RhdGVzIChsaW5rZWQgbGlzdCkgKi8KKworCWludDY0CQltYXRjaFN0YXJ0Um93OwkvKiBy b3cgd2hlcmUgbWF0Y2ggc3RhcnRlZCAqLworCWludDY0CQltYXRjaEVuZFJvdzsJLyogcm93IHdo ZXJlIG1hdGNoIGVuZGVkICgtMSA9IG5vIG1hdGNoKSAqLworCWludDY0CQlsYXN0UHJvY2Vzc2Vk Um93OwkvKiBsYXN0IHJvdyBwcm9jZXNzZWQgKGZvciBmYWlsIGRlcHRoKSAqLworCVJQUk5GQVN0 YXRlICptYXRjaGVkU3RhdGU7CS8qIEZJTiBzdGF0ZSBmb3IgZ3JlZWR5IGZhbGxiYWNrIChjbG9u ZWQpICovCisKKwkvKiBUd28tZmxhZyBhYnNvcnB0aW9uIG9wdGltaXphdGlvbiAqLworCWJvb2wJ CWhhc0Fic29yYmFibGVTdGF0ZTsgLyogY2FuIGFic29yYiBvdGhlcnMgKD49MSBhYnNvcmJhYmxl CisJCQkJCQkJCQkgKiBzdGF0ZSkgKi8KKwlib29sCQlhbGxTdGF0ZXNBYnNvcmJhYmxlOwkvKiBj YW4gYmUgYWJzb3JiZWQgKEFMTCBzdGF0ZXMKKwkJCQkJCQkJCQkgKiBhYnNvcmJhYmxlKSAqLwor fSBSUFJORkFDb250ZXh0OworCisvKgorICogTkZBTGVuZ3RoU3RhdHMKKyAqCisgKiBTdGF0aXN0 aWNzIGZvciBsZW5ndGggbWVhc3VyZW1lbnRzIChtaW4vbWF4L3RvdGFsKSB1c2VkIGZvciBjb21w dXRpbmcKKyAqIGF2ZXJhZ2UgbGVuZ3RocyBpbiBFWFBMQUlOIEFOQUxZWkUgb3V0cHV0LgorICov Cit0eXBlZGVmIHN0cnVjdCBORkFMZW5ndGhTdGF0cworeworCWludDY0CQltaW47CQkJLyogbWlu aW11bSBsZW5ndGggKi8KKwlpbnQ2NAkJbWF4OwkJCS8qIG1heGltdW0gbGVuZ3RoICovCisJaW50 NjQJCXRvdGFsOwkJCS8qIHRvdGFsIGxlbmd0aCAoZm9yIGNvbXB1dGluZyBhdmVyYWdlKSAqLwor fSBORkFMZW5ndGhTdGF0czsKKwogdHlwZWRlZiBzdHJ1Y3QgV2luZG93QWdnU3RhdGUKIHsKIAlT Y2FuU3RhdGUJc3M7CQkJCS8qIGl0cyBmaXJzdCBmaWVsZCBpcyBOb2RlVGFnICovCkBAIC0yNTg0 LDYgKzI2NTIsNTEgQEAgdHlwZWRlZiBzdHJ1Y3QgV2luZG93QWdnU3RhdGUKIAlpbnQ2NAkJZ3Jv dXBoZWFkcG9zOwkvKiBjdXJyZW50IHJvdydzIHBlZXIgZ3JvdXAgaGVhZCBwb3NpdGlvbiAqLwog CWludDY0CQlncm91cHRhaWxwb3M7CS8qICIgIiAiICIgdGFpbCBwb3NpdGlvbiAoZ3JvdXAgZW5k KzEpICovCiAKKwkvKiB0aGVzZSBmaWVsZHMgYXJlIHVzZWQgaW4gUm93IHBhdHRlcm4gcmVjb2du aXRpb246ICovCisJUlBTa2lwVG8JcnBTa2lwVG87CQkvKiBSb3cgUGF0dGVybiBTa2lwIFRvIHR5 cGUgKi8KKwlzdHJ1Y3QgUlBSUGF0dGVybiAqcnBQYXR0ZXJuOwkvKiBjb21waWxlZCBwYXR0ZXJu IGZvciBORkEgZXhlY3V0aW9uICovCisJTGlzdAkgICAqZGVmaW5lVmFyaWFibGVMaXN0OyAvKiBs aXN0IG9mIHJvdyBwYXR0ZXJuIGRlZmluaXRpb24KKwkJCQkJCQkJCSAqIHZhcmlhYmxlcyAobGlz dCBvZiBTdHJpbmcpICovCisJTGlzdAkgICAqZGVmaW5lQ2xhdXNlTGlzdDsJLyogZXhwcmVzc2lv biBmb3Igcm93IHBhdHRlcm4gZGVmaW5pdGlvbgorCQkJCQkJCQkJICogc2VhcmNoIGNvbmRpdGlv bnMgRXhwclN0YXRlIGxpc3QgKi8KKwlSUFJORkFDb250ZXh0ICpuZmFDb250ZXh0OwkvKiBhY3Rp dmUgbWF0Y2hpbmcgY29udGV4dHMgKGhlYWQpICovCisJUlBSTkZBQ29udGV4dCAqbmZhQ29udGV4 dFRhaWw7CS8qIHRhaWwgb2YgYWN0aXZlIGNvbnRleHRzIChmb3IgcmV2ZXJzZQorCQkJCQkJCQkJ ICogdHJhdmVyc2FsKSAqLworCVJQUk5GQUNvbnRleHQgKm5mYUNvbnRleHRGcmVlOwkvKiByZWN5 Y2xlZCBORkEgY29udGV4dCBub2RlcyAqLworCVJQUk5GQVN0YXRlICpuZmFTdGF0ZUZyZWU7CS8q IHJlY3ljbGVkIE5GQSBzdGF0ZSBub2RlcyAqLworCVNpemUJCW5mYVN0YXRlU2l6ZTsJLyogcHJl LWNhbGN1bGF0ZWQgUlBSTkZBU3RhdGUgc2l6ZSAqLworCWJvb2wJICAgKm5mYVZhck1hdGNoZWQ7 CS8qIHBlci1yb3cgY2FjaGU6IHZhck1hdGNoZWRbdmFySWRdIGZvciB2YXJJZAorCQkJCQkJCQkg KiA8IG51bURlZmluZXMgKi8KKwlCaXRtYXBzZXQgICpkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50 OwkvKiBERUZJTkUgdmFycyBuZWVkaW5nIHBlci1jb250ZXh0CisJCQkJCQkJCQkJCSAqIGV2YWx1 YXRpb24KKwkJCQkJCQkJCQkJICogKG1hdGNoX3N0YXJ0LWRlcGVuZGVudCkgKi8KKwliaXRtYXB3 b3JkICpuZmFWaXNpdGVkRWxlbXM7CS8qIGVsZW1JZHggdmlzaXRlZCBiaXRtYXAgZm9yIGN5Y2xl CisJCQkJCQkJCQkgKiBkZXRlY3Rpb24gKi8KKwlpbnQxNgkJbmZhVmlzaXRlZE1pbldvcmQ7CS8q IGxvd2VzdCBiaXRtYXB3b3JkIGluZGV4IHRvdWNoZWQgc2luY2UKKwkJCQkJCQkJCSAqIGxhc3Qg cmVzZXQgKFBHX0lOVDE2X01BWCA9IG5vbmUpICovCisJaW50MTYJCW5mYVZpc2l0ZWRNYXhXb3Jk OwkvKiBoaWdoZXN0IGJpdG1hcHdvcmQgaW5kZXggdG91Y2hlZCBzaW5jZQorCQkJCQkJCQkJICog bGFzdCByZXNldCAoLTEgPSBub25lKSAqLworCWludDY0CQluZmFMYXN0UHJvY2Vzc2VkUm93Owkv KiBsYXN0IHJvdyBwcm9jZXNzZWQgYnkgTkZBICgtMSA9CisJCQkJCQkJCQkJICogbm9uZSkgKi8K KworCS8qIE5GQSBzdGF0aXN0aWNzIGZvciBFWFBMQUlOIEFOQUxZWkUgKi8KKwlpbnQ2NAkJbmZh U3RhdGVzQWN0aXZlOwkvKiBjdXJyZW50IGFjdGl2ZSBzdGF0ZXMgKGludGVybmFsKSAqLworCWlu dDY0CQluZmFTdGF0ZXNNYXg7CS8qIHBlYWsgYWN0aXZlIHN0YXRlcyAqLworCWludDY0CQluZmFT dGF0ZXNUb3RhbENyZWF0ZWQ7CS8qIHRvdGFsIHN0YXRlcyBhbGxvY2F0ZWQgKi8KKwlpbnQ2NAkJ bmZhU3RhdGVzTWVyZ2VkOwkvKiBzdGF0ZXMgbWVyZ2VkIChkZWR1cGxpY2F0ZWQpICovCisJaW50 NjQJCW5mYUNvbnRleHRzQWN0aXZlOwkvKiBjdXJyZW50IGFjdGl2ZSBjb250ZXh0cyAoaW50ZXJu YWwpICovCisJaW50NjQJCW5mYUNvbnRleHRzTWF4OyAvKiBwZWFrIGFjdGl2ZSBjb250ZXh0cyAq LworCWludDY0CQluZmFDb250ZXh0c1RvdGFsQ3JlYXRlZDsJLyogdG90YWwgY29udGV4dHMgYWxs b2NhdGVkICovCisJaW50NjQJCW5mYUNvbnRleHRzQWJzb3JiZWQ7CS8qIGNvbnRleHRzIGFic29y YmVkIChvcHRpbWl6YXRpb24pICovCisJaW50NjQJCW5mYUNvbnRleHRzU2tpcHBlZDsgLyogY29u dGV4dHMgc2tpcHBlZCAoU0tJUCBQQVNUIExBU1QgUk9XKSAqLworCWludDY0CQluZmFDb250ZXh0 c1BydW5lZDsJLyogY29udGV4dHMgcHJ1bmVkIG9uIGZpcnN0IHJvdyAqLworCWludDY0CQluZmFN YXRjaGVzU3VjY2VlZGVkOwkvKiBzdWNjZXNzZnVsIHBhdHRlcm4gbWF0Y2hlcyAqLworCWludDY0 CQluZmFNYXRjaGVzRmFpbGVkOwkvKiBmYWlsZWQgcGF0dGVybiBtYXRjaGVzICovCisJTkZBTGVu Z3RoU3RhdHMgbmZhTWF0Y2hMZW47IC8qIHN1Y2Nlc3NmdWwgbWF0Y2ggbGVuZ3RoIHN0YXRzICov CisJTkZBTGVuZ3RoU3RhdHMgbmZhRmFpbExlbjsJLyogbWlzbWF0Y2ggbGVuZ3RoIHN0YXRzICov CisJTkZBTGVuZ3RoU3RhdHMgbmZhQWJzb3JiZWRMZW47CS8qIGFic29yYmVkIGNvbnRleHQgbGVu Z3RoIHN0YXRzICovCisJTkZBTGVuZ3RoU3RhdHMgbmZhU2tpcHBlZExlbjsJLyogc2tpcHBlZCBj b250ZXh0IGxlbmd0aCBzdGF0cyAqLworCiAJTWVtb3J5Q29udGV4dCBwYXJ0Y29udGV4dDsJLyog Y29udGV4dCBmb3IgcGFydGl0aW9uLWxpZmVzcGFuIGRhdGEgKi8KIAlNZW1vcnlDb250ZXh0IGFn Z2NvbnRleHQ7CS8qIHNoYXJlZCBjb250ZXh0IGZvciBhZ2dyZWdhdGUgd29ya2luZyBkYXRhICov CiAJTWVtb3J5Q29udGV4dCBjdXJhZ2djb250ZXh0OwkvKiBjdXJyZW50IGFnZ3JlZ2F0ZSdzIHdv cmtpbmcgZGF0YSAqLwpAQCAtMjYxMSw2ICsyNzI0LDI1IEBAIHR5cGVkZWYgc3RydWN0IFdpbmRv d0FnZ1N0YXRlCiAJVHVwbGVUYWJsZVNsb3QgKmFnZ19yb3dfc2xvdDsKIAlUdXBsZVRhYmxlU2xv dCAqdGVtcF9zbG90XzE7CiAJVHVwbGVUYWJsZVNsb3QgKnRlbXBfc2xvdF8yOworCisJLyogUlBS IG5hdmlnYXRpb24gKi8KKwlSUFJOYXZPZmZzZXRLaW5kIG5hdk1heE9mZnNldEtpbmQ7CS8qIHN0 YXR1cyBvZiBuYXZNYXhPZmZzZXQgKi8KKwlpbnQ2NAkJbmF2TWF4T2Zmc2V0OwkvKiBtYXggYmFj a3dhcmQgbmF2IG9mZnNldCAod2hlbiBGSVhFRCkgKi8KKwlib29sCQloYXNGaXJzdE5hdjsJLyog RklSU1QoKSBwcmVzZW50IGluIERFRklORSAqLworCVJQUk5hdk9mZnNldEtpbmQgbmF2Rmlyc3RP ZmZzZXRLaW5kOwkvKiBzdGF0dXMgb2YgbmF2Rmlyc3RPZmZzZXQgKi8KKwlpbnQ2NAkJbmF2Rmly c3RPZmZzZXQ7IC8qIG1pbiBGSVJTVCgpIG9mZnNldCAod2hlbiBGSVhFRCkgKi8KKwlzdHJ1Y3Qg V2luZG93T2JqZWN0RGF0YSAqbmF2X3dpbm9iajsJLyogd2lub2JqIGZvciBSUFIgbmF2IGZldGNo ICovCisJaW50NjQJCW5hdl9zbG90X3BvczsJLyogcG9zaXRpb24gY2FjaGVkIGluIG5hdl9zbG90 LCBvciAtMSAqLworCVR1cGxlVGFibGVTbG90ICpuYXZfc2xvdDsJLyogc2xvdCBmb3IgUFJFVi9O RVhUL0ZJUlNUL0xBU1QgdGFyZ2V0IHJvdyAqLworCVR1cGxlVGFibGVTbG90ICpuYXZfc2F2ZWRf b3V0ZXJ0dXBsZTsJLyogc2F2ZWQgc2xvdCBkdXJpbmcgbmF2IHN3YXAgKi8KKwlUdXBsZVRhYmxl U2xvdCAqbmF2X251bGxfc2xvdDsJLyogYWxsIE5VTEwgc2xvdCAqLworCWludDY0CQluYXZfbWF0 Y2hfc3RhcnQ7CS8qIG1hdGNoX3N0YXJ0IGZvciBGSVJTVC9MQVNUIG5hdiAqLworCisJLyogUlBS IGN1cnJlbnQgbWF0Y2ggcmVzdWx0ICovCisJYm9vbAkJcnByX21hdGNoX3ZhbGlkOwkvKiB0cnVl IGlmIGEgbWF0Y2ggcmVzdWx0IGlzIHNldCAqLworCWJvb2wJCXJwcl9tYXRjaF9tYXRjaGVkOwkv KiB0cnVlIGlmIHRoZSByZXN1bHQgd2FzIGEgbWF0Y2ggKi8KKwlpbnQ2NAkJcnByX21hdGNoX3N0 YXJ0OwkvKiBzdGFydCBwb3NpdGlvbiBvZiB0aGUgbWF0Y2ggcmVzdWx0ICovCisJaW50NjQJCXJw cl9tYXRjaF9sZW5ndGg7CS8qIG51bWJlciBvZiByb3dzIG1hdGNoZWQgKDAgPSBlbXB0eSkgKi8K IH0gV2luZG93QWdnU3RhdGU7CiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0KLS0gCjIuNDMuMAoK ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0006-Row-pattern-recognition-patch-docs.patch" RnJvbSA2NzBmOTRiNzI0ODBiM2QzMTY4NDBiMTk0NGY2M2UzZDJhOTMyZTUwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMwICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg Ni85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAoZG9jcykuCgotLS0KIGRvYy9zcmMv c2dtbC9hZHZhbmNlZC5zZ21sICAgICAgICAgfCAgMTMyICsrLQogZG9jL3NyYy9zZ21sL2Z1bmMv ZnVuYy13aW5kb3cuc2dtbCB8ICAxMjEgKysKIGRvYy9zcmMvc2dtbC9wZXJmb3JtLnNnbWwgICAg ICAgICAgfCAgIDQ0ICsKIGRvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwgICAgICAgfCAgIDkx ICstCiBzcmMvYmFja2VuZC9leGVjdXRvci9SRUFETUUucnByICAgIHwgMTY3MiArKysrKysrKysr KysrKysrKysrKysrKysrKysrCiA1IGZpbGVzIGNoYW5nZWQsIDIwNTMgaW5zZXJ0aW9ucygrKSwg NyBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmFja2VuZC9leGVjdXRvci9S RUFETUUucnByCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2FkdmFuY2VkLnNnbWwgYi9kb2Mv c3JjL3NnbWwvYWR2YW5jZWQuc2dtbAppbmRleCAzMjg2YzJjZjBiMi4uYmRjNTUyYWQ3NWYgMTAw NjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9hZHZhbmNlZC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9h ZHZhbmNlZC5zZ21sCkBAIC01NTIsMTMgKzU1MiwxMzcgQEAgV0hFUkUgcG9zICZsdDsgMzsKICAg ICB0d28gcm93cyBmb3IgZWFjaCBkZXBhcnRtZW50KS4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+ CisgICAgUm93IFBhdHRlcm4gQ29tbW9uIFN5bnRheCBjYW4gYmUgdXNlZCB0byBwZXJmb3JtIFJv dyBQYXR0ZXJuIFJlY29nbml0aW9uCisgICAgaW4gYSBxdWVyeS4gVGhlIFJvdyBQYXR0ZXJuIENv bW1vbiBTeW50YXggaW5jbHVkZXMgdHdvIHN1YgorICAgIGNsYXVzZXM6IDxsaXRlcmFsPkRFRklO RTwvbGl0ZXJhbD4KKyAgICBhbmQgPGxpdGVyYWw+UEFUVEVSTjwvbGl0ZXJhbD4uIDxsaXRlcmFs PkRFRklORTwvbGl0ZXJhbD4gZGVmaW5lcworICAgIHJvdyBwYXR0ZXJuIHZhcmlhYmxlcyBhbG9u ZyB3aXRoIGFuIGV4cHJlc3Npb24uIFRoZSBleHByZXNzaW9uIG11c3QgYmUgYQorICAgIGxvZ2lj YWwgZXhwcmVzc2lvbiwgd2hpY2ggbWVhbnMgaXQgbXVzdAorICAgIHJldHVybiA8bGl0ZXJhbD5U UlVFPC9saXRlcmFsPiwgPGxpdGVyYWw+RkFMU0U8L2xpdGVyYWw+CisgICAgb3IgPGxpdGVyYWw+ TlVMTDwvbGl0ZXJhbD4uIFRoZSBleHByZXNzaW9uIG1heSBjb21wcmlzZSBjb2x1bW4gcmVmZXJl bmNlcworICAgIGFuZCBmdW5jdGlvbnMuIFdpbmRvdyBmdW5jdGlvbnMsIGFnZ3JlZ2F0ZSBmdW5j dGlvbnMgYW5kIHN1YnF1ZXJpZXMgYXJlCisgICAgbm90IGFsbG93ZWQuIEFuIGV4YW1wbGUgb2Yg PGxpdGVyYWw+REVGSU5FPC9saXRlcmFsPiBpcyBhcyBmb2xsb3dzLgorCis8cHJvZ3JhbWxpc3Rp bmc+CitERUZJTkUKKyBMT1dQUklDRSBBUyBwcmljZSAmbHQ7PSAxMDAsCisgVVAgQVMgcHJpY2Ug Jmd0OyBQUkVWKHByaWNlKSwKKyBET1dOIEFTIHByaWNlICZsdDsgUFJFVihwcmljZSkKKzwvcHJv Z3JhbWxpc3Rpbmc+CisKKyAgICBOb3RlIHRoYXQgPGZ1bmN0aW9uPlBSRVY8L2Z1bmN0aW9uPiBy ZXR1cm5zIHRoZSA8bGl0ZXJhbD5wcmljZTwvbGl0ZXJhbD4KKyAgICBjb2x1bW4gaW4gdGhlIHBy ZXZpb3VzIHJvdyBpZiBpdCdzIGNhbGxlZCBpbiBhIGNvbnRleHQgb2Ygcm93IHBhdHRlcm4KKyAg ICByZWNvZ25pdGlvbi4gVGh1cyBpbiB0aGUgc2Vjb25kIGxpbmUgdGhlIHJvdyBwYXR0ZXJuIHZh cmlhYmxlICJVUCIKKyAgICBpcyA8bGl0ZXJhbD5UUlVFPC9saXRlcmFsPiB3aGVuIHRoZSBwcmlj ZSBjb2x1bW4gaW4gdGhlIGN1cnJlbnQgcm93IGlzCisgICAgZ3JlYXRlciB0aGFuIHRoZSBwcmlj ZSBjb2x1bW4gaW4gdGhlIHByZXZpb3VzIHJvdy4gTGlrZXdpc2UsICJET1dOIgorICAgIGlzIDxs aXRlcmFsPlRSVUU8L2xpdGVyYWw+IHdoZW4gdGhlCisgICAgPGxpdGVyYWw+cHJpY2U8L2xpdGVy YWw+IGNvbHVtbiBpbiB0aGUgY3VycmVudCByb3cgaXMgbG93ZXIgdGhhbgorICAgIHRoZSA8bGl0 ZXJhbD5wcmljZTwvbGl0ZXJhbD4gY29sdW1uIGluIHRoZSBwcmV2aW91cyByb3cuCisgICA8L3Bh cmE+CisgICA8cGFyYT4KKyAgICBPbmNlIDxsaXRlcmFsPkRFRklORTwvbGl0ZXJhbD4gZXhpc3Rz LCA8bGl0ZXJhbD5QQVRURVJOPC9saXRlcmFsPiBjYW4gYmUKKyAgICB1c2VkLiA8bGl0ZXJhbD5Q QVRURVJOPC9saXRlcmFsPiBkZWZpbmVzIGEgc2VxdWVuY2Ugb2Ygcm93cyB0aGF0IHNhdGlzZmll cworICAgIGNvbmRpdGlvbnMgZGVmaW5lZCBpbiB0aGUgPGxpdGVyYWw+REVGSU5FPC9saXRlcmFs PiBjbGF1c2UuICBGb3IgZXhhbXBsZQorICAgIHRoZSBmb2xsb3dpbmcgPGxpdGVyYWw+UEFUVEVS TjwvbGl0ZXJhbD4gZGVmaW5lcyBhIHNlcXVlbmNlIG9mIHJvd3Mgc3RhcnRpbmcKKyAgICB3aXRo IGEgcm93IHNhdGlzZnlpbmcgIkxPV1BSSUNFIiwgdGhlbiBvbmUgb3IgbW9yZSByb3dzIHNhdGlz ZnlpbmcKKyAgICAiVVAiIGFuZCBmaW5hbGx5IG9uZSBvciBtb3JlIHJvd3Mgc2F0aXNmeWluZyAi RE9XTiIuIFBhdHRlcm4gdmFyaWFibGVzIGNhbgorICAgIGJlIGZvbGxvd2VkIGJ5IHF1YW50aWZp ZXJzOiAiKyIgbWVhbnMgb25lIG9yIG1vcmUgbWF0Y2hlcywgIioiIG1lYW5zIHplcm8KKyAgICBv ciBtb3JlIG1hdGNoZXMsICI/IiBtZWFucyB6ZXJvIG9yIG9uZSBtYXRjaCwgIntufSIgKG4gJmd0 OyAwKSBtZWFucyBleGFjdGx5CisgICAgbiBtYXRjaGVzLCAie24sfSIgKG4gJmd0Oz0gMCkgbWVh bnMgYXQgbGVhc3QgbiBtYXRjaGVzLCAieyxtfSIgKG0gJmd0OyAwKSBtZWFucworICAgIGF0IG1v c3QgbSBtYXRjaGVzLCBhbmQgIntuLG19IiAoMCAmbHQ7PSBuICZsdDs9IG0sIDAgJmx0OyBtKSBt ZWFucyBiZXR3ZWVuIG4gYW5kIG0KKyAgICBtYXRjaGVzLiAgUGF0dGVybnMgY2FuIGJlIGdyb3Vw ZWQgdXNpbmcgcGFyZW50aGVzZXMgYW5kIGNvbWJpbmVkIHVzaW5nCisgICAgYWx0ZXJuYXRpb24g KHRoZSB2ZXJ0aWNhbCBiYXIgInwiIGZvciBPUikuIEZvciBleGFtcGxlLCAiKFVQIERPV04pKyIK KyAgICBtYXRjaGVzIG9uZSBvciBtb3JlIHJlcGV0aXRpb25zIG9mIFVQIGZvbGxvd2VkIGJ5IERP V04uICBJZiBhIHNlcXVlbmNlIG9mCisgICAgcm93cyB3aGljaCBzYXRpc2ZpZXMgdGhlIFBBVFRF Uk4gaXMgZm91bmQsIGluIHRoZSBzdGFydGluZyByb3cgYWxsIGNvbHVtbnMKKyAgICBvciBmdW5j dGlvbnMgYXJlIHNob3duIGluIHRoZSB0YXJnZXQgbGlzdC4gTm90ZSB0aGF0IGFnZ3JlZ2F0aW9u cyBvbmx5CisgICAgbG9vayBpbnRvIHRoZSBtYXRjaGVkIHJvd3MsIHJhdGhlciB0aGFuIHRoZSB3 aG9sZSBmcmFtZS4gT24gdGhlIHNlY29uZCBvcgorICAgIHN1YnNlcXVlbnQgcm93cyBhbGwgd2lu ZG93IGZ1bmN0aW9ucyBhcmUgc2hvd24gYXMgTlVMTC4gQWdncmVnYXRlcyBvbgorICAgIG5vbi1z dGFydGluZyByb3dzIHJldHVybiB0aGVpciBpbml0aWFsIHZhbHVlOiBmb3IgZXhhbXBsZSwKKyAg ICA8ZnVuY3Rpb24+Y291bnQoKTwvZnVuY3Rpb24+IHJldHVybnMgMCBhbmQgPGZ1bmN0aW9uPnN1 bSgpPC9mdW5jdGlvbj4KKyAgICByZXR1cm5zIE5VTEwuIEZvciByb3dzIHRoYXQgZG8gbm90IG1h dGNoIHRoZSBQQVRURVJOLCB3aW5kb3cgZnVuY3Rpb25zCisgICAgYXJlIGxpa2V3aXNlIHNob3du IGFzIE5VTEwgYW5kIGFnZ3JlZ2F0ZXMgcmV0dXJuIHRoZWlyIGluaXRpYWwgdmFsdWUuCisgICAg RXhhbXBsZSBvZiBhIDxsaXRlcmFsPlNFTEVDVDwvbGl0ZXJhbD4gdXNpbmcKKyAgICB0aGUgPGxp dGVyYWw+REVGSU5FPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+UEFUVEVSTjwvbGl0ZXJhbD4gY2xh dXNlIGlzIGFzCisgICAgZm9sbG93cy4KKworPHByb2dyYW1saXN0aW5nPgorU0VMRUNUIGNvbXBh bnksIHRkYXRlLCBwcmljZSwKKyBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG1heChwcmlj ZSkgT1ZFUiB3LAorIGNvdW50KHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKKyBXSU5ET1cgdyBB UyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChMT1dQUklDRSBVUCsgRE9XTispCisg REVGSU5FCisgIExPV1BSSUNFIEFTIHByaWNlICZsdDs9IDEwMCwKKyAgVVAgQVMgcHJpY2UgJmd0 OyBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSAmbHQ7IFBSRVYocHJpY2UpCispOworPC9w cm9ncmFtbGlzdGluZz4KKzxzY3JlZW4+CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2Ug fCBmaXJzdF92YWx1ZSB8IG1heCB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDIwMjMtMDctMDEg fCAgIDEwMCB8ICAgICAgICAgMTAwIHwgMjAwIHwgICAgIDQKKyBjb21wYW55MSB8IDIwMjMtMDct MDIgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDIwMjMt MDctMDMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDIw MjMtMDctMDQgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgIHwgICAgIDAKKyBjb21wYW55MSB8 IDIwMjMtMDctMDUgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgIHwgICAgIDAKKyBjb21wYW55 MSB8IDIwMjMtMDctMDYgfCAgICA5MCB8ICAgICAgICAgIDkwIHwgMTMwIHwgICAgIDQKKyBjb21w YW55MSB8IDIwMjMtMDctMDcgfCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDIwMjMtMDctMDggfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgIHwgICAgIDAK KyBjb21wYW55MSB8IDIwMjMtMDctMDkgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgIHwgICAg IDAKKyBjb21wYW55MSB8IDIwMjMtMDctMTAgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgIHwg ICAgIDAKKygxMCByb3dzKQorPC9zY3JlZW4+CisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAg IFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIGludGVybmFsbHkgdXNlcyBhIG5vbmRldGVybWluaXN0 aWMgZmluaXRlCisgICAgYXV0b21hdG9uIChORkEpIHRvIG1hdGNoIHBhdHRlcm5zLiBGb3IgcGF0 dGVybnMgd2l0aCB1bmJvdW5kZWQKKyAgICBxdWFudGlmaWVycyAoZS5nLiwgPGxpdGVyYWw+QSs8 L2xpdGVyYWw+IG9yIDxsaXRlcmFsPihBIEIpKzwvbGl0ZXJhbD4pLAorICAgIHRoZSBORkEgbWF5 IG5lZWQgdG8gdHJhY2sgbWFueSBhY3RpdmUgbWF0Y2hpbmcgY29udGV4dHMgc2ltdWx0YW5lb3Vz bHksCisgICAgd2hpY2ggY291bGQgcG90ZW50aWFsbHkgbGVhZCB0byBPKG48c3VwZXJzY3JpcHQ+ Mjwvc3VwZXJzY3JpcHQ+KQorICAgIGNvbXBsZXhpdHkgYXMgdGhlIG51bWJlciBvZiByb3dzIGlu Y3JlYXNlcy4KKyAgIDwvcGFyYT4KKworICAgPHBhcmE+CisgICAgQmVmb3JlIGV4ZWN1dGlvbiwg PHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBhdXRvbWF0aWNhbGx5CisgICAg b3B0aW1pemVzIHBhdHRlcm5zIHRvIHNpbXBsaWZ5IHRoZWlyIHN0cnVjdHVyZS4gVGhpcyBpbmNs dWRlcyBmbGF0dGVuaW5nCisgICAgbmVzdGVkIHNlcXVlbmNlcyBhbmQgYWx0ZXJuYXRpb25zLCBt ZXJnaW5nIGNvbnNlY3V0aXZlIGlkZW50aWNhbCB2YXJpYWJsZXMKKyAgICAoZS5nLiwgPGxpdGVy YWw+QXsyLDN9IEF7MSwyfTwvbGl0ZXJhbD4gYmVjb21lcyA8bGl0ZXJhbD5BezMsNX08L2xpdGVy YWw+KSwKKyAgICByZW1vdmluZyBkdXBsaWNhdGUgYWx0ZXJuYXRpdmVzCisgICAgKGUuZy4sIDxs aXRlcmFsPihBIHwgQiB8IEEpPC9saXRlcmFsPiBiZWNvbWVzIDxsaXRlcmFsPihBIHwgQik8L2xp dGVyYWw+KSwKKyAgICBhbmQgc2ltcGxpZnlpbmcgbmVzdGVkIHF1YW50aWZpZXJzCisgICAgKGUu Zy4sIDxsaXRlcmFsPihBKikqPC9saXRlcmFsPiBiZWNvbWVzIDxsaXRlcmFsPkEqPC9saXRlcmFs PikuCisgICAgVGhlc2Ugb3B0aW1pemF0aW9ucyByZWR1Y2UgcGF0dGVybiBjb21wbGV4aXR5IGFu ZCBhbHNvIGRlY3JlYXNlCisgICAgbmVzdGluZyBkZXB0aCwgbWFraW5nIHRoZSAyNTMtbGV2ZWwg ZGVwdGggbGltaXQgcmFyZWx5IGVuY291bnRlcmVkLgorICAgIFRoZXkgYXJlIGFwcGxpZWQgdHJh bnNwYXJlbnRseSBhbmQgY2FuIGJlIG9ic2VydmVkCisgICAgaW4gPGNvbW1hbmQ+RVhQTEFJTjwv Y29tbWFuZD4gb3V0cHV0LgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBUbyBtaXRpZ2F0 ZSB0aGUgTyhuPHN1cGVyc2NyaXB0PjI8L3N1cGVyc2NyaXB0PikgY29tcGxleGl0eSBkZXNjcmli ZWQKKyAgICBhYm92ZSwgPHByb2R1Y3RuYW1lPlBvc3RncmVTUUw8L3Byb2R1Y3RuYW1lPiBhbHNv IGVtcGxveXMKKyAgICBhIGNvbnRleHQgYWJzb3JwdGlvbiBvcHRpbWl6YXRpb24uIFdoZW4gYSBw YXR0ZXJuIHN0YXJ0cyB3aXRoIGEgZ3JlZWR5CisgICAgdW5ib3VuZGVkIGVsZW1lbnQsIG5ld2Vy IG1hdGNoaW5nIGNvbnRleHRzIGNhbm5vdCBwcm9kdWNlIGxvbmdlciBtYXRjaGVzCisgICAgdGhh biBvbGRlciBjb250ZXh0cy4gQnkgZGV0ZWN0aW5nIGFuZCBlbGltaW5hdGluZyB0aGVzZSByZWR1 bmRhbnQKKyAgICBjb250ZXh0cywgdGhlIG1hdGNoaW5nIGNvbXBsZXhpdHkgaXMgcmVkdWNlZCBm cm9tCisgICAgTyhuPHN1cGVyc2NyaXB0PjI8L3N1cGVyc2NyaXB0PikgdG8gTyhuKSBmb3IgbWFu eSBjb21tb24gcGF0dGVybnMuCisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIFdoZW4gYSBx dWVyeSBpbnZvbHZlcyBtdWx0aXBsZSB3aW5kb3cgZnVuY3Rpb25zLCBpdCBpcyBwb3NzaWJsZSB0 byB3cml0ZQogICAgIG91dCBlYWNoIG9uZSB3aXRoIGEgc2VwYXJhdGUgPGxpdGVyYWw+T1ZFUjwv bGl0ZXJhbD4gY2xhdXNlLCBidXQgdGhpcyBpcwotICAgIGR1cGxpY2F0aXZlIGFuZCBlcnJvci1w cm9uZSBpZiB0aGUgc2FtZSB3aW5kb3dpbmcgYmVoYXZpb3IgaXMgd2FudGVkCi0gICAgZm9yIHNl dmVyYWwgZnVuY3Rpb25zLiAgSW5zdGVhZCwgZWFjaCB3aW5kb3dpbmcgYmVoYXZpb3IgY2FuIGJl IG5hbWVkCi0gICAgaW4gYSA8bGl0ZXJhbD5XSU5ET1c8L2xpdGVyYWw+IGNsYXVzZSBhbmQgdGhl biByZWZlcmVuY2VkIGluIDxsaXRlcmFsPk9WRVI8L2xpdGVyYWw+LgotICAgIEZvciBleGFtcGxl OgorICAgIGR1cGxpY2F0aXZlIGFuZCBlcnJvci1wcm9uZSBpZiB0aGUgc2FtZSB3aW5kb3dpbmcg YmVoYXZpb3IgaXMgd2FudGVkIGZvcgorICAgIHNldmVyYWwgZnVuY3Rpb25zLiAgSW5zdGVhZCwg ZWFjaCB3aW5kb3dpbmcgYmVoYXZpb3IgY2FuIGJlIG5hbWVkIGluCisgICAgYSA8bGl0ZXJhbD5X SU5ET1c8L2xpdGVyYWw+IGNsYXVzZSBhbmQgdGhlbiByZWZlcmVuY2VkCisgICAgaW4gPGxpdGVy YWw+T1ZFUjwvbGl0ZXJhbD4uICBGb3IgZXhhbXBsZToKIAogPHByb2dyYW1saXN0aW5nPgogU0VM RUNUIHN1bShzYWxhcnkpIE9WRVIgdywgYXZnKHNhbGFyeSkgT1ZFUiB3CmRpZmYgLS1naXQgYS9k b2Mvc3JjL3NnbWwvZnVuYy9mdW5jLXdpbmRvdy5zZ21sIGIvZG9jL3NyYy9zZ21sL2Z1bmMvZnVu Yy13aW5kb3cuc2dtbAppbmRleCBiYjQxMzg3Zjg3My4uYWI0NjliNTZmZDcgMTAwNjQ0Ci0tLSBh L2RvYy9zcmMvc2dtbC9mdW5jL2Z1bmMtd2luZG93LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL2Z1 bmMvZnVuYy13aW5kb3cuc2dtbApAQCAtMjc4LDYgKzI3OCwxMjcgQEAgSUdOT1JFIE5VTExTCiAg ICA8ZnVuY3Rpb24+bnRoX3ZhbHVlPC9mdW5jdGlvbj4uCiAgIDwvcGFyYT4KIAorICA8cGFyYT4K KyAgIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIG5hdmlnYXRpb24gZnVuY3Rpb25zIGFyZSBsaXN0 ZWQgaW4KKyAgIDx4cmVmIGxpbmtlbmQ9ImZ1bmN0aW9ucy1ycHItbmF2aWdhdGlvbi10YWJsZSIv Pi4gIFRoZXNlIGZ1bmN0aW9ucworICAgY2FuIGJlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIERFRklO RSBjbGF1c2Ugb2YgUm93IFBhdHRlcm4gUmVjb2duaXRpb24uCisgIDwvcGFyYT4KKworICAgPHRh YmxlIGlkPSJmdW5jdGlvbnMtcnByLW5hdmlnYXRpb24tdGFibGUiPgorICAgIDx0aXRsZT5Sb3cg UGF0dGVybiBOYXZpZ2F0aW9uIEZ1bmN0aW9uczwvdGl0bGU+CisgICAgPHRncm91cCBjb2xzPSIx Ij4KKyAgICAgPHRoZWFkPgorICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9sZT0iZnVuY190 YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAgICBGdW5jdGlv bgorICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgRGVzY3JpcHRpb24KKyAg ICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93PgorICAgICA8L3RoZWFkPgorCisgICAg IDx0Ym9keT4KKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAg ICAgICAgIDxwcmltYXJ5PnByZXY8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAg ICAgICA8ZnVuY3Rpb24+cHJldjwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1l dGVyPiA8dHlwZT5hbnllbGVtZW50PC90eXBlPiBbLCA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1l dGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+IF0gKQorICAgICAgICA8cmV0dXJudmFsdWU+YW55ZWxl bWVudDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAg ICBSZXR1cm5zIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gZXZhbHVhdGVkIGF0IHRoZSBy b3cgdGhhdCBpcworICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiByb3dzIGJl Zm9yZSB0aGUgY3VycmVudCByb3cgd2l0aGluCisgICAgICAgIHRoZSBwYXJ0aXRpb247CisgICAg ICAgIHJldHVybnMgTlVMTCBpZiB0aGUgdGFyZ2V0IHJvdyBpcyBvdXRzaWRlIHRoZSBwYXJ0aXRp b24uCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IGRlZmF1bHRzIHRvIDEg aWYgb21pdHRlZC4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBi ZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyOworICAgICAgICBhbiBvZmZzZXQgb2YgMCByZWZlcnMg dG8gdGhlIGN1cnJlbnQgcm93IGl0c2VsZi4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3Bh cmFtZXRlcj4gbXVzdCBub3QgYmUgTlVMTC4KKyAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBpbiBh IDxsaXRlcmFsPkRFRklORTwvbGl0ZXJhbD4gY2xhdXNlLgorICAgICAgIDwvcGFyYT48L2VudHJ5 PgorICAgICAgPC9yb3c+CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNf dGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4 dGVybT4KKyAgICAgICAgIDxwcmltYXJ5Pm5leHQ8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0 ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+bmV4dDwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj52YWx1 ZTwvcGFyYW1ldGVyPiA8dHlwZT5hbnllbGVtZW50PC90eXBlPiBbLCA8cGFyYW1ldGVyPm9mZnNl dDwvcGFyYW1ldGVyPiA8dHlwZT5iaWdpbnQ8L3R5cGU+IF0gKQorICAgICAgICA8cmV0dXJudmFs dWU+YW55ZWxlbWVudDwvcmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJh PgorICAgICAgICBSZXR1cm5zIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gZXZhbHVhdGVk IGF0IHRoZSByb3cgdGhhdCBpcworICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVy PiByb3dzIGFmdGVyIHRoZSBjdXJyZW50IHJvdyB3aXRoaW4KKyAgICAgICAgdGhlIHBhcnRpdGlv bjsKKyAgICAgICAgcmV0dXJucyBOVUxMIGlmIHRoZSB0YXJnZXQgcm93IGlzIG91dHNpZGUgdGhl IHBhcnRpdGlvbi4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gZGVmYXVs dHMgdG8gMSBpZiBvbWl0dGVkLgorICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVy PiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXI7CisgICAgICAgIGFuIG9mZnNldCBvZiAw IHJlZmVycyB0byB0aGUgY3VycmVudCByb3cgaXRzZWxmLgorICAgICAgICA8cGFyYW1ldGVyPm9m ZnNldDwvcGFyYW1ldGVyPiBtdXN0IG5vdCBiZSBOVUxMLgorICAgICAgICBDYW4gb25seSBiZSB1 c2VkIGluIGEgPGxpdGVyYWw+REVGSU5FPC9saXRlcmFsPiBjbGF1c2UuCisgICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgICA8L3Jvdz4KKworICAgICAgPHJvdz4KKyAgICAgICA8ZW50cnkgcm9s ZT0iZnVuY190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iZnVuY19zaWduYXR1cmUiPgorICAgICAg ICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+Zmlyc3Q8L3ByaW1hcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICA8ZnVuY3Rpb24+Zmlyc3Q8L2Z1bmN0aW9uPiAoIDxwYXJh bWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gPHR5cGU+YW55ZWxlbWVudDwvdHlwZT4gWywgPHBhcmFt ZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gPHR5cGU+YmlnaW50PC90eXBlPiBdICkKKyAgICAgICAg PHJldHVybnZhbHVlPmFueWVsZW1lbnQ8L3JldHVybnZhbHVlPgorICAgICAgIDwvcGFyYT4KKyAg ICAgICA8cGFyYT4KKyAgICAgICAgUmV0dXJucyA8cGFyYW1ldGVyPnZhbHVlPC9wYXJhbWV0ZXI+ IGV2YWx1YXRlZCBhdCB0aGUgcm93IHRoYXQgaXMKKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8 L3BhcmFtZXRlcj4gcm93cyBhZnRlciB0aGUgbWF0Y2ggc3RhcnQgcm93OworICAgICAgICByZXR1 cm5zIE5VTEwgaWYgdGhlIHRhcmdldCByb3cgaXMgYmV5b25kIHRoZSBjdXJyZW50IHJvdy4KKyAg ICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gZGVmYXVsdHMgdG8gMCBpZiBvbWl0 dGVkLCByZWZlcnJpbmcgdG8gdGhlCisgICAgICAgIG1hdGNoIHN0YXJ0IHJvdyBpdHNlbGYuCisg ICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3QgYmUgYSBub24tbmVnYXRp dmUgaW50ZWdlci4KKyAgICAgICAgPHBhcmFtZXRlcj5vZmZzZXQ8L3BhcmFtZXRlcj4gbXVzdCBu b3QgYmUgTlVMTC4KKyAgICAgICAgQ2FuIG9ubHkgYmUgdXNlZCBpbiBhIDxsaXRlcmFsPkRFRklO RTwvbGl0ZXJhbD4gY2xhdXNlLgorICAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICAgPC9yb3c+ CisKKyAgICAgIDxyb3c+CisgICAgICAgPGVudHJ5IHJvbGU9ImZ1bmNfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImZ1bmNfc2lnbmF0dXJlIj4KKyAgICAgICAgPGluZGV4dGVybT4KKyAgICAgICAg IDxwcmltYXJ5Pmxhc3Q8L3ByaW1hcnk+CisgICAgICAgIDwvaW5kZXh0ZXJtPgorICAgICAgICA8 ZnVuY3Rpb24+bGFzdDwvZnVuY3Rpb24+ICggPHBhcmFtZXRlcj52YWx1ZTwvcGFyYW1ldGVyPiA8 dHlwZT5hbnllbGVtZW50PC90eXBlPiBbLCA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiA8 dHlwZT5iaWdpbnQ8L3R5cGU+IF0gKQorICAgICAgICA8cmV0dXJudmFsdWU+YW55ZWxlbWVudDwv cmV0dXJudmFsdWU+CisgICAgICAgPC9wYXJhPgorICAgICAgIDxwYXJhPgorICAgICAgICBSZXR1 cm5zIDxwYXJhbWV0ZXI+dmFsdWU8L3BhcmFtZXRlcj4gZXZhbHVhdGVkIGF0IHRoZSByb3cgdGhh dCBpcworICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiByb3dzIGJlZm9yZSB0 aGUgY3VycmVudCByb3cgd2l0aGluCisgICAgICAgIHRoZSBtYXRjaDsKKyAgICAgICAgcmV0dXJu cyBOVUxMIGlmIHRoZSB0YXJnZXQgcm93IGlzIGJlZm9yZSB0aGUgbWF0Y2ggc3RhcnQgcm93Lgor ICAgICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBkZWZhdWx0cyB0byAwIGlmIG9t aXR0ZWQsIHJlZmVycmluZyB0byB0aGUKKyAgICAgICAgY3VycmVudCByb3cgaXRzZWxmLgorICAg ICAgICA8cGFyYW1ldGVyPm9mZnNldDwvcGFyYW1ldGVyPiBtdXN0IGJlIGEgbm9uLW5lZ2F0aXZl IGludGVnZXIuCisgICAgICAgIDxwYXJhbWV0ZXI+b2Zmc2V0PC9wYXJhbWV0ZXI+IG11c3Qgbm90 IGJlIE5VTEwuCisgICAgICAgIENhbiBvbmx5IGJlIHVzZWQgaW4gYSA8bGl0ZXJhbD5ERUZJTkU8 L2xpdGVyYWw+IGNsYXVzZS4KKyAgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgIDwvcm93Pgor CisgICAgIDwvdGJvZHk+CisgICAgPC90Z3JvdXA+CisgICA8L3RhYmxlPgorCisgICA8cGFyYT4K KyAgICA8ZnVuY3Rpb24+UFJFVjwvZnVuY3Rpb24+IGFuZCA8ZnVuY3Rpb24+TkVYVDwvZnVuY3Rp b24+IG1heSB3cmFwCisgICAgPGZ1bmN0aW9uPkZJUlNUPC9mdW5jdGlvbj4gb3IgPGZ1bmN0aW9u PkxBU1Q8L2Z1bmN0aW9uPiBmb3IgY29tcG91bmQKKyAgICBuYXZpZ2F0aW9uLiBGb3IgZXhhbXBs ZSwKKyAgICA8bGl0ZXJhbD5QUkVWKEZJUlNUKHZhbCwgMiksIDMpPC9saXRlcmFsPiBmZXRjaGVz IHRoZSB2YWx1ZSBhdAorICAgIDMgcm93cyBiZWZvcmUgdGhlIHJvdyB0aGF0IGlzIDIgcm93cyBh ZnRlciB0aGUgbWF0Y2ggc3RhcnQuCisgICAgVGhlIHJldmVyc2UgbmVzdGluZyAoPGZ1bmN0aW9u PkZJUlNUPC9mdW5jdGlvbj4vPGZ1bmN0aW9uPkxBU1Q8L2Z1bmN0aW9uPgorICAgIHdyYXBwaW5n IDxmdW5jdGlvbj5QUkVWPC9mdW5jdGlvbj4vPGZ1bmN0aW9uPk5FWFQ8L2Z1bmN0aW9uPikgaXMg bm90CisgICAgcGVybWl0dGVkLiBTYW1lLWNhdGVnb3J5IG5lc3RpbmcgKGUuZy4sCisgICAgPGZ1 bmN0aW9uPlBSRVY8L2Z1bmN0aW9uPiBpbnNpZGUgPGZ1bmN0aW9uPlBSRVY8L2Z1bmN0aW9uPikg aXMgYWxzbworICAgIHByb2hpYml0ZWQuCisgICA8L3BhcmE+CisKICAgPG5vdGU+CiAgICA8cGFy YT4KICAgICBUaGUgU1FMIHN0YW5kYXJkIGRlZmluZXMgYSA8bGl0ZXJhbD5GUk9NIEZJUlNUPC9s aXRlcmFsPiBvciA8bGl0ZXJhbD5GUk9NIExBU1Q8L2xpdGVyYWw+CmRpZmYgLS1naXQgYS9kb2Mv c3JjL3NnbWwvcGVyZm9ybS5zZ21sIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbAppbmRleCA2 MDRlODU3OGE4ZC4uMDFhODNhYjEwNWQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9wZXJmb3Jt LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3BlcmZvcm0uc2dtbApAQCAtNzAxLDYgKzcwMSw1MCBA QCBGUk9NIHRlbmsxIHQxIFdIRVJFIHQxLnRlbiA9IChTRUxFQ1QgKHJhbmRvbSgpICogMTApOjpp bnRlZ2VyKTsKICAgICBoYXBwZW4gd2l0aG91dCB0aGUgc3ViLTxsaXRlcmFsPlNFTEVDVDwvbGl0 ZXJhbD4gY29uc3RydWN0LgogICAgPC9wYXJhPgogCisgICA8cGFyYT4KKyAgICBXaGVuIGV4YW1p bmluZyBxdWVyeSBwbGFucyBmb3IgUm93IFBhdHRlcm4gUmVjb2duaXRpb24gd2l0aAorICAgIDxj b21tYW5kPkVYUExBSU48L2NvbW1hbmQ+LCB0aGUgcGF0dGVybiBvdXRwdXQgbWF5IGluY2x1ZGUg c3BlY2lhbAorICAgIG1hcmtlcnMgdGhhdCBpbmRpY2F0ZSBvcHRpbWl6YXRpb24gb3Bwb3J0dW5p dGllcy4gQSBkb3VibGUgcXVvdGUKKyAgICA8bGl0ZXJhbD4iPC9saXRlcmFsPiBtYXJrcyB3aGVy ZSBwYXR0ZXJuIGFic29ycHRpb24gY2FuIG9jY3VyLAorICAgIGFuZCBhIHNpbmdsZSBxdW90ZSA8 bGl0ZXJhbD4nPC9saXRlcmFsPiBtYXJrcyBhYnNvcmJhYmxlIGVsZW1lbnRzCisgICAgd2l0aGlu IGEgYnJhbmNoLiBGb3IgZXhhbXBsZSwgdXNpbmcgdGhlIDxzdHJ1Y3RuYW1lPnN0b2NrPC9zdHJ1 Y3RuYW1lPgorICAgIHRhYmxlIGZyb20gPHhyZWYgbGlua2VuZD0idHV0b3JpYWwtd2luZG93Ii8+ LCBhIHF1ZXJ5IHRoYXQgbG9va3MgZm9yCisgICAgcmVwZWF0ZWQgdXAtdGhlbi1kb3duIG1vdmVt ZW50cyByZXBvcnRzIGl0cyBwYXR0ZXJuIGFzCisgICAgPGxpdGVyYWw+KHVwJyBkb3duJykrIjwv bGl0ZXJhbD46CisKKzxzY3JlZW4+CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY29tcGFu eSwgdGRhdGUsIHByaWNlLCBjb3VudChwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBPUkRFUiBCWSB0ZGF0ZQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQQVRURVJOICgo VVAgRE9XTikrKQorICAgIERFRklORSBVUCBBUyBwcmljZSAmZ3Q7IFBSRVYocHJpY2UpLAorICAg ICAgICAgICBET1dOIEFTIHByaWNlICZsdDsgUFJFVihwcmljZSkKKyk7CisKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Jnp3c3A7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 ICh1cCcgZG93bicpKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAtJmd0OyAgU29ydAor ICAgICAgICAgU29ydCBLZXk6IGNvbXBhbnksIHRkYXRlCisgICAgICAgICAtJmd0OyAgU2VxIFNj YW4gb24gc3RvY2sKKzwvc2NyZWVuPgorCisgICAgSGVyZSB0aGUgc2luZ2xlIHF1b3RlcyBtYXJr IDxsaXRlcmFsPnVwPC9saXRlcmFsPiBhbmQKKyAgICA8bGl0ZXJhbD5kb3duPC9saXRlcmFsPiBh cyBhYnNvcmJhYmxlIHdpdGhpbiB0aGUgZ3JvdXAsIHdoaWxlIHRoZQorICAgIHRyYWlsaW5nIGRv dWJsZSBxdW90ZSBtYXJrcyB0aGUgcmVwZWF0ZWQgZ3JvdXAgaXRzZWxmIGFzIGFic29yYmFibGUu CisgICAgVGhlc2UgbWFya2VycyBhcmUgcHJpbWFyaWx5IHVzZWZ1bCBmb3IgdW5kZXJzdGFuZGlu ZyBpbnRlcm5hbAorICAgIG9wdGltaXphdGlvbiBiZWhhdmlvci4KKyAgIDwvcGFyYT4KKwogICA8 L3NlY3QyPgogCiAgIDxzZWN0MiBpZD0idXNpbmctZXhwbGFpbi1hbmFseXplIj4KZGlmZiAtLWdp dCBhL2RvYy9zcmMvc2dtbC9yZWYvc2VsZWN0LnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVj dC5zZ21sCmluZGV4IDA5YjZjZTgwOWJiLi5iZTVlZDgxNDg1MyAxMDA2NDQKLS0tIGEvZG9jL3Ny Yy9zZ21sL3JlZi9zZWxlY3Quc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3NlbGVjdC5zZ21s CkBAIC0xMDIyLDggKzEwMjIsOCBAQCBXSU5ET1cgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPndpbmRvd19uYW1lPC9yZXBsYWNlYWJsZT4gQVMgKCA8cmVwbGFjZWFibAogICAgIFRoZSA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZnJhbWVfY2xhdXNlPC9yZXBsYWNlYWJsZT4g Y2FuIGJlIG9uZSBvZgogCiA8c3lub3BzaXM+Ci17IFJBTkdFIHwgUk9XUyB8IEdST1VQUyB9IDxy ZXBsYWNlYWJsZT5mcmFtZV9zdGFydDwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmZyYW1l X2V4Y2x1c2lvbjwvcmVwbGFjZWFibGU+IF0KLXsgUkFOR0UgfCBST1dTIHwgR1JPVVBTIH0gQkVU V0VFTiA8cmVwbGFjZWFibGU+ZnJhbWVfc3RhcnQ8L3JlcGxhY2VhYmxlPiBBTkQgPHJlcGxhY2Vh YmxlPmZyYW1lX2VuZDwvcmVwbGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPmZyYW1lX2V4Y2x1c2lv bjwvcmVwbGFjZWFibGU+IF0KK3sgUkFOR0UgfCBST1dTIHwgR1JPVVBTIH0gPHJlcGxhY2VhYmxl PmZyYW1lX3N0YXJ0PC9yZXBsYWNlYWJsZT4gWyA8cmVwbGFjZWFibGU+ZnJhbWVfZXhjbHVzaW9u PC9yZXBsYWNlYWJsZT4gXSBbIDxyZXBsYWNlYWJsZT5yb3dfcGF0dGVybl9jb21tb25fc3ludGF4 PC9yZXBsYWNlYWJsZT4gXQoreyBSQU5HRSB8IFJPV1MgfCBHUk9VUFMgfSBCRVRXRUVOIDxyZXBs YWNlYWJsZT5mcmFtZV9zdGFydDwvcmVwbGFjZWFibGU+IEFORCA8cmVwbGFjZWFibGU+ZnJhbWVf ZW5kPC9yZXBsYWNlYWJsZT4gWyA8cmVwbGFjZWFibGU+ZnJhbWVfZXhjbHVzaW9uPC9yZXBsYWNl YWJsZT4gXSBbIDxyZXBsYWNlYWJsZT5yb3dfcGF0dGVybl9jb21tb25fc3ludGF4PC9yZXBsYWNl YWJsZT4gXQogPC9zeW5vcHNpcz4KIAogICAgIHdoZXJlIDxyZXBsYWNlYWJsZT5mcmFtZV9zdGFy dDwvcmVwbGFjZWFibGU+CkBAIC0xMTMwLDkgKzExMzAsOTQgQEAgRVhDTFVERSBOTyBPVEhFUlMK ICAgICBhIGdpdmVuIHBlZXIgZ3JvdXAgd2lsbCBiZSBpbiB0aGUgZnJhbWUgb3IgZXhjbHVkZWQg ZnJvbSBpdC4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgVGhlCisgICAgb3B0aW9uYWwg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnJvd19wYXR0ZXJuX2NvbW1vbl9zeW50YXg8 L3JlcGxhY2VhYmxlPgorICAgIGRlZmluZXMgdGhlIDxmaXJzdHRlcm0+Um93IFBhdHRlcm4gUmVj b2duaXRpb24gY29uZGl0aW9uPC9maXJzdHRlcm0+IGZvcgorICAgIHRoaXMKKyAgICB3aW5kb3cu IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5yb3dfcGF0dGVybl9jb21tb25fc3ludGF4 PC9yZXBsYWNlYWJsZT4KKyAgICBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIHN1YmNsYXVzZXMuCisK KzxzeW5vcHNpcz4KK1sgeyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgfCBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XIH0gXQorWyBJTklUSUFMIHwgU0VFSyBdCitQQVRURVJOICgg PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdHRlcm5fdmFyaWFibGVfbmFtZTwvcmVw bGFjZWFibGU+IFsgPHJlcGxhY2VhYmxlPnF1YW50aWZpZXI8L3JlcGxhY2VhYmxlPiBdIFsgLi4u IF0gKQorREVGSU5FIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5kZWZpbml0aW9uX3Zh cmlhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBBUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0KKzwvc3lub3BzaXM+CisgICAgPGxp dGVyYWw+QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XPC9saXRlcmFsPiBvciA8bGl0ZXJh bD5BRlRFUiBNQVRDSAorICAgIFNLSVAgVE8gTkVYVCBST1c8L2xpdGVyYWw+IGNvbnRyb2xzIGhv dyB0byBwcm9jZWVkIHRvIHRoZSBuZXh0IHJvdyBwb3NpdGlvbgorICAgIGFmdGVyIGEgbWF0Y2gg aXMgZm91bmQuIFdpdGggPGxpdGVyYWw+QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QKKyAgICBS T1c8L2xpdGVyYWw+ICh0aGUgZGVmYXVsdCkgdGhlIG5leHQgcm93IHBvc2l0aW9uIGlzIG5leHQg dG8gdGhlIGxhc3Qgcm93IG9mCisgICAgdGhlIHByZXZpb3VzIG1hdGNoLiBPbiB0aGUgb3RoZXIg aGFuZCwgd2l0aCA8bGl0ZXJhbD5BRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQKKyAgICBST1c8L2xp dGVyYWw+IHRoZSBuZXh0IHJvdyBwb3NpdGlvbiBpcyBuZXh0IHRvIHRoZSBmaXJzdCByb3cgb2Yg dGhlIHByZXZpb3VzCisgICAgbWF0Y2guIDxsaXRlcmFsPklOSVRJQUw8L2xpdGVyYWw+IG9yIDxs aXRlcmFsPlNFRUs8L2xpdGVyYWw+IHNwZWNpZmllcyBmcm9tCisgICAgd2hpY2ggcm93IGluIHRo ZSBmcmFtZSBwYXR0ZXJuIG1hdGNoaW5nIGJlZ2lucy4KKyAgICBJZiA8bGl0ZXJhbD5JTklUSUFM PC9saXRlcmFsPiBpcyBzcGVjaWZpZWQsIHRoZSBtYXRjaCBtdXN0IHN0YXJ0CisgICAgZnJvbSB0 aGUgZmlyc3Qgcm93IGluIHRoZSBmcmFtZS4gSWYgPGxpdGVyYWw+U0VFSzwvbGl0ZXJhbD4gaXMg c3BlY2lmaWVkLAorICAgIHRoZSBzZXQgb2YgbWF0Y2hpbmcgcm93cyBkb2VzIG5vdCBuZWNlc3Nh cmlseSBzdGFydCBmcm9tIHRoZSBmaXJzdCByb3cuIFRoZQorICAgIGRlZmF1bHQgaXMgPGxpdGVy YWw+SU5JVElBTDwvbGl0ZXJhbD4uIEN1cnJlbnRseQorICAgIG9ubHkgPGxpdGVyYWw+SU5JVElB TDwvbGl0ZXJhbD4gaXMgc3VwcG9ydGVkLiA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+CisgICAg ZGVmaW5lcyBkZWZpbml0aW9uIHZhcmlhYmxlcyBhbG9uZyB3aXRoIGEgYm9vbGVhbgorICAgIGV4 cHJlc3Npb24uIDxsaXRlcmFsPlBBVFRFUk48L2xpdGVyYWw+IGRlZmluZXMgYSBzZXF1ZW5jZSBv ZiByb3dzIHRoYXQKKyAgICBzYXRpc2ZpZXMgY2VydGFpbiBjb25kaXRpb25zIHVzaW5nIHZhcmlh YmxlcyBkZWZpbmVkCisgICAgaW4gdGhlIDxsaXRlcmFsPkRFRklORTwvbGl0ZXJhbD4gY2xhdXNl IChhbiBlbXB0eSA8bGl0ZXJhbD5QQVRURVJOKCk8L2xpdGVyYWw+CisgICAgaXMgbm90IHN1cHBv cnRlZCkuIEVhY2ggcGF0dGVybiB2YXJpYWJsZSBjYW4gYmUgZm9sbG93ZWQgYnkgYSBxdWFudGlm aWVyCisgICAgdG8gc3BlY2lmeSBob3cgbWFueSB0aW1lcyBpdCBzaG91bGQgbWF0Y2g6CisgICAg PGxpdGVyYWw+KjwvbGl0ZXJhbD4gKHplcm8gb3IgbW9yZSksCisgICAgPGxpdGVyYWw+KzwvbGl0 ZXJhbD4gKG9uZSBvciBtb3JlKSwKKyAgICA8bGl0ZXJhbD4/PC9saXRlcmFsPiAoemVybyBvciBv bmUpLAorICAgIDxsaXRlcmFsPns8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm48L3JlcGxhY2VhYmxl PjxsaXRlcmFsPn08L2xpdGVyYWw+IChleGFjdGx5IDxyZXBsYWNlYWJsZT5uPC9yZXBsYWNlYWJs ZT4gdGltZXMsIG4gJmd0OyAwKSwKKyAgICA8bGl0ZXJhbD57PC9saXRlcmFsPjxyZXBsYWNlYWJs ZT5uPC9yZXBsYWNlYWJsZT48bGl0ZXJhbD4sfTwvbGl0ZXJhbD4gKGF0IGxlYXN0IDxyZXBsYWNl YWJsZT5uPC9yZXBsYWNlYWJsZT4gdGltZXMsIG4gJmd0Oz0gMCksCisgICAgPGxpdGVyYWw+eyw8 L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm08L3JlcGxhY2VhYmxlPjxsaXRlcmFsPn08L2xpdGVyYWw+ IChhdCBtb3N0IDxyZXBsYWNlYWJsZT5tPC9yZXBsYWNlYWJsZT4gdGltZXMsIG0gJmd0OyAwKSwg b3IKKyAgICA8bGl0ZXJhbD57PC9saXRlcmFsPjxyZXBsYWNlYWJsZT5uPC9yZXBsYWNlYWJsZT48 bGl0ZXJhbD4sPC9saXRlcmFsPjxyZXBsYWNlYWJsZT5tPC9yZXBsYWNlYWJsZT48bGl0ZXJhbD59 PC9saXRlcmFsPgorICAgIChiZXR3ZWVuIDxyZXBsYWNlYWJsZT5uPC9yZXBsYWNlYWJsZT4gYW5k IDxyZXBsYWNlYWJsZT5tPC9yZXBsYWNlYWJsZT4gdGltZXMsIDAgJmx0Oz0gbiAmbHQ7PSBtLCAw ICZsdDsgbSkuCisgICAgUmVsdWN0YW50IHF1YW50aWZpZXJzIChlLmcuLCA8bGl0ZXJhbD4qPzwv bGl0ZXJhbD4sIDxsaXRlcmFsPis/PC9saXRlcmFsPiwKKyAgICA8bGl0ZXJhbD4/PzwvbGl0ZXJh bD4sIDxsaXRlcmFsPns8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm48L3JlcGxhY2VhYmxlPjxsaXRl cmFsPiw8L2xpdGVyYWw+PHJlcGxhY2VhYmxlPm08L3JlcGxhY2VhYmxlPjxsaXRlcmFsPn0/PC9s aXRlcmFsPikKKyAgICBhcmUgc3VwcG9ydGVkLgorICAgIFRoZSBleGNsdXNpb24gKDxsaXRlcmFs PnstPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+LX08L2xpdGVyYWw+KQorICAgIGlzIG5vdCBzdXBw b3J0ZWQuCisgICAgUGF0dGVybnMgY2FuIGJlIGdyb3VwZWQgdXNpbmcgcGFyZW50aGVzZXMsIGFu ZCBhbHRlcm5hdGlvbiAoT1IpIGNhbiBiZQorICAgIGV4cHJlc3NlZCB1c2luZyB0aGUgdmVydGlj YWwgYmFyIDxsaXRlcmFsPnw8L2xpdGVyYWw+LgorICAgIEZvciBleGFtcGxlLCA8bGl0ZXJhbD4o QSBCKSs8L2xpdGVyYWw+IG1hdGNoZXMgb25lIG9yIG1vcmUgcmVwZXRpdGlvbnMKKyAgICBvZiB0 aGUgc2VxdWVuY2UgQSBmb2xsb3dlZCBieSBCLCBhbmQgPGxpdGVyYWw+QSB8IEI8L2xpdGVyYWw+ IG1hdGNoZXMKKyAgICBlaXRoZXIgQSBvciBCLgorICAgIElmIGEgcGF0dGVybiB2YXJpYWJsZSBp cyBub3QgZGVmaW5lZCBpbgorICAgIHRoZSA8bGl0ZXJhbD5ERUZJTkU8L2xpdGVyYWw+IGNsYXVz ZSwgaXQgaXMgbm90IGF1dG9tYXRpY2FsbHkgYWRkZWQKKyAgICB0byB0aGUgPGxpdGVyYWw+REVG SU5FPC9saXRlcmFsPiBjbGF1c2UuIEluc3RlYWQsIHRoZSBleGVjdXRvciBldmFsdWF0ZXMKKyAg ICB0aGUgdmFyaWFibGUgYXMgPGxpdGVyYWw+VFJVRTwvbGl0ZXJhbD4gYXQgZXhlY3V0aW9uIHRp bWUsIGJlaGF2aW5nIGFzIGlmCisgICAgdGhlIGZvbGxvd2luZyBkZWZpbml0aW9uIGV4aXN0ZWQu CisKKzxzeW5vcHNpcz4KKzxsaXRlcmFsPnZhcmlhYmxlX25hbWU8L2xpdGVyYWw+IEFTIFRSVUUK Kzwvc3lub3BzaXM+CisKKyAgICBDb252ZXJzZWx5LCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUg PGxpdGVyYWw+REVGSU5FPC9saXRlcmFsPiBjbGF1c2UKKyAgICBidXQgbm90IHVzZWQgaW4gdGhl IDxsaXRlcmFsPlBBVFRFUk48L2xpdGVyYWw+IGNsYXVzZSBhcmUgcmVqZWN0ZWQKKyAgICB3aXRo IGFuIGVycm9yLgorICAgPC9wYXJhPgorCisgICA8cGFyYT4KKyAgICBOb3RlIHRoYXQgdGhlIG1h eGltdW0gbnVtYmVyIG9mIHVuaXF1ZSBwYXR0ZXJuIHZhcmlhYmxlcworICAgIHVzZWQgaW4gdGhl IDxsaXRlcmFsPlBBVFRFUk48L2xpdGVyYWw+IGNsYXVzZSBpcyAyNDAuCisgICAgSWYgdGhpcyBs aW1pdCBpcyBleGNlZWRlZCwgYW4gZXJyb3Igd2lsbCBiZSByYWlzZWQuCisgICAgQWRkaXRpb25h bGx5LCB0aGUgbWF4aW11bSBuZXN0aW5nIGRlcHRoIG9mIHBhdHRlcm4gZ3JvdXBzCisgICAgKHBh cmVudGhlc2VzKSBpcyAyNTMgbGV2ZWxzLgorICAgIEhvd2V2ZXIsIHBhdHRlcm4gb3B0aW1pemF0 aW9ucyBzdWNoIGFzIGZsYXR0ZW5pbmcgbmVzdGVkIHNlcXVlbmNlcworICAgIGFuZCBzaW1wbGlm eWluZyBuZXN0ZWQgcXVhbnRpZmllcnMgbWF5IHJlZHVjZSB0aGUgZWZmZWN0aXZlIGRlcHRoLAor ICAgIHNvIHRoaXMgbGltaXQgaXMgcmFyZWx5IHJlYWNoZWQgaW4gcHJhY3RpY2UuCisgICA8L3Bh cmE+CisKKyAgIDxwYXJhPgorICAgIFRoZSBTUUwgc3RhbmRhcmQgZGVmaW5lcyBtb3JlIHN1YmNs YXVzZXM6IDxsaXRlcmFsPk1FQVNVUkVTPC9saXRlcmFsPgorICAgIGFuZCA8bGl0ZXJhbD5TVUJT RVQ8L2xpdGVyYWw+LiBUaGV5IGFyZSBub3QgY3VycmVudGx5IHN1cHBvcnRlZAorICAgIGluIDxw cm9kdWN0bmFtZT5Qb3N0Z3JlU1FMPC9wcm9kdWN0bmFtZT4uIEFsc28gaW4gdGhlIHN0YW5kYXJk IHRoZXJlIGFyZQorICAgIG1vcmUgdmFyaWF0aW9ucyBpbiA8bGl0ZXJhbD5BRlRFUiBNQVRDSDwv bGl0ZXJhbD4gY2xhdXNlLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAgICBUaGUgcHVycG9z ZSBvZiBhIDxsaXRlcmFsPldJTkRPVzwvbGl0ZXJhbD4gY2xhdXNlIGlzIHRvIHNwZWNpZnkgdGhl Ci0gICAgYmVoYXZpb3Igb2YgPGZpcnN0dGVybT53aW5kb3cgZnVuY3Rpb25zPC9maXJzdHRlcm0+ IGFwcGVhcmluZyBpbiB0aGUgcXVlcnkncworICAgIGJlaGF2aW9yIG9mIDxmaXJzdHRlcm0+d2lu ZG93IGZ1bmN0aW9uczwvZmlyc3R0ZXJtPiBhcHBlYXJpbmcgaW4gdGhlCisgICAgcXVlcnkncwog ICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1zZWxlY3QtbGlzdCI+PGNvbW1hbmQ+U0VMRUNUPC9jb21t YW5kPiBsaXN0PC9saW5rPiBvcgogICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1vcmRlcmJ5Ij48bGl0 ZXJhbD5PUkRFUiBCWTwvbGl0ZXJhbD48L2xpbms+IGNsYXVzZS4KICAgICBUaGVzZSBmdW5jdGlv bnMKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL1JFQURNRS5ycHIgYi9zcmMvYmFj a2VuZC9leGVjdXRvci9SRUFETUUucnByCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi4wMGFmODY2ODFiOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1 dG9yL1JFQURNRS5ycHIKQEAgLTAsMCArMSwxNjcyIEBACis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cisg IFBvc3RncmVTUUwgUm93IFBhdHRlcm4gUmVjb2duaXRpb246IEZsYXQtQXJyYXkgU3RyZWFtIE5G QSBHdWlkZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIFRoaXMgUkVBRE1FJ3MgdGFyZ2V0IGF1 ZGllbmNlIGlzIGRldmVsb3BlcnMgd2l0aCBhIGJhc2ljCisgIHVuZGVyc3RhbmRpbmcgb2YgdGhl IFBvc3RncmVTUUwgZXhlY3V0b3IgYW5kIHBsYW5uZXIgYXJjaGl0ZWN0dXJlLgorICBBbHNvIGl0 IHdvdWxkIGJlIGJldHRlciBmb3IgdGhlbSB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY2F0aW9u IG9mCisgIHRoZSByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpbiB0aGUgU1FMIHN0YW5kYXJkIFsx XVsyXS4gSWYgeW91IGRvCisgIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgU1FMIHN0YW5kYXJkLCBP cmFjbGUncyBtYW51YWwgb3IgVHJpbm8ncworICBtYW51YWwgY2FuIGJlIGFsdGVybmF0aXZlcyBm b3IgdGhlbS4KKworICBUaGlzIFJFQURNRSdzIHNjb3BlIGlzIHRoZSBlbnRpcmUgcHJvY2VzcyBm cm9tIFBBVFRFUk4vREVGSU5FIGNsYXVzZQorICBwYXJzaW5nIHRvIE5GQSBydW50aW1lIGV4ZWN1 dGlvbi4KKworICBSZWxhdGVkIGNvZGU6CisgICAgLSBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf cnByLmMgICAgICAgICAgKHBhcnNlciBwaGFzZSkKKyAgICAtIHNyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3Jwci5jICAgICAgICAob3B0aW1pemVyIHBoYXNlKQorICAgIC0gc3JjL2JhY2tlbmQv ZXhlY3V0b3Ivbm9kZVdpbmRvd0FnZy5jICAgIChleGVjdXRvciBwaGFzZSwgd2luZG93IGFnZykK KyAgICAtIHNyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNSUFIuYyAgICAgICAgICAoZXhlY3V0b3Ig cGhhc2UsIE5GQSBlbmdpbmUpCisgICAgLSBzcmMvaW5jbHVkZS9leGVjdXRvci9leGVjUlBSLmgg ICAgICAgICAgKE5GQSBwdWJsaWMgQVBJKQorICAgIC0gc3JjL2luY2x1ZGUvbm9kZXMvcGxhbm5v ZGVzLmggICAgICAgICAgIChwbGFuIG5vZGUgZGVmaW5pdGlvbnMpCisgICAgLSBzcmMvaW5jbHVk ZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAgICAgKGV4ZWN1dGlvbiBzdGF0ZSBkZWZpbml0aW9u cykKKyAgICAtIHNyYy9pbmNsdWRlL29wdGltaXplci9ycHIuaCAgICAgICAgICAgICAodHlwZXMg YW5kIGNvbnN0YW50cykKKyAgICAtIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL2NyZWF0ZXBs YW4uYyAobmF2IG9mZnNldCBjb21wdXRhdGlvbikKKworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitX aGF0IGlzIGEgRmxhdC1BcnJheSBTdHJlYW0gTkZBPworCisgIFRoZSBORkEgKE5vbmRldGVybWlu aXN0aWMgRmluaXRlIEF1dG9tYXRvbikgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbgorICBpcyBub3Qg YSB0cmFkaXRpb25hbCBzdGF0ZS10cmFuc2l0aW9uIGdyYXBoIGJ1dCBhIGZsYXQgYXJyYXkgb2YK KyAgZml4ZWQtc2l6ZSAxNi1ieXRlIGVsZW1lbnRzLiBBdCBydW50aW1lLCBpdCBwcm9jZXNzZXMg dGhlIHJvdyBzdHJlYW0KKyAgaW4gYSBmb3J3YXJkLW9ubHkgbWFubmVyLCBleHBhbmRpbmcgZXBz aWxvbiB0cmFuc2l0aW9ucyBlYWdlcmx5CisgIHdpdGhvdXQgYmFja3RyYWNraW5nLgorCisgIC0g RmxhdC1BcnJheTogUGF0dGVybiBjb21waWxlZCBpbnRvIGEgZmxhdCBhcnJheSwKKyAgICAgICAg ICAgICAgICBub3QgYSBncmFwaCAoQ2hhcHRlciBJVikKKyAgLSBTdHJlYW06ICAgICBSb3dzIGNv bnN1bWVkIHNlcXVlbnRpYWxseSBpbiBvbmUgZGlyZWN0aW9uLAorICAgICAgICAgICAgICAgIG5l dmVyIHJldmlzaXRlZCAoQ2hhcHRlciBYSUkpCisgIC0gTkZBOiAgICAgICAgTm9uZGV0ZXJtaW5p c3RpYyBleGVjdXRpb24gd2hlcmUgbXVsdGlwbGUgc3RhdGVzCisgICAgICAgICAgICAgICAgY29l eGlzdCB3aXRoaW4gYSBzaW5nbGUgY29udGV4dCAoQ2hhcHRlciBWSSkKKworQ2hhcHRlciBJICBS b3cgUGF0dGVybiBSZWNvZ25pdGlvbiBPdmVydmlldworPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitO b3JtYXRpdmUgcmVmZXJlbmNlOiBJU08vSUVDIDE5MDc1LTUgKFNRTCBUZWNobmljYWwgUmVwb3J0 LCBQYXJ0IDU6IFJvdworcGF0dGVybiByZWNvZ25pdGlvbiBpbiBTUUwpLiAgU3ViY2xhdXNlIG51 bWJlcnMgY2l0ZWQgdGhyb3VnaG91dCB0aGlzIGNvZGUKK2Jhc2UgcmVmZXIgdG8gdGhhdCBkb2N1 bWVudC4gIFdoZXJlIENoYXB0ZXJzIDQgKEZST00gY2xhdXNlKSBhbmQgNiAoV0lORE9XCitjbGF1 c2UpIGRlc2NyaWJlIHBhcmFsbGVsIG1hdGVyaWFsLCB0aGlzIGltcGxlbWVudGF0aW9uIGNpdGVz IHRoZSBDaGFwdGVyIDYKK3N1YmNsYXVzZSBmaXJzdCBiZWNhdXNlIGl0IHRhcmdldHMgRmVhdHVy ZSBSMDIwLgorCitSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiAoaGVyZWFmdGVyIFJQUikgaXMgYSBm ZWF0dXJlIGludHJvZHVjZWQgaW4gU1FMOjIwMTYKK3RoYXQgbWF0Y2hlcyByZWdleC1iYXNlZCBw YXR0ZXJucyBhZ2FpbnN0IG9yZGVyZWQgcm93IHNldHMuCisKK1RoZSBTUUwgc3RhbmRhcmQgZGVm aW5lcyB0d28gZm9ybXM6CisKKyAgRmVhdHVyZSBSMDEwOiBNQVRDSF9SRUNPR05JWkUgKEZST00g Y2xhdXNlKQorICAgIC0gRGVkaWNhdGVkIHRhYmxlIG9wZXJhdG9yCisgICAgLSBQcm92aWRlcyBk ZWRpY2F0ZWQgZnVuY3Rpb25zIHN1Y2ggYXMgTUFUQ0hfTlVNQkVSKCksIENMQVNTSUZJRVIoKQor ICAgIC0gU3VwcG9ydHMgT05FIFJPVyBQRVIgTUFUQ0ggLyBBTEwgUk9XUyBQRVIgTUFUQ0gKKwor ICBGZWF0dXJlIFIwMjA6IFJQUiBpbiBhIHdpbmRvdyAoV0lORE9XIGNsYXVzZSkKKyAgICAtIElu dGVncmF0ZWQgaW50byB0aGUgZXhpc3Rpbmcgd2luZG93IGZ1bmN0aW9uIGZyYW1ld29yaworICAg IC0gU3VwcG9ydHMgQUxMIFJPV1MgUEVSIE1BVENIIG9ubHkKKyAgICAtIE5vIE1BVENIX05VTUJF UigpCisKK1RoaXMgaW1wbGVtZW50YXRpb24gdGFyZ2V0cyBGZWF0dXJlIFIwMjAuCisKK1RoZSBi YXNpYyBzeW50YXggaXMgYXMgZm9sbG93czoKKworICBTRUxFQ1QgLi4uCisgIE9WRVIgKAorICAg IFBBUlRJVElPTiBCWSAuLi4KKyAgICBPUkRFUiBCWSAuLi4KKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBbSU5JVElBTCB8IFNFRUtdICAg LS0gU0VFSyBpcyBkZWZpbmVkIGluIHRoZSBzdGFuZGFyZCBidXQgbm90IGltcGxlbWVudGVkCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVyB8IFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKCA8cmVnZXg+ICkKKyAgICBERUZJTkUgPHZhcmlhYmxlPiBBUyA8Y29uZGl0aW9u PiwgLi4uCisgICkKKworVGhlIFBBVFRFUk4gY2xhdXNlIGlzIGEgcmVndWxhciBleHByZXNzaW9u IG92ZXIgcm93IHBhdHRlcm4gdmFyaWFibGVzLgorVGhlIERFRklORSBjbGF1c2Ugc3BlY2lmaWVz IGJvb2xlYW4gY29uZGl0aW9ucyB0aGF0IGRldGVybWluZSB3aGV0aGVyIGVhY2gKK3ZhcmlhYmxl IGV2YWx1YXRlcyB0byB0cnVlIGZvciB0aGUgY3VycmVudCByb3cuCisKK0V4YW1wbGU6CisKKyAg UEFUVEVSTiAoQSsgQikKKyAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgICAg ICAgIEIgQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorCitUaGlzIHBhdHRlcm4gbWF0Y2hlcyAiYSBz cGFuIHdoZXJlIHByaWNlcyByaXNlIGNvbnNlY3V0aXZlbHkgdGhlbiBkcm9wLiIKKworQ2hhcHRl ciBJSSAgT3ZlcmFsbCBQcm9jZXNzaW5nIFBpcGVsaW5lCis9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K1JQUiBwcm9jZXNzaW5nIGlzIGRpdmlkZWQgaW50byB0aHJlZSBwaGFzZXM6CisKKyAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK KyAgfCAgMS4gUGFyc2luZyAoUGFyc2VyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKKyAgfCAgICAgU1FMIHRleHQgLT4gUEFUVEVSTiBBU1QgKyBERUZJTkUgZXhwcmVz c2lvbiB0cmVlICAgICAgIHwKKyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCAgMi4gQ29tcGlsYXRpb24gKE9wdGltaXpl ci9QbGFubmVyKSAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgfCAgICAgUEFUVEVSTiBBU1Qg LT4gb3B0aW1pemF0aW9uIC0+IGZsYXQgTkZBIGVsZW1lbnQgYXJyYXkgIHwKKyAgfCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAg fCAgMy4gRXhlY3V0aW9uIChFeGVjdXRvcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHwKKyAgfCAgICAgUm93LWJ5LXJvdyBtYXRjaGluZyB2aWEgTkZBIHNpbXVsYXRpb24gICAg ICAgICAgICAgICAgIHwKKyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworRWFjaCBwaGFzZSB1c2VzIGluZGVwZW5kZW50IGRh dGEgc3RydWN0dXJlcywgYW5kIHRoZSBpbnRlcmZhY2VzIGJldHdlZW4KK3BoYXNlcyBhcmUgd2Vs bC1kZWZpbmVkOgorCisgIFBhcnNlciAtPiBQbGFubmVyOiAgICBXaW5kb3dDbGF1c2UucnBQYXR0 ZXJuIChSUFJQYXR0ZXJuTm9kZSB0cmVlKQorICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93 Q2xhdXNlLmRlZmluZUNsYXVzZSAoVGFyZ2V0RW50cnkgbGlzdCkKKworICBQbGFubmVyIC0+IEV4 ZWN1dG9yOiAgV2luZG93QWdnLnJwUGF0dGVybiAoUlBSUGF0dGVybiBzdHJ1Y3QpCisgICAgICAg ICAgICAgICAgICAgICAgICBXaW5kb3dBZ2cuZGVmaW5lQ2xhdXNlIChUYXJnZXRFbnRyeSBsaXN0 KQorCitDaGFwdGVyIElJSSAgUGFyc2luZyBQaGFzZQorPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJ SUktMS4gRW50cnkgUG9pbnQKKworICB0cmFuc2Zvcm1XaW5kb3dEZWZpbml0aW9ucygpIChwYXJz ZV9jbGF1c2UuYykKKyAgICArLS0gdHJhbnNmb3JtUlBSKCkgKHBhcnNlX3Jwci5jKQorCit0cmFu c2Zvcm1SUFIoKSBpcyBpbnZva2VkIHdoZW4gUlBDb21tb25TeW50YXggaXMgcHJlc2VudCBhbmQg cGVyZm9ybXMgdGhlCitmb2xsb3dpbmc6CisKKyAgKDEpIEZyYW1lIG9wdGlvbiB2YWxpZGF0aW9u CisgICAgICAtIE9ubHkgUk9XUyBpcyBhbGxvd2VkIChSQU5HRSwgR1JPVVBTIGFyZSBub3QpCisg ICAgICAtIFRoZSBzdGFydCBib3VuZGFyeSBtdXN0IGJlIENVUlJFTlQgUk9XCisgICAgICAtIEVY Q0xVREUgb3B0aW9uIGlzIG5vdCBhbGxvd2VkCisKKyAgKDIpIFRyYW5zY3JpcHRpb24gdG8gV2lu ZG93Q2xhdXNlCisgICAgICAtIENvcGllcyBycFBhdHRlcm4sIHJwU2tpcFRvLCBpbml0aWFsIGZp ZWxkcworCisgICgzKSBERUZJTkUgY2xhdXNlIHRyYW5zZm9ybWF0aW9uICh0cmFuc2Zvcm1EZWZp bmVDbGF1c2UpCisKK0lJSS0yLiBQQVRURVJOIEFTVCAoQWJzdHJhY3QgU3ludGF4IFRyZWUpCisK K1RoZSBwYXJzZXIgdHJhbnNmb3JtcyB0aGUgUEFUVEVSTiBjbGF1c2UgaW50byBhbiBSUFJQYXR0 ZXJuTm9kZSB0cmVlLgorRWFjaCBub2RlIGhhcyBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3VyIHR5 cGVzOgorCisgIFJQUl9QQVRURVJOX1ZBUiAgICBWYXJpYWJsZSByZWZlcmVuY2UuIE5hbWUgc3Rv cmVkIGluIHZhck5hbWUgZmllbGQuCisgIFJQUl9QQVRURVJOX1NFUSAgICBDb25jYXRlbmF0aW9u LiBDaGlsZHJlbiBub2RlIGxpc3QgaW4gY2hpbGRyZW4uCisgIFJQUl9QQVRURVJOX0FMVCAgICBB bHRlcm5hdGlvbiAob3IpLiBCcmFuY2ggbm9kZSBsaXN0IGluIGNoaWxkcmVuLgorICBSUFJfUEFU VEVSTl9HUk9VUCAgR3JvdXAgKHBhcmVudGhlc2VzKS4gQm9keSBub2RlIGxpc3QgaW4gY2hpbGRy ZW4uCisKK0FsbCBub2RlcyBoYXZlIG1pbi9tYXggZmllbGRzIHRvIGV4cHJlc3MgcXVhbnRpZmll cnM6CisKKyAgQSAgICAgICAtPiBWQVIoQSwgbWluPTEsIG1heD0xKQorICBBKyAgICAgIC0+IFZB UihBLCBtaW49MSwgbWF4PUlORikKKyAgQSogICAgICAtPiBWQVIoQSwgbWluPTAsIG1heD1JTkYp CisgIEE/ICAgICAgLT4gVkFSKEEsIG1pbj0wLCBtYXg9MSkKKyAgQXszLDV9ICAtPiBWQVIoQSwg bWluPTMsIG1heD01KQorCitJZiB0aGUgcmVsdWN0YW50IGZpZWxkIGlzIHRydWUsIHRoZSBxdWFu dGlmaWVyIGlzIHJlbHVjdGFudCAobm9uLWdyZWVkeSkuCisKK0V4YW1wbGU6IFBBVFRFUk4gKChB KyBCKSB8IEMqKQorCisgIEFMVAorICArLS0gU0VRCisgIHwgICArLS0gVkFSKEEsIDEsIElORikK KyAgfCAgICstLSBWQVIoQiwgMSwgMSkKKyAgKy0tIFZBUihDLCAwLCBJTkYpCisKK0lJSS0zLiBE RUZJTkUgQ2xhdXNlIFRyYW5zZm9ybWF0aW9uCisKK3RyYW5zZm9ybURlZmluZUNsYXVzZSgpIHBy b2Nlc3NlcyBlYWNoIERFRklORSB2YXJpYWJsZSBhcyBmb2xsb3dzOgorCisgICgxKSBDaGVja3Mg Zm9yIGR1cGxpY2F0ZSB2YXJpYWJsZSBuYW1lcworICAoMikgVHJhbnNmb3JtcyB0aGUgZXhwcmVz c2lvbiB2aWEgdHJhbnNmb3JtRXhwcigpCisgICgzKSBFeHRyYWN0cyBWYXIgbm9kZXMgdmlhIHB1 bGxfdmFyX2NsYXVzZSgpIGFuZCBlbnN1cmVzIGVhY2ggaXMKKyAgICAgIHByZXNlbnQgaW4gdGhl IHF1ZXJ5IHRhcmdldGxpc3QsIHNvIHRoZSBwbGFubmVyIHByb3BhZ2F0ZXMgdGhlCisgICAgICBy ZWZlcmVuY2VkIGNvbHVtbnMgdGhyb3VnaCB0aGUgcGxhbiB0cmVlCisgICg0KSBXcmFwcyBpbiBh IFRhcmdldEVudHJ5IHdpdGggdGhlIHZhcmlhYmxlIG5hbWUgc2V0IGluIHJlc25hbWUKKworQWZ0 ZXIgYWxsIHZhcmlhYmxlcyBhcmUgcHJvY2Vzc2VkOgorICAoNSkgQ29lcmNlcyBlYWNoIGV4cHJl c3Npb24gdG8gQm9vbGVhbiB0eXBlIChjb2VyY2VfdG9fYm9vbGVhbikKKworVmFyaWFibGVzIHRo YXQgYXJlIHVzZWQgaW4gUEFUVEVSTiBidXQgbm90IGRlZmluZWQgaW4gREVGSU5FIGFyZSBpbXBs aWNpdGx5CitldmFsdWF0ZWQgYXMgVFJVRSAobWF0Y2hpbmcgYWxsIHJvd3MpLgorCitDaGFwdGVy IElWICBDb21waWxhdGlvbiBQaGFzZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitJVi0xLiBFbnRy eSBQb2ludAorCisgIGNyZWF0ZV93aW5kb3dhZ2dfcGxhbigpIChjcmVhdGVwbGFuLmMpCisgICAg Ky0tIGJ1aWxkRGVmaW5lVmFyaWFibGVMaXN0KCkgICAgQnVpbGQgdmFyaWFibGUgbmFtZSBsaXN0 IGZyb20gREVGSU5FCisgICAgKy0tIGJ1aWxkUlBSUGF0dGVybigpICAgICAgICAgICBORkEgY29t cGlsYXRpb24gKDYgcGhhc2VzKQorCitJVi0yLiBUaGUgNiBQaGFzZXMgb2YgYnVpbGRSUFJQYXR0 ZXJuKCkKKworICBQaGFzZSAxOiBBU1Qgb3B0aW1pemF0aW9uIChvcHRpbWl6ZVJQUlBhdHRlcm4p CisgIFBoYXNlIDI6IFN0YXRpc3RpY3MgY29sbGVjdGlvbiAoc2NhblJQUlBhdHRlcm4pCisgIFBo YXNlIDM6IE1lbW9yeSBhbGxvY2F0aW9uIChtYWtlUlBSUGF0dGVybikKKyAgUGhhc2UgNDogTkZB IGVsZW1lbnQgZmlsbCAoZmlsbFJQUlBhdHRlcm4pCisgIFBoYXNlIDU6IEZpbmFsaXphdGlvbiAo ZmluYWxpemVSUFJQYXR0ZXJuKQorICBQaGFzZSA2OiBBYnNvcmJhYmlsaXR5IGFuYWx5c2lzIChj b21wdXRlQWJzb3JiYWJpbGl0eSkKKworSVYtMy4gUGhhc2UgMTogQVNUIE9wdGltaXphdGlvbgor CitBZnRlciBjb3B5aW5nIHRoZSBwYXJzZXItZ2VuZXJhdGVkIEFTVCwgdGhlIGZvbGxvd2luZyBv cHRpbWl6YXRpb25zIGFyZQorYXBwbGllZDoKKworICAoYSkgU0VRIGZsYXR0ZW5pbmc6IFVud3Jh cCBuZXN0ZWQgU0VRIG5vZGVzCisgICAgICBTRVEoQSwgU0VRKEIsIEMpKSAtPiBTRVEoQSwgQiwg QykKKworICAoYikgQ29uc2VjdXRpdmUgdmFyaWFibGUgbWVyZ2luZzogTWVyZ2UgY29uc2VjdXRp dmUgb2NjdXJyZW5jZXMgb2YgdGhlCisgICAgICBzYW1lIHZhcmlhYmxlIGludG8gYSBzaW5nbGUg cXVhbnRpZmllcgorICAgICAgQSBBIC0+IEF7Mn0KKyAgICAgIEF7MiwzfSBBezEsMn0gLT4gQXsz LDV9CisKKyAgKGMpIENvbnNlY3V0aXZlIGdyb3VwIG1lcmdpbmc6IE1lcmdlIHJlcGVhdGVkIGlk ZW50aWNhbCBncm91cHMKKyAgICAgIChBIEIpKyAoQSBCKSsgLT4gKEEgQil7MixJTkZ9CisKKyAg KGQpIENvbnNlY3V0aXZlIEFMVCBtZXJnaW5nOiBNZXJnZSByZXBlYXRlZCBpZGVudGljYWwgQUxU IG5vZGVzCisgICAgICAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAtPiAoQSB8IEIpezN9CisKKyAg KGUpIFByZWZpeC9zdWZmaXggbWVyZ2luZzogTWVyZ2UgaWRlbnRpY2FsIHNlcXVlbmNlcyBiZWZv cmUvYWZ0ZXIKKyAgICAgIGEgZ3JvdXAKKyAgICAgIEEgQiAoQSBCKSsgLT4gKEEgQil7MixJTkZ9 CisKKyAgKGYpIEFMVCBmbGF0dGVuaW5nIGFuZCBkZWR1cGxpY2F0aW9uCisgICAgICAoQSB8IChC IHwgQykpIC0+IChBIHwgQiB8IEMpCisgICAgICAoQSB8IEIgfCBBKSAtPiAoQSB8IEIpCisKKyAg KGcpIFF1YW50aWZpZXIgbXVsdGlwbGljYXRpb246IENvbGxhcHNlIG5lc3RlZCBxdWFudGlmaWVy cyB3aGVuIHNhZmUKKyAgICAgIChBKykrIC0+IEErCisgICAgICAoQXsyLDN9KXs1fSAtPiBBezEw LDE1fQorICAgICAgKEF7Mix9KSogc3RheXMgYXMtaXMgKGNvdW50IDEgdW5yZWFjaGFibGU7IEEq IHdvdWxkIGJlIHdyb25nKQorCisgIChoKSBTaW5nbGUtY2hpbGQgdW53cmFwCisgICAgICBTRVEo QSkgLT4gQSwgIChBKXsxLDF9IC0+IEEKKworSVYtNC4gUGhhc2UgNDogTkZBIEVsZW1lbnQgQXJy YXkgR2VuZXJhdGlvbgorCitUcmFuc2Zvcm1zIHRoZSBvcHRpbWl6ZWQgQVNUIGludG8gYSBmbGF0 IGFycmF5IG9mIFJQUlBhdHRlcm5FbGVtZW50LgorVGhpcyBpcyB0aGUgY29yZSBkYXRhIHN0cnVj dHVyZSB1c2VkIGZvciBORkEgc2ltdWxhdGlvbiBhdCBydW50aW1lLgorCitSUFJQYXR0ZXJuRWxl bWVudCBzdHJ1Y3QgKDE2IGJ5dGVzKToKKworICBGaWVsZCAgICAgIFNpemUgICAgIERlc2NyaXB0 aW9uCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICB2YXJJZCAgICAgIDFCICAgICAgVmFyaWFibGUgSUQgKDAtMHhFRikgb3IgY29u dHJvbCBjb2RlICgweEZDLTB4RkYpCisgIGRlcHRoICAgICAgMUIgICAgICBHcm91cCBuZXN0aW5n IGRlcHRoCisgIGZsYWdzICAgICAgMUIgICAgICBCaXQgZmxhZ3MgKHNlZSBiZWxvdykKKyAgcmVz ZXJ2ZWQgICAxQiAgICAgIFBhZGRpbmcKKyAgbWluICAgICAgICA0QiAgICAgIFF1YW50aWZpZXIg bG93ZXIgYm91bmQKKyAgbWF4ICAgICAgICA0QiAgICAgIFF1YW50aWZpZXIgdXBwZXIgYm91bmQK KyAgbmV4dCAgICAgICAyQiAgICAgIE5leHQgZWxlbWVudCBpbmRleCAoc2VxdWVudGlhbCBmbG93 KQorICBqdW1wICAgICAgIDJCICAgICAgQnJhbmNoIHRhcmdldCBpbmRleCAoZm9yIEFMVC9HUk9V UCkKKworUGF0dGVybiB2YXJpYWJsZXMgb2NjdXB5IHZhcklkIDAgdG8gUlBSX1ZBUklEX01BWCAo MHhFRikgaW5jbHVzaXZlLAorZ2l2aW5nIDI0MCBkaXN0aW5jdCB2YXJpYWJsZXMuICBBbnkgdmFy SWQgd2l0aCB0aGUgaGlnaCBuaWJibGUgc2V0CisoMHhGMC0weEZGKSBpcyByZXNlcnZlZCBmb3Ig Y29udHJvbCBlbGVtZW50czsgMHhGMC0weEZCIGFyZSBjdXJyZW50bHkKK3NwYXJlLgorCitDb250 cm9sIGNvZGVzOgorCisgIFJQUl9WQVJJRF9CRUdJTiAoMHhGQykgIEdyb3VwIHN0YXJ0IG1hcmtl cgorICBSUFJfVkFSSURfRU5EICAgKDB4RkQpICBHcm91cCBlbmQgbWFya2VyCisgIFJQUl9WQVJJ RF9BTFQgICAoMHhGRSkgIEFsdGVybmF0aW9uIHN0YXJ0IG1hcmtlcgorICBSUFJfVkFSSURfRklO ICAgKDB4RkYpICBQYXR0ZXJuIGNvbXBsZXRpb24gbWFya2VyCisKK0VsZW1lbnQgZmxhZ3MgKDEg Ynl0ZSwgYml0bWFzayk6CisKKyAgMHgwMSAgUlBSX0VMRU1fUkVMVUNUQU5UICAgICAgICAgIChW QVIsIEJFR0lOLCBFTkQpCisgICAgICAgIE5vbi1ncmVlZHkgcXVhbnRpZmllci4gIFByZWZlcnMg c2hvcnRlciBtYXRjaDogdHJ5IGV4aXQtbG9vcAorICAgICAgICBmaXJzdCwgdGhlbiByZXBlYXQu ICBTZXQgb24gVkFSIGZvciBzaW1wbGUgKEErPyksCisgICAgICAgIG9uIEJFR0lOK0VORCBmb3Ig Z3JvdXAgKCguLi4pKz8pLgorCisgIDB4MDIgIFJQUl9FTEVNX0VNUFRZX0xPT1AgICAgICAgICAo RU5EKQorICAgICAgICBHcm91cCBib2R5IGNhbiBwcm9kdWNlIGVtcHR5IG1hdGNoIChhbGwgY2hp bGRyZW4gbnVsbGFibGUpLgorICAgICAgICBDcmVhdGVzIGEgZmFzdC1mb3J3YXJkIGV4aXQgY2xv bmUgYWxvbmdzaWRlIHRoZSBub3JtYWwKKyAgICAgICAgbG9vcC1iYWNrIHNvIGN5Y2xlIGRldGVj dGlvbiBkb2Vzbid0IGtpbGwgbGVnaXRpbWF0ZQorICAgICAgICBtYXRjaGVzLiAoSVYtNGIpCisK KyAgMHgwNCAgUlBSX0VMRU1fQUJTT1JCQUJMRV9CUkFOQ0ggIChWQVIsIEJFR0lOLCBFTkQsIEFM VCkKKyAgICAgICAgRWxlbWVudCBsaWVzIHdpdGhpbiBhbiBhYnNvcmJhYmxlIHJlZ2lvbi4gIFVz ZWQgYXQgcnVudGltZSB0bworICAgICAgICB0cmFjayB3aGV0aGVyIHRoZSBjdXJyZW50IE5GQSBz dGF0ZSBpcyBpbiBhbiBhYnNvcmJhYmxlCisgICAgICAgIGNvbnRleHQuIFNlZSAiSVYtNS4gQWJz b3JiYWJpbGl0eSBBbmFseXNpcyIgYW5kCisgICAgICAgICJWSUlJLTIuIFNvbHV0aW9uOiBDb250 ZXh0IEFic29ycHRpb24iIGZvciBtb3JlIGRldGFpbHMgYWJvdXQKKyAgICAgICAgYWJzb3JwdGlv bi4KKworICAweDA4ICBSUFJfRUxFTV9BQlNPUkJBQkxFICAgICAgICAgKFZBUiwgRU5EKQorICAg ICAgICBBYnNvcnB0aW9uIGp1ZGdtZW50IHBvaW50LiAgV2hlcmUgdG8gY29tcGFyZSBjb25zZWN1 dGl2ZQorICAgICAgICBpdGVyYXRpb25zIGZvciBhYnNvcnB0aW9uLgorICAgICAgICAgIC0gU2lt cGxlIHVuYm91bmRlZCBWQVIgKEErKTogc2V0IG9uIHRoZSBWQVIgaXRzZWxmCisgICAgICAgICAg LSBVbmJvdW5kZWQgR1JPVVAgKChBIEIpKyk6IHNldCBvbiB0aGUgRU5EIGVsZW1lbnQgb25seQor CisgIEFjY2Vzc29yIG1hY3JvczoKKyAgICBSUFJFbGVtSXNSZWx1Y3RhbnQoZSkgICAgICAgIChl KS0+ZmxhZ3MgJiAweDAxCisgICAgUlBSRWxlbUNhbkVtcHR5TG9vcChlKSAgICAgICAoZSktPmZs YWdzICYgMHgwMgorICAgIFJQUkVsZW1Jc0Fic29yYmFibGVCcmFuY2goZSkgKGUpLT5mbGFncyAm IDB4MDQKKyAgICBSUFJFbGVtSXNBYnNvcmJhYmxlKGUpICAgICAgIChlKS0+ZmxhZ3MgJiAweDA4 CisKK0V4YW1wbGU6IFBBVFRFUk4gKEErIEIgfCBDKQorCisgIEFTVDogQUxUKFNFUShWQVIoQSwx LElORiksIFZBUihCLDEsMSkpLCBWQVIoQywxLDEpKQorCisgIENvbXBpbGF0aW9uIHJlc3VsdDoK KworICBpZHggIHZhcklkICBkZXB0aCAgbWluICBtYXggIG5leHQgIGp1bXAgIERlc2NyaXB0aW9u CisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgMCAgIEFMVCAgICAwICAgICAgMSAgICAxICAgIDEgICAgIC0xICAgIEFsdGVy bmF0aW9uIHN0YXJ0CisgICAxICAgQSgwKSAgIDEgICAgICAxICAgIElORiAgMiAgICAgMyAgICAg QnJhbmNoIDE6IEErCisgICAyICAgQigxKSAgIDEgICAgICAxICAgIDEgICAgNCAgICAgLTEgICAg QnJhbmNoIDE6IEIgLT4gRklOCisgICAzICAgQygyKSAgIDEgICAgICAxICAgIDEgICAgNCAgICAg LTEgICAgQnJhbmNoIDI6IEMgLT4gRklOCisgICA0ICAgRklOICAgIDAgICAgICAxICAgIDEgICAg LTEgICAgLTEgICAgUGF0dGVybiBjb21wbGV0aW9uCisKKyAgLSBpZHggMDogQUxUIG1hcmtlci4g bmV4dCg9MSkgaXMgdGhlIHN0YXJ0IG9mIHRoZSBmaXJzdCBicmFuY2gKKyAgLSBpZHggMTogVmFy aWFibGUgQS4gbmV4dCg9MikgaXMgQiwganVtcCg9MykgaXMgdGhlIHN0YXJ0IG9mIHRoZSBzZWNv bmQKKyAgICAgICAgICAgYnJhbmNoCisgIC0gaWR4IDI6IFZhcmlhYmxlIEIuIG5leHQoPTQpIGlz IEZJTgorICAtIGlkeCAzOiBWYXJpYWJsZSBDLiBuZXh0KD00KSBpcyBGSU4KKyAgLSBpZHggNDog RklOIG1hcmtlci4gTWF0Y2ggY29tcGxldGlvbiBzaWduYWwKKworUm9sZXMgb2YgbmV4dCBhbmQg anVtcDoKKworICAtIG5leHQ6IFRoZSBuZXh0IGVsZW1lbnQgdG8gbW92ZSB0byAiYWZ0ZXIgY29u c3VtaW5nIiB0aGUgY3VycmVudCBlbGVtZW50LgorICAgICAgICAgIEZvciBWQVIsIHRoZSBuZXh0 IHBvc2l0aW9uIGFmdGVyIGEgc3VjY2Vzc2Z1bCBtYXRjaC4KKyAgICAgICAgICBGb3IgQkVHSU4v RU5ELCB0aGUgbmV4dCBwb3NpdGlvbiBpbnNpZGUvb3V0c2lkZSB0aGUgZ3JvdXAuCisKKyAgLSBq dW1wOiBUaGUgZWxlbWVudCB0byAic2tpcCB0by4iCisgICAgICAgICAgSW4gQUxULCBhIGp1bXAg ZnJvbSBvbmUgYnJhbmNoIHRvIHRoZSBuZXh0IGJyYW5jaC4KKyAgICAgICAgICBJbiBCRUdJTiwg YSBza2lwIHBhdGggdG8gRU5EKzEgKGZvciBncm91cHMgd2l0aCBtaW49MCkuCisgICAgICAgICAg SW4gRU5ELCBhIGxvb3AtYmFjayB0byB0aGUgc3RhcnQgb2YgdGhlIGdyb3VwIGJvZHkuCisKK0V4 YW1wbGU6IFBBVFRFUk4gKChBIEIpKykKKworICBpZHggIHZhcklkICAgIGRlcHRoICBtaW4gIG1h eCAgbmV4dCAganVtcCAgRGVzY3JpcHRpb24KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDAgICBCRUdJTiAgICAwICAg ICAgMSAgICBJTkYgIDEgICAgIDQgICAgIEdyb3VwIHN0YXJ0CisgICAxICAgQSgwKSAgICAgMSAg ICAgIDEgICAgMSAgICAyICAgICAtMSAgICBBCisgICAyICAgQigxKSAgICAgMSAgICAgIDEgICAg MSAgICAzICAgICAtMSAgICBCCisgICAzICAgRU5EICAgICAgMCAgICAgIDEgICAgSU5GICA0ICAg ICAxICAgICBHcm91cCBlbmQKKyAgIDQgICBGSU4gICAgICAwICAgICAgMSAgICAxICAgIC0xICAg IC0xICAgIFBhdHRlcm4gY29tcGxldGlvbgorCisgIC0gaWR4IDA6IEJFR0lOLiBuZXh0KD0xKSBl bnRlcnMgdGhlIGdyb3VwIGJvZHkuCisgICAgICAgICAgIGp1bXAoPTQpIHNraXBzIHRvIGFmdGVy IEVORCA9IEZJTiAodXNlZCB3aGVuIG1pbj0wKS4KKyAgLSBpZHggMzogRU5ELiBuZXh0KD00KSBl eGl0cyB0aGUgZ3JvdXAuCisgICAgICAgICAgIGp1bXAoPTEpIGxvb3BzIGJhY2sgdG8gdGhlIHN0 YXJ0IG9mIHRoZSBncm91cCBib2R5LgorCitJVi00YS4gUmVsdWN0YW50IEZsYWcgKFJQUl9FTEVN X1JFTFVDVEFOVCkKKworVGhlIHJlbHVjdGFudCBmbGFnIGlzIHNldCBkdXJpbmcgUGhhc2UgNCAo ZmlsbFJQUlBhdHRlcm4pIHdoZW4gdGhlIEFTVCBub2RlCitoYXMgcmVsdWN0YW50ID09IHRydWUu IEl0IHJldmVyc2VzIHRoZSBwcmlvcml0eSBvZiBxdWFudGlmaWVyIGV4cGFuc2lvbiBhdAorcnVu dGltZToKKworICBHcmVlZHkgKGRlZmF1bHQpOiAgdHJ5IGxvb3AtYmFjayBmaXJzdCwgdGhlbiBl eGl0ICAocHJlZmVyIGxvbmdlciBtYXRjaCkKKyAgUmVsdWN0YW50OiAgICAgICAgIHRyeSBleGl0 IGZpcnN0LCB0aGVuIGxvb3AtYmFjayAgIChwcmVmZXIgc2hvcnRlciBtYXRjaCkKKworVGhlIGZs YWcgaXMgc2V0IG9uIGFsbCBlbGVtZW50cyB0aGF0IGNhcnJ5IHRoZSBxdWFudGlmaWVyOgorCisg IFNpbXBsZSBWQVIgKEErPyk6ICAgICBSUFJfRUxFTV9SRUxVQ1RBTlQgb24gdGhlIFZBUiBlbGVt ZW50CisgIEdyb3VwICgoLi4uKSs/KTogICAgICBSUFJfRUxFTV9SRUxVQ1RBTlQgb24gQkVHSU4g YW5kIEVORCBlbGVtZW50cworCitBdCBydW50aW1lIChuZmFfYWR2YW5jZSksIHRoZSBmbGFnIGNv bnRyb2xzIERlcHRoLUZpcnN0IFNlYXJjaAorKERGUykgZXhwbG9yYXRpb24gb3JkZXI6CisKKyAg VkFSIHdpdGggcXVhbnRpZmllcjoKKyAgICBHcmVlZHk6ICAgIHByaW1hcnkgcGF0aCA9IG5leHQg KGNvbnRpbnVlKSwgY2xvbmUgPSBqdW1wIChza2lwKQorICAgIFJlbHVjdGFudDogcHJpbWFyeSBw YXRoID0ganVtcCAoc2tpcCksIGNsb25lID0gbmV4dCAoY29udGludWUpCisKKyAgRU5EIGVsZW1l bnQ6CisgICAgR3JlZWR5OiAgICBwcmltYXJ5IHBhdGggPSBqdW1wIChsb29wLWJhY2spLCBjbG9u ZSA9IG5leHQgKGV4aXQpCisgICAgUmVsdWN0YW50OiBwcmltYXJ5IHBhdGggPSBuZXh0IChleGl0 KSwgY2xvbmUgPSBqdW1wIChsb29wLWJhY2spCisKKyAgQkVHSU4gd2l0aCBtaW49MDoKKyAgICBH cmVlZHk6ICAgIHByaW1hcnkgcGF0aCA9IG5leHQgKGVudGVyIGdyb3VwKSwgY2xvbmUgPSBqdW1w IChza2lwKQorICAgIFJlbHVjdGFudDogcHJpbWFyeSBwYXRoID0ganVtcCAoc2tpcCksIGNsb25l ID0gbmV4dCAoZW50ZXIgZ3JvdXApCisKK1RoZSBhYnNvcnB0aW9uIG9wdGltaXphdGlvbiByZXF1 aXJlcyBncmVlZHkgcXVhbnRpZmllcnMuIFJlbHVjdGFudAorcXVhbnRpZmllcnMgYXJlIGV4Y2x1 ZGVkIGZyb20gYWJzb3JiYWJpbGl0eSBhbmFseXNpcyAoc2VlIElWLTUpLgorCitJVi00Yi4gRW1w dHkgTG9vcCBGbGFnIChSUFJfRUxFTV9FTVBUWV9MT09QKQorCitUaGUgZW1wdHktbG9vcCBmbGFn IGlzIHNldCBkdXJpbmcgUGhhc2UgNCAoZmlsbFJQUlBhdHRlcm5Hcm91cCkgb24gdGhlIEVORAor ZWxlbWVudCB3aGVuIHRoZSBncm91cCBib2R5IGlzIG51bGxhYmxlIC0tIGkuZS4sIGV2ZXJ5IHBh dGggdGhyb3VnaCB0aGUKK2JvZHkgY2FuIG1hdGNoIHplcm8gcm93cyAoYWxsIGNoaWxkcmVuIGFy ZSBudWxsYWJsZSkuCisKK0V4YW1wbGUgcGF0dGVybnMgdGhhdCB0cmlnZ2VyIHRoaXMgZmxhZzoK KworICAoQT8pKiAgICBBIGlzIG51bGxhYmxlIChtaW49MCksIHNvIGdyb3VwIGJvZHkgaXMgbnVs bGFibGUgLT4gRU5EIGdldHMgZmxhZworICAoQT8gQj8pKyBCb3RoIGNoaWxkcmVuIG51bGxhYmxl IC0+IGJvZHkgbnVsbGFibGUgLT4gRU5EIGdldHMgZmxhZworICAoQSB8IEIqKSBCKiBpcyBudWxs YWJsZSwgbWFraW5nIHRoZSBBTFQgbnVsbGFibGUgLT4gRU5EIGdldHMgZmxhZworCitUaGUgZmxh ZyB3b3JrcyBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBlbXB0eSBtYXRjaCBjeWNsZSBkZXRlY3Rp b24KKyhlbGVtSWR4IHZpc2l0ZWQgYml0bWFwKS4gV2l0aG91dCB0aGlzIGZsYWcsIGN5Y2xlIGRl dGVjdGlvbiBhbG9uZSB3b3VsZAorY2F1c2UgbGVnaXRpbWF0ZSBtYXRjaGVzIHRvIGZhaWwuCisK K1Byb2JsZW0gZXhhbXBsZTogKEEqKXsyLDN9CisgIC0gSXRlcmF0aW9uIDE6IEEqIGNvbnN1bWVz IGFsbCBhdmFpbGFibGUgcm93cyAtPiBjb3VudD0xLCBFTkQgcmVhY2hlZAorICAtIExvb3AtYmFj ayBmb3IgaXRlcmF0aW9uIDI6IEEqIG1hdGNoZXMgemVybyByb3dzIC0+IEVORCByZWFjaGVkIGFn YWluCisgIC0gQ3ljbGUgZGV0ZWN0aW9uIHNlZXMgdGhlIHNhbWUgZWxlbUlkeCBvbiB0aGUgc2Ft ZSByb3cgLT4gc3RhdGUga2lsbGVkCisgIC0gY291bnQgbmV2ZXIgcmVhY2hlcyBtaW4oMikgLT4g bWF0Y2ggZmFpbHMgKGluY29ycmVjdCkKKworV2l0aCB0aGUgUlBSX0VMRU1fRU1QVFlfTE9PUCBm bGFnLCBuZmFfYWR2YW5jZV9lbmQgY3JlYXRlcyB0d28gcGF0aHM6Cit0aGUgbm9ybWFsIGxvb3At YmFjayAod2hpY2ggY3ljbGUgZGV0ZWN0aW9uIHdpbGwgZXZlbnR1YWxseSBraWxsKSBhbmQKK2Eg ZmFzdC1mb3J3YXJkIGV4aXQgY2xvbmUgdGhhdCBieXBhc3NlcyB0aGUgbG9vcCBlbnRpcmVseS4K KyhTZWUgSVgtNChjKSBmb3IgZGV0YWlsZWQgcnVudGltZSBiZWhhdmlvci4pCisKK0lWLTUuIEFi c29yYmFiaWxpdHkgQW5hbHlzaXMgKFJQUl9FTEVNX0FCU09SQkFCTEUpCisKK0NvbnRleHQgYWJz b3JwdGlvbiBpcyBhbiBvcHRpbWl6YXRpb24gdGVjaG5pcXVlIHRoYXQgcmVkdWNlcyBPKG5eMikg dG8gTyhuKS4KKyhSdW50aW1lIGJlaGF2aW9yIGlzIGRlc2NyaWJlZCBpbiBDaGFwdGVyIFZJSUku KQorCitUaGlzIHBoYXNlIGRldGVybWluZXMgd2hldGhlciB0aGUgcGF0dGVybiBoYXMgYSBzdHJ1 Y3R1cmUgc3VpdGFibGUgZm9yIHRoZQorYWJzb3JwdGlvbiBvcHRpbWl6YXRpb24gYW5kIHNldHMg ZmxhZ3Mgb24gdGhlIHJlbGV2YW50IGVsZW1lbnRzOgorCisgIFJQUl9FTEVNX0FCU09SQkFCTEUg ICAgICAgICBBYnNvcnB0aW9uIGNvbXBhcmlzb24gcG9pbnQKKyAgUlBSX0VMRU1fQUJTT1JCQUJM RV9CUkFOQ0ggIEVsZW1lbnQgd2l0aGluIGFuIGFic29yYmFibGUgcmVnaW9uCisKK0VsaWdpYmls aXR5IGNvbmRpdGlvbnM6CisKKyAgKDEpIFNLSVAgUEFTVCBMQVNUIFJPVyAobm90IE5FWFQgUk9X KQorICAoMikgRnJhbWUgZW5kIGlzIFVOQk9VTkRFRCBGT0xMT1dJTkcKKworU3RydWN0dXJhbCBj b25kaXRpb25zIChpc1VuYm91bmRlZFN0YXJ0ICsgY29tcHV0ZUFic29yYmFiaWxpdHlSZWN1cnNp dmUpOgorCisgIENhc2UgMTogU2ltcGxlIFZBUisgKGUuZy4sIEErKQorICAgICAgICAgIC0+IEFC U09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSCBzZXQgb24gdGhlIFZBUgorICBDYXNlIDI6IEdS T1VQKyB3aXRoIGZpeGVkLWxlbmd0aCBjaGlsZHJlbiAobWluID09IG1heCwgcmVjdXJzaXZlbHkp CisgICAgICAgICAgZS5nLiwgKEEgQikrLCAoQSBCezJ9KSssICgoQSAoQiBDKXsyfSl7Mn0pKwor ICAgICAgICAgIC0+IEFCU09SQkFCTEVfQlJBTkNIIG9uIGFsbCBlbGVtZW50cyB3aXRoaW4gdGhl IGdyb3VwLAorICAgICAgICAgICAgIEFCU09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSCBvbiBF TkQKKworICAgICAgICAgIFdoeSB0aGlzIGlzIHNhZmU6IHdoZW4gZXZlcnkgY2hpbGQgaGFzIG1p biA9PSBtYXgsIHRoZSBncm91cAorICAgICAgICAgIGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50 IHRvIHVucm9sbGluZyBpdHMgYm9keSBpbnRvIHsxLDF9CisgICAgICAgICAgZWxlbWVudHMuICBF LmcuLCAoQSBCezJ9KSsgYmVoYXZlcyBsaWtlIChBIEIgQikrLiAgRWFjaAorICAgICAgICAgIGl0 ZXJhdGlvbiBjb25zdW1lcyBhIGZpeGVkIG51bWJlciBvZiByb3dzLCBzbyBhbiBlYXJsaWVyCisg ICAgICAgICAgY29udGV4dCdzIGNvdW50IGFsd2F5cyBkb21pbmF0ZXMgYSBsYXRlciBvbmUncyAo bW9ub3RvbmljaXR5KS4KKworICBDYXNlIDM6IEdST1VQKyB3aG9zZSBib2R5IHN0YXJ0cyB3aXRo IFZBUisgKGUuZy4sIChBKyBCKSspCisgICAgICAgICAgLT4gUmVjdXJzZXMgZnJvbSBCRUdJTiBp bnRvIHRoZSBib2R5LCBhcHBseWluZyBDYXNlIDEuCisgICAgICAgICAgICBBQlNPUkJBQkxFIHwg QUJTT1JCQUJMRV9CUkFOQ0ggc2V0IG9uIEEuCisgICAgICAgICAgICBCIGFuZCBFTkQgZ2V0IG5v IGZsYWdzIC0+IGFic29ycHRpb24gc3RvcHMgb25jZSBwYXN0IEEuCisKK0Fic29yYmFiaWxpdHkg aXMgZGV0ZXJtaW5lZCBwZXItZWxlbWVudCwgbm90IHBlci1wYXR0ZXJuLgorQWJzb3JwdGlvbiBj b21wYXJpc29uIGlzIHBlcmZvcm1lZCBvbmx5IHdoZW4gYSBzdGF0ZSByZXNpZGVzIGF0IGFuCitl bGVtZW50IHdpdGggdGhlIFJQUl9FTEVNX0FCU09SQkFCTEUgZmxhZy4gT25jZSBhIHN0YXRlIGxl YXZlcyB0aGUKK2ZsYWdnZWQgcmVnaW9uLCBhYnNvcnB0aW9uIGlzIHBlcm1hbmVudGx5IGRpc2Fi bGVkIGZvciB0aGF0IHN0YXRlLgorCitUaHJvdWdoIHRoaXMgbWVjaGFuaXNtLCB0aGUgcnVudGlt ZSBndWFyYW50ZWVzIG1vbm90b25pY2l0eToKKyJhIGNvbnRleHQgdGhhdCBzdGFydGVkIGVhcmxp ZXIgYWx3YXlzIHN1YnN1bWVzIGEgY29udGV4dCB0aGF0CitzdGFydGVkIGxhdGVyLiIKKworQ2hh cHRlciBWICBORkEgUnVudGltZSBEYXRhIFN0cnVjdHVyZXMKKz09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworVi0xLiBSUFJORkFTdGF0ZSAtLSBORkEgU3RhdGUKKworQSBzaW5nbGUgTkZBIHN0YXRlIHJl cHJlc2VudHMgImhvdyBmYXIgdGhlIHBhdHRlcm4gaGFzIHByb2dyZXNzZWQuIgorCisgIEZpZWxk ICAgICAgICAgRGVzY3JpcHRpb24KKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgZWxlbUlkeCAgICAgICBJbmRleCBvZiB0aGUg Y3VycmVudCBwYXR0ZXJuIGVsZW1lbnQKKyAgY291bnRzW10gICAgICBSZXBldGl0aW9uIGNvdW50 IHBlciBncm91cCBkZXB0aAorICBpc0Fic29yYmFibGUgIFdoZXRoZXIgdGhlIHN0YXRlIGlzIGlu IGFuIGFic29yYmFibGUgcmVnaW9uCisgIG5leHQgICAgICAgICAgTmV4dCBzdGF0ZSBpbiB0aGUg bGlua2VkIGxpc3QKKworVGhlIHNpemUgb2YgdGhlIGNvdW50cyBhcnJheSBpcyBycFBhdHRlcm4t Pm1heERlcHRoICg9IG1heGltdW0gZ3JvdXAKK25lc3RpbmcgZGVwdGggKyAxKSwgYWxsb2NhdGVk IGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIGF0IHRoZSBlbmQgb2YKK3RoZSBzdHJ1Y3QuCisK K0V4YW1wbGU6IEluIFBBVFRFUk4gKChBIEIpKyBDKSwgYSBzdGF0ZSB3YWl0aW5nIGZvciBCIGlu IHRoZSAzcmQgaXRlcmF0aW9uCisKKyAgRWxlbWVudCBhcnJheTogWzA6QkVHSU4oZDApIDE6QShk MSkgMjpCKGQxKSAzOkVORChkMCkgNDpDKGQwKSA1OkZJTl0KKworICBlbGVtSWR4ID0gMiAoQiwg ZGVwdGggMSkKKyAgY291bnRzWzBdID0gMiAoZGVwdGggMDogZGVwdGggb2YgRU5ELiBHcm91cCBj b21wbGV0ZWQgMiBpdGVyYXRpb25zKQorICBjb3VudHNbMV0gPSAxIChkZXB0aCAxOiBkZXB0aCBv ZiBCLiBBIG1hdGNoZWQgaW4gY3VycmVudCBpdGVyYXRpb24pCisKKyAgQ291bnRzIGFyZSBpbmRl eGVkIGJ5IGRlcHRoLCBub3QgYnkgZWxlbUlkeC4KKyAgY291bnRzWzBdIGlzIGluY3JlbWVudGVk IHdoZW4gcGFzc2luZyB0aHJvdWdoIEVORChkZXB0aCAwKSwKKyAgYW5kIHRoZSBncm91cCByZXBl dGl0aW9uIGNvdW50IGlzIHByZXNlcnZlZCBldmVuIHdoZW4KKyAgdGhlIHN0YXRlIGlzIGF0IEIo ZGVwdGggMSkuCisKK0RlZmluaXRpb24gb2YgdHdvIHN0YXRlcyBiZWluZyAiZXF1YWwiOgorCisg IFR3byBzdGF0ZXMgYXJlIGVxdWFsIGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSBlbGVtSWR4IGFuZCB0 aGUgc2FtZSBjb3VudHMKKyAgdXAgdG8gdGhlIGRlcHRoIG9mIHRoYXQgZWxlbWVudC4KKyAgbmZh X3N0YXRlc19lcXVhbCgpIGNvbXBhcmVzIGNvdW50c1swLi5lbGVtLT5kZXB0aF0gdXNpbmcgbWVt Y21wLgorICBPbmx5IGNvdW50cyBhdCBvciBiZWxvdyB0aGUgZGVwdGggb2YgdGhlIGN1cnJlbnQg ZWxlbWVudCBhcmUgbWVhbmluZ2Z1bC4KKworVi0yLiBSUFJORkFDb250ZXh0IC0tIE1hdGNoaW5n IENvbnRleHQKKworQSBzaW5nbGUgY29udGV4dCByZXByZXNlbnRzICJhIG1hdGNoaW5nIGF0dGVt cHQgc3RhcnRlZCBmcm9tIGEgc3BlY2lmaWMKK3N0YXJ0IHJvdy4iCisKKyAgRmllbGQgICAgICAg ICAgICAgICAgIERlc2NyaXB0aW9uCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBzdGF0ZXMgICAgICAgICAg ICAgICAgTGlua2VkIGxpc3Qgb2YgYWN0aXZlIE5GQSBzdGF0ZXMKKyAgbWF0Y2hTdGFydFJvdyAg ICAgICAgIFJvdyBudW1iZXIgd2hlcmUgbWF0Y2hpbmcgc3RhcnRlZAorICBtYXRjaEVuZFJvdyAg ICAgICAgICAgUm93IG51bWJlciB3aGVyZSBtYXRjaGluZyBjb21wbGV0ZWQKKyAgICAgICAgICAg ICAgICAgICAgICAgICgtMSBpZiBpbmNvbXBsZXRlKQorICBsYXN0UHJvY2Vzc2VkUm93ICAgICAg TGFzdCByb3cgcHJvY2Vzc2VkCisgIG1hdGNoZWRTdGF0ZSAgICAgICAgICBTdGF0ZSB0aGF0IHJl YWNoZWQgRklOIChmb3IgZ3JlZWR5IGZhbGxiYWNrKQorICBoYXNBYnNvcmJhYmxlU3RhdGUgICAg V2hldGhlciB0aGlzIGNvbnRleHQgY2FuIGFic29yYiBvdGhlciBjb250ZXh0cworICBhbGxTdGF0 ZXNBYnNvcmJhYmxlICAgV2hldGhlciB0aGlzIGNvbnRleHQgY2FuIGJlIGFic29yYmVkCisgIG5l eHQsIHByZXYgICAgICAgICAgICBEb3VibHktbGlua2VkIGxpc3QKKworU2luY2UgdGhlIE5GQSBp cyBub25kZXRlcm1pbmlzdGljLCBtdWx0aXBsZSBzdGF0ZXMgY2FuIGNvZXhpc3QKK3NpbXVsdGFu ZW91c2x5IHdpdGhpbiBhIHNpbmdsZSBjb250ZXh0LgorCitFeGFtcGxlOiBJbiBQQVRURVJOIChB IHwgQikgQywgaWYgdGhlIGZpcnN0IHJvdyBtYXRjaGVzIGJvdGggQSBhbmQgQiwKK3R3byBzdGF0 ZXMgY29leGlzdCB3aXRoaW4gdGhlIGNvbnRleHQ6CisKKyAgU3RhdGUgMTogZWxlbUlkeD0zICh3 YWl0aW5nIGZvciBDLCB2aWEgYnJhbmNoIEEpCisgIFN0YXRlIDI6IGVsZW1JZHg9MyAod2FpdGlu ZyBmb3IgQywgdmlhIGJyYW5jaCBCKQorCitJbiB0aGlzIGNhc2UsIHNpbmNlIHRoZSAoZWxlbUlk eCwgY291bnRzKSBvZiB0aGUgdHdvIHN0YXRlcyBhcmUgZXF1YWwsCituZmFfYWRkX3N0YXRlX3Vu aXF1ZSgpIHJldGFpbnMgb25seSBTdGF0ZSAxIChicmFuY2ggQSksIHdoaWNoIHdhcworYWRkZWQg Zmlyc3QuCitCZWNhdXNlIERGUyBwcm9jZXNzZXMgdGhlIGZpcnN0IGJyYW5jaCBvZiBBTFQgZmly c3QsIHRoZSBzdGF0ZSB2aWEgQQoraXMgcmVnaXN0ZXJlZCBmaXJzdCwgYW5kIHRoZSBzdGF0ZSB2 aWEgQiBpcyBkaXNjYXJkZWQgYXMgYSBkdXBsaWNhdGUuCitUaGlzIGlzIHRoZSBwcmVmZXJtZW50 IGd1YXJhbnRlZS4KKworVi0zLiBSUFIgRmllbGRzIG9mIFdpbmRvd0FnZ1N0YXRlCisKKyAgbmZh Q29udGV4dCAvIG5mYUNvbnRleHRUYWlsICAgRG91Ymx5LWxpbmtlZCBsaXN0IG9mIGFjdGl2ZSBj b250ZXh0cworICBuZmFDb250ZXh0RnJlZSAgICAgICAgICAgICAgICBSZXVzZSBwb29sIGZvciBj b250ZXh0cworICBuZmFTdGF0ZUZyZWUgICAgICAgICAgICAgICAgICBSZXVzZSBwb29sIGZvciBz dGF0ZXMKKyAgbmZhVmFyTWF0Y2hlZCAgICAgICAgICAgICAgICAgUGVyLXJvdyBjYWNoZTogdmFy TWF0Y2hlZFt2YXJJZF0KKyAgbmZhVmlzaXRlZEVsZW1zICAgICAgICAgICAgICAgQml0bWFwIGZv ciBjeWNsZSBkZXRlY3Rpb24KKyAgbmZhVmlzaXRlZE1pbldvcmQgICAgICAgICAgICAgTG93ZXN0 IGJpdG1hcHdvcmQgaW5kZXggdG91Y2hlZCBzaW5jZSBsYXN0IHJlc2V0CisgIG5mYVZpc2l0ZWRN YXhXb3JkICAgICAgICAgICAgIEhpZ2hlc3QgYml0bWFwd29yZCBpbmRleCB0b3VjaGVkIHNpbmNl IGxhc3QgcmVzZXQKKyAgbmZhU3RhdGVTaXplICAgICAgICAgICAgICAgICAgUHJlY29tcHV0ZWQg c2l6ZSBvZiBSUFJORkFTdGF0ZQorICBkZWZpbmVNYXRjaFN0YXJ0RGVwZW5kZW50ICAgICBERUZJ TkUgdmFycyBuZWVkaW5nIHBlci1jb250ZXh0IGV2YWx1YXRpb24gKG1hdGNoX3N0YXJ0X2RlcGVu ZGVudCkKKyAgbmZhTGFzdFByb2Nlc3NlZFJvdyAgICAgICAgICAgTGFzdCByb3cgcHJvY2Vzc2Vk IGJ5IE5GQSAoLTEgPSBub25lKQorCisgIEVYUExBSU4gQU5BTFlaRSBpbnN0cnVtZW50YXRpb24g Y291bnRlcnMgYXJlIG9taXR0ZWQgaGVyZTsgc2VlCisgIGV4ZWNub2Rlcy5oIGZvciB0aGUgZnVs bCBsaXN0LgorCitNZW1vcnkgbWFuYWdlbWVudDoKKworICBTdGF0ZXMgYW5kIGNvbnRleHRzIGFy ZSBtYW5hZ2VkIHRocm91Z2ggdGhlaXIgb3duIGZyZWUgbGlzdHMuCisgIEluc3RlYWQgb2YgcGFs bG9jLCB0aGV5IGFyZSBvYnRhaW5lZCBmcm9tIHRoZSByZXVzZSBwb29sLCBhbmQKKyAgcmV0dXJu ZWQgdG8gdGhlIHBvb2wgdXBvbiBkZWFsbG9jYXRpb24uCisgIFRoaXMgcmVkdWNlcyB0aGUgb3Zl cmhlYWQgb2YgZnJlcXVlbnQgYWxsb2NhdGlvbi9kZWFsbG9jYXRpb24uCisKK0NoYXB0ZXIgVkkg IE5GQSBFeGVjdXRpb246IDMtUGhhc2UgTW9kZWwKKz09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworVkkt MS4gRW50cnkgUG9pbnQgYW5kIE92ZXJhbGwgRmxvdworCitXaGVuIHRoZSB3aW5kb3cgZnVuY3Rp b24gcHJvY2Vzc2VzIGVhY2ggcm93LCByb3dfaXNfaW5fcmVkdWNlZF9mcmFtZSgpCitpcyBjYWxs ZWQuIFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjdXJyZW50IHJvdyBiZWxv bmdzIHRvCithIG1hdGNoZWQgZnJhbWUsIGFuZCBpZiBuZWNlc3NhcnksIGNhbGxzIHVwZGF0ZV9y ZWR1Y2VkX2ZyYW1lKCkgdG8KK2RyaXZlIHRoZSBORkEuCisKK0Zsb3cgb2YgdXBkYXRlX3JlZHVj ZWRfZnJhbWUoKToKKworICAoMSkgRmluZCBvciBjcmVhdGUgYSBjb250ZXh0IGZvciB0aGUgdGFy Z2V0IHJvdworICAoMikgRW50ZXIgdGhlIHJvdyBwcm9jZXNzaW5nIGxvb3AKKyAgKDMpIEFmdGVy IHRoZSBsb29wIGVuZHMsIHJlY29yZCB0aGUgbWF0Y2ggcmVzdWx0CisKK1BzZXVkb2NvZGUgb2Yg dGhlIHJvdyBwcm9jZXNzaW5nIGxvb3A6CisKKyAgdGFyZ2V0Q3R4ID0gRXhlY1JQUkdldEhlYWRD b250ZXh0KHBvcykKKyAgaWYgdGFyZ2V0Q3R4ID09IE5VTEw6CisgICAgICB0YXJnZXRDdHggPSBF eGVjUlBSU3RhcnRDb250ZXh0KHBvcykKKworICBmb3IgY3VycmVudFBvcyA9IHN0YXJ0UG9zOyB0 YXJnZXRDdHgtPnN0YXRlcyAhPSBOVUxMOyBjdXJyZW50UG9zKys6CisgICAgICBpZiBub3QgbmZh X2V2YWx1YXRlX3JvdyhjdXJyZW50UG9zKTogIC0tIHJvdyBkb2VzIG5vdCBleGlzdAorICAgICAg ICAgIEV4ZWNSUFJGaW5hbGl6ZUFsbENvbnRleHRzKCkgICAgICAtLSBmaW5hbGl6ZSBhbGwgY29u dGV4dHMKKyAgICAgICAgICBFeGVjUlBSQ2xlYW51cERlYWRDb250ZXh0cygpICAgICAgLS0gY2xl YW4gdXAgYWZ0ZXIgZmluYWxpemF0aW9uCisgICAgICAgICAgYnJlYWsKKworICAgICAgRXhlY1JQ UlByb2Nlc3NSb3coY3VycmVudFBvcykgICAgICAgICAtLSAzLXBoYXNlIHByb2Nlc3NpbmcKKyAg ICAgIEV4ZWNSUFJTdGFydENvbnRleHQoY3VycmVudFBvcyArIDEpICAgLS0gcHJlLWNyZWF0ZSBu ZXh0IHN0YXJ0IHBvaW50CisgICAgICBFeGVjUlBSQ2xlYW51cERlYWRDb250ZXh0cygpICAgICAg ICAgIC0tIHJlbW92ZSBkZWFkIGNvbnRleHRzCisKK0tleSBwb2ludDogUHJvY2Vzc2luZyBhIHNp bmdsZSByb3cgbWF5IHJlcXVpcmUgcHJvY2Vzc2luZyBtdWx0aXBsZSByb3dzCithaGVhZC4gRHVl IHRvIHRoZSBuYXR1cmUgb2Ygd2luZG93IGZ1bmN0aW9ucywgZGV0ZXJtaW5pbmcgdGhlIGZyYW1l IGZvcgorcm93IE4gcmVxdWlyZXMgbG9va2luZyBhdCByb3dzIGJleW9uZCBOLgorCitWSS0yLiBD b250ZXh0IENyZWF0aW9uOiBFeGVjUlBSU3RhcnRDb250ZXh0KCkKKworQ3JlYXRlcyBhIG5ldyBj b250ZXh0IGFuZCBwZXJmb3JtcyB0aGUgaW5pdGlhbCBhZHZhbmNlLgorCisgICgxKSBBbGxvY2F0 ZSBjb250ZXh0IHZpYSBuZmFfY29udGV4dF9tYWtlKCkKKyAgKDIpIFNldCBtYXRjaFN0YXJ0Um93 ID0gcG9zCisgICgzKSBDcmVhdGUgaW5pdGlhbCBzdGF0ZTogZWxlbUlkeD0wIChmaXJzdCBwYXR0 ZXJuIGVsZW1lbnQpLAorICAgICAgY291bnRzPWFsbCB6ZXJvCisgICg0KSBDYWxsIG5mYV9hZHZh bmNlKCkgd2l0aCBjdXJyZW50UG9zID0gcG9zIC0gMSAobm8gcm93IGNvbnN1bWVkCisgICAgICB5 ZXQpCisKK1RoZSBpbml0aWFsIGFkdmFuY2UgZXhwYW5kcyBlcHNpbG9uIHRyYW5zaXRpb25zIGF0 IHRoZSBiZWdpbm5pbmcgb2YKK3RoZSBwYXR0ZXJuLiBGb3IgZXhhbXBsZSwgdGhlIGluaXRpYWwg YWR2YW5jZSBmb3IgUEFUVEVSTiAoKEEgfCBCKSBDKToKKworICBTdGFydDogZWxlbUlkeD0wIChB TFQpCisgICAgLT4gRXhwYW5kIEFMVCBicmFuY2hlcworICAgICAgLT4gZWxlbUlkeD0xIChBKSAt LSBWQVIsIHNvIGFkZCBzdGF0ZTsgc3RvcCBoZXJlCisgICAgICAtPiBlbGVtSWR4PTIgKEIpIC0t IFZBUiwgc28gYWRkIHN0YXRlOyBzdG9wIGhlcmUKKworICBSZXN1bHQ6IFR3byBzdGF0ZXMgaW4g dGhlIGNvbnRleHQge3dhaXRpbmcgZm9yIEEsIHdhaXRpbmcgZm9yIEJ9CisKK0R1cmluZyB0aGUg aW5pdGlhbCBhZHZhbmNlLCByZWFjaGluZyBGSU4gaXMgbm90IHJlY29yZGVkIGFzIGEgbWF0Y2gu CitUaGlzIGlzIHRvIHByZXZlbnQgZW1wdHkgbWF0Y2hlcy4KKworVkktMy4gUm93IEV2YWx1YXRp b246IG5mYV9ldmFsdWF0ZV9yb3coKQorCitFdmFsdWF0ZXMgYWxsIHZhcmlhYmxlIGNvbmRpdGlv bnMgaW4gdGhlIERFRklORSBjbGF1c2UgYXQgb25jZSBmb3IKK3RoZSBjdXJyZW50IHJvdy4KKwor ICBmb3IgZWFjaCBkZWZpbmVDbGF1c2VbaV06CisgICAgICByZXN1bHQgPSBFeGVjRXZhbEV4cHIo ZGVmaW5lQ2xhdXNlW2ldKQorICAgICAgdmFyTWF0Y2hlZFtpXSA9IChub3QgbnVsbCBhbmQgdHJ1 ZSkKKworVG8gc3VwcG9ydCByb3cgbmF2aWdhdGlvbiBvcGVyYXRvcnMgKFBSRVYsIE5FWFQsIEZJ UlNULCBMQVNUKSwKK2EgMS1zbG90IG1vZGVsIGlzIHVzZWQ6IG9ubHkgZWN4dF9vdXRlcnR1cGxl IGlzIHNldCB0byB0aGUgY3VycmVudAorcm93LiAgTmF2aWdhdGlvbiBpcyBoYW5kbGVkIGJ5IEVF T1BfUlBSX05BVl9TRVQvUkVTVE9SRSBvcGNvZGVzCitlbWl0dGVkIGR1cmluZyBERUZJTkUgZXhw cmVzc2lvbiBjb21waWxhdGlvbjoKKworICBOQVZfU0VUOiAgICAgc2F2ZSBlY3h0X291dGVydHVw bGUsIHN3YXAgaW4gdGFyZ2V0IHJvdyB2aWEgbmF2X3Nsb3QKKyAgKGV2YWx1YXRlKTogIGFyZ3Vt ZW50IGV4cHJlc3Npb24gcmVhZHMgZnJvbSBzd2FwcGVkIHNsb3QKKyAgTkFWX1JFU1RPUkU6IHJl c3RvcmUgb3JpZ2luYWwgZWN4dF9vdXRlcnR1cGxlCisKK0NvbXBvdW5kIG5hdmlnYXRpb24gKFBS RVYoRklSU1QoKSksIE5FWFQoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwKK05FWFQoTEFTVCgpKSkg aXMgZmxhdHRlbmVkIGJ5IHRoZSBwYXJzZXIgaW50byBhIHNpbmdsZSBSUFJOYXZFeHByCit3aXRo IGEgY29tcG91bmQga2luZCAoUlBSX05BVl9QUkVWX0ZJUlNULCBldGMuKS4gIFRoZSBleGVjdXRv cgorY29tcHV0ZXMgdGhlIHRhcmdldCBwb3NpdGlvbiBpbiB0d28gc3RlcHM6IGZpcnN0IHRoZSBp bm5lciByZWZlcmVuY2UKK3BvaW50IChtYXRjaF9zdGFydCArIE4gb3IgY3VycmVudHBvcyAtIE4p IHdpdGggbWF0Y2gtcmFuZ2UgdmFsaWRhdGlvbiwKK3RoZW4gdGhlIG91dGVyIGFkanVzdG1lbnQg KCsvLSBNKSB3aXRoIHBhcnRpdGlvbi1yYW5nZSB2YWxpZGF0aW9uLgorSWYgZWl0aGVyIHN0ZXAg aXMgb3V0IG9mIHJhbmdlLCB0aGUgcmVzdWx0IGlzIE5VTEwuCisKK25hdl9zbG90IGNhY2hlcyB0 aGUgbGFzdCBmZXRjaGVkIHBvc2l0aW9uIChuYXZfc2xvdF9wb3MpIHRvIGF2b2lkCityZWR1bmRh bnQgdHVwbGVzdG9yZSBsb29rdXBzIHdoZW4gbXVsdGlwbGUgbmF2aWdhdGlvbiBjYWxscyB0YXJn ZXQKK3RoZSBzYW1lIHJvdy4KKworVGhlIHZhck1hdGNoZWQgYXJyYXkgaXMgcmVmZXJlbmNlZCBs YXRlciBpbiBQaGFzZSAxIChNYXRjaCkuCisKK1ZJLTQuIFBlci1Db250ZXh0IFJlLWV2YWx1YXRp b24gKG1hdGNoX3N0YXJ0X2RlcGVuZGVudCB2YXJpYWJsZXMpCisKK0RFRklORSB2YXJpYWJsZXMg dGhhdCBkZXBlbmQgb24gbWF0Y2hfc3RhcnQgKHRob3NlIGNvbnRhaW5pbmcgRklSU1QsCitMQVNU LXdpdGgtb2Zmc2V0LCBvciBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklSU1QvUFJFVl9MQVNU L05FWFRfTEFTVCkKK2FyZSBpZGVudGlmaWVkIGF0IHBsYW4gdGltZSB2aWEgZGVmaW5lTWF0Y2hT dGFydERlcGVuZGVudC4gIFRoZSBzaGFyZWQKK2V2YWx1YXRpb24gaW4gbmZhX2V2YWx1YXRlX3Jv dygpIHVzZXMgdGhlIGhlYWQgY29udGV4dCdzIG1hdGNoU3RhcnRSb3cKK2ZvciBGSVJTVC9MQVNU IGJhc2UgcG9zaXRpb24uCisKK1doZW4gcHJvY2Vzc2luZyBhIGNvbnRleHQgd2hvc2UgbWF0Y2hT dGFydFJvdyBkaWZmZXJzIGZyb20gdGhlIHNoYXJlZAordmFsdWUsIG5mYV9yZWV2YWx1YXRlX2Rl cGVuZGVudF92YXJzKCkgdGVtcG9yYXJpbHkgc2V0cyBuYXZfbWF0Y2hfc3RhcnQKK3RvIHRoYXQg Y29udGV4dCdzIG1hdGNoU3RhcnRSb3cgYW5kIHJlLWV2YWx1YXRlcyBvbmx5IHRoZSBkZXBlbmRl bnQKK3ZhcmlhYmxlcy4gIFRoZSBvcmlnaW5hbCBuYXZfbWF0Y2hfc3RhcnQgYW5kIGN1cnJlbnRw b3MgYXJlIHNhdmVkIGFuZAorcmVzdG9yZWQgYWZ0ZXIgcmUtZXZhbHVhdGlvbi4KKworU3VtbWFy eSBvZiBldmFsdWF0aW9uIHN0cmF0ZWd5IGJ5IG5hdmlnYXRpb24gY29udGVudDoKKworICBOYXZp Z2F0aW9uIGNvbnRlbnQgICAgICAgICAgICAgICBldmFsdWF0aW9uCisgIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgTm8gbmF2aWdhdGlv biAgICAgICAgICAgICAgICAgICAgc2hhcmVkIChvbmNlIHBlciByb3cpCisgIFBSRVYvTkVYVCBv bmx5ICAgICAgICAgICAgICAgICAgIHNoYXJlZCAob25jZSBwZXIgcm93KQorICBMQVNUIChubyBv ZmZzZXQpICAgICAgICAgICAgICAgICBzaGFyZWQgKG9uY2UgcGVyIHJvdykKKyAgTEFTVCAod2l0 aCBvZmZzZXQpICAgICAgICAgICAgICAgcGVyLWNvbnRleHQKKyAgRklSU1QgKGFueSkgICAgICAg ICAgICAgICAgICAgICAgcGVyLWNvbnRleHQKKyAgQ29tcG91bmQgKGlubmVyIEZJUlNUKSAgICAg ICAgICAgcGVyLWNvbnRleHQKKyAgQ29tcG91bmQgKGlubmVyIExBU1QsIG5vIG9mZi4pICAgc2hh cmVkIChvbmNlIHBlciByb3cpCisgIENvbXBvdW5kIChpbm5lciBMQVNULCB3L29mZi4pICAgIHBl ci1jb250ZXh0CisKK1ZJLTUuIFR1cGxlc3RvcmUgTWFyayBhbmQgVHJpbSAobm9kZVdpbmRvd0Fn Zy5jKQorCitOYXZpZ2F0aW9uIGZ1bmN0aW9ucyByZXF1aXJlIGFjY2VzcyB0byBwYXN0IHJvd3Mg dmlhIHRoZSB0dXBsZXN0b3JlLgorVG8gYWxsb3cgdHVwbGVzdG9yZV90cmltKCkgdG8gZnJlZSBy b3dzIHRoYXQgYXJlIG5vIGxvbmdlciByZWFjaGFibGUsCit0aGUgcGxhbm5lciBjb21wdXRlcyB0 d28gb2Zmc2V0cyAoc2VlIGNvbXB1dGVfZGVmaW5lX21ldGFkYXRhKToKKworICBuYXZNYXhPZmZz ZXQgKE5hdiBNYXJrIExvb2tiYWNrKToKKyAgICBNYXhpbXVtIGJhY2t3YXJkIHJlYWNoIGZyb20g Y3VycmVudHBvcy4gIENvbnRyaWJ1dGVkIGJ5IFBSRVYsCisgICAgTEFTVC13aXRoLW9mZnNldCwg YW5kIGNvbXBvdW5kIFBSRVZfTEFTVC9ORVhUX0xBU1QuCisgICAgTWFyayBwb3NpdGlvbjogY3Vy cmVudHBvcyAtIG5hdk1heE9mZnNldC4KKworICBuYXZGaXJzdE9mZnNldCAoTmF2IE1hcmsgTG9v a2FoZWFkKToKKyAgICBNaW5pbXVtIGZvcndhcmQgb2Zmc2V0IGZyb20gbWF0Y2hfc3RhcnQuICBD b250cmlidXRlZCBieSBGSVJTVAorICAgIGFuZCBjb21wb3VuZCBQUkVWX0ZJUlNUL05FWFRfRklS U1QuICBDYW4gYmUgbmVnYXRpdmUgd2hlbgorICAgIGNvbXBvdW5kIFBSRVZfRklSU1QgbG9va3Mg YmVmb3JlIG1hdGNoX3N0YXJ0LgorICAgIE1hcmsgcG9zaXRpb246IG9sZGVzdF9jb250ZXh0LT5t YXRjaFN0YXJ0Um93ICsgbmF2Rmlyc3RPZmZzZXQuCisKK1RoZSBhY3R1YWwgbWFyayBpcyBzZXQg dG86IG1pbihsb29rYmFja19tYXJrLCBsb29rYWhlYWRfbWFyaykuCitUaGlzIGVuc3VyZXMgYWxs IHJvd3MgcmVhY2hhYmxlIGJ5IGFueSBuYXZpZ2F0aW9uIGZ1bmN0aW9uIGFyZSByZXRhaW5lZC4K KworV2hlbiBvZmZzZXRzIGNvbnRhaW4gbm9uLWNvbnN0YW50IGV4cHJlc3Npb25zIChQYXJhbSks IHRoZSBwbGFubmVyIHNldHMKK25hdk1heE9mZnNldEtpbmQvbmF2Rmlyc3RPZmZzZXRLaW5kIHRv IFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwgYW5kIHRoZQorZXhlY3V0b3IgZXZhbHVhdGVzIHRo ZW0gYXQgaW5pdCB0aW1lLiAgT24gb3ZlcmZsb3csIHRoZSBraW5kIGlzIHNldCB0bworUlBSX05B Vl9PRkZTRVRfUkVUQUlOX0FMTCwgZGlzYWJsaW5nIHRyaW0gZm9yIHRoYXQgZGltZW5zaW9uLgor CitWSS02LiBFeGVjUlBSUHJvY2Vzc1JvdygpOiAzLVBoYXNlIFByb2Nlc3NpbmcKKworTkZBIHBy b2Nlc3NpbmcgZm9yIGEgc2luZ2xlIHJvdyBpcyBkaXZpZGVkIGludG8gdGhyZWUgcGhhc2VzOgor CisgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgfCAg UGhhc2UgMTogTUFUQ0ggKGNvbnZlcmdlbmNlKSAgICAgICAgICAgICAgfAorICB8ICBDb21wYXJl IHRoZSBjdXJyZW50IHJvdyBhZ2FpbnN0IGVhY2ggVkFSICB8CisgIHwgIHN0YXRlLiBSZW1vdmUg c3RhdGVzIHRoYXQgZmFpbCB0byBtYXRjaC4gIHwKKyAgfCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgfAorICB8ICBQaGFzZSAyOiBBQlNPUkIgKGFic29ycHRpb24p ICAgICAgICAgICAgICB8CisgIHwgIE1lcmdlIGR1cGxpY2F0ZSBjb250ZXh0cyB0byBwcmV2ZW50 ICAgICAgIHwKKyAgfCAgc3RhdGUgZXhwbG9zaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAg fAorICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgIHwg IFBoYXNlIDM6IEFEVkFOQ0UgKGV4cGFuc2lvbikgICAgICAgICAgICAgIHwKKyAgfCAgRXhwYW5k IGVwc2lsb24gdHJhbnNpdGlvbnMgdG8gcHJlcGFyZSAgICAgfAorICB8ICBmb3IgdGhlIG5leHQg cm93LiAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworVGhpcyBvcmRlcmluZyBpcyBpbXBvcnRhbnQ6CisK KyAgLSBNYXRjaCBleGVjdXRlcyBmaXJzdCB0byAiY29uc3VtZSB0aGUgY3VycmVudCByb3cuIgor ICAtIEFic29yYiBleGVjdXRlcyBpbW1lZGlhdGVseSBhZnRlciBNYXRjaCwgd2hlbiBzdGF0ZXMg aGF2ZSBiZWVuIHVwZGF0ZWQuCisgIC0gQWR2YW5jZSBleGVjdXRlcyBsYXN0IHRvIHByZXBhcmUg InN0YXRlcyB3YWl0aW5nIGZvciB0aGUgbmV4dCByb3cuIgorCitDaGFwdGVyIFZJSSAgUGhhc2Ug MTogTWF0Y2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworbmZhX21hdGNoKCkgaXRlcmF0ZXMgdGhy b3VnaCBlYWNoIHN0YXRlIGluIHRoZSBjb250ZXh0OgorCisgICgxKSBDaGVjayB3aGV0aGVyIHRo ZSBzdGF0ZSdzIGVsZW1JZHggaXMgYSBWQVIgZWxlbWVudAorICAoMikgQ29tcGFyZSBhZ2FpbnN0 IHRoZSBjdXJyZW50IHJvdyB1c2luZyBuZmFfZXZhbF92YXJfbWF0Y2goKQorICAoMykgTWF0Y2gg c3VjY2VzczogaW5jcmVtZW50IHJlcGV0aXRpb24gY291bnQsIHJldGFpbiBzdGF0ZQorICAoNCkg TWF0Y2ggZmFpbHVyZTogcmVtb3ZlIHN0YXRlCisKK01hdGNoIGRldGVybWluYXRpb24gKG5mYV9l dmFsX3Zhcl9tYXRjaCk6CisKKyAgSWYgdmFySWQgaXMgd2l0aGluIHRoZSByYW5nZSBvZiBkZWZp bmVWYXJpYWJsZUxpc3Q6CisgICAgICBVc2UgdGhlIHZhbHVlIG9mIHZhck1hdGNoZWRbdmFySWRd CisKKyAgSWYgdmFySWQgZXhjZWVkcyB0aGUgcmFuZ2UgKHZhcmlhYmxlIG5vdCBkZWZpbmVkIGlu IERFRklORSk6CisgICAgICBVbmNvbmRpdGlvbmFsbHkgdHJ1ZSAobWF0Y2hlcyBhbGwgcm93cykK KworSW1tZWRpYXRlIGFkdmFuY2UgZm9yIHNpbXBsZSBWQVJzOgorCisgIEZvciBhIFZBUiB3aXRo IG1pbj0xLCBtYXg9MSB3aGVyZSB0aGUgbmV4dCBlbGVtZW50IGlzIEVORCwKKyAgdGhlIE1hdGNo IHBoYXNlIHByb2Nlc3NlcyB0aHJvdWdoIEVORCBpbW1lZGlhdGVseS4KKyAgVGhpcyBpcyBuZWNl c3NhcnkgZm9yIGFjY3VyYXRlIHN0YXRlIGNvbXBhcmlzb24gaW4gUGhhc2UgMiAoQWJzb3JiKS4K KworICBFeGFtcGxlOiBJbiBQQVRURVJOICgoQSBCKSspLCB3aGVuIEEgbWF0Y2hlcywgaXQgaW1t ZWRpYXRlbHkgYWR2YW5jZXMKKyAgdG8gQiwgYW5kIHdoZW4gQiBtYXRjaGVzLCBpdCBpbW1lZGlh dGVseSBhZHZhbmNlcyB0aHJvdWdoIEVORCB0bworICBjb21wbGV0ZSB0aGUgZ3JvdXAgY291bnQu IFRoaXMgZW5hYmxlcyBhYnNvcnB0aW9uIGNvbXBhcmlzb24gd2l0aAorICBvdGhlciBjb250ZXh0 cy4KKworQ2hhcHRlciBWSUlJICBQaGFzZSAyOiBBYnNvcmIgKENvbnRleHQgQWJzb3JwdGlvbikK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworQWJzb3JwdGlvbiBpcyB0aGUgcnVudGltZSBvcHRpbWl6 YXRpb24gdGhhdCBjb2xsYXBzZXMgY29udGV4dHMgd2hpY2gKK2hhdmUgY29udmVyZ2VkIG9uIGlk ZW50aWNhbCBmdXR1cmUgYmVoYXZpb3IuICBUd28gY29udGV4dHMgYXJlCit0cmVhdGVkIGFzIGVx dWl2YWxlbnQgd2hlbiBvbmUncyBib29ra2VlcGluZyAoZWxlbUlkeCBhbmQgcGVyLWRlcHRoCitp dGVyYXRpb24gY291bnRzKSBpcyBkb21pbmF0ZWQgYnkgYW5vdGhlcidzOyB0aGUgeW91bmdlciBv bmUgaXMgdGhlbgorZGlzY2FyZGVkLiAgVGhlIG9wdGltaXphdGlvbiBpcyBzYWZlIGJlY2F1c2Ug cGF0dGVybiBtYXRjaGluZyBpcworbW9ub3RvbmljIC0tIGFuIGVhcmxpZXIgY29udGV4dCdzIHJl YWNoYWJsZSBtYXRjaGVzIGFsd2F5cyBjb250YWluIGEKK2xhdGVyIGNvbnRleHQncy4gIFRoaXMg aXMgd2hhdCByZWR1Y2VzIHRoZSBuYWl2ZSBPKE5eMikgc3RhdGUgY291bnQKK3RvIE8oTikuCisK K1ZJSUktMS4gUHJvYmxlbQorCitJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgYSBuZXcg Y29udGV4dCBpcyBzdGFydGVkIGZvciBlYWNoIHJvdworcHJvY2Vzc2VkLgorQXBwbHlpbmcgUEFU VEVSTiAoQSspIHRvIDEwIHJvd3MgcHJvZHVjZXMgMTAgY29udGV4dHMsCitlYWNoIG9mIHdoaWNo IHRyYWNrcyBzdGF0ZSBpbmRlcGVuZGVudGx5LgorCitJZiB0aGVyZSBhcmUgTiByb3dzLCB0aGUg dG90YWwgbnVtYmVyIG9mIHN0YXRlcyBiZWNvbWVzIE8oTl4yKToKKworICBDb250ZXh0IDEgKHN0 YXJ0ZWQgYXQgcm93IDEpOiBjYW4gbWF0Y2ggQSB1cCB0byBOIHRpbWVzCisgIENvbnRleHQgMiAo c3RhcnRlZCBhdCByb3cgMik6IGNhbiBtYXRjaCBBIHVwIHRvIE4tMSB0aW1lcworICAuLi4KKyAg Q29udGV4dCBOIChzdGFydGVkIGF0IHJvdyBOKTogY2FuIG1hdGNoIEEgMSB0aW1lCisKK1ZJSUkt Mi4gU29sdXRpb246IENvbnRleHQgQWJzb3JwdGlvbgorCitLZXkgb2JzZXJ2YXRpb246IGEgY29u dGV4dCBzdGFydGVkIGVhcmxpZXIgY29udGFpbnMKK2FsbCBtYXRjaGVzIG9mIGEgbGF0ZXItc3Rh cnRlZCBjb250ZXh0IChtb25vdG9uaWNpdHkgcHJpbmNpcGxlKS4KKworSWYgQ29udGV4dCAxIHN0 YXJ0ZWQgYXQgcm93IDEgYW5kIG1hdGNoZWQgQSA1IHRpbWVzLAordGhlIHN0YXRlIHdoZXJlIENv bnRleHQgMiAoc3RhcnRlZCBhdCByb3cgMikgbWF0Y2hlZCBBIDQgdGltZXMKK2lzIGFscmVhZHkg Y29udGFpbmVkIHdpdGhpbiBDb250ZXh0IDEuCisKK1RoZXJlZm9yZSBDb250ZXh0IDIgY2FuIGJl ICJhYnNvcmJlZCIgaW50byBDb250ZXh0IDEuCisKK1dvcmtlZCBleGFtcGxlIGZvciBQQVRURVJO IChBKykgb3ZlciAzIHJvd3MgKGVhY2ggbWF0Y2hlcyBBKToKKworICBBZnRlciByb3cgMToKKyAg ICBDdHhfMSAoc3RhcnRlZCByb3cgMSk6IHN0YXRlIGF0IEEgd2l0aCBjb3VudHNbMF0gPSAxCisK KyAgQWZ0ZXIgcm93IDI6CisgICAgQ3R4XzE6IHN0YXRlIGF0IEEgd2l0aCBjb3VudHNbMF0gPSAy CisgICAgQ3R4XzIgKHN0YXJ0ZWQgcm93IDIpOiBzdGF0ZSBhdCBBIHdpdGggY291bnRzWzBdID0g MQorICAgIC0+IFNhbWUgZWxlbUlkeDsgQ3R4XzEuY291bnQgKDIpIGRvbWluYXRlcyBDdHhfMi5j b3VudCAoMSkuCisgICAgLT4gQ3R4XzIgYWJzb3JiZWQuCisKKyAgQWZ0ZXIgcm93IDM6CisgICAg Q3R4XzE6IHN0YXRlIGF0IEEgd2l0aCBjb3VudHNbMF0gPSAzCisgICAgQ3R4XzMgKHN0YXJ0ZWQg cm93IDMpOiBzdGF0ZSBhdCBBIHdpdGggY291bnRzWzBdID0gMQorICAgIC0+IEN0eF8xLmNvdW50 ICgzKSBkb21pbmF0ZXMgQ3R4XzMuY291bnQgKDEpLgorICAgIC0+IEN0eF8zIGFic29yYmVkLgor CitUb3RhbCBhY3RpdmUgY29udGV4dHMgc3RheXMgYXQgTygxKSBpbnN0ZWFkIG9mIGdyb3dpbmcg d2l0aCBOLgorCitWSUlJLTMuIEFic29ycHRpb24gQ29uZGl0aW9ucworCitQbGFubmVyLXRpbWUg cHJlcmVxdWlzaXRlcyAoYWxsIG11c3QgaG9sZCBmb3IgYWJzb3JwdGlvbiB0byBiZSBlbmFibGVk KToKKworICAoYSkgU0tJUCBQQVNUIExBU1QgUk9XLiAgU0tJUCBUTyBORVhUIFJPVyBjcmVhdGVz IG92ZXJsYXBwaW5nCisgICAgICBjb250ZXh0cyB0aGF0IGNhbm5vdCBiZSBzYWZlbHkgYWJzb3Ji ZWQuCisgIChiKSBVbmJvdW5kZWQgZnJhbWUgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVECisgICAgICBGT0xMT1dJTkcpLiAgTGltaXRlZCBmcmFtZXMgYXBwbHkgZGlmZmVy ZW50bHkgdG8gZWFjaCBjb250ZXh0LAorICAgICAgYnJlYWtpbmcgdGhlIG1vbm90b25pY2l0eSBw cmluY2lwbGUuCisgIChjKSBObyBtYXRjaF9zdGFydF9kZXBlbmRlbnQgbmF2aWdhdGlvbiBpbiBE RUZJTkUuCisKKyAgICAgIE1lY2hhbmlzbTogZWFjaCBjb250ZXh0IGhhcyBhIGRpZmZlcmVudCBt YXRjaFN0YXJ0Um93LCBzbyBGSVJTVAorICAgICAgcmVzb2x2ZXMgdG8gYSBkaWZmZXJlbnQgcm93 IGZvciBlYWNoIGNvbnRleHQgYXQgdGhlIHNhbWUKKyAgICAgIGN1cnJlbnRwb3MuICBBbiBlYXJs aWVyIGNvbnRleHQncyBERUZJTkUgcmVzdWx0IG5vIGxvbmdlcgorICAgICAgc3Vic3VtZXMgYSBs YXRlciBvbmUncywgbWFraW5nIGNvdW50LWRvbWluYW5jZSBjb21wYXJpc29uCisgICAgICBpbnZh bGlkLiAgUmF0aGVyIHRoYW4gY29tcGFyaW5nIG1hdGNoU3RhcnRSb3cgYXQgcnVudGltZQorICAg ICAgKHdoaWNoIHdvdWxkIGNvbXBsaWNhdGUgdGhlIGFic29yYiBwYXRoKSwgYW55IG1hdGNoX3N0 YXJ0CisgICAgICBkZXBlbmRlbmN5IGRpc2FibGVzIGFic29ycHRpb24gZW50aXJlbHkuCisKKyAg ICAgIE5hdmlnYXRpb24gY29udGVudCAgICAgICAgICAgICAgbWF0Y2hfc3RhcnQgZGVwLiAgYWJz b3JwdGlvbgorICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICBObyBuYXZpZ2F0aW9uICAgICAgICAgICAgICAgICAg IG5vbmUgICAgICAgICAgICAgIHNhZmUKKyAgICAgIFBSRVYvTkVYVCBvbmx5ICAgICAgICAgICAg ICAgICAgbm9uZSAgICAgICAgICAgICAgc2FmZQorICAgICAgTEFTVCAobm8gb2Zmc2V0KSAgICAg ICAgICAgICAgICBub25lICAgICAgICAgICAgICBzYWZlCisgICAgICBMQVNUICh3aXRoIG9mZnNl dCkgICAgICAgICAgICAgIGJvdW5kYXJ5IGNoZWNrICAgIHVuc2FmZQorICAgICAgRklSU1QgKGFu eSkgICAgICAgICAgICAgICAgICAgICBkaXJlY3QgICAgICAgICAgICB1bnNhZmUKKyAgICAgIENv bXBvdW5kIChpbm5lciBGSVJTVCkgICAgICAgICAgZGlyZWN0ICAgICAgICAgICAgdW5zYWZlCisg ICAgICBDb21wb3VuZCAoaW5uZXIgTEFTVCwgbm8gb2ZmLikgIG5vbmUgICAgICAgICAgICAgIHNh ZmUKKyAgICAgIENvbXBvdW5kIChpbm5lciBMQVNULCB3L29mZi4pICAgYm91bmRhcnkgY2hlY2sg ICAgdW5zYWZlCisKKyAgVGhlICJtYXRjaF9zdGFydCBkZXAuIiBjb2x1bW4gY2xhc3NpZmllcyBo b3cgdGhlIG5hdmlnYXRpb24gdGllcyBhCisgIERFRklORSByZXN1bHQgdG8gdGhlIGNvbnRleHQn cyBtYXRjaFN0YXJ0Um93OgorCisgICAgbm9uZSAgICAgICAgICAgIEluZGVwZW5kZW50IG9mIG1h dGNoU3RhcnRSb3cuICBUaGUgcmVzdWx0IGRlcGVuZHMKKyAgICAgICAgICAgICAgICAgICAgb25s eSBvbiBjdXJyZW50cG9zIChvciBhIGZpeGVkIG9mZnNldCBmcm9tIGl0KSwgc28KKyAgICAgICAg ICAgICAgICAgICAgZXZlcnkgY29udGV4dCBldmFsdWF0ZXMgaXQgaWRlbnRpY2FsbHkuCisgICAg ZGlyZWN0ICAgICAgICAgIENvbXB1dGVkIGZyb20gbWF0Y2hTdGFydFJvdyBpdHNlbGYgLS0gRklS U1QgY291bnRzCisgICAgICAgICAgICAgICAgICAgIGZvcndhcmQgZnJvbSBtYXRjaCBzdGFydCAt LSBzbyB0aGUgcmVzb2x2ZWQgcm93LAorICAgICAgICAgICAgICAgICAgICBhbmQgdGh1cyB0aGUg cmVzdWx0LCBkaWZmZXJzIHBlciBjb250ZXh0LgorICAgIGJvdW5kYXJ5IGNoZWNrICBUaGUgcmVz b2x2ZWQgcm93IGlzIGN1cnJlbnRwb3MtcmVsYXRpdmUgKExBU1Qgd2l0aAorICAgICAgICAgICAg ICAgICAgICBhIGJhY2t3YXJkIG9mZnNldCwgb3IgYSBjb21wb3VuZCB3aG9zZSBpbm5lciBMQVNU CisgICAgICAgICAgICAgICAgICAgIGNhcnJpZXMgYW4gb2Zmc2V0KSwgYnV0IGl0cyBpbi1yYW5n ZSB0ZXN0IGlzIHRha2VuCisgICAgICAgICAgICAgICAgICAgIGFnYWluc3QgdGhlIG1hdGNoIHJh bmdlIFttYXRjaFN0YXJ0Um93LCBjdXJyZW50cG9zXS4KKyAgICAgICAgICAgICAgICAgICAgVGhl IHJhbmdlIGJvdW5kIGRpZmZlcnMgcGVyIGNvbnRleHQsIHNvIHRoZSByZXN1bHQKKyAgICAgICAg ICAgICAgICAgICAgY2FuIHRvby4KKworICBPbmx5ICJub25lIiBpcyBzYWZlIGZvciBhYnNvcnB0 aW9uOyAiZGlyZWN0IiBhbmQgImJvdW5kYXJ5IGNoZWNrIgorICBib3RoIG1ha2UgYW4gZWFybGll ciBjb250ZXh0J3MgcmVzdWx0IHN0b3Agc3Vic3VtaW5nIGEgbGF0ZXIgb25lJ3MKKyAgKHNlZSAo YykgYWJvdmUpLgorCitSdW50aW1lIGNvbmRpdGlvbnMgKGV2YWx1YXRlZCBwZXIgY29udGV4dCBw YWlyKToKKworICAoMSkgVGhlIHBhdHRlcm4gaXMgbWFya2VkIGFzIGlzQWJzb3JiYWJsZSAoc2Vl IElWLTUpCisgICgyKSBhbGxTdGF0ZXNBYnNvcmJhYmxlIG9mIHRoZSB0YXJnZXQgY29udGV4dCBp cyB0cnVlCisgICgzKSBBbiBlYXJsaWVyIGNvbnRleHQgImNvdmVycyIgYWxsIHN0YXRlcyBvZiB0 aGUgdGFyZ2V0CisKK0NvdmVyIGNvbmRpdGlvbiAobmZhX3N0YXRlc19jb3ZlcmVkKSAtLSAiY291 bnQtZG9taW5hbmNlIjoKKworICBBIHN0YXRlIHdpdGggdGhlIHNhbWUgZWxlbUlkeCBleGlzdHMg aW4gdGhlIGVhcmxpZXIgY29udGV4dCwKKyAgYW5kIHRoZSBjb3VudCBhdCB0aGF0IGRlcHRoIGlz IGdyZWF0ZXIgdGhhbiBvciBlcXVhbCAtLSB0aGVuIGl0IGlzCisgIGNvdmVyZWQuICBUaGUgZWFy bGllciBjb250ZXh0J3MgcGVyLWRlcHRoIGl0ZXJhdGlvbiBjb3VudCB0aHVzCisgIGRvbWluYXRl cyB0aGUgbGF0ZXIgb25lJ3M7IHRoaXMgaXMgdGhlIGNvdW50LWRvbWluYW5jZSBjb21wYXJpc29u CisgIHJlZmVyZW5jZWQgaW4gVklJSS0zKGMpLgorCitWSUlJLTQuIER1YWwtRmxhZyBEZXNpZ24K KworVHdvIGJvb2xlYW4gZmxhZ3MgbWFrZSB0aGUgYWJzb3JwdGlvbiBkZWNpc2lvbiBlZmZpY2ll bnQ6CisKKyAgaGFzQWJzb3JiYWJsZVN0YXRlIChtb25vdG9uaWM6IG9ubHkgdHJ1ZS0+ZmFsc2Ug dHJhbnNpdGlvbiBwb3NzaWJsZSkKKyAgICAiRG9lcyB0aGlzIGNvbnRleHQgaGF2ZSB0aGUgYWJp bGl0eSB0byBhYnNvcmIgb3RoZXIgY29udGV4dHM/IgorICAgIHRydWUgaWYgYXQgbGVhc3Qgb25l IGFic29yYmFibGUgc3RhdGUgZXhpc3RzLgorICAgIFRyYW5zaXRpb25zIHRvIGZhbHNlIHdoZW4g c3RhdGVzIGFyZSByZW1vdmVkIGxlYXZpbmcgbm8gYWJzb3JiYWJsZQorICAgIHN0YXRlcy4KKyAg ICBPbmNlIGZhbHNlLCBpdCBuZXZlciBiZWNvbWVzIHRydWUgYWdhaW4uCisKKyAgYWxsU3RhdGVz QWJzb3JiYWJsZSAoZHluYW1pYzogY2FuIGZsdWN0dWF0ZSkKKyAgICAiQ2FuIHRoaXMgY29udGV4 dCBiZSBhYnNvcmJlZD8iCisgICAgdHJ1ZSBpZiBhbGwgc3RhdGVzIGFyZSBpbiBhbiBhYnNvcmJh YmxlIHJlZ2lvbi4KKyAgICBCZWNvbWVzIGZhbHNlIHdoZW4gYSBub24tYWJzb3JiYWJsZSBzdGF0 ZSBpcyBhZGRlZDsgcmV2ZXJ0cyB0byB0cnVlCisgICAgd2hlbiBpdCBpcyByZW1vdmVkLgorCitW SUlJLTUuIEFic29ycHRpb24gT3JkZXIKKworbmZhX2Fic29yYl9jb250ZXh0cygpIHRyYXZlcnNl cyBmcm9tIHRhaWwgKG5ld2VzdCkgdG8gaGVhZCAob2xkZXN0KS4KKworICBmb3IgY3R4ID0gdGFp bCB0byBoZWFkOgorICAgICAgaWYgY3R4LmFsbFN0YXRlc0Fic29yYmFibGU6CisgICAgICAgICAg Zm9yIG9sZGVyID0gY3R4LnByZXYgdG8gaGVhZDoKKyAgICAgICAgICAgICAgaWYgb2xkZXIuaGFz QWJzb3JiYWJsZVN0YXRlOgorICAgICAgICAgICAgICAgICAgaWYgbmZhX3N0YXRlc19jb3ZlcmVk KG9sZGVyLCBjdHgpOgorICAgICAgICAgICAgICAgICAgICAgIGZyZWUoY3R4KSAgLS0gYWJzb3Ji ZWQKKyAgICAgICAgICAgICAgICAgICAgICBicmVhaworCitTaW5jZSBpbnNwZWN0aW9uIHN0YXJ0 cyBmcm9tIHRoZSBuZXdlc3QgY29udGV4dCwgdGhlIG1vc3QgcmVjZW50bHkgc3RhcnRlZAorKD0g aGF2aW5nIHRoZSBzaG9ydGVzdCBtYXRjaCkgY29udGV4dCBpcyBhYnNvcmJlZCBmaXJzdC4KKwor Q2hhcHRlciBJWCAgUGhhc2UgMzogQWR2YW5jZSAoRXBzaWxvbiBUcmFuc2l0aW9uIEV4cGFuc2lv bikKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKworSVgtMS4gT3ZlcnZpZXcKKworbmZhX2FkdmFuY2Uo KSBleHBhbmRzIGVwc2lsb24gdHJhbnNpdGlvbnMgZnJvbSBlYWNoIHN0YXRlIGFmdGVyIE1hdGNo LAorZ2VuZXJhdGluZyAibmV3IHN0YXRlcyB3YWl0aW5nIGZvciB0aGUgbmV4dCByb3cuIgorCitB biBlcHNpbG9uIHRyYW5zaXRpb24gaXMgYSB0cmFuc2l0aW9uIHRoYXQgbW92ZXMgd2l0aG91dCBj b25zdW1pbmcgYSByb3c6CisKKyAgLSBBTFQ6IGJyYW5jaCB0byBlYWNoIGFsdGVybmF0aXZlCisg IC0gQkVHSU46IGVudGVyIGdyb3VwIChvciBza2lwIGlmIG1pbj0wKQorICAtIEVORDogbG9vcC1i YWNrIHdpdGhpbiBncm91cCAob3IgZXhpdCB3aGVuIGNvbmRpdGlvbiBpcyBtZXQpCisgIC0gRklO OiByZWNvcmQgbWF0Y2ggY29tcGxldGlvbgorICAtIFZBUiBsb29wL2V4aXQ6IHJlcGVhdC9leGl0 IGFjY29yZGluZyB0byB0aGUgcXVhbnRpZmllcgorCitFeHBhbnNpb24gc3RvcHMgdXBvbiByZWFj aGluZyBhIFZBUiBlbGVtZW50LCBhbmQgdGhlIHN0YXRlIGlzIGFkZGVkLgorVGhpcyBpcyBiZWNh dXNlIFZBUiBpcyB0aGUgZWxlbWVudCB0aGF0ICJ3aWxsIGNvbnN1bWUgdGhlIG5leHQgcm93LiIK KworSVgtMi4gUHJvY2Vzc2luZyBPcmRlcjogREZTIGFuZCBQcmVmZXJtZW50CisKK2FkdmFuY2Ug cHJvY2Vzc2VzIHN0YXRlcyBpbiBsZXhpY29ncmFwaGljIG9yZGVyLAorcGVyZm9ybWluZyBEZXB0 aC1GaXJzdCBTZWFyY2ggKERGUykgb24gZWFjaCBzdGF0ZS4KKworVGhpcyBERlMgb3JkZXIgaXMg d2hhdCBndWFyYW50ZWVzIHRoZSBTUUwgc3RhbmRhcmQncyAicHJlZmVybWVudCI6CisKKyAgVGhl IGJyYW5jaCB0aGF0IGFwcGVhcnMgZmlyc3QgaW4gdGhlIFBBVFRFUk4gdGV4dCB0YWtlcyBwcmVj ZWRlbmNlLgorCitFeGFtcGxlOiBQQVRURVJOIChBIHwgQikgQworCisgIFRoZSBmaXJzdCBicmFu Y2ggQSBvZiB0aGUgQUxUIHRha2VzIHByZWNlZGVuY2Ugb3ZlciB0aGUgc2Vjb25kIGJyYW5jaCBC LgorICBXaGVuIGJvdGggQSBhbmQgQiBjYW4gbWF0Y2gsIHRoZSBtYXRjaCB2aWEgQSBpcyBzZWxl Y3RlZC4KKworbmZhX2FkZF9zdGF0ZV91bmlxdWUoKSBwcmV2ZW50cyBkdXBsaWNhdGUgYWRkaXRp b24gb2YgdGhlIHNhbWUgc3RhdGUsCitzbyB0aGUgc3RhdGUgYWRkZWQgZmlyc3QgKD0gZnJvbSB0 aGUgcHJlZmVycmVkIGJyYW5jaCkgaXMgcmV0YWluZWQuCisKK0lYLTMuIFJvdXRpbmcgRnVuY3Rp b246IG5mYV9yb3V0ZV90b19lbGVtKCkKKworQWxsIGludGVyLWVsZW1lbnQgdHJhbnNpdGlvbnMg aW4gdGhlIGFkdmFuY2UgcGhhc2UgZ28gdGhyb3VnaAorbmZhX3JvdXRlX3RvX2VsZW0oKS4KK1Ro aXMgZnVuY3Rpb24gYnJhbmNoZXMgaXRzIGJlaGF2aW9yIGJhc2VkIG9uIHRoZSB0eXBlIG9mIHRo ZSBuZXh0IGVsZW1lbnQ6CisKKyAgSWYgdGhlIG5leHQgZWxlbWVudCBpcyBWQVI6CisgICAgKDEp IEFkZCB0aGUgc3RhdGUgdG8gdGhlIGNvbnRleHQgKG5mYV9hZGRfc3RhdGVfdW5pcXVlKQorICAg ICgyKSBJZiB0aGUgVkFSIGhhcyBtaW49MCwgYWxzbyBhZGQgYSBza2lwIHBhdGggKHJlY3Vyc2Ug dmlhIG5leHQpCisgICAgLT4gRXhwYW5zaW9uIHN0b3BzIGhlcmUgKFZBUiBpcyB0aGUgZWxlbWVu dCB0aGF0ICJ3aWxsIGNvbnN1bWUgdGhlIG5leHQKKyAgICAgICByb3ciKQorCisgIElmIHRoZSBu ZXh0IGVsZW1lbnQgaXMgbm9uLVZBUiAoQUxULCBCRUdJTiwgRU5ELCBGSU4pOgorICAgIC0+IFJl Y3Vyc2l2ZWx5IGNhbGwgbmZhX2FkdmFuY2Vfc3RhdGUoKSB0byBjb250aW51ZSBleHBhbnNpb24K KworV2l0aCB0aGlzIHN0cnVjdHVyZSwgYWR2YW5jZSByZWN1cnNpdmVseSBmb2xsb3dzIGVwc2ls b24gdHJhbnNpdGlvbnMKK3VudGlsIHJlYWNoaW5nIGEgVkFSLCBjb25zaXN0ZW50bHkgc3RvcHBp bmcgb25seSBhdCBWQVIgZWxlbWVudHMuCisKK0lYLTQuIFBlci1FbGVtZW50IGFkdmFuY2UgQmVo YXZpb3IKKworKGEpIEFMVCAobmZhX2FkdmFuY2VfYWx0KQorCisgIFVwb24gZW5jb3VudGVyaW5n IGFuIEFMVCBlbGVtZW50LCBhbGwgYnJhbmNoZXMgYXJlIGV4cGFuZGVkIGluIG9yZGVyLgorICBU aGUgZmlyc3QgZWxlbWVudCBvZiBlYWNoIGJyYW5jaCBpcyBjb25uZWN0ZWQgdmlhIGEganVtcCBw b2ludGVyLgorCisgIGlkeD0wIChBTFQpIC0+IGJyYW5jaCAxIHN0YXJ0IChuZXh0KSAtPiBicmFu Y2ggMiBzdGFydCAoanVtcCkgLT4gLi4uCisKKyAgbmZhX2FkdmFuY2Vfc3RhdGUoKSBpcyByZWN1 cnNpdmVseSBjYWxsZWQgZm9yIGVhY2ggYnJhbmNoLgorCisoYikgQkVHSU4gKG5mYV9hZHZhbmNl X2JlZ2luKQorCisgIEhhbmRsZXMgZ3JvdXAgZW50cnkuCisgIGp1bXAgcG9pbnRzIHRvIHRoZSBl bGVtZW50IGFmdGVyIEVORCAoPSBmaXJzdCBlbGVtZW50IG91dHNpZGUgdGhlIGdyb3VwKS4KKwor ICBHcmVlZHkgKGRlZmF1bHQpOgorICAgICgxKSBFbnRlciB0aGUgZ3JvdXAgYm9keSAobW92ZSB2 aWEgbmV4dCwgcmVzZXQgdGhlIGNvdW50IGF0IHRoYXQgZGVwdGgpCisgICAgKDIpIElmIG1pbj0w LCBhbHNvIGFkZCBhIGdyb3VwIHNraXAgcGF0aCAobW92ZSB2aWEganVtcCkKKworICBSZWx1Y3Rh bnQ6CisgICAgT3JkZXIgcmV2ZXJzZWQgLS0gc2tpcCBwYXRoIGZpcnN0LCBncm91cCBlbnRyeSBz ZWNvbmQuCisgICAgSWYgdGhlIHNraXAgcGF0aCByZWFjaGVzIEZJTiwgdGhlIGdyb3VwIGVudHJ5 IHBhdGggaXMgbm90IGdlbmVyYXRlZAorICAgIChzaG9ydGVzdCBtYXRjaCBwcmVmZXJyZWQpLgor CisoYykgRU5EIChuZmFfYWR2YW5jZV9lbmQpCisKKyAgSGFuZGxlcyBncm91cCB0ZXJtaW5hdGlv bi4gVGhpcyBpcyB0aGUgY29yZSBvZiB0aGUgcmVwZXRpdGlvbiBsb2dpYy4KKworICBMZXQgY291 bnQgYmUgdGhlIGNvdW50IGF0IHRoZSBjdXJyZW50IGRlcHRoOgorCisgIGNvdW50IDwgbWluOgor ICAgIExvb3AtYmFjayAobW92ZSB2aWEganVtcCwgcmVwZWF0IHRoZSBncm91cCBib2R5KQorCisg ICAgSWYgdGhlIFJQUl9FTEVNX0VNUFRZX0xPT1AgZmxhZyBpcyBzZXQ6CisgICAgICBJbiBhZGRp dGlvbiB0byBsb29wLWJhY2ssIGFsc28gYWRkIGEgZmFzdC1mb3J3YXJkIGV4aXQgcGF0aC4KKyAg ICAgIFRoaXMgaXMgYmVjYXVzZSB0aGUgYm9keSBtYXkgcHJvZHVjZSBhbiBlbXB0eSBtYXRjaCwg Y2F1c2luZyBjb3VudAorICAgICAgdG8gbmV2ZXIgcmVhY2ggbWluLiBmYXN0LWZvcndhcmQgcmVz ZXRzIGNvdW50c1tkZXB0aF0gdG8gMAorICAgICAgYW5kIGV4aXRzIHZpYSBuZXh0ICh0cmVhdGlu ZyB0aGUgcmVtYWluaW5nIHJlcXVpcmVkIGl0ZXJhdGlvbnMKKyAgICAgIGFzIGVtcHR5IG1hdGNo ZXMpLgorCisgIG1pbiA8PSBjb3VudCA8IG1heDoKKyAgICBHcmVlZHk6IGxvb3AtYmFjayBmaXJz dCwgZXhpdCBzZWNvbmQKKyAgICBSZWx1Y3RhbnQ6IGV4aXQgZmlyc3QsIGxvb3AtYmFjayBzZWNv bmQKKyAgICAgICAgICAgICAgIElmIHRoZSBleGl0IHBhdGggcmVhY2hlcyBGSU4sIGxvb3AtYmFj ayBpcyBvbWl0dGVkLgorCisgIGNvdW50ID49IG1heDoKKyAgICBVbmNvbmRpdGlvbmFsIGV4aXQg KG1vdmUgdmlhIG5leHQpCisKKyAgT24gZXhpdDogcmVzZXQgY291bnRzW2RlcHRoXSA9IDAsIGFu ZCBpZiB0aGUgbmV4dCBlbGVtZW50IGlzIGFuIG91dGVyIEVORCwKKyAgaW5jcmVtZW50IHRoZSBj b3VudCBhdCB0aGUgb3V0ZXIgZGVwdGguCisKKyhkKSBWQVIgKG5mYV9hZHZhbmNlX3ZhcikKKwor ICBIYW5kbGVzIHJlcGVhdC9leGl0IGZvciBhIFZBUiBlbGVtZW50IHdpdGggYSBxdWFudGlmaWVy LgorCisgIExldCBjb3VudCBiZSB0aGUgY291bnQgYXQgdGhlIGN1cnJlbnQgZGVwdGg6CisKKyAg Y291bnQgPCBtaW46CisgICAgVW5jb25kaXRpb25hbCBsb29wIChzdGF5IGF0IHRoZSBzYW1lIGVs ZW1JZHgsIHdhaXQgZm9yIHRoZSBuZXh0IHJvdykKKworICBtaW4gPD0gY291bnQgPCBtYXg6Cisg ICAgR3JlZWR5OiBsb29wIGZpcnN0LCBleGl0IChuZXh0KSBzZWNvbmQKKyAgICBSZWx1Y3RhbnQ6 IGV4aXQgZmlyc3QsIGxvb3Agc2Vjb25kCisgICAgICAgICAgICAgICBJZiB0aGUgZXhpdCBwYXRo IHJlYWNoZXMgRklOLCBsb29wIGlzIG9taXR0ZWQuCisKKyAgY291bnQgPj0gbWF4OgorICAgIFVu Y29uZGl0aW9uYWwgZXhpdCAobW92ZSB2aWEgbmV4dCkKKworICBPbiBleGl0OiByZXNldCBjb3Vu dHNbZGVwdGhdID0gMC4KKworKGUpIEZJTgorCisgIE1hdGNoIHN1Y2Nlc3MuIFRoZSBjdXJyZW50 IHN0YXRlIGlzIG1vdmVkIHRvIG1hdGNoZWRTdGF0ZSBmb3IgcmVjb3JkaW5nLAorICBhbmQgbWF0 Y2hFbmRSb3cgaXMgc2V0IHRvIHRoZSBjdXJyZW50IHJvdy4KKworICBVcG9uIHJlYWNoaW5nIEZJ TiwgYWxsIHJlbWFpbmluZyB1bnByb2Nlc3NlZCBzdGF0ZXMgYXJlIHJlbW92ZWQKKyAgKGVhcmx5 IHRlcm1pbmF0aW9uKS4gQnkgREZTIG9yZGVyLCB0aGUgcGF0aCB0aGF0IHJlYWNoZWQgRklOIGZp cnN0CisgIGhhcyB0aGUgaGlnaGVzdCBwcmVmZXJtZW50LCBzbyB0aGUgcmVzdCBhcmUgaW5mZXJp b3IgcGF0aHMuCisgIFRoaXMgaXMgdGhlIGNvcmUgbWVjaGFuaXNtIHRoYXQgZ3VhcmFudGVlcyBw cmVmZXJtZW50LgorCisgIEluIFNLSVAgUEFTVCBMQVNUIFJPVyBtb2RlLCB1cG9uIHJlYWNoaW5n IEZJTiwgc3Vic2VxdWVudCBjb250ZXh0cworICB0aGF0IHN0YXJ0ZWQgd2l0aGluIHRoZSBtYXRj aCByYW5nZSBhcmUgaW1tZWRpYXRlbHkgcHJ1bmVkLgorCitJWC01LiBTdGF0ZSBEZWR1cGxpY2F0 aW9uOiBuZmFfYWRkX3N0YXRlX3VuaXF1ZSgpCisKK1doZW4gYWRkaW5nIGEgbmV3IHN0YXRlIHRv IGEgY29udGV4dCwgaXQgaXMgY29tcGFyZWQgYWdhaW5zdCBleGlzdGluZworc3RhdGVzOworaWYg YW4gaWRlbnRpY2FsIHN0YXRlIGFscmVhZHkgZXhpc3RzLCBpdCBpcyBub3QgYWRkZWQuCisKK0Nv bXBhcmlzb24gY3JpdGVyaWE6IGVsZW1JZHggKyBjb3VudHNbMC4uZWxlbS0+ZGVwdGhdIChzZWUg Vi0xKQorCitUaGlzIGRlZHVwbGljYXRpb24gaXMgdGhlIGNvcmUgbWVjaGFuaXNtIHRoYXQgc3Vw cHJlc3NlcyBORkEgc3RhdGUKK2V4cGxvc2lvbi4KK0JlY2F1c2UgREZTIG9yZGVyIGNhdXNlcyBw cmVmZXJyZWQtYnJhbmNoIHN0YXRlcyB0byBiZSBhZGRlZCBmaXJzdCwKK2lkZW50aWNhbCBzdGF0 ZXMgZnJvbSBsb3dlci1wcmlvcml0eSBicmFuY2hlcyBhcmUgYXV0b21hdGljYWxseSBkaXNjYXJk ZWQuCisKK0lYLTYuIEN5Y2xlIERldGVjdGlvbjogbmZhVmlzaXRlZEVsZW1zCisKK1doZW4gYSBn cm91cCBib2R5IGNhbiBwcm9kdWNlIGFuIGVtcHR5IG1hdGNoLAorbG9vcGluZyBiYWNrIGZyb20g RU5EIG1heSBjYXVzZSBhbiBpbmZpbml0ZSBsb29wLgorCitFeGFtcGxlOiBQQVRURVJOICgoQT8p KikKKworICBBPyBoYXMgbWluPTAsIHNvIGl0IGNhbiBwYXNzIHRocm91Z2ggd2l0aG91dCBtYXRj aGluZy4KKyAgSWYgdGhlIG91dGVyIGdyb3VwIHJlcGVhdHM6IEJFR0lOIC0+IEE/IHNraXAgLT4g RU5EIC0+IEJFR0lOIC0+IC4uLgorCitUbyBwcmV2ZW50IHRoaXM6CisKKyAgKDEpIEF0IGNvbXBp bGUgdGltZTogc2V0IHRoZSBSUFJfRUxFTV9FTVBUWV9MT09QIGZsYWcgb24gdGhlIEVORAorICAg ICAgb2YgZ3JvdXBzIHdob3NlIGJvZHkgaXMgbnVsbGFibGUuCisgICAgICBUaGUgcnVudGltZSBl ZmZlY3Qgb2YgdGhpcyBmbGFnIGlzIGRlc2NyaWJlZCBpbiBJWC00KGMpOgorICAgICAgd2hlbiBj b3VudCA8IG1pbiwgYSBmYXN0LWZvcndhcmQgZXhpdCBwYXRoIGlzIGFkZGVkLAorICAgICAgcmVz b2x2aW5nIHRoZSBkZWFkbG9jayB3aGVyZSBjb3VudCBjYW5ub3QgaW5jcmVhc2UgZHVlIHRvIGVt cHR5CisgICAgICBtYXRjaGVzLgorCisgICgyKSBBdCBydW50aW1lOiBpbml0aWFsaXplIHRoZSBu ZmFWaXNpdGVkRWxlbXMgYml0bWFwIGltbWVkaWF0ZWx5IGJlZm9yZQorICAgICAgREZTIGV4cGFu c2lvbiBvZiBlYWNoIHN0YXRlIHdpdGhpbiBhZHZhbmNlIChvbmNlIHBlciBzdGF0ZSkuCisgICAg ICBEdXJpbmcgREZTLCBlcHNpbG9uIGVsZW1lbnRzIChFTkQsIEFMVCwgQkVHSU4pIGFyZSBtYXJr ZWQgaW4gdGhlCisgICAgICBiaXRtYXAgYXQgbmZhX2FkdmFuY2Vfc3RhdGUgZW50cnkuICBWQVIg ZWxlbWVudHMgYXJlIG1hcmtlZCBsYXRlcgorICAgICAgd2hlbiBhZGRlZCB0byB0aGUgc3RhdGUg bGlzdCAobmZhX2FkZF9zdGF0ZV91bmlxdWUpLCBzbyB0aGF0CisgICAgICBsZWdpdGltYXRlIGxv b3AtYmFjayB0byB0aGUgc2FtZSBWQVIgaW4gYSBuZXcgZ3JvdXAgaXRlcmF0aW9uCisgICAgICAo ZS5nLiwgRU5EIC0+IEFMVCAtPiBzYW1lIFZBUikgaXMgbm90IGJsb2NrZWQuCisgICAgICBJZiBh IHByZXZpb3VzbHkgdmlzaXRlZCBlbGVtSWR4IGlzIHJldmlzaXRlZCwgdGhhdCBwYXRoIGlzIHRl cm1pbmF0ZWQuCisKKyAgTm90ZTogdGhlIGJpdG1hcCB0cmFja3Mgb25seSBlbGVtSWR4IGFuZCBk b2VzIG5vdCBjb25zaWRlciBjb3VudHMuCisgIFRoZXJlZm9yZSwgbGVnaXRpbWF0ZSByZXZpc2l0 cyB0byB0aGUgc2FtZSBlbGVtSWR4IGJ1dCB3aXRoIGRpZmZlcmVudAorICBjb3VudHMgbWF5IGFs c28gYmUgYmxvY2tlZC4gIFRoaXMgb25seSBvY2N1cnMgd2hlbiB0aGUgZ3JvdXAgYm9keSBpcwor ICBudWxsYWJsZSAoYWxsIHBhdGhzIGNhbiBtYXRjaCBlbXB0eSksIGNhdXNpbmcgRU5EIC0+IGxv b3AtYmFjayAtPgorICBza2lwIC0+IEVORCB3aXRoaW4gYSBzaW5nbGUgREZTLiAgSW4gc3VjaCBj YXNlcyB0aGUgRU5EIGVsZW1lbnQgaGFzCisgIHRoZSBSUFJfRUxFTV9FTVBUWV9MT09QIGZsYWcs IHNvIHRoZSBmYXN0LWZvcndhcmQgZXhpdCAoSVgtNChjKSkKKyAgcHJvdmlkZXMgYW4gYWx0ZXJu YXRpdmUgcGF0aCB0aGF0IGJ5cGFzc2VzIHRoZSBjeWNsZS4KKworQ2hhcHRlciBYICBNYXRjaCBS ZXN1bHQgUHJvY2Vzc2luZworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitYLTEuIE1hdGNoIFJlc3Vs dAorCitSUFIgdHJhY2tzIHRoZSBjdXJyZW50IG1hdGNoIHJlc3VsdCBhcyBhIHNpbmdsZSBlbnRy eSBpbiBXaW5kb3dBZ2dTdGF0ZQord2l0aCBmb3VyIGZpZWxkczogcnByX21hdGNoX3ZhbGlkLCBy cHJfbWF0Y2hfbWF0Y2hlZCwgcnByX21hdGNoX3N0YXJ0LAorYW5kIHJwcl9tYXRjaF9sZW5ndGgu ICBXaGVuIHJwcl9tYXRjaF92YWxpZCBpcyB0cnVlLCB0aGUgZW50cnkgZGVzY3JpYmVzCit0aGUg bWF0Y2ggcmVzdWx0IGZvciB0aGUgcG9zaXRpb24gYXQgcnByX21hdGNoX3N0YXJ0OiBycHJfbWF0 Y2hfbWF0Y2hlZAoraW5kaWNhdGVzIHN1Y2Nlc3Mgb3IgZmFpbHVyZSwgYW5kIHJwcl9tYXRjaF9s ZW5ndGggZ2l2ZXMgdGhlIG51bWJlciBvZgorcm93cyBjb25zdW1lZC4gIEEgbWF0Y2ggd2l0aCBy cHJfbWF0Y2hfbGVuZ3RoIDAgcmVwcmVzZW50cyBhbiBlbXB0eSBtYXRjaAorKHBhdHRlcm4gbWF0 Y2hlZCBidXQgY29uc3VtZWQgbm8gcm93cykuICBXaGVuIHJwcl9tYXRjaF92YWxpZCBpcyBmYWxz ZSwKK3RoZSBwb3NpdGlvbiBoYXMgbm90IGJlZW4gZXZhbHVhdGVkIHlldCAoUkZfTk9UX0RFVEVS TUlORUQpLgorCitBIHJvdydzIHN0YXR1cyBhZ2FpbnN0IHRoZSBjdXJyZW50IG1hdGNoIHJlc3Vs dCBjYW4gYmUgb2J0YWluZWQgYnkKK2NhbGxpbmcgZ2V0X3JlZHVjZWRfZnJhbWVfc3RhdHVzKCku CisKK1gtMi4gQUZURVIgTUFUQ0ggU0tJUAorCitEZXRlcm1pbmVzIHRoZSBzdGFydGluZyBwb2lu dCBmb3IgdGhlIG5leHQgbWF0Y2ggYXR0ZW1wdCBhZnRlciBhIHN1Y2Nlc3NmdWwKK21hdGNoOgor CisgIFNLSVAgVE8gTkVYVCBST1c6CisgICAgTmV3IG1hdGNoIGF0dGVtcHQgYmVnaW5zIGZyb20g dGhlIHJvdyBhZnRlciB0aGUgbWF0Y2ggc3RhcnQgcm93LgorICAgIE92ZXJsYXBwaW5nIG1hdGNo ZXMgYXJlIHBvc3NpYmxlLgorCisgIFNLSVAgUEFTVCBMQVNUIFJPVzoKKyAgICBOZXcgbWF0Y2gg YXR0ZW1wdCBiZWdpbnMgZnJvbSB0aGUgcm93IGFmdGVyIHRoZSBtYXRjaCBlbmQgcm93LgorICAg IE9ubHkgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgYXJlIHBvc3NpYmxlLgorCitYLTMuIElOSVRJ QUwgdnMgU0VFSworCisgIFN0YW5kYXJkIGRlZmluaXRpb24gKElTTy9JRUMgMTkwNzUtNSA2LjEy KToKKyAgSU5JVElBTDogImlzIHVzZWQgdG8gbG9vayBmb3IgYSBtYXRjaCB3aG9zZSBmaXJzdCBy b3cgaXMgUi4iCisgIFNFRUs6ICAgICJpcyB1c2VkIHRvIHBlcm1pdCBhIHNlYXJjaCBmb3IgdGhl IGZpcnN0IG1hdGNoIGFueXdoZXJlCisgICAgICAgICAgIGZyb20gUiB0aHJvdWdoIHRoZSBlbmQg b2YgdGhlIGZ1bGwgd2luZG93IGZyYW1lLiIKKyAgSW4gZWl0aGVyIGNhc2UsIGlmIHRoZXJlIGlz IG5vIG1hdGNoLCB0aGUgcmVkdWNlZCB3aW5kb3cgZnJhbWUgaXMgZW1wdHkuCisgIFRoZSBkZWZh dWx0IGlzIElOSVRJQUwuCisKKyAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbjoKKyAgU0VFSyBpcyBu b3Qgc3VwcG9ydGVkICh0aGUgcGFyc2VyIHJhaXNlcyBhbiBlcnJvcikuCisgIE9ubHkgSU5JVElB TCBpcyBzdXBwb3J0ZWQsIHNlYXJjaGluZyBvbmx5IGZvciBtYXRjaGVzIHN0YXJ0aW5nIGF0IGVh Y2gKKyAgcm93IHBvc2l0aW9uIHBvcy4KKworWC00LiBCb3VuZGVkIEZyYW1lIEhhbmRsaW5nCisK KyAgV2l0aCBSUFIsIHRoZSBmcmFtZSBtb2RlIGlzIGFsd2F5cyBST1dTIGFuZCB0aGUgZnJhbWUg c3RhcnQgbXVzdCBiZQorICBDVVJSRU5UIFJPVy4gVGhlIGZyYW1lIGVuZCBtdXN0IGJlIFVOQk9V TkRFRCBGT0xMT1dJTkcgb3IgYSBwb3NpdGl2ZQorICBvZmZzZXQgKG4gPj0gMSkgRk9MTE9XSU5H OyBhIENVUlJFTlQgUk9XIGVuZCBvciBhIHplcm8gb2Zmc2V0IGlzCisgIHJlamVjdGVkLCBzaW5j ZSBpdCB3b3VsZCByZWR1Y2UgdGhlIGZyYW1lIHRvIHRoZSBzaW5nbGUgY3VycmVudCByb3cuCisK KyAgV2hlbiB0aGUgZnJhbWUgaXMgYm91bmRlZCAoZS5nLiwgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCA1CisgIEZPTExPV0lORyksIEV4ZWNSUFJQcm9jZXNzUm93IHJlY2VpdmVzIGhhc0xp bWl0ZWRGcmFtZT10cnVlIGFuZAorICBmcmFtZU9mZnNldCBpbmRpY2F0aW5nIHRoZSB1cHBlciBi b3VuZC4gIEJlZm9yZSB0aGUgbWF0Y2ggcGhhc2UsCisgIGFueSBjb250ZXh0IHdob3NlIG1hdGNo IGhhcyBleGNlZWRlZCB0aGUgZnJhbWUgYm91bmRhcnkKKyAgKGN1cnJlbnRQb3MgPj0gbWF0Y2hT dGFydFJvdyArIGZyYW1lT2Zmc2V0ICsgMSkgaXMgZmluYWxpemVkIGVhcmx5CisgIGJ5IGZvcmNp bmcgYSBtaXNtYXRjaC4gIFRoaXMgcHJldmVudHMgbWF0Y2hlcyBmcm9tIGV4dGVuZGluZyBiZXlv bmQKKyAgdGhlIHdpbmRvdyBmcmFtZS4gIFRoZSBzdW0gaXMgY2xhbXBlZCB0byBQR19JTlQ2NF9N QVggb24gb3ZlcmZsb3cuCisKKyAgTm90ZSB0aGF0IGJvdW5kZWQgZnJhbWVzIGFsc28gZGlzYWJs ZSBjb250ZXh0IGFic29ycHRpb24gYXQgdGhlCisgIHBsYW5uZXIgbGV2ZWwgKHNlZSBWSUlJLTMo YikpLCBzaW5jZSB0aGUgZnJhbWUgYm91bmRhcnkgYnJlYWtzIHRoZQorICBtb25vdG9uaWNpdHkg YXNzdW1wdGlvbiByZXF1aXJlZCBmb3IgY29ycmVjdCBhYnNvcnB0aW9uLgorCitDaGFwdGVyIFhJ ICBXb3JrZWQgRXhhbXBsZTogRnVsbCBFeGVjdXRpb24gVHJhY2UKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworWEktMS4gUXVlcnkKKworICBTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAg ICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAg IGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UKKyAgRlJPTSBzdG9jaworICBX SU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBPUkRFUiBCWSB0ZGF0 ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgICAgICAgICAgQiBBUyBwcmlj ZSA8IFBSRVYocHJpY2UpCisgICk7CisKK1hJLTIuIERhdGEKKworICBSb3cjICAgIHRkYXRlICAg ICAgIHByaWNlCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIDAgICAgICAgMjAyNC0w MS0wMSAgMTAwCisgIDEgICAgICAgMjAyNC0wMS0wMiAgMTEwCisgIDIgICAgICAgMjAyNC0wMS0w MyAgMTIwCisgIDMgICAgICAgMjAyNC0wMS0wNCAgMTE1CisgIDQgICAgICAgMjAyNC0wMS0wNSAg MTMwCisKK1hJLTMuIENvbXBpbGF0aW9uIFJlc3VsdAorCisgIFBBVFRFUk4gKEErIEIpIC0+IHVu Y2hhbmdlZCBhZnRlciBvcHRpbWl6YXRpb24KKworICBpZHggIHZhcklkICBkZXB0aCAgbWluICBt YXggIG5leHQgIGp1bXAKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgIDAgICBBKDApICAgMCAgICAgIDEgICAgSU5GICAxICAgICAtMSAgICAgQSsKKyAgIDEg ICBCKDEpICAgMCAgICAgIDEgICAgMSAgICAyICAgICAtMSAgICAgQgorICAgMiAgIEZJTiAgICAw ICAgICAgMSAgICAxICAgIC0xICAgIC0xCisKKyAgREVGSU5FOiBBIC0+ICJwcmljZSA+IFBSRVYo cHJpY2UpIiwgQiAtPiAicHJpY2UgPCBQUkVWKHByaWNlKSIKKyAgaXNBYnNvcmJhYmxlID0gdHJ1 ZSAoQSsgaXMgYSBzaW1wbGUgdW5ib3VuZGVkIFZBUikKKworWEktNC4gRXhlY3V0aW9uIFRyYWNl CisKKy0tLSBSb3cgMCAocHJpY2U9MTAwKSAtLS0KKworICB1cGRhdGVfcmVkdWNlZF9mcmFtZSgw KSBjYWxsZWQuCisKKyAgQ29udGV4dCBDMCBjcmVhdGVkIChtYXRjaFN0YXJ0Um93PTApLgorICBJ bml0aWFsIGFkdmFuY2U6IGVsZW1JZHg9MChBKSAtPiBWQVIsIHNvIHN0YXRlIGlzIGFkZGVkLgor ICBDMC5zdGF0ZXMgPSBbe2VsZW1JZHg9MCwgY291bnRzPVswXX1dCisKKyAgbmZhX2V2YWx1YXRl X3JvdygwKToKKyAgICBBOiBwcmljZSgxMDApID4gUFJFVihwcmljZSkgLT4gbm8gUFJFViAtPiBm YWxzZQorICAgIEI6IHByaWNlKDEwMCkgPCBQUkVWKHByaWNlKSAtPiBubyBQUkVWIC0+IGZhbHNl CisgICAgdmFyTWF0Y2hlZCA9IFtmYWxzZSwgZmFsc2VdCisKKyAgRXhlY1JQUlByb2Nlc3NSb3co MCk6CisgICAgUGhhc2UgMSAoTWF0Y2gpOiBBKDApIHN0YXRlIHZzIHZhck1hdGNoZWRbMF09ZmFs c2UgLT4gc3RhdGUgcmVtb3ZlZAorICAgIEMwLnN0YXRlcyA9IFtdIChlbXB0eSkKKworICAgIFBo YXNlIDIgKEFic29yYik6IHNraXBwZWQgKG5vIHN0YXRlcykKKyAgICBQaGFzZSAzIChBZHZhbmNl KTogc2tpcHBlZCAobm8gc3RhdGVzKQorCisgIEMwLnN0YXRlcyBpcyBlbXB0eSwgc28gdGhlIGxv b3AgdGVybWluYXRlcy4KKyAgbWF0Y2hFbmRSb3cgPCBtYXRjaFN0YXJ0Um93IC0+IHVubWF0Y2hl ZC4KKworLS0tIFJvdyAxIChwcmljZT0xMTApIC0tLQorCisgIHVwZGF0ZV9yZWR1Y2VkX2ZyYW1l KDEpIGNhbGxlZC4KKworICBDb250ZXh0IEMxIGNyZWF0ZWQgKG1hdGNoU3RhcnRSb3c9MSkuCisg IEluaXRpYWwgYWR2YW5jZTogQzEuc3RhdGVzID0gW3tlbGVtSWR4PTAsIGNvdW50cz1bMF19XQor CisgIG5mYV9ldmFsdWF0ZV9yb3coMSk6CisgICAgQTogMTEwID4gUFJFVigxMDApIC0+IHRydWUK KyAgICBCOiAxMTAgPCBQUkVWKDEwMCkgLT4gZmFsc2UKKyAgICB2YXJNYXRjaGVkID0gW3RydWUs IGZhbHNlXQorCisgIEV4ZWNSUFJQcm9jZXNzUm93KDEpOgorICAgIFBoYXNlIDEgKE1hdGNoKTog QSgwKSBtYXRjaCBzdWNjZWVkcyAtPiBjb3VudHNbMF0rKyAtPiBjb3VudHM9WzFdCisgICAgQzEu c3RhdGVzID0gW3tlbGVtSWR4PTAsIGNvdW50cz1bMV19XQorCisgICAgUGhhc2UgMyAoQWR2YW5j ZSk6CisgICAgICBTdGF0ZSB7ZWxlbUlkeD0wLCBjb3VudHM9WzFdfTogQSsgKG1pbj0xLCBjb3Vu dD0xLCBtYXg9SU5GKQorICAgICAgICBjb3VudCA+PSBtaW4sIHNvOgorICAgICAgICBHcmVlZHkg LT4gbG9vcCBmaXJzdDoga2VlcCB7ZWxlbUlkeD0wLCBjb3VudHM9WzFdfQorICAgICAgICAgICAg ICAgICAgZXhpdDogcmVzZXQgY291bnRzWzBdPTAsIG5leHQoPTEpIC0+IHtlbGVtSWR4PTEsCisg ICAgICAgICAgICAgICAgICAgICAgICBjb3VudHM9WzBdfQorICAgIEMxLnN0YXRlcyA9IFt7ZWxl bUlkeD0wLCBjb3VudHM9WzFdfSwge2VsZW1JZHg9MSwgY291bnRzPVswXX1dCisKKy0tLSBSb3cg MiAocHJpY2U9MTIwKSAtLS0KKworICBDb250ZXh0IEMyIGNyZWF0ZWQgKG1hdGNoU3RhcnRSb3c9 MikuCisgIEluaXRpYWwgYWR2YW5jZTogQzIuc3RhdGVzID0gW3tlbGVtSWR4PTAsIGNvdW50cz1b MF19XQorCisgIG5mYV9ldmFsdWF0ZV9yb3coMik6CisgICAgQTogMTIwID4gUFJFVigxMTApIC0+ IHRydWUKKyAgICBCOiAxMjAgPCBQUkVWKDExMCkgLT4gZmFsc2UKKyAgICB2YXJNYXRjaGVkID0g W3RydWUsIGZhbHNlXQorCisgIEMxIEV4ZWNSUFJQcm9jZXNzUm93KDIpOgorICAgIFBoYXNlIDEg KE1hdGNoKToKKyAgICAgIHtlbGVtSWR4PTAsIGNvdW50cz1bMV19OiBBIG1hdGNoZXMgLT4gY291 bnRzPVsyXQorICAgICAge2VsZW1JZHg9MSwgY291bnRzPVswXX06IEIgZG9lcyBub3QgbWF0Y2gg LT4gcmVtb3ZlZAorICAgIEMxLnN0YXRlcyA9IFt7ZWxlbUlkeD0wLCBjb3VudHM9WzJdfV0KKwor ICBDMiBFeGVjUlBSUHJvY2Vzc1JvdygyKToKKyAgICBQaGFzZSAxIChNYXRjaCk6CisgICAgICB7 ZWxlbUlkeD0wLCBjb3VudHM9WzBdfTogQSBtYXRjaGVzIC0+IGNvdW50cz1bMV0KKyAgICBDMi5z dGF0ZXMgPSBbe2VsZW1JZHg9MCwgY291bnRzPVsxXX1dCisKKyAgICBQaGFzZSAyIChBYnNvcmIp OgorICAgICAgRG9lcyBDMSAoc3RhcnRlZCBlYXJsaWVyKSBjb3ZlciBDMj8KKyAgICAgICAgQzE6 IHtlbGVtSWR4PTAsIGNvdW50cz1bMl19LCBDMjoge2VsZW1JZHg9MCwgY291bnRzPVsxXX0KKyAg ICAgICAgU2FtZSBlbGVtSWR4LCBDMS5jb3VudHMgPj0gQzIuY291bnRzIC0+IGNvdmVyZWQKKyAg ICAgIEMyIGFic29yYmVkLiAtPiByZW1vdmVkLgorCisgICAgUGhhc2UgMyAoQWR2YW5jZSk6Cisg ICAgICB7ZWxlbUlkeD0wLCBjb3VudHM9WzJdfTogR3JlZWR5IC0+IGxvb3AgKyBleGl0CisgICAg ICAgIExvb3A6IHtlbGVtSWR4PTAsIGNvdW50cz1bMl19CisgICAgICAgIEV4aXQ6IHJlc2V0IGNv dW50c1swXT0wLCBuZXh0KD0xKSAtPiB7ZWxlbUlkeD0xLCBjb3VudHM9WzBdfQorICAgIEMxLnN0 YXRlcyA9IFt7ZWxlbUlkeD0wLCBjb3VudHM9WzJdfSwge2VsZW1JZHg9MSwgY291bnRzPVswXX1d CisKKyAgQ29udGV4dCBDMyBjcmVhdGVkIChtYXRjaFN0YXJ0Um93PTMpLgorCistLS0gUm93IDMg KHByaWNlPTExNSkgLS0tCisKKyAgbmZhX2V2YWx1YXRlX3JvdygzKToKKyAgICBBOiAxMTUgPiBQ UkVWKDEyMCkgLT4gZmFsc2UKKyAgICBCOiAxMTUgPCBQUkVWKDEyMCkgLT4gdHJ1ZQorICAgIHZh ck1hdGNoZWQgPSBbZmFsc2UsIHRydWVdCisKKyAgRXhlY1JQUlByb2Nlc3NSb3coMyk6CisgICAg UGhhc2UgMSAoTWF0Y2gpOgorICAgICAge2VsZW1JZHg9MCwgY291bnRzPVsyXX06IEEgZG9lcyBu b3QgbWF0Y2ggLT4gcmVtb3ZlZAorICAgICAge2VsZW1JZHg9MSwgY291bnRzPVswXX06IEIgbWF0 Y2hlcyAtPiBjb3VudHM9WzFdCisgICAgQzEuc3RhdGVzID0gW3tlbGVtSWR4PTEsIGNvdW50cz1b MV19XQorCisgICAgUGhhc2UgMyAoQWR2YW5jZSk6CisgICAgICB7ZWxlbUlkeD0xLCBjb3VudHM9 WzFdfTogQiAobWluPTEsIG1heD0xKQorICAgICAgICBjb3VudCgxKSA+PSBtYXgoMSkgLT4gdW5j b25kaXRpb25hbCBleGl0CisgICAgICAgIFJlc2V0IGNvdW50c1swXT0wLCBuZXh0ID0gMiAoRklO KQorICAgICAgRklOIHJlYWNoZWQgLT4gbWF0Y2hFbmRSb3cgPSAzLCBtYXRjaGVkU3RhdGUgcmVj b3JkZWQuCisgICAgICBFYXJseSB0ZXJtaW5hdGlvbjogbm8gcmVtYWluaW5nIHN0YXRlcywgc28g Y29tcGxldGVkIGltbWVkaWF0ZWx5LgorICAgIEMxLnN0YXRlcyA9IFtdIChlbXB0eSBhZnRlciBy ZWFjaGluZyBGSU4pCisKKyAgQzEuc3RhdGVzIGlzIGVtcHR5IGFuZCBtYXRjaEVuZFJvdz0zID49 IG1hdGNoU3RhcnRSb3c9MSAtPiBtYXRjaCBzdWNjZWVkcy4KKworICBycHJfbWF0Y2hfc3RhcnQg PSAxLCBycHJfbWF0Y2hfbGVuZ3RoID0gMworCistLS0gUm93IDQgKHByaWNlPTEzMCkgLS0tCisK KyAgdXBkYXRlX3JlZHVjZWRfZnJhbWUoNCkgY2FsbGVkLgorICBDMyB3YXMgYWxyZWFkeSBjcmVh dGVkIGJ1dCBtYXRjaFN0YXJ0Um93PTMsIHNvIGl0IGlzIG5vdCBhcHBsaWNhYmxlLgorICBOZXcg Y29udGV4dCBDNCBjcmVhdGVkIChtYXRjaFN0YXJ0Um93PTQpLgorCisgIG5mYV9ldmFsdWF0ZV9y b3coNCk6CisgICAgQTogMTMwID4gUFJFVigxMTUpIC0+IHRydWUKKyAgICBCOiAxMzAgPCBQUkVW KDExNSkgLT4gZmFsc2UKKworICAuLi4gTm8gc3Vic2VxdWVudCByb3dzLCBzbyBFeGVjUlBSRmlu YWxpemVBbGxDb250ZXh0cygpIGlzIGNhbGxlZC4KKyAgTWF0Y2ggaW5jb21wbGV0ZSAtPiB1bm1h dGNoZWQuCisKK1hJLTUuIEZpbmFsIFJlc3VsdAorCisgIFJvdyAwOiB1bm1hdGNoZWQgICAgIC0+ IHJlZHVjZWQgZnJhbWUgZW1wdHkgKHdpbmRvdyBmdW5jcyBOVUxMLCBjb3VudCgpIDApCisgIFJv dyAxOiBtYXRjaCBoZWFkICAgIC0+IGZyYW1lID0gcm93cyAxIHRocm91Z2ggMworICBSb3cgMjog aW5zaWRlIG1hdGNoICAtPiBza2lwcGVkCisgIFJvdyAzOiBpbnNpZGUgbWF0Y2ggIC0+IHNraXBw ZWQKKyAgUm93IDQ6IHVubWF0Y2hlZCAgICAgLT4gcmVkdWNlZCBmcmFtZSBlbXB0eSAod2luZG93 IGZ1bmNzIE5VTEwsIGNvdW50KCkgMCkKKworQ2hhcHRlciBYSUkgIFN1bW1hcnkgb2YgS2V5IERl c2lnbiBEZWNpc2lvbnMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworWElJLTEuIEZsYXQgQXJyYXkg dnMgVHJlZS1CYXNlZCBORkEKKworICBUaGUgY29tcGlsZWQgcGF0dGVybiBpcyBzdG9yZWQgYXMg YSBmbGF0IGFycmF5IG9mIGZpeGVkLXNpemUgMTYtYnl0ZQorICBSUFJQYXR0ZXJuRWxlbWVudCBz dHJ1Y3RzIHJhdGhlciB0aGFuIGFzIGEgdHJlZS4KKworICBUaGUgYXJyYXkgaXMgY29udGlndW91 cyBhbmQgY2FjaGUtZnJpZW5kbHksIGVsZW1lbnRzIHJlZmVyZW5jZSBlYWNoCisgIG90aGVyIGJ5 IDItYnl0ZSBpbmRleCBpbnN0ZWFkIG9mIGJ5IHBvaW50ZXIsIGFuZCB0aGUgd2hvbGUgc3RydWN0 dXJlCisgIGNhbiBiZSBzZXJpYWxpemVkIHdpdGggbWVtY3B5IHdoZW4gcGFzc2VkIHRvIHBsYW4g bm9kZXMuCisKK1hJSS0yLiBGb3J3YXJkLW9ubHkgRXhlY3V0aW9uIHZzIEJhY2t0cmFja2luZwor CisgIFRoZSBORkEgaXMgc2ltdWxhdGVkIGZvcndhcmQtb25seSwgdHJhY2tpbmcgYSBzZXQgb2Yg bGl2ZSBzdGF0ZXMsCisgIHJhdGhlciB0aGFuIGJ5IGJhY2t0cmFja2luZy4KKworICBCYWNrdHJh Y2tpbmcgd291bGQgdGFrZSBleHBvbmVudGlhbCB0aW1lIGluIHRoZSB3b3JzdCBjYXNlLCB3aGVy ZWFzCisgIGZvcndhcmQtb25seSBORkEgc2ltdWxhdGlvbiBpcyBwb2x5bm9taWFsLiAgRm9yd2Fy ZC1vbmx5IGFsc28gZml0cyB0aGUKKyAgd2luZG93IHBpcGVsaW5lLCB3aGljaCBkZWxpdmVycyBz b3J0ZWQgcm93cyBzZXF1ZW50aWFsbHk6IGl0IG5lZWRzIG5vCisgIHJlLWZldGNoaW5nIG9mIGVh cmxpZXIgcm93cywgYW5kIGVhY2ggcm93J3MgREVGSU5FIGNvbmRpdGlvbnMgKFNRTAorICBleHBy ZXNzaW9ucyBzdWNoIGFzIFBSRVYgb3IgcnVubmluZyBhZ2dyZWdhdGVzLCB3aXRoIGhpZ2ggcmUt ZXZhbHVhdGlvbgorICBjb3N0KSBhcmUgZXZhbHVhdGVkIG9ubHkgb25jZS4gIERGUyBvcmRlciB5 aWVsZHMgcHJlZmVybWVudCBuYXR1cmFsbHksCisgIHdpdGggZ3JlZWR5IG9yIHJlbHVjdGFudCBi ZWhhdmlvciBwZXIgcXVhbnRpZmllciBvYnRhaW5lZCBieSByZXZlcnNpbmcKKyAgdGhhdCBvcmRl ci4KKworWElJLTMuIFBlci1Db250ZXh0IE1hbmFnZW1lbnQKKworICBBIHNlcGFyYXRlIG1hdGNo IGNvbnRleHQgaXMgbWFpbnRhaW5lZCBmb3IgZWFjaCBzdGFydCByb3cuCisKKyAgVGhpcyBzdXBw b3J0cyBvdmVybGFwcGluZyBtYXRjaGVzIHVuZGVyIFNLSVAgVE8gTkVYVCBST1csIGRldGVybWlu ZXMKKyAgZWFjaCByb3cncyBmcmFtZSBpbmRlcGVuZGVudGx5LCBhbmQgbGV0cyB0aGUgYWJzb3Jw dGlvbiBvcHRpbWl6YXRpb24KKyAgZWxpbWluYXRlIHJlZHVuZGFudCBjb250ZXh0cyBpbiBPKG4p LgorCitYSUktNC4gTWVtb3J5IFBvb2wgTWFuYWdlbWVudAorCisgIE5GQSBzdGF0ZXMgYXJlIG1h bmFnZWQgdGhyb3VnaCBhIGN1c3RvbSBmcmVlIGxpc3QsIGFuZCBib3RoIFJQUk5GQVN0YXRlCisg IGFuZCBSUFJORkFDb250ZXh0IGFyZSBhbGxvY2F0ZWQgaW4gYSBwYXJ0aXRpb24tbGlmZXNwYW4g bWVtb3J5IGNvbnRleHQKKyAgdGhhdCBpcyBmcmVlZCBpbiByZWxlYXNlX3BhcnRpdGlvbi4KKwor ICBORkEgc3RhdGVzIGFyZSBjcmVhdGVkIGFuZCBkZXN0cm95ZWQgaW4gbGFyZ2UgbnVtYmVycyBw ZXIgcm93LCBzbyB0aGUKKyAgZnJlZSBsaXN0IGF2b2lkcyBwYWxsb2MvcGZyZWUgb3ZlcmhlYWQu ICBUaGVpciBzaXplIHZhcmllcyAodGhlCisgIGNvdW50c1tdIGFycmF5KSwgYnV0IG1heERlcHRo IGlzIGZpeGVkIHdpdGhpbiBhIHNpbmdsZSBxdWVyeSwgc28gYWxsCisgIHN0YXRlcyBoYXZlIHRo ZSBzYW1lIHNpemUuCisKK1hJSS01LiBFeGVjdXRpb24gT3B0aW1pemF0aW9uIFN1bW1hcnkKKwor ICBUaGUgZm9sbG93aW5nIG9wdGltaXphdGlvbnMgbWFrZSB0aGUgTkZBIHNpbXVsYXRpb24gcHJh Y3RpY2FsLgorCisgIC0tIENvbXBpbGUtdGltZSAtLQorCisgICgxKSBBU1QgT3B0aW1pemF0aW9u IChJVi0zKQorCisgICAgU2ltcGxpZmllcyB0aGUgQVNUIGJlZm9yZSBjb252ZXJ0aW5nIHRoZSBw YXR0ZXJuIHRvIGFuIE5GQS4KKyAgICBSZWR1Y2VzIHRoZSBudW1iZXIgb2YgTkZBIGVsZW1lbnRz IHRocm91Z2ggY29uc2VjdXRpdmUgdmFyaWFibGUKKyAgICBtZXJnaW5nIChBIEEgLT4gQXsyfSks IFNFUSBmbGF0dGVuaW5nLCBxdWFudGlmaWVyIG11bHRpcGxpY2F0aW9uLAorICAgIGFuZCBvdGhl ciB0cmFuc2Zvcm1hdGlvbnMuCisKKyAgICBTaWduaWZpY2FuY2U6IFJlZHVjaW5nIHRoZSBlbGVt ZW50IGNvdW50IGRpcmVjdGx5IHNocmlua3MgdGhlIHN0YXRlCisgICAgc3BhY2UsIGRlY3JlYXNp bmcgdGhlIGNvc3Qgb2YgYWxsIHN1YnNlcXVlbnQgcnVudGltZSBwaGFzZXMgKG1hdGNoLAorICAg IGFic29yYiwgYWR2YW5jZSkuCisKKyAgLS0gUnVudGltZTogYWR2YW5jZSBwaGFzZSAtLQorCisg ICgyKSBHcm91cCBTa2lwIChJWC00KGIpKQorCisgICAgQXQgdGhlIEJFR0lOIG9mIGEgZ3JvdXAg d2l0aCBtaW49MCwgdXNlcyBqdW1wIHRvIHNraXAgdGhlIGVudGlyZQorICAgIGdyb3VwLiBNb3Zl cyBkaXJlY3RseSB0byB0aGUgZmlyc3QgZWxlbWVudCBvdXRzaWRlIHRoZSBncm91cCB3aXRob3V0 CisgICAgZXhwbG9yaW5nIHRoZSBncm91cCBib2R5LiBHcmVlZHkgZW50ZXJzIHRoZW4gc2tpcHM7 IFJlbHVjdGFudCBza2lwcworICAgIHRoZW4gZW50ZXJzLgorCisgICAgU2lnbmlmaWNhbmNlOiBG b3Igb3B0aW9uYWwgZ3JvdXBzIChtaW49MCksIGltbWVkaWF0ZWx5IGdlbmVyYXRlcworICAgIGEg c2tpcCBwYXRoIHdpdGhvdXQgZXhwbG9yaW5nIHRoZSBib2R5LCBhdm9pZGluZyB1bm5lY2Vzc2Fy eSBERlMKKyAgICBleHBhbnNpb24uCisKKyAgKDMpIFN0YXRlIERlZHVwbGljYXRpb24gKElYLTUp CisKKyAgICBEdXJpbmcgYWR2YW5jZSwgREZTIG1heSBnZW5lcmF0ZSBzdGF0ZXMgd2l0aCB0aGUg c2FtZSAoZWxlbUlkeCwKKyAgICBjb3VudHMpIGNvbWJpbmF0aW9uIHRocm91Z2ggbXVsdGlwbGUg cGF0aHMuIEFkZGl0aW9uYWxseSwgZm9yCisgICAgZ3JvdXAgYWJzb3JwdGlvbiwgbmZhX21hdGNo IHBlcmZvcm1zIGlubGluZSBhZHZhbmNlIGZyb20gYm91bmRlZAorICAgIFZBUnMgKGNvdW50ID49 IG1heCkgd2l0aGluIHRoZSBhYnNvcmJhYmxlIHJlZ2lvbiAoQUJTT1JCQUJMRV9CUkFOQ0gpCisg ICAgdGhyb3VnaCBFTkQgY2hhaW5zIHRvIHJlYWNoIHRoZSBqdWRnbWVudCBwb2ludCAoQUJTT1JC QUJMRSBFTkQpLgorICAgIFRoaXMgcHJvY2VzcyBjYW4gYWxzbyBwcm9kdWNlIGR1cGxpY2F0ZSBz dGF0ZXMgcmVhY2hpbmcgdGhlIHNhbWUgRU5ELgorICAgIG5mYV9hZGRfc3RhdGVfdW5pcXVlKCkg YmxvY2tzIGR1cGxpY2F0ZSBhZGRpdGlvbiBvZiBpZGVudGljYWwgc3RhdGVzCisgICAgaW4gYm90 aCBjYXNlcy4KKworICAgIFNpZ25pZmljYW5jZTogUHJldmVudHMgZXhwb25lbnRpYWwgZ3Jvd3Ro IG9mIHRoZSBzdGF0ZSBjb3VudCBpbgorICAgIEFMVCBicmFuY2hlcyBhbmQgcXVhbnRpZmllciBl eHBhbnNpb24uIFNpbmNlIERGUyBvcmRlciBjYXVzZXMgdGhlCisgICAgcHJlZmVycmVkIGJyYW5j aCdzIHN0YXRlIHRvIGJlIHJlZ2lzdGVyZWQgZmlyc3QsIGlkZW50aWNhbCBzdGF0ZXMKKyAgICBm cm9tIGxvd2VyLXByaW9yaXR5IGJyYW5jaGVzIGFyZSBhdXRvbWF0aWNhbGx5IGRpc2NhcmRlZCwg dGhlcmVieQorICAgIGFsc28gZ3VhcmFudGVlaW5nIHByZWZlcm1lbnQuCisKKyAgKDQpIEN5Y2xl IERldGVjdGlvbiBhbmQgRmFzdC1Gb3J3YXJkIChJWC02LCBJWC00KGMpKQorCisgICAgV2hlbiBh IG51bGxhYmxlIGdyb3VwIGJvZHkgKGUuZy4sIEE/KSByZXBlYXRzIGVtcHR5IG1hdGNoZXMsCisg ICAgdGhlIEVORCAtPiBCRUdJTiBsb29wLWJhY2sgY2FuIGNvbnRpbnVlIGluZGVmaW5pdGVseS4K KworICAgIFR3byBtZWNoYW5pc21zIHJlc29sdmUgdGhpczoKKyAgICAtIEEgdmlzaXRlZCBiaXRt YXAgKG5mYVZpc2l0ZWRFbGVtcykgYmxvY2tzIHJldmlzaXRhdGlvbiBvZiB0aGUKKyAgICAgIHNh bWUgZWxlbWVudCwgcHJldmVudGluZyBpbmZpbml0ZSBsb29wcyAoc2FmZXR5KQorICAgIC0gQXQg YW4gRU5EIHdpdGggdGhlIFJQUl9FTEVNX0VNUFRZX0xPT1AgZmxhZyBzZXQsIHdoZW4KKyAgICAg IGNvdW50IDwgbWluLCB0aGUgcmVtYWluaW5nIHJlcXVpcmVkIGl0ZXJhdGlvbnMgYXJlIHRyZWF0 ZWQgYXMKKyAgICAgIGVtcHR5IG1hdGNoZXMgYW5kIGEgZmFzdC1mb3J3YXJkIGV4aXQgcGF0aCBv dXQgb2YgdGhlIGdyb3VwIGlzCisgICAgICBhZGRlZCAoY29ycmVjdG5lc3MpCisKKyAgICBTaWdu aWZpY2FuY2U6IEN5Y2xlIGRldGVjdGlvbiBndWFyYW50ZWVzIHRlcm1pbmF0aW9uLCBhbmQKKyAg ICBmYXN0LWZvcndhcmQgZ3VhcmFudGVlcyB0aGF0IHRoZSBtaW4gY29uZGl0aW9uIGlzIHNhdGlz ZmllZC4KKyAgICBXaXRob3V0IHRoZXNlLCBwYXR0ZXJucyBjb250YWluaW5nIG51bGxhYmxlIGdy b3VwcyB3b3VsZCBmYWxsCisgICAgaW50byBpbmZpbml0ZSBsb29wcyBvciBmYWlsIHRvIG1hdGNo LgorCisgICg1KSBNYXRjaCBQcnVuaW5nIChJWC00KGUpKQorCisgICAgV2hlbiBhIHN0YXRlIHJl YWNoZXMgRklOIGR1cmluZyBhZHZhbmNlLCBhbGwgcmVtYWluaW5nIHVucHJvY2Vzc2VkCisgICAg c3RhdGVzIG9mIHRoYXQgY29udGV4dCBhcmUgcmVtb3ZlZC4gQmVjYXVzZSBvZiBERlMgb3JkZXIs IHRoZSBwYXRoCisgICAgdGhhdCByZWFjaGVzIEZJTiBmaXJzdCBoYXMgdGhlIGhpZ2hlc3QgcHJl ZmVybWVudCwgc28gdGhlIHJlbWFpbmluZworICAgIHBhdGhzIGFyZSBpbmZlcmlvci4KKworICAg IFNpZ25pZmljYW5jZTogT25jZSB0aGUgYmVzdCBtYXRjaCBpcyBkZXRlcm1pbmVkLCBleHBsb3Jh dGlvbiBvZgorICAgIGluZmVyaW9yIHBhdGhzIGlzIGltbWVkaWF0ZWx5IHRlcm1pbmF0ZWQuIFRo aXMgbWVjaGFuaXNtIGFjaGlldmVzCisgICAgYm90aCBwcmVmZXJtZW50IGd1YXJhbnRlZXMgYW5k IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4KKworICAtLSBSdW50aW1lOiBpbnRlci1jb250ZXh0 IC0tCisKKyAgKDYpIEVhcmx5IFRlcm1pbmF0aW9uIChTS0lQIFBBU1QgTEFTVCBST1cpCisKKyAg ICBJbiBTS0lQIFBBU1QgTEFTVCBST1cgbW9kZSwgd2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzdWJz ZXF1ZW50CisgICAgY29udGV4dHMgd2hvc2Ugc3RhcnQgcm93cyBmYWxsIHdpdGhpbiB0aGUgbWF0 Y2ggcmFuZ2UgYXJlIHBydW5lZAorICAgIGltbWVkaWF0ZWx5IHdpdGhvdXQgZnVydGhlciBwcm9j ZXNzaW5nLgorICAgIEluIFNLSVAgVE8gTkVYVCBST1cgbW9kZSwgb3ZlcmxhcHBpbmcgY29udGV4 dHMgYXJlIHByZXNlcnZlZAorICAgIGJlY2F1c2UgZWFjaCByb3cgcmVxdWlyZXMgaXRzIG93biBp bmRlcGVuZGVudCBtYXRjaC4KKworICAgIFNpZ25pZmljYW5jZTogUHJ1bmVzIHN1YnNlcXVlbnQg Y29udGV4dHMgd2hvc2Ugc3RhcnQgcm93cyBvdmVybGFwCisgICAgd2l0aCBhIHByaW9yIG1hdGNo IHJhbmdlLCBhdm9pZGluZyB1bm5lY2Vzc2FyeSBwcm9jZXNzaW5nLgorCisgICg3KSBDb250ZXh0 IEFic29ycHRpb24gKENoYXB0ZXIgVklJSSkKKworICAgIElmIGFuIGluZGVwZW5kZW50IGNvbnRl eHQgaXMgY3JlYXRlZCBmb3IgZWFjaCByb3csIE8obl4yKSBzdGF0ZXMKKyAgICBhY2N1bXVsYXRl LiBCeSBleHBsb2l0aW5nIHRoZSBtb25vdG9uaWNpdHkgdGhhdCBhbiBlYXJsaWVyLXN0YXJ0ZWQK KyAgICBjb250ZXh0IHN1YnN1bWVzIHRoZSBzdGF0ZXMgb2YgYSBsYXRlci1zdGFydGVkIGNvbnRl eHQsIHJlZHVuZGFudAorICAgIGNvbnRleHRzIGFyZSBlbGltaW5hdGVkIGVhcmx5LgorCisgICAg QWJzb3JiYWJpbGl0eSBpcyBkZXRlcm1pbmVkIHBlci1lbGVtZW50OyBjb21wYXJpc29uIGlzIHBl cmZvcm1lZAorICAgIG9ubHkgYXQgZWxlbWVudHMgd2l0aCB0aGUgUlBSX0VMRU1fQUJTT1JCQUJM RSBmbGFnIChzZWUgSVYtNSkuCisKKyAgICBTaWduaWZpY2FuY2U6IEtlZXBzIHRoZSBudW1iZXIg b2YgYWN0aXZlIGNvbnRleHRzIGF0IGEgY29uc3RhbnQKKyAgICBsZXZlbCwgYWNoaWV2aW5nIE8o bl4yKSAtPiBPKG4pIHRpbWUgY29tcGxleGl0eS4gV2l0aG91dCB0aGlzLAorICAgIHBlcmZvcm1h bmNlIGRlZ3JhZGVzIHNoYXJwbHkgb24gbG9uZyBwYXJ0aXRpb25zLgorCitBcHBlbmRpeCBBLiBL ZXkgRnVuY3Rpb24gSW5kZXgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICBGdW5jdGlvbiAgICAg ICAgICAgICAgICAgICAgICBGaWxlICAgICAgICAgICAgICAgICAgUm9sZQorICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICB0cmFuc2Zvcm1SUFIgICAgICAgICAgICAgICAgICBwYXJzZV9ycHIuYyAgICAg ICAgICAgUGFyc2VyIGVudHJ5IHBvaW50CisgIHRyYW5zZm9ybURlZmluZUNsYXVzZSAgICAgICAg IHBhcnNlX3Jwci5jICAgICAgICAgICBERUZJTkUgdHJhbnNmb3JtYXRpb24KKyAgY29sbGVjdFBh dHRlcm5WYXJpYWJsZXMgICAgICAgcnByLmMgICAgICAgICAgICAgICAgIFZhcmlhYmxlIGNvbGxl Y3Rpb24KKyAgYnVpbGREZWZpbmVWYXJpYWJsZUxpc3QgICAgICAgcnByLmMgICAgICAgICAgICAg ICAgIERFRklORSB2YXJpYWJsZSBsaXN0CisgIGJ1aWxkUlBSUGF0dGVybiAgICAgICAgICAgICAg IHJwci5jICAgICAgICAgICAgICAgICBORkEgY29tcGlsYXRpb24gbWFpbgorICBvcHRpbWl6ZVJQ UlBhdHRlcm4gICAgICAgICAgICBycHIuYyAgICAgICAgICAgICAgICAgQVNUIG9wdGltaXphdGlv bgorICBmaWxsUlBSUGF0dGVybiAgICAgICAgICAgICAgICBycHIuYyAgICAgICAgICAgICAgICAg TkZBIGVsZW1lbnQgZ2VuZXJhdGlvbgorICBmaW5hbGl6ZVJQUlBhdHRlcm4gICAgICAgICAgICBy cHIuYyAgICAgICAgICAgICAgICAgRmluYWxpemF0aW9uCisgIGNvbXB1dGVBYnNvcmJhYmlsaXR5 ICAgICAgICAgIHJwci5jICAgICAgICAgICAgICAgICBBYnNvcnB0aW9uIGFuYWx5c2lzCisgIHVw ZGF0ZV9yZWR1Y2VkX2ZyYW1lICAgICAgICAgIG5vZGVXaW5kb3dBZ2cuYyAgICAgICBFeGVjdXRp b24gbWFpbiBsb29wCisgIG5mYV9ldmFsdWF0ZV9yb3cgICAgICAgICAgICAgIG5vZGVXaW5kb3dB Z2cuYyAgICAgICBERUZJTkUgZXZhbHVhdGlvbgorICBFeGVjUlBSU3RhcnRDb250ZXh0ICAgICAg ICAgICBleGVjUlBSLmMgICAgICAgICAgICAgQ29udGV4dCBjcmVhdGlvbgorICBFeGVjUlBSUHJv Y2Vzc1JvdyAgICAgICAgICAgICBleGVjUlBSLmMgICAgICAgICAgICAgMy1waGFzZSBwcm9jZXNz aW5nCisgIG5mYV9tYXRjaCAgICAgICAgICAgICAgICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAg ICBQaGFzZSAxCisgIG5mYV9hYnNvcmJfY29udGV4dHMgICAgICAgICAgIGV4ZWNSUFIuYyAgICAg ICAgICAgICBQaGFzZSAyCisgIG5mYV9hZHZhbmNlICAgICAgICAgICAgICAgICAgIGV4ZWNSUFIu YyAgICAgICAgICAgICBQaGFzZSAzCisgIG5mYV9hZHZhbmNlX3N0YXRlICAgICAgICAgICAgIGV4 ZWNSUFIuYyAgICAgICAgICAgICBQZXItc3RhdGUgYnJhbmNoaW5nCisgIG5mYV9yb3V0ZV90b19l bGVtICAgICAgICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAgICBFbGVtZW50IHJvdXRpbmcKKyAg bmZhX2FkdmFuY2VfYWx0ICAgICAgICAgICAgICAgZXhlY1JQUi5jICAgICAgICAgICAgIEFMVCBo YW5kbGluZworICBuZmFfYWR2YW5jZV9iZWdpbiAgICAgICAgICAgICBleGVjUlBSLmMgICAgICAg ICAgICAgQkVHSU4gaGFuZGxpbmcKKyAgbmZhX2FkdmFuY2VfZW5kICAgICAgICAgICAgICAgZXhl Y1JQUi5jICAgICAgICAgICAgIEVORCBoYW5kbGluZworICBuZmFfYWR2YW5jZV92YXIgICAgICAg ICAgICAgICBleGVjUlBSLmMgICAgICAgICAgICAgVkFSIGhhbmRsaW5nCisgIG5mYV9hZGRfc3Rh dGVfdW5pcXVlICAgICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAgICBEZWR1cGxpY2F0aW9uCisg IG5mYV9zdGF0ZXNfY292ZXJlZCAgICAgICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAgICBBYnNv cnB0aW9uIGNoZWNrCisgIG5mYV9yZWV2YWx1YXRlX2RlcGVuZGVudF92YXJzIGV4ZWNSUFIuYyAg ICAgICAgICAgICBQZXItY29udGV4dCByZS1ldmFsCisgIEV4ZWNSUFJHZXRIZWFkQ29udGV4dCAg ICAgICAgIGV4ZWNSUFIuYyAgICAgICAgICAgICBDb250ZXh0IGxvb2t1cAorICBFeGVjUlBSRnJl ZUNvbnRleHQgICAgICAgICAgICBleGVjUlBSLmMgICAgICAgICAgICAgQ29udGV4dCBkZWFsbG9j YXRpb24KKyAgRXhlY1JQUkNsZWFudXBEZWFkQ29udGV4dHMgICAgZXhlY1JQUi5jICAgICAgICAg ICAgIERlYWQgY29udGV4dCBjbGVhbnVwCisgIEV4ZWNSUFJGaW5hbGl6ZUFsbENvbnRleHRzICAg IGV4ZWNSUFIuYyAgICAgICAgICAgICBQYXJ0aXRpb24tZW5kIGZpbmFsaXplCisgIEV4ZWNSUFJS ZWNvcmRDb250ZXh0U3VjY2VzcyAgIGV4ZWNSUFIuYyAgICAgICAgICAgICBTdGF0czogbWF0Y2gg c3VjY2VzcworICBFeGVjUlBSUmVjb3JkQ29udGV4dEZhaWx1cmUgICBleGVjUlBSLmMgICAgICAg ICAgICAgU3RhdHM6IG1hdGNoIGZhaWx1cmUKKyAgY29tcHV0ZV9kZWZpbmVfbWV0YWRhdGEgICAg ICAgY3JlYXRlcGxhbi5jICAgICAgICAgIFRyaW0gb2Zmc2V0IGNvbXB1dGF0aW9uCisKK0FwcGVu ZGl4IEIuIERhdGEgU3RydWN0dXJlIFJlbGF0aW9uc2hpcCBEaWFncmFtCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisKKyAgUGFyc2VyIExheWVyCisgIC0tLS0tLS0tCisgIFJQQ29tbW9uU3ludGF4Cisg ICAgfC0tLSBycFNraXBUbzogUlBTa2lwVG8KKyAgICB8LS0tIGluaXRpYWw6IGJvb2wKKyAgICAr LS0tIHJwUGF0dGVybjogUlBSUGF0dGVybk5vZGUqICh0cmVlKQorICAgICAgICAgfC0tLSBub2Rl VHlwZTogVkFSIHwgU0VRIHwgQUxUIHwgR1JPVVAKKyAgICAgICAgIHwtLS0gbWluLCBtYXg6IHF1 YW50aWZpZXIKKyAgICAgICAgIHwtLS0gdmFyTmFtZTogdmFyaWFibGUgbmFtZSAoVkFSIG9ubHkp CisgICAgICAgICArLS0tIGNoaWxkcmVuOiBMaXN0KiAoU0VRL0FMVC9HUk9VUCBvbmx5KQorCisg IFBsYW5uZXIgTGF5ZXIKKyAgLS0tLS0tLS0tLQorICBXaW5kb3dBZ2cgKHBsYW4gbm9kZSkKKyAg ICB8LS0tIHJwU2tpcFRvOiBSUFNraXBUbworICAgIHwtLS0gZGVmaW5lQ2xhdXNlOiBMaXN0PFRh cmdldEVudHJ5PgorICAgICstLS0gcnBQYXR0ZXJuOiBSUFJQYXR0ZXJuKgorICAgICAgICAgfC0t LSBudW1WYXJzOiBpbnQKKyAgICAgICAgIHwtLS0gdmFyTmFtZXM6IGNoYXIqKgorICAgICAgICAg fC0tLSBtYXhEZXB0aDogUlBSRGVwdGgKKyAgICAgICAgIHwtLS0gaXNBYnNvcmJhYmxlOiBib29s CisgICAgICAgICB8LS0tIG51bUVsZW1lbnRzOiBpbnQKKyAgICAgICAgICstLS0gZWxlbWVudHM6 IFJQUlBhdHRlcm5FbGVtZW50W10gIChmbGF0IGFycmF5KQorICAgICAgICAgICAgICB8LS0tIHZh cklkICAgICAgKDFCKQorICAgICAgICAgICAgICB8LS0tIGRlcHRoICAgICAgKDFCKQorICAgICAg ICAgICAgICB8LS0tIGZsYWdzICAgICAgKDFCKQorICAgICAgICAgICAgICB8LS0tIHJlc2VydmVk ICAgKDFCKQorICAgICAgICAgICAgICB8LS0tIG1pbiwgbWF4ICAgKDRCICsgNEIpCisgICAgICAg ICAgICAgICstLS0gbmV4dCwganVtcCAoMkIgKyAyQikKKworICBFeGVjdXRvciBMYXllcgorICAt LS0tLS0tLS0tCisgIFdpbmRvd0FnZ1N0YXRlCisgICAgfC0tLSBycFNraXBUbzogUlBTa2lwVG8g KEFGVEVSIE1BVENIIFNLSVAgbW9kZSkKKyAgICB8LS0tIHJwUGF0dGVybjogUlBSUGF0dGVybiog KGNvcGllZCBmcm9tIHBsYW4pCisgICAgfC0tLSBkZWZpbmVWYXJpYWJsZUxpc3Q6IExpc3Q8U3Ry aW5nPiAodmFyaWFibGUgbmFtZXMsIERFRklORSBvcmRlcikKKyAgICB8LS0tIGRlZmluZUNsYXVz ZUxpc3Q6IExpc3Q8RXhwclN0YXRlPgorICAgIHwtLS0gbmZhVmFyTWF0Y2hlZDogYm9vbFtdIChw ZXItcm93IGNhY2hlKQorICAgIHwtLS0gZGVmaW5lTWF0Y2hTdGFydERlcGVuZGVudDogQml0bWFw c2V0KiAobWF0Y2hfc3RhcnRfZGVwZW5kZW50CisgICAgfCAgICAgICAgREVGSU5FIHZhcnM7IHNl ZSBWSS00KQorICAgIHwtLS0gbmZhVmlzaXRlZEVsZW1zOiBiaXRtYXB3b3JkKiAoY3ljbGUgZGV0 ZWN0aW9uKQorICAgIHwtLS0gbmZhVmlzaXRlZE1pbldvcmQgLyBuZmFWaXNpdGVkTWF4V29yZDog aW50MTYKKyAgICB8ICAgICAgICAodG91Y2hlZC13b3JkIHJhbmdlIGZvciBmYXN0IHJlc2V0KQor ICAgIHwtLS0gbmZhTGFzdFByb2Nlc3NlZFJvdzogaW50NjQgKC0xID0gbm9uZSkKKyAgICB8LS0t IG5mYVN0YXRlU2l6ZTogU2l6ZSAocHJlLWNhbGN1bGF0ZWQgUlBSTkZBU3RhdGUgYWxsb2NhdGlv biBzaXplKQorICAgIHwtLS0gbmZhQ29udGV4dCA8LT4gbmZhQ29udGV4dFRhaWwgKGRvdWJseS1s aW5rZWQgbGlzdCkKKyAgICB8ICAgKy0tLSBSUFJORkFDb250ZXh0CisgICAgfCAgICAgICB8LS0t IHN0YXRlczogUlBSTkZBU3RhdGUqIChsaW5rZWQgbGlzdCkKKyAgICB8ICAgICAgIHwgICB8LS0t IGVsZW1JZHgKKyAgICB8ICAgICAgIHwgICB8LS0tIGNvdW50c1tdCisgICAgfCAgICAgICB8ICAg Ky0tLSBpc0Fic29yYmFibGUKKyAgICB8ICAgICAgIHwtLS0gbWF0Y2hTdGFydFJvdywgbWF0Y2hF bmRSb3cKKyAgICB8ICAgICAgIHwtLS0gbGFzdFByb2Nlc3NlZFJvdworICAgIHwgICAgICAgfC0t LSBtYXRjaGVkU3RhdGUgKGNsb25lZCBvbiBGSU4gYXJyaXZhbCkKKyAgICB8ICAgICAgIHwtLS0g aGFzQWJzb3JiYWJsZVN0YXRlCisgICAgfCAgICAgICArLS0tIGFsbFN0YXRlc0Fic29yYmFibGUK KyAgICB8LS0tIG5mYUNvbnRleHRGcmVlIChyZWN5Y2xpbmcgcG9vbCkKKyAgICArLS0tIG5mYVN0 YXRlRnJlZSAocmVjeWNsaW5nIHBvb2wpCisKK0FwcGVuZGl4IEMuIE5GQSBFbGVtZW50IEFycmF5 IEV4YW1wbGVzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0MtMS4gUEFUVEVSTiAoQSBCIEMpCisK KyAgaWR4ICB2YXJJZCAgZGVwdGggIG1pbiAgbWF4ICBuZXh0ICBqdW1wCisgIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgMCAgIEEgICAgICAwICAgICAgMSAg ICAxICAgIDEgICAgIC0xCisgICAxICAgQiAgICAgIDAgICAgICAxICAgIDEgICAgMiAgICAgLTEK KyAgIDIgICBDICAgICAgMCAgICAgIDEgICAgMSAgICAzICAgICAtMQorICAgMyAgIEZJTiAgICAw ICAgICAgMSAgICAxICAgIC0xICAgIC0xCisKK0MtMi4gUEFUVEVSTiAoQSsgQiopCisKKyAgaWR4 ICB2YXJJZCAgZGVwdGggIG1pbiAgbWF4ICBuZXh0ICBqdW1wICBmbGFncworICAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgIDAgICBBICAgICAgMCAgICAgIDEgICAgSU5GICAxICAgICAtMSAgICBBQlNPUkJB QkxFIHwgQUJTT1JCQUJMRV9CUkFOQ0gKKyAgIDEgICBCICAgICAgMCAgICAgIDAgICAgSU5GICAy ICAgICAtMQorICAgMiAgIEZJTiAgICAwICAgICAgMSAgICAxICAgIC0xICAgIC0xCisKKyAgT25s eSBBKyBpcyB0aGUgYWJzb3JwdGlvbiBwb2ludCAoQ2FzZSAxKS4gT25jZSBwYXN0IEEsCisgIGFi c29ycHRpb24gaXMgcGVybWFuZW50bHkgZGlzYWJsZWQgZm9yIHRoYXQgc3RhdGUuCisKK0MtMy4g UEFUVEVSTiAoQSB8IEIgfCBDKQorCisgIGlkeCAgdmFySWQgIGRlcHRoICBtaW4gIG1heCAgbmV4 dCAganVtcAorICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAw ICAgQUxUICAgIDAgICAgICAxICAgIDEgICAgMSAgICAgLTEgICAgYWx0ZXJuYXRpb24gc3RhcnQK KyAgIDEgICBBICAgICAgMSAgICAgIDEgICAgMSAgICA0ICAgICAyICAgICBicmFuY2ggMSAtPiBG SU4sIGp1bXAgLT4gYnJhbmNoIDIKKyAgIDIgICBCICAgICAgMSAgICAgIDEgICAgMSAgICA0ICAg ICAzICAgICBicmFuY2ggMiAtPiBGSU4sIGp1bXAgLT4gYnJhbmNoIDMKKyAgIDMgICBDICAgICAg MSAgICAgIDEgICAgMSAgICA0ICAgICAtMSAgICBicmFuY2ggMyAtPiBGSU4KKyAgIDQgICBGSU4g ICAgMCAgICAgIDEgICAgMSAgICAtMSAgICAtMQorCitDLTQuIFBBVFRFUk4gKChBIEIpKyBDKQor CisgIGlkeCAgdmFySWQgICAgZGVwdGggIG1pbiAgbWF4ICBuZXh0ICBqdW1wICBmbGFncworICAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgMCAgIEJFR0lOICAgIDAgICAgICAxICAgIElORiAgMSAgICAg NCAgICAgQUJTT1JCQUJMRV9CUkFOQ0gKKyAgIDEgICBBICAgICAgICAxICAgICAgMSAgICAxICAg IDIgICAgIC0xICAgIEFCU09SQkFCTEVfQlJBTkNICisgICAyICAgQiAgICAgICAgMSAgICAgIDEg ICAgMSAgICAzICAgICAtMSAgICBBQlNPUkJBQkxFX0JSQU5DSAorICAgMyAgIEVORCAgICAgIDAg ICAgICAxICAgIElORiAgNCAgICAgMSAgICAgQUJTT1JCQUJMRSB8IEFCU09SQkFCTEVfQlJBTkNI CisgICA0ICAgQyAgICAgICAgMCAgICAgIDEgICAgMSAgICA1ICAgICAtMQorICAgNSAgIEZJTiAg ICAgIDAgICAgICAxICAgIDEgICAgLTEgICAgLTEKKworICBDYXNlIDI6IEdST1VQKyB3aXRoIHsx LDF9IGJvZHkgVkFScy4gQSwgQiBhcmUgYnJhbmNoZXM7CisgIEVORCBpcyB0aGUgYWJzb3JwdGlv biBwb2ludC4gQ29tcGFyZSB3aXRoIEMtNiAoQ2FzZSAzKS4KKworQy01LiBQQVRURVJOICgoQSB8 IEIpKz8gQykKKworICBpZHggIHZhcklkICAgIGRlcHRoICBtaW4gIG1heCAgIG5leHQgIGp1bXAg IGZsYWdzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIDAgICBCRUdJTiAgICAwICAgICAgMSAgICBJTkYgICAx ICAgICA1ICAgICBSRUxVQ1RBTlQsIGdyb3VwIHN0YXJ0CisgICAxICAgQUxUICAgICAgMSAgICAg IDEgICAgMSAgICAgMiAgICAgLTEgICAgYWx0ZXJuYXRpb24gc3RhcnQKKyAgIDIgICBBICAgICAg ICAyICAgICAgMSAgICAxICAgICA0ICAgICAzICAgICBicmFuY2ggMQorICAgMyAgIEIgICAgICAg IDIgICAgICAxICAgIDEgICAgIDQgICAgIC0xICAgIGJyYW5jaCAyCisgICA0ICAgRU5EICAgICAg MCAgICAgIDEgICAgSU5GICAgNSAgICAgMSAgICAgUkVMVUNUQU5ULCBncm91cCBlbmQKKyAgIDUg ICBDICAgICAgICAwICAgICAgMSAgICAxICAgICA2ICAgICAtMQorICAgNiAgIEZJTiAgICAgIDAg ICAgICAxICAgIDEgICAgIC0xICAgIC0xCisKK0MtNi4gUEFUVEVSTiAoKEErIEIpKyBDKSAgLS0g QWJzb3JiYWJpbGl0eSBmbGFnIGV4YW1wbGUKKworICBpZHggIHZhcklkICAgIGRlcHRoICBtaW4g IG1heCAgIG5leHQgIGp1bXAgIGZsYWdzCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgMCAgIEJF R0lOICAgIDAgICAgICAxICAgIElORiAgIDEgICAgIDQgICAgIEFCU09SQkFCTEVfQlJBTkNILCBn cm91cCBzdGFydAorICAgMSAgIEEgICAgICAgIDEgICAgICAxICAgIElORiAgIDIgICAgIC0xICAg IEFCU09SQkFCTEUgfCBBQlNPUkJBQkxFX0JSQU5DSAorICAgMiAgIEIgICAgICAgIDEgICAgICAx ICAgIDEgICAgIDMgICAgIC0xCisgICAzICAgRU5EICAgICAgMCAgICAgIDEgICAgSU5GICAgNCAg ICAgMSAgICAgZ3JvdXAgZW5kCisgICA0ICAgQyAgICAgICAgMCAgICAgIDEgICAgMSAgICAgNSAg ICAgLTEKKyAgIDUgICBGSU4gICAgICAwICAgICAgMSAgICAxICAgICAtMSAgICAtMQorCisgIFJl Y3Vyc2VzIGZyb20gQkVHSU4gaW50byB0aGUgYm9keSAtPiBBIG1hdGNoZXMgQ2FzZSAxIChzaW1w bGUgVkFSKykuCisgIEEgZ2V0cyBBQlNPUkJBQkxFIHwgQUJTT1JCQUJMRV9CUkFOQ0gsIEJFR0lO IGdldHMgQUJTT1JCQUJMRV9CUkFOQ0guCisgIEIgYW5kIEVORCBnZXQgbm8gZmxhZ3MgLT4gYWJz b3JwdGlvbiBzdG9wcyBvbmNlIHRoZSBzdGF0ZSBhZHZhbmNlcyB0byBCLgorICAoU2VlIElWLTUg Q2FzZSAzKQorCitDLTcuIFBBVFRFUk4gKChBKyBCIHwgQyopKyBEKSAgLS0gUGVyLWJyYW5jaCBh YnNvcnB0aW9uIGluIEFMVAorCisgIGlkeCAgdmFySWQgICAgZGVwdGggIG1pbiAgbWF4ICAgbmV4 dCAganVtcCAgZmxhZ3MKKyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAwICAgQkVHSU4gICAgMCAg ICAgIDEgICAgSU5GICAgMSAgICAgNiAgICAgQUJTT1JCQUJMRV9CUkFOQ0gKKyAgIDEgICBBTFQg ICAgICAxICAgICAgMSAgICAxICAgICAyICAgICAtMSAgICBBQlNPUkJBQkxFX0JSQU5DSAorICAg MiAgIEEgICAgICAgIDIgICAgICAxICAgIElORiAgIDMgICAgIDQgICAgIEFCU09SQkFCTEUgfCBB QlNPUkJBQkxFX0JSQU5DSAorICAgMyAgIEIgICAgICAgIDIgICAgICAxICAgIDEgICAgIDUgICAg IC0xCisgICA0ICAgQyAgICAgICAgMiAgICAgIDAgICAgSU5GICAgNSAgICAgLTEgICAgQUJTT1JC QUJMRSB8IEFCU09SQkFCTEVfQlJBTkNICisgICA1ICAgRU5EICAgICAgMCAgICAgIDEgICAgSU5G ICAgNiAgICAgMSAgICAgRU1QVFlfTE9PUAorICAgNiAgIEQgICAgICAgIDAgICAgICAxICAgIDEg ICAgIDcgICAgIC0xCisgICA3ICAgRklOICAgICAgMCAgICAgIDEgICAgMSAgICAgLTEgICAgLTEK KworICBBTFQgYnJhbmNoZXMgYXJlIGNoZWNrZWQgaW5kZXBlbmRlbnRseSBmb3IgYWJzb3JiYWJp bGl0eS4KKyAgQnJhbmNoIDE6IEErIG1hdGNoZXMgQ2FzZSAxIC0+IEEgZ2V0cyBBQlNPUkJBQkxF LiBCIGhhcyBubyBmbGFnLgorICBCcmFuY2ggMjogQyogbWF0Y2hlcyBDYXNlIDEgLT4gQyBnZXRz IEFCU09SQkFCTEUuCisgIEJvdGggQSBhbmQgQyBnZXQgQUJTT1JCQUJMRV9CUkFOQ0ggYXMgcGFy dCBvZiB0aGVpciByZXNwZWN0aXZlIGJyYW5jaAorICBwYXRocy4KKyAgRU5EIGhhcyBFTVBUWV9M T09QOiBicmFuY2ggMiAoQyopIGlzIG51bGxhYmxlLCBtYWtpbmcgdGhlIGdyb3VwIGJvZHkKKyAg bnVsbGFibGUuCisgIEJFR0lOIGFuZCBBTFQgZ2V0IEFCU09SQkFCTEVfQlJBTkNIIChvbiB0aGUg cGF0aCB0byBhYnNvcmJhYmxlIGVsZW1lbnRzKS4KKworCitSZWZlcmVuY2VzOgorCitbMV0gSVNP L0lFQyAxOTA3NS01IEluZm9ybWF0aW9uIHRlY2hub2xvZ3kgLSBHdWlkYW5jZSBmb3IgdGhlIHVz ZSBvZgorICAgIGRhdGFiYXNlIGxhbmd1YWdlIFNRTCAtIFBhcnQgNTogUm93IHBhdHRlcm4gcmVj b2duaXRpb24KKworWzJdIElTTy9JRUMgOTA3NS0yIEluZm9ybWF0aW9uIHRlY2hub2xvZ3kgLSBE YXRhYmFzZSBsYW5ndWFnZXMgLSBTUUwgLQorICAgIFBhcnQgMjogRm91bmRhdGlvbiAoU1FML0Zv dW5kYXRpb24pCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgRW5kIG9mIGRvY3VtZW50Cis9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tIAoyLjQzLjAKCg== ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0007-Row-pattern-recognition-patch-tests-SQL-data.patch" RnJvbSA2NGU1NjFkNDBlMmUxZGJhYmMyZGJmMmUzMzRkZWQ2YmM3N2Y4ODU5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMxICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg Ny85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAodGVzdHM6IFNRTCwgZGF0YSkuCgot LS0KIHNyYy90ZXN0L3JlZ3Jlc3MvZGF0YS9zdG9jay5kYXRhICAgICAgICAgfCAxNjMyICsrKysr KysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlICAgICAgIHwgICAgNSArCiBz cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHIuc3FsICAgICAgICAgICAgIHwgMjEyMSArKysrKysrKysr Kwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsICAgICAgICB8IDQ0MDMgKysrKysr KysrKysrKysrKysrKysrKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2V4cGxhaW4uc3FsICAg ICB8IDM0NDQgKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRl Z3JhdGlvbi5zcWwgfCAgOTUwICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNx bCAgICAgICAgIHwgMzYzMyArKysrKysrKysrKysrKysrKysKIDcgZmlsZXMgY2hhbmdlZCwgMTYx ODggaW5zZXJ0aW9ucygrKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZGF0 YS9zdG9jay5kYXRhCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnBy LnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9iYXNlLnNx bAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNx bAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9pbnRlZ3JhdGlv bi5zcWwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNx bAoKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZGF0YS9zdG9jay5kYXRhIGIvc3JjL3Rl c3QvcmVncmVzcy9kYXRhL3N0b2NrLmRhdGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwMDAuLjY0NWJiNjQzZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVz cy9kYXRhL3N0b2NrLmRhdGEKQEAgLTAsMCArMSwxNjMyIEBACisxCTEJMzY0Ljc1MAkxNTgwMAkw LjAwMAkwLjAwMAkwLjAwMAorMQkyCTM2OC4yNTAJMjEyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEJ MwkzNjguNTAwCTI0NDAwCTAuMDAwCTAuMDAwCTAuMDAwCisxCTQJMzY4Ljc1MAkyMjkwMAkwLjAw MAkwLjAwMAkwLjAwMAorMQk1CTM2OS41MDAJMzU0MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEJNgkz NjkuMDAwCTI5MzAwCTAuMDAwCTAuMDAwCTAuMDAwCisxCTcJMzY3Ljc1MAkxOTAwMAkwLjAwMAkw LjAwMAkwLjAwMAorMQk4CTM3NC4xMjUJMzcyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzIJOQkzNDMu MjUwCTU2ODAwCTAuMDAwCTAuMDAwCTAuMDAwCisyCTEwCTMzOC41MDAJNDUyMDAJMC4wMDAJMC4w MDAJMC4wMDAKKzIJMTEJMzM4Ljc1MAk0MDkwMAkwLjAwMAkwLjAwMAkwLjAwMAorMgkxMgkzNDQu NzUwCTM1MjAwCTAuMDAwCTAuMDAwCTAuMDAwCisyCTEzCTM0OS43NTAJMjg1MDAJMC4wMDAJMC4w MDAJMC4wMDAKKzIJMTQJMzQ2LjAwMAkyNTYwMAkwLjAwMAkwLjAwMAkwLjAwMAorMwkxNQkzNDku MDAwCTI0OTAwCTAuMDAwCTAuMDAwCTAuMDAwCiszCTE2CTM0OS4yNTAJMjA3MDAJMC4wMDAJMC4w MDAJMC4wMDAKKzMJMTcJMzQ5Ljc1MAkyMjIwMAkwLjAwMAkwLjAwMAkwLjAwMAorMwkxOAkzNTEu MjUwCTE5NjAwCTAuMDAwCTAuMDAwCTAuMDAwCiszCTE5CTM1Mi4wMDAJMzI1MDAJMC4wMDAJMC4w MDAJMC4wMDAKKzMJMjAJMzQ5LjUwMAkzMjIwMAkwLjAwMAkwLjAwMAkwLjAwMAorMwkyMQkzNDQu NTAwCTE4NjAwCTAuMDAwCTAuMDAwCTAuMDAwCiszCTIyCTM0NS4wMDAJNjEyMDAJMC4wMDAJMC4w MDAJMC4wMDAKKzQJMjMJMjM4LjI1MAkzNzEwMAkwLjAwMAkwLjAwMAkwLjAwMAorNAkyNAkyMzAu NjI1CTYxNTAwCTAuMDAwCTAuMDAwCTAuMDAwCis0CTI1CTIyMy4wMDAJMTYxNzAwCTAuMDAwCTAu MDAwCTAuMDAwCis0CTI2CTIyOS44NzUJNTUzMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzQJMjcJMjM1 LjI1MAkzODUwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQkyOAkzMTAuMDAwCTM2MDAwCTAuMDAwCTAu MDAwCTAuMDAwCis1CTI5CTMxMS43NTAJMjY4MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzUJMzAJMzEy Ljc1MAkzMTkwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQkzMQkzMTQuNzUwCTIxMTAwCTAuMDAwCTAu MDAwCTAuMDAwCis1CTMyCTMxNS41MDAJMjc0MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzUJMzMJMzE2 LjUwMAk0MDcwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQkzNAkzMjEuNzUwCTUzNTAwCTAuMDAwCTAu MDAwCTAuMDAwCis1CTM1CTMyNi4wMDAJNDg3MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzUJMzYJMzIy LjUwMAk0NjAwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQkzNwkzMTcuNTAwCTM1NjAwCTAuMDAwCTAu MDAwCTAuMDAwCis1CTM4CTMyNS41MDAJMzQwMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzUJMzkJMzI3 LjI1MAkzMDcwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQk0MAkzMjcuNzUwCTM2NzAwCTAuMDAwCTAu MDAwCTAuMDAwCis1CTQxCTMyOC42MjUJMjMyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzUJNDIJMzMw LjUwMAkyOTcwMAkwLjAwMAkwLjAwMAkwLjAwMAorNQk0MwkzMzYuNTAwCTM5MjAwCTAuMDAwCTAu MDAwCTAuMDAwCis1CTQ0CTM0MC43NTAJMzQ0MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzUJNDUJMzM4 LjUwMAkzMjIwMAkwLjAwMAkwLjAwMAkwLjAwMAorNgk0NgkzNTMuMDAwCTI3ODAwCTAuMDAwCTAu MDAwCTAuMDAwCis2CTQ3CTM1Mi4wMDAJNTU2MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzYJNDgJMzU1 LjAwMAkzMTMwMAkwLjAwMAkwLjAwMAkwLjAwMAorNgk0OQkzNTYuMDAwCTI2OTAwCTAuMDAwCTAu MDAwCTAuMDAwCis2CTUwCTM1OC4wMDAJMTg5MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzYJNTEJMzYx LjI1MAkyNjQwMAkwLjAwMAkwLjAwMAkwLjAwMAorNwk1MgkzMTEuNzUwCTI1MTAwCTAuMDAwCTAu MDAwCTAuMDAwCis3CTUzCTMxNC4wMDAJMzc5MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzcJNTQJMzE3 LjAwMAkzNDAwMAkwLjAwMAkwLjAwMAkwLjAwMAorNwk1NQkzMTcuNzUwCTIzNzAwCTAuMDAwCTAu MDAwCTAuMDAwCis3CTU2CTMxOS4wMDAJMjM0MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzcJNTcJMzE2 LjUwMAkyNDIwMAkwLjAwMAkwLjAwMAkwLjAwMAorOAk1OAkzMTYuMDAwCTM3MjAwCTAuMDAwCTAu MDAwCTAuMDAwCis4CTU5CTMxNS4wMDAJMzE1MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzgJNjAJMzAy LjAwMAkxMjQ3MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzgJNjEJMzAwLjAwMAkxOTYxMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzgJNjIJMjk4LjAwMAk3MDAwMAkwLjAwMAkwLjAwMAkwLjAwMAorOAk2Mwky OTQuNTAwCTg4MjAwCTAuMDAwCTAuMDAwCTAuMDAwCis4CTY0CTI5Ni41MDAJNTM4MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzgJNjUJMjk5LjAwMAk0NzkwMAkwLjAwMAkwLjAwMAkwLjAwMAorOAk2Ngkz MDEuNzUwCTMzMzAwCTAuMDAwCTAuMDAwCTAuMDAwCis4CTY3CTI5OS41MDAJMzE4MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzkJNjgJMjk5LjUwMAk3NjcwMAkwLjAwMAkwLjAwMAkwLjAwMAorOQk2OQky OTYuNzUwCTQxOTAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTcwCTI5MS4yNTAJNDY3MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzkJNzEJMjkzLjc1MAkzMTEwMAkwLjAwMAkwLjAwMAkwLjAwMAorOQk3Mgky OTAuMDAwCTQ4OTAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTczCTI4Ny4wMDAJNTYzMDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzkJNzQJMjg3LjAwMAk0MDcwMAkwLjAwMAkwLjAwMAkwLjAwMAorOQk3NQky ODUuNTAwCTI3OTAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTc2CTI4NC4wMDAJMjc0MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzkJNzcJMjg2LjAwMAkyMzUwMAkwLjAwMAkwLjAwMAkwLjAwMAorOQk3OAky OTEuMjUwCTM4MDAwCTAuMDAwCTAuMDAwCTAuMDAwCis5CTc5CTI5Ni43NTAJNDI5MDAJMC4wMDAJ MC4wMDAJMC4wMDAKKzkJODAJMjk1LjAwMAkxOTUwMAkwLjAwMAkwLjAwMAkwLjAwMAorOQk4MQkz MTQuMDAwCTEwMjkwMAkwLjAwMAkwLjAwMAkwLjAwMAorOQk4MgkzMTUuNzUwCTg0MTAwCTAuMDAw CTAuMDAwCTAuMDAwCisxMAk4MwkzMDIuMDAwCTQ0NjAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMAk4 NAkzMDEuMDAwCTQ1MDAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMAk4NQkyOTQuNzUwCTI3OTAwCTAu MDAwCTAuMDAwCTAuMDAwCisxMAk4NgkyOTMuNTAwCTE3NjAwCTAuMDAwCTAuMDAwCTAuMDAwCisx MAk4NwkyOTEuNzUwCTIxNjAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMAk4OAkyOTAuNTAwCTMwMzAw CTAuMDAwCTAuMDAwCTAuMDAwCisxMAk4OQkyOTEuNzUwCTIyNzAwCTAuMDAwCTAuMDAwCTAuMDAw CisxMAk5MAkyOTguNzUwCTE2MjAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMAk5MQkzMDIuMjUwCTQ5 MTAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMAk5MgkzMDUuNTAwCTM1NTAwCTAuMDAwCTAuMDAwCTAu MDAwCisxMAk5MwkzMDkuNzUwCTYzMjAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMAk5NAkzMDkuNTAw CTQzMjAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMQk5NQkzODMuNzUwCTE5MzAwCTAuMDAwCTAuMDAw CTAuMDAwCisxMQk5NgkzODkuNTAwCTI4OTAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMQk5NwkzOTQu NTAwCTQxNzAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMQk5OAkzOTYuMjUwCTI4MjAwCTAuMDAwCTAu MDAwCTAuMDAwCisxMQk5OQk0MDEuMDAwCTU1MDAwCTAuMDAwCTAuMDAwCTAuMDAwCisxMQkxMDAJ NDAyLjAwMAk0MTEwMAkwLjAwMAkwLjAwMAkwLjAwMAorMTEJMTAxCTQwMy4wMDAJMzg1MDAJMC4w MDAJMC4wMDAJMC4wMDAKKzExCTEwMgk0MDQuMDAwCTMzMTAwCTAuMDAwCTAuMDAwCTAuMDAwCisx MQkxMDMJNDA0LjAwMAkzMzgwMAkwLjAwMAkwLjAwMAkwLjAwMAorMTIJMTA0CTM4OC4wMDAJMjU4 MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEyCTEwNQkzODguNTAwCTQ0OTAwCTAuMDAwCTAuMDAwCTAu MDAwCisxMgkxMDYJMzkwLjAwMAkzODQwMAkwLjAwMAkwLjAwMAkwLjAwMAorMTIJMTA3CTM5MC43 NTAJMjMyMDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEyCTEwOAkzOTYuNTAwCTI1MTAwCTAuMDAwCTAu MDAwCTAuMDAwCisxMgkxMDkJMzk4Ljc1MAkzODAwMAkwLjAwMAkwLjAwMAkwLjAwMAorMTIJMTEw CTM5OC4wMDAJMzM2MDAJMC4wMDAJMC4wMDAJMC4wMDAKKzEyCTExMQkzOTQuNTAwCTU0MDAwCTAu MDAwCTAuMDAwCTAuMDAwCisxMgkxMTIJMzk3LjAwMAkyMDkwMAkwLjAwMAkwLjAwMAkwLjAwMAor MTMJMTEzCTM5OC4xMjUJMjg1MDAJMC4wMDAJMzk2LjAwMAk0MDEuMDAwCisxMwkxMTQJMzk0LjUw MAkzOTkwMAkwLjAwMAkzOTIuNTAwCTM5Ny41MDAKKzEzCTExNQkzOTAuMDAwCTM3NjAwCTAuMDAw CTM5MC4wMDAJMzkzLjc1MAorMTMJMTE2CTM4OS41MDAJMzEwMDAJMC4wMDAJMzg2LjAwMAkzOTIu NzUwCisxMwkxMTcJMzg1LjUwMAkyNTgwMAkwLjAwMAkzODUuNTAwCTM4OS43NTAKKzEzCTExOAkz OTAuNTAwCTE4MDAwCTAuMDAwCTM4NS4wMDAJMzkwLjUwMAorMTMJMTE5CTM5MS43NTAJMTQ2MDAJ MC4wMDAJMzkxLjUwMAkzOTUuNTAwCisxMwkxMjAJMzk5LjAwMAkyNzgwMAkwLjAwMAkzOTIuMjUw CTM5OS4wMDAKKzEzCTEyMQk0MDIuMDAwCTQ2NTAwCTAuMDAwCTM5OS4wMDAJNDAzLjAwMAorMTMJ MTIyCTQwOS4wMDAJMzYzMDAJMC4wMDAJNDA0LjUwMAk0MDkuNTAwCisxMwkxMjMJNDA5LjI1MAk1 NDUwMAkwLjAwMAk0MDkuMjUwCTQxMy43NTAKKzEzCTEyNAk0MTEuNzUwCTQ2MjAwCTAuMDAwCTQw Ni4wMDAJNDEyLjUwMAorMTMJMTI1CTQxOC43NTAJNjAyMDAJMC4wMDAJNDEyLjc1MAk0MTkuNTAw CisxMwkxMjYJNDE4Ljc1MAkzMjcwMAkwLjAwMAk0MTYuMDAwCTQyMC4wMDAKKzE0CTEyNwk0MTEu NTAwCTI0ODAwCTAuMDAwCTQxMS4yNTAJNDE1LjUwMAorMTQJMTI4CTQxNS4yNTAJNTMwMDAJMC4w MDAJNDEyLjAwMAk0MjMuMDAwCisxNAkxMjkJNDIwLjAwMAk0OTcwMAkwLjAwMAk0MTcuMjUwCTQy NS4wMDAKKzE0CTEzMAk0MjMuMjUwCTY4NzAwCTAuMDAwCTQyMi43NTAJNDI5LjAwMAorMTQJMTMx CTQyMi41MDAJNDU0MDAJMC4wMDAJNDIwLjc1MAk0MjQuNzUwCisxNAkxMzIJNDI0LjAwMAkyMDkw MAkwLjAwMAk0MjAuNzUwCTQyNC4yNTAKKzE0CTEzMwk0MjguODc1CTM3NjAwCTAuMDAwCTQyNy4w MDAJNDMwLjAwMAorMTQJMTM0CTQzOS4wMDAJNTk4MDAJMC4wMDAJNDI3LjI1MAk0MzkuMDAwCisx NQkxMzUJNDQ4Ljc1MAkyOTMwMAkwLjAwMAk0NDQuNzUwCTQ0OS41MDAKKzE1CTEzNgk0NDQuMDAw CTI3NDAwCTAuMDAwCTQ0NC4wMDAJNDQ5Ljc1MAorMTUJMTM3CTQ0My41MDAJMzA5MDAJMC4wMDAJ NDQwLjUwMAk0NDguNTAwCisxNQkxMzgJNDM3Ljg3NQkyNjUwMAkwLjAwMAk0MzcuNTAwCTQ0Mi44 NzUKKzE1CTEzOQk0MzcuNzUwCTI5MDAwCTAuMDAwCTQzMy41MDAJNDQwLjAwMAorMTUJMTQwCTQz MC41MDAJMjc1MDAJMC4wMDAJNDMwLjI1MAk0NDEuMjUwCisxNQkxNDEJNDI1LjUwMAk1MjMwMAkw LjAwMAk0MjQuMjUwCTQyOC44ODAKKzE1CTE0Mgk0MjguMDAwCTU5OTAwCTAuMDAwCTQxOS41MDAJ NDI5LjAwMAorMTUJMTQzCTQzMi41MDAJMzQ2MDAJMC4wMDAJNDI3LjI1MAk0MzUuMDAwCisxNQkx NDQJNDM3LjUwMAkzMzEwMAkwLjAwMAk0MzIuMDAwCTQzOC41MDAKKzE1CTE0NQk0MzQuNTAwCTI0 MzAwCTAuMDAwCTQzNC4wMDAJNDM3Ljc1MAorMTUJMTQ2CTQzMS41MDAJMjg1MDAJMC4wMDAJNDMw LjUwMAk0MzcuNTAwCisxNQkxNDcJNDI4LjAwMAkxNTUwMAkwLjAwMAk0MjcuMDAwCTQzMi43NTAK KzE1CTE0OAk0MjQuMjUwCTQ0OTAwCTAuMDAwCTQyNC4wMDAJNDI4Ljc1MAorMTUJMTQ5CTQyMy4w MDAJMzQwMDAJMC4wMDAJNDIwLjAwMAk0MjYuNTAwCisxNQkxNTAJNDIyLjg3NQkzNzgwMAkwLjAw MAk0MjAuMDAwCTQyNC4wMDAKKzE1CTE1MQk0MjMuNTAwCTI0MDAwCTAuMDAwCTQyMy4yNTAJNDI4 LjAwMAorMTUJMTUyCTQyOS41MDAJMjMyMDAJMC4wMDAJNDIwLjUwMAk0MjkuNTAwCisxNQkxNTMJ NDM0LjI1MAkzMTgwMAkwLjAwMAk0MjkuNzUwCTQzNS4wMDAKKzE1CTE1NAk0MzAuMjUwCTM2NTAw CTAuMDAwCTQyNi41MDAJNDM2LjI1MAorMTYJMTU1CTMwOS43NTAJNDE0MDAJMC4wMDAJMzA3LjEy NQkzMTAuNzUwCisxNgkxNTYJMzE3LjAwMAk0NDUwMAkwLjAwMAkzMDkuNzUwCTMxNy4wMDAKKzE2 CTE1NwkzMTUuMDAwCTM5OTAwCTAuMDAwCTMxMy4xMjUJMzE5Ljc1MAorMTYJMTU4CTMyMi4wMDAJ NDA2MDAJMC4wMDAJMzE4LjUwMAkzMjIuNTAwCisxNgkxNTkJMzI0LjI1MAkzNTMwMAkwLjAwMAkz MjEuMDAwCTMyNS4yNTAKKzE2CTE2MAkzMjMuMDAwCTMyMzAwCTAuMDAwCTMyMi41MDAJMzI3LjAw MAorMTYJMTYxCTMyOS4yNTAJNDc3MDAJMC4wMDAJMzIzLjI1MAkzMzAuMDAwCisxNgkxNjIJMzI5 LjUwMAk1NjcwMAkwLjAwMAkzMjguNTAwCTMzMy41MDAKKzE2CTE2MwkzMjEuMDAwCTQ1NDAwCTAu MDAwCTMyMC4wMDAJMzI4LjUwMAorMTcJMTY0CTI5OC4wMDAJMzE5MDAJMC4wMDAJMjkwLjUwMAky OTguMDAwCisxNwkxNjUJMjcyLjAwMAkxNjUwMDAJMC4wMDAJMjcwLjc1MAkyODUuMTI1CisxNwkx NjYJMjU5LjUwMAkyOTA0MDAJMC4wMDAJMjUyLjc1MAkyNjEuMDAwCisxNwkxNjcJMjcwLjc1MAkx MzYwMDAJMC4wMDAJMjY2LjAwMAkyNzAuNzUwCisxNwkxNjgJMjY4Ljc1MAk5NjYwMAkwLjAwMAky NjYuMDAwCTI3MS43NTAKKzE3CTE2OQkyNjAuMDAwCTk5MTAwCTAuMDAwCTI1OC4wMDAJMjY0LjUw MAorMTcJMTcwCTI1MS41MDAJMTAwOTAwCTAuMDAwCTI1MC41MDAJMjYwLjc1MAorMTcJMTcxCTI1 OS41MDAJNzgxMDAJMC4wMDAJMjUzLjAwMAkyNjEuMDAwCisxNwkxNzIJMjYwLjUwMAk2NDYwMAkw LjAwMAkyNjAuNTAwCTI2Ny41MDAKKzE3CTE3MwkyNjAuMDAwCTUxNDAwCTAuMDAwCTI1OS4wMDAJ MjY0LjUwMAorMTcJMTc0CTI1OC4wMDAJNDA4MDAJMC4wMDAJMjU3LjAwMAkyNjEuMDAwCisxNwkx NzUJMjU3Ljc1MAkzOTQwMAkwLjAwMAkyNTUuMDAwCTI1Ny43NTAKKzE3CTE3NgkyNTUuNTAwCTQ3 NTAwCTAuMDAwCTI1My41MDAJMjU3LjUwMAorMTcJMTc3CTI0OC41MDAJMTQ3NDAwCTAuMDAwCTI0 Ny4yNTAJMjU0LjAwMAorMTcJMTc4CTI1MS41MDAJMTA3MTAwCTAuMDAwCTI0NS4wMDAJMjUxLjUw MAorMTcJMTc5CTI1OS41MDAJNzAxMDAJMC4wMDAJMjUyLjUwMAkyNjIuMDAwCisxNwkxODAJMjYx Ljc1MAk0OTgwMAkwLjAwMAkyNTUuMDAwCTI2My41MDAKKzE3CTE4MQkyNzQuMDAwCTE0NjcwMAkw LjAwMAkyNzAuNTAwCTI4NC41MDAKKzE3CTE4MgkyODEuMDAwCTgyODAwCTAuMDAwCTI3Ny41MDAJ MjgzLjc1MAorMTcJMTgzCTI4Mi4wMDAJNTIwMDAJMC4wMDAJMjgxLjAwMAkyODQuNTAwCisxNwkx ODQJMjc5LjI1MAkzOTYwMAkwLjAwMAkyNzguMDAwCTI4MC4yNTAKKzE4CTE4NQkyNDguMDAwCTM4 MDAwCTAuMDAwCTI0Ny43NTAJMjUwLjAwMAorMTgJMTg2CTI0Ni41MDAJMjUxMDAJMC4wMDAJMjQ0 LjAwMAkyNDguMjUwCisxOAkxODcJMjQ3LjAwMAkyNzEwMAkwLjAwMAkyNDUuMDAwCTI0OC43NTAK KzE4CTE4OAkyNDQuMzc1CTMwNTAwCTAuMDAwCTI0NC4wMDAJMjQ4LjAwMAorMTgJMTg5CTI0My4y NTAJMzE2MDAJMC4wMDAJMjQwLjUwMAkyNDQuMjUwCisxOAkxOTAJMjQ2LjI1MAkzNDkwMAkwLjAw MAkyNDUuMjUwCTI0OC41MDAKKzE4CTE5MQkyNDUuMjUwCTM1MzAwCTAuMDAwCTI0NS4xMzAJMjQ5 Ljc1MAorMTgJMTkyCTI0MS4yNTAJMzA3MDAJMC4wMDAJMjQwLjI1MAkyNDQuNTAwCisxOQkxOTMJ MjQwLjUwMAkzNDgwMAkwLjAwMAkyMzcuNTAwCTI0My4yNTAKKzE5CTE5NAkyNDYuNTAwCTQzNjAw CTAuMDAwCTIzNi41MDAJMjQ2LjUwMAorMTkJMTk1CTI0OS41MDAJNjgzMDAJMC4wMDAJMjQ2LjUw MAkyNTEuNTAwCisxOQkxOTYJMjUwLjAwMAkzNTEwMAkwLjAwMAkyNDkuMTI1CTI1NC4wMDAKKzE5 CTE5NwkyNDguNzUwCTU2NDAwCTAuMDAwCTI0Ny4wMDAJMjUxLjUwMAorMTkJMTk4CTI0OS4yNTAJ MzIxMDAJMC4wMDAJMjQ2Ljc1MAkyNTAuNTAwCisxOQkxOTkJMjQ3LjUwMAkyOTMwMAkwLjAwMAky NDcuMzc1CTI1MC43NTAKKzE5CTIwMAkyNDUuNzUwCTIwMDAwCTAuMDAwCTI0NS4yNTAJMjQ3LjUw MAorMTkJMjAxCTI0Ni4yNTAJMjI1MDAJMC4wMDAJMjQ1LjEyNQkyNDYuNzUwCisxOQkyMDIJMjQz LjAwMAkzODgwMAkwLjAwMAkyNDIuNTAwCTI0Ny43NTAKKzIwCTIwMwkxODIuMjUwCTg0MzAwCTAu MDAwCTE3Ni41MDAJMTgzLjUwMAorMjAJMjA0CTE3OS4wMDAJNjMzMDAJMC4wMDAJMTc5LjAwMAkx ODUuNTAwCisyMAkyMDUJMTczLjAwMAk1OTIwMAkwLjAwMAkxNzEuNzUwCTE3OC41MDAKKzIwCTIw NgkxNzEuNTAwCTY5NjAwCTAuMDAwCTE3MC4yNTAJMTc1LjI1MAorMjAJMjA3CTE2NS4xMjUJNzA1 MDAJMC4wMDAJMTY1LjEyNQkxNzIuMjUwCisyMAkyMDgJMTU2LjUwMAkxMTMyMDAJMC4wMDAJMTU1 LjI1MAkxNjUuMDAwCisyMAkyMDkJMTUyLjAwMAkxMzEwMDAJMC4wMDAJMTUwLjUwMAkxNTcuMjUw CisyMAkyMTAJMTU5LjYyNQkxMDkxMDAJMC4wMDAJMTUwLjUwMAkxNTkuNzUwCisyMAkyMTEJMTYx Ljg4MAk4NzgwMAkwLjAwMAkxNjEuNzUwCTE2OC41MDAKKzIwCTIxMgkxNjYuNTAwCTc1ODAwCTAu MDAwCTE1OC4wMDAJMTY2LjUwMAorMjAJMjEzCTE3MC41MDAJOTU5MDAJMC4wMDAJMTY5LjI1MAkx NzMuNzUwCisyMAkyMTQJMTcxLjUwMAk4MDYwMAkwLjAwMAkxNjYuNTAwCTE3My41MDAKKzIwCTIx NQkxNjkuMjUwCTU5NTAwCTAuMDAwCTE2OC4yNTAJMTc1LjAwMAorMjAJMjE2CTE2Ni43NTAJNDcw MDAJMC4wMDAJMTY0Ljc1MAkxNjguMDAwCisyMAkyMTcJMTY1LjAwMAk1OTcwMAkwLjAwMAkxNjUu MDAwCTE3MS4wMDAKKzIwCTIxOAkxNjQuMDAwCTI1ODAwCTAuMDAwCTE2MC4yNTAJMTY0LjAwMAor MjAJMjE5CTE2MC44NzUJNTE5MDAJMC4wMDAJMTYwLjAwMAkxNjYuNzUwCisyMAkyMjAJMTU5LjAw MAk4NDEwMAkwLjAwMAkxNTMuNTAwCTE1OS41MDAKKzIwCTIyMQkxNjAuMjUwCTEyNTgwMAkwLjAw MAkxNTQuMjUwCTE2MS43NTAKKzIwCTIyMgkxNTkuNTAwCTYzOTAwCTAuMDAwCTE1OC41MDAJMTYz LjUwMAorMjAJMjIzCTE1Ny43NTAJNTYxMDAJMC4wMDAJMTU1LjYyNQkxNjAuNTAwCisyMAkyMjQJ MTU2LjI1MAk3NDIwMAkwLjAwMAkxNTQuMjUwCTE1OS41MDAKKzIwCTIyNQkxNjQuMTI1CTYwOTAw CTAuMDAwCTE1OS4yNTAJMTY0Ljc1MAorMjAJMjI2CTE2Mi4wMDAJODcwMDAJMC4wMDAJMTYwLjc1 MAkxNjQuNTAwCisyMQkyMjcJMTYyLjI1MAk1MTgwMAkwLjAwMAkxNjEuNzUwCTE2Ni4wMDAKKzIx CTIyOAkxNjQuMjUwCTY1MzAwCTAuMDAwCTE2MC4xMzAJMTY0LjI1MAorMjEJMjI5CTE2OC4wMDAJ NDg5MDAJMC4wMDAJMTY2LjAwMAkxNjguODc1CisyMQkyMzAJMTY4Ljg3NQk0NTEwMAkwLjAwMAkx NjguMjUwCTE3MS4zNzUKKzIxCTIzMQkxNjcuNTAwCTc4MDAwCTAuMDAwCTE2Ni43NTAJMTcxLjI1 MAorMjEJMjMyCTE2Ni42MjUJNTMwMDAJMC4wMDAJMTY1LjUwMAkxNzAuMjUwCisyMQkyMzMJMTY1 Ljc1MAk0OTAwMAkwLjAwMAkxNjMuNTAwCTE2Ni41MDAKKzIxCTIzNAkxNjMuMjUwCTU4NzAwCTAu MDAwCTE2My4yNTAJMTY3LjEyNQorMjEJMjM1CTE2OC41MDAJNTY3MDAJMC4wMDAJMTYyLjYzMAkx NjguNTAwCisyMgkyMzYJMjEyLjAwMAk4OTIwMAkwLjAwMAkyMTIuMDAwCTIxNy43NTAKKzIyCTIz NwkyMDcuNTAwCTExNzcwMAkwLjAwMAkyMDYuMDAwCTIwOS43NTAKKzIyCTIzOAkyMTIuMDAwCTk1 MTAwCTAuMDAwCTIwNy41MDAJMjEyLjUwMAorMjIJMjM5CTIxMi4yNTAJNzQwMDAJMC4wMDAJMjEx LjUwMAkyMTQuMDAwCisyMgkyNDAJMjE1LjUwMAk2ODQwMAkwLjAwMAkyMTEuODgwCTIxNS43NTAK KzIyCTI0MQkyMjAuMDAwCTc5MjAwCTAuMDAwCTIxNi4wMDAJMjIwLjAwMAorMjMJMjQyCTIyMi41 MDAJNDU3MDAJMC4wMDAJMjIyLjI1MAkyMjQuNjMwCisyMwkyNDMJMjIzLjI1MAk0MzAwMAkwLjAw MAkyMjEuNTAwCTIyMy41MDAKKzIzCTI0NAkyMjQuMjUwCTQ3NzAwCTAuMDAwCTIyMy41MDAJMjI1 LjI1MAorMjMJMjQ1CTIyNi41MDAJNDM4MDAJMC4wMDAJMjIzLjM4MAkyMjYuNTAwCisyMwkyNDYJ MjMwLjAwMAk4ODgwMAkwLjAwMAkyMjYuMjUwCTIzMC4wMDAKKzIzCTI0NwkyMjkuMzgwCTExODAw MAkwLjAwMAkyMjkuMDAwCTIzMC44ODAKKzIzCTI0OAkyMjguNTAwCTEyNzEwMAkwLjAwMAkyMjgu Mzc1CTIzMS4wMDAKKzIzCTI0OQkyMzAuMzgwCTEzNjQwMAkwLjAwMAkyMjguNTAwCTIzMC43NTAK KzI0CTI1MAkyNDkuODgwCTk3NTAwCTAuMDAwCTI0OS42MzAJMjU1LjAwMAorMjQJMjUxCTI1MS4w MDAJOTA0MDAJMC4wMDAJMjQ4LjEzMAkyNTIuMjUwCisyNAkyNTIJMjU2LjUwMAk5MDQwMAkwLjAw MAkyNTEuMDAwCTI1Ny4wMDAKKzI0CTI1MwkyNTcuNzUwCTExMTAwMAkwLjAwMAkyNTcuNjI1CTI1 OS43NTAKKzI0CTI1NAkyNTkuMjUwCTg3MjAwCTAuMDAwCTI1Ni4wMDAJMjU5LjI1MAorMjQJMjU1 CTI2MS4wMDAJMTExMTAwCTAuMDAwCTI1OC4yNTAJMjYxLjI1MAorMjQJMjU2CTI2My43NTAJNzU5 MDAJMC4wMDAJMjYxLjI1MAkyNjQuNTAwCisyNAkyNTcJMjU4LjAwMAkxMjExMDAJMC4wMDAJMjU3 Ljc1MAkyNjMuMjUwCisyNAkyNTgJMjU0LjAwMAkxMjU1MDAJMC4wMDAJMjU0LjAwMAkyNTcuMjUw CisyNAkyNTkJMjUzLjUwMAk3ODQwMAkwLjAwMAkyNTIuNzUwCTI1Ny43NTAKKzI0CTI2MAkyNTgu MDAwCTc0NzAwCTAuMDAwCTI1My4wMDAJMjU4LjAwMAorMjUJMjYxCTI3OS43NTAJNjI3MDAJMC4w MDAJMjc3LjEzMAkyODAuMDAwCisyNQkyNjIJMjc3LjYyNQk4NTUwMAkwLjAwMAkyNzYuNzUwCTI4 MC4zNzUKKzI1CTI2MwkyNzYuNjMwCTk5ODAwCTAuMDAwCTI3Ni42MzAJMjgwLjM4MAorMjUJMjY0 CTI3Ni4yNTAJMTEzNjAwCTAuMDAwCTI3Ni4wMDAJMjc5LjUwMAorMjUJMjY1CTI3NC4yNTAJMTg3 MTAwCTAuMDAwCTI3Mi43NTAJMjc2LjM4MAorMjUJMjY2CTI3Mi4wMDAJMTA1MzAwCTAuMDAwCTI3 Mi4wMDAJMjc1LjUwMAorMjUJMjY3CTI3MC41MDAJMTExMDAwCTAuMDAwCTI2OC4wMDAJMjcyLjc1 MAorMjUJMjY4CTI3MS4wMDAJNjYwMDAJMC4wMDAJMjcwLjUwMAkyNzIuNTAwCisyNQkyNjkJMjcy LjUwMAk0MzAwMAkwLjAwMAkyNzAuMjUwCTI3Mi41MDAKKzI1CTI3MAkyNzMuMDAwCTU2MjAwCTAu MDAwCTI3Mi4wMDAJMjczLjg4MAorMjUJMjcxCTI3NS41MDAJNTUyMDAJMC4wMDAJMjczLjc1MAky NzUuNTAwCisyNQkyNzIJMjcyLjI1MAk3MzQwMAkwLjAwMAkyNzIuMDAwCTI3NS41MDAKKzI2CTI3 MwkyNjIuMjUwCTg5MDAwCTAuMDAwCTI2Mi4wMDAJMjY3Ljc1MAorMjYJMjc0CTI1OS41MDAJMTQ2 MTAwCTAuMDAwCTI1Ny41MDAJMjYxLjc1MAorMjYJMjc1CTI2MC4yNTAJOTAzMDAJMC4wMDAJMjU3 LjUwMAkyNjAuNjI1CisyNgkyNzYJMjYxLjAwMAk3NDEwMAkwLjAwMAkyNTguODgwCTI2MS44ODAK KzI2CTI3NwkyNjQuNTAwCTQ0NDAwCTAuMDAwCTI2MC4yNTAJMjY0Ljg4MAorMjYJMjc4CTI2Mi4w MDAJNzg5MDAJMC4wMDAJMjYxLjI1MAkyNjQuNTAwCisyNwkyNzkJMjcyLjUwMAkxMzIwMDAJMC4w MDAJMjcwLjEzMAkyNzIuNTAwCisyNwkyODAJMjcyLjAwMAk3OTgwMAkwLjAwMAkyNzEuMzc1CTI3 Mi42MjUKKzI3CTI4MQkyNzEuMTMwCTc1NjAwCTAuMDAwCTI3MC43NTAJMjcyLjg4MAorMjcJMjgy CTI3MC4wMDAJMTEzODAwCTAuMDAwCTI2OS44ODAJMjcxLjUwMAorMjcJMjgzCTI2NC4wMDAJMTc5 NTAwCTAuMDAwCTI2My41MDAJMjcwLjUwMAorMjcJMjg0CTI1OC4wMDAJMjE1MzAwCTAuMDAwCTI1 Ny41MDAJMjYzLjI1MAorMjcJMjg1CTI1OC4yNTAJMTU0MjAwCTAuMDAwCTI1Ni41MDAJMjU5LjYy NQorMjcJMjg2CTI1OS41MDAJOTU2MDAJMC4wMDAJMjU3LjUwMAkyNjAuNTAwCisyNwkyODcJMjYx LjI1MAk5NjUwMAkwLjAwMAkyNTkuMjUwCTI2Mi4wMDAKKzI3CTI4OAkyNTkuNzUwCTExOTAwMAkw LjAwMAkyNTkuMjUwCTI2MS42MjUKKzI3CTI4OQkyNTguNzUwCTgxNTAwCTAuMDAwCTI1Ny4xMzAJ MjU5Ljc1MAorMjgJMjkwCTI1Ny4zODAJNTM3MDAJMC4wMDAJMjU3LjI1MAkyNTkuMjUwCisyOAky OTEJMjU2LjAwMAk1MjIwMAkwLjAwMAkyNTUuMzc1CTI1Ny41MDAKKzI4CTI5MgkyNTcuNzUwCTc2 MjAwCTAuMDAwCTI1NS42MzAJMjU4LjYzMAorMjgJMjkzCTI1OC43NTAJOTM0MDAJMC4wMDAJMjU3 LjM4MAkyNTkuNTAwCisyOAkyOTQJMjU4Ljc1MAk5OTAwMAkwLjAwMAkyNTguNTAwCTI1OS42MzAK KzI4CTI5NQkyNTcuMjUwCTEyMzEwMAkwLjAwMAkyNTUuNzUwCTI1Ny41MDAKKzI4CTI5NgkyNjAu NTAwCTE4ODMwMAkwLjAwMAkyNTcuMDAwCTI2MS4wMDAKKzI4CTI5NwkyNjAuMjUwCTEwMzMwMAkw LjAwMAkyNTkuMDAwCTI2MS4yNTAKKzI5CTI5OAkyNjQuMjUwCTExMDEwMAkwLjAwMAkyNjEuNjMw CTI2NC4zODAKKzI5CTI5OQkyNjYuMDAwCTk4MTAwCTAuMDAwCTI2NC4yNTAJMjY2Ljc1MAorMjkJ MzAwCTI2Ny41MDAJMTQ2MTAwCTAuMDAwCTI2Ni42MjUJMjY4LjAwMAorMjkJMzAxCTI3MC4yNTAJ MTk5NDAwCTAuMDAwCTI2Ny41MDAJMjcwLjI1MAorMjkJMzAyCTI3MC4yNTAJODk4MDAJMC4wMDAJ MjY5LjAwMAkyNzAuNjI1CisyOQkzMDMJMjcxLjAwMAk3ODYwMAkwLjAwMAkyNjkuMjUwCTI3MS4y NTAKKzI5CTMwNAkyNzIuNzUwCTEwNzYwMAkwLjAwMAkyNjkuODgwCTI3My41MDAKKzI5CTMwNQky NzMuNTAwCTExOTIwMAkwLjAwMAkyNzIuNzUwCTI3NS4yNTAKKzI5CTMwNgkyNzMuNTAwCTAJMC4w MDAJMC4wMDAJMC4wMDAKKzMwCTMwNwkyMzYuMjUwCTE0NjEwMAkwLjAwMAkyMzYuMjUwCTI0Mi4w MDAKKzMwCTMwOAkyMzkuNTAwCTM1ODEwMAkwLjAwMAkyMzUuNTAwCTIzOS41MDAKKzMwCTMwOQky NDMuNTAwCTI0MTUwMAkwLjAwMAkyNDAuNTAwCTI0NC4wMDAKKzMwCTMxMAkyNTEuMTI1CTMwNDgw MAkwLjAwMAkyNDguMzc1CTI1My42MjUKKzMwCTMxMQkyNTEuMjUwCTIzMTAwMAkwLjAwMAkyNDgu ODc1CTI1My4wMDAKKzMwCTMxMgkyNTMuMDAwCTE1MjgwMAkwLjAwMAkyNDkuNjI1CTI1NC4wMDAK KzMwCTMxMwkyNTMuNTAwCTE3NTEwMAkwLjAwMAkyNTIuNTAwCTI1Ny44ODAKKzMwCTMxNAkyNTQu MDAwCTE0MTgwMAkwLjAwMAkyNTIuMTI1CTI1NS41MDAKKzMwCTMxNQkyNTguMDAwCTExMDAwMAkw LjAwMAkyNTMuMDAwCTI1OC4yNTAKKzMwCTMxNgkyNjEuNzUwCTM3NDIwMAkwLjAwMAkyNjEuMjUw CTI2NC4wMDAKKzMwCTMxNwkyNjIuMzgwCTI3NTEwMAkwLjAwMAkyNjEuMzgwCTI2NS4wMDAKKzMw CTMxOAkyNjEuNTAwCTE2OTcwMAkwLjAwMAkyNTkuODc1CTI2MS43NTAKKzMxCTMxOQkyNjIuNTAw CTg3MTAwCTAuMDAwCTI2Mi4yNTAJMjY2LjUwMAorMzEJMzIwCTI1OC4yNTAJOTExMDAJMC4wMDAJ MjU3Ljc1MAkyNjIuNTAwCiszMQkzMjEJMjYwLjg4MAkxMDU2MDAJMC4wMDAJMjU4LjI1MAkyNjIu MDAwCiszMQkzMjIJMjYxLjc1MAk4NTAwMAkwLjAwMAkyNTguNTAwCTI2MS44ODAKKzMxCTMyMwky NTkuNjMwCTY4NDAwCTAuMDAwCTI1OS4wMDAJMjYyLjI1MAorMzEJMzI0CTI1Ny4yNTAJNDU1MDAJ MC4wMDAJMjU3LjI1MAkyNjAuMjUwCiszMQkzMjUJMjU2Ljc1MAkzOTkwMAkwLjAwMAkyNTUuMDAw CTI1Ny41MDAKKzMxCTMyNgkyNTguMDAwCTEwMjQwMAkwLjAwMAkyNTUuMjUwCTI1OS41MDAKKzMy CTMyNwkyNjguMTI1CTE4MDcwMAkwLjAwMAkyNjcuNzUwCTI3Mi4wMDAKKzMyCTMyOAkyNzAuMjUw CTgwOTAwCTAuMDAwCTI2Ny4wMDAJMjcwLjI1MAorMzIJMzI5CTI3MS4wMDAJMTA3MjAwCTAuMDAw CTI2Ny43NTAJMjcxLjAwMAorMzIJMzMwCTI3My4wMDAJMTQ5NDAwCTAuMDAwCTI2OS4yNTAJMjcz LjAwMAorMzIJMzMxCTI3My41MDAJMjYyOTAwCTAuMDAwCTI3My4wMDAJMjc2Ljc1MAorMzIJMzMy CTI3Ni4yNTAJMTUwMzAwCTAuMDAwCTI3My4wMDAJMjc2LjI1MAorMzIJMzMzCTI3OC42MzAJMTcy ODAwCTAuMDAwCTI3NS41MDAJMjc5LjUwMAorMzIJMzM0CTI4MS4wMDAJMTMyNzAwCTAuMDAwCTI3 OC43NTAJMjgxLjUwMAorMzIJMzM1CTI3OS4xMjUJMTc4NDAwCTAuMDAwCTI3OS4wMDAJMjgxLjc1 MAorMzMJMzM2CTMxMS4wMDAJOTY5MDAJMC4wMDAJMzA4LjEzMAkzMTEuMDAwCiszMwkzMzcJMzA4 LjI1MAk4NTAwMAkwLjAwMAkzMDcuNjI1CTMxMS4wMDAKKzMzCTMzOAkzMDUuNzUwCTExOTIwMAkw LjAwMAkzMDQuNTAwCTMwNi42MjUKKzMzCTMzOQkzMDMuNTAwCTEzMzIwMAkwLjAwMAkzMDMuMDAw CTMwNi41MDAKKzMzCTM0MAkyOTguNTAwCTE2ODQwMAkwLjAwMAkyOTcuMTMwCTI5OS43NTAKKzMz CTM0MQkyOTkuNjMwCTc3OTAwCTAuMDAwCTI5OS4xMzAJMzAwLjYzMAorMzMJMzQyCTMwMS43NTAJ OTExMDAJMC4wMDAJMzAwLjEzMAkzMDEuODgwCiszMwkzNDMJMzA2LjYzMAk3ODcwMAkwLjAwMAky OTkuNzUwCTMwNy4wMDAKKzMzCTM0NAkzMDguMTI1CTEzMjYwMAkwLjAwMAkzMDYuNzUwCTMxMC4w MDAKKzMzCTM0NQkzMDUuNTAwCTgyNDAwCTAuMDAwCTMwNC4wMDAJMzA4LjI1MAorMzQJMzQ2CTMw OC44NzUJODA2MDAJMC4wMDAJMzA4LjI1MAkzMTIuODc1CiszNAkzNDcJMzA2Ljc1MAkxMjQwMDAJ MC4wMDAJMzA2LjI1MAkzMDkuMjUwCiszNAkzNDgJMzEwLjAwMAkxMjMzMDAJMC4wMDAJMzA3LjAw MAkzMTAuMjUwCiszNAkzNDkJMzEwLjI1MAkxMDI2MDAJMC4wMDAJMzA5Ljc1MAkzMTIuODc1Cisz NAkzNTAJMzEyLjAwMAk4MDQwMAkwLjAwMAkzMDkuODgwCTMxMi4yNTAKKzM0CTM1MQkzMDguODgw CTExNTkwMAkwLjAwMAkzMDguNTAwCTMxMi4wMDAKKzM0CTM1MgkzMTAuNTAwCTk4MzAwCTAuMDAw CTMwNy41MDAJMzEwLjUwMAorMzQJMzUzCTMxNC4yNTAJMTE2OTAwCTAuMDAwCTMwOS43NTAJMzE0 LjI1MAorMzQJMzU0CTMxNS42MjUJMTE4NjAwCTAuMDAwCTMxNC4yNTAJMzE3LjUwMAorMzQJMzU1 CTMxOC4wMDAJOTg3MDAJMC4wMDAJMzE1LjAwMAkzMTguNTAwCiszNAkzNTYJMzE5Ljc1MAkxNDkw MDAJMC4wMDAJMzE4LjAwMAkzMjEuNTAwCiszNAkzNTcJMzExLjI1MAkxMjE5MDAJMC4wMDAJMzEx LjAwMAkzMTcuNTAwCiszNAkzNTgJMzA5LjAwMAk4NDQwMAkwLjAwMAkzMDguMTMwCTMwOS44ODAK KzM0CTM1OQkzMTIuMDAwCTEyNjUwMAkwLjAwMAkzMDguNjI1CTMxMi4yNTAKKzM1CTM2MAk3OC4w MDAJNTEyMTAwCTAuMDAwCTc3LjUwMAk3OC41MDAKKzM1CTM2MQk3NS4zNzUJNjA3NzAwCTAuMDAw CTc1LjI1MAk3OC4wMDAKKzM1CTM2Mgk3NC42MjUJNjI4MzAwCTAuMDAwCTczLjc1MAk3NS4yNTAK KzM1CTM2Mwk3NC4yNTAJNTE3MzAwCTAuMDAwCTczLjg3NQk3NS4wMDAKKzM1CTM2NAk3Mi43NTAJ MzU4MzAwCTAuMDAwCTcyLjYyNQk3NC4wMDAKKzM1CTM2NQk3Mi42MzAJMzk0NjAwCTAuMDAwCTcy LjI1MAk3My41MDAKKzM1CTM2Ngk3My4wMDAJNTk5MjAwCTAuMDAwCTcyLjEzMAk3My43NTAKKzM1 CTM2Nwk3My41MDAJNDUwMjAwCTAuMDAwCTcyLjg3NQk3NC41MDAKKzM1CTM2OAk3NC4xMzAJMzA0 NDAwCTAuMDAwCTczLjg4MAk3NC4yNTAKKzM1CTM2OQk3My44NzUJMjg5MjAwCTAuMDAwCTczLjM3 NQk3NC41MDAKKzM2CTM3MAk3Mi4yNTAJNDk4MzAwCTAuMDAwCTY5Ljg3NQk3Mi4zNzUKKzM2CTM3 MQk3MS42MzAJNDc2ODAwCTAuMDAwCTcxLjAwMAk3Mi41MDAKKzM2CTM3Mgk3MS4yNTAJMjgyNjAw CTAuMDAwCTcxLjAwMAk3MS44ODAKKzM2CTM3Mwk3MS42MzAJMzUwMzAwCTAuMDAwCTcwLjg4MAk3 MS44ODAKKzM2CTM3NAk3MC44ODAJMjYxNTAwCTAuMDAwCTcwLjUwMAk3MS42MzAKKzM2CTM3NQk3 MC41MDAJNTMxNzAwCTAuMDAwCTcwLjM4MAk3MS4xMzAKKzM2CTM3Ngk2OS42MjUJMzkxOTAwCTAu MDAwCTY5LjUwMAk3MC43NTAKKzM2CTM3Nwk2OS42MjUJMzM3MDAwCTAuMDAwCTY5LjEyNQk3MC41 MDAKKzM2CTM3OAk3MC4wMDAJMzM4OTAwCTAuMDAwCTY5LjUwMAk3MC42MjUKKzM2CTM3OQk3MC4w MDAJMzkzNDAwCTAuMDAwCTY5LjYyNQk3MC4xMjUKKzM2CTM4MAk2OS42MzAJMjkzMjAwCTAuMDAw CTY5LjYzMAk3MC4yNTAKKzM2CTM4MQk2OS41MDAJMjA1MzAwCTAuMDAwCTY5LjUwMAk3MC4wMDAK KzM2CTM4Mgk3MC4wMDAJMjY4MzAwCTAuMDAwCTY5Ljc1MAk3MC4wMDAKKzM2CTM4Mwk2OC42MzAJ MzgxNTAwCTAuMDAwCTY4LjUwMAk2OS44ODAKKzM2CTM4NAk2OC4yNTAJNjkzMjAwCTAuMDAwCTY3 LjI1MAk2OC41MDAKKzM2CTM4NQk2Ny42MzAJMzE2MTAwCTAuMDAwCTY3LjUwMAk2OC4yNTAKKzM2 CTM4Ngk2Ny43NTAJNDA2NjAwCTAuMDAwCTY3LjM4MAk2OC4wMDAKKzM2CTM4Nwk2Ny41MDAJMzA1 ODAwCTAuMDAwCTY3LjM3NQk2Ny44NzUKKzM2CTM4OAk2Ni41MDAJNDY2NTAwCTAuMDAwCTY2LjEy NQk2Ny43NTAKKzM2CTM4OQk2Ni4yNTAJNjUyODAwCTAuMDAwCTY1Ljc1MAk2Ni42MjUKKzM2CTM5 MAk2Ni43NTAJMzk5MzAwCTAuMDAwCTY2LjEyNQk2Ni44NzUKKzM2CTM5MQk2Ny44ODAJNTAyMTAw CTAuMDAwCTY2LjUwMAk2OC4zODAKKzM2CTM5Mgk2OC41MDAJNTM4OTAwCTAuMDAwCTY4LjM4MAk2 OS4yNTAKKzM2CTM5Mwk2Ny44ODAJNDA3NzAwCTAuMDAwCTY3Ljc1MAk2OC41MDAKKzM2CTM5NAk2 Ny43NTAJMzk2NTAwCTAuMDAwCTY3Ljc1MAk2OC42MzAKKzM2CTM5NQk3MS4yNTAJNDM5OTAwCTAu MDAwCTY3LjYyNQk3MS4zNzUKKzM2CTM5Ngk3MC4wMDAJNjI2MTAwCTAuMDAwCTY5LjM4MAk3MS4w MDAKKzM3CTM5Nwk2NS4wMDAJMjA4OTAwCTAuMDAwCTY0LjUwMAk2NS4xMjUKKzM3CTM5OAk2NS4z ODAJMjkxODAwCTAuMDAwCTY0Ljg4MAk2NS4zODAKKzM3CTM5OQk2NS43NTAJMzc3NjAwCTAuMDAw CTY1LjUwMAk2Ni4zODAKKzM3CTQwMAk2Ny4yNTAJMjgzNTAwCTAuMDAwCTY1LjM4MAk2Ny4yNTAK KzM3CTQwMQk2Ni42MzAJNTgyNDAwCTAuMDAwCTY2LjM4MAk2Ny42MzAKKzM3CTQwMgk2Ni4zNzUJ MjU3MjAwCTAuMDAwCTY2LjEyNQk2Ni42MjUKKzM3CTQwMwk2NS42MjUJMzkzOTAwCTAuMDAwCTY1 LjYyNQk2Ni43NTAKKzM3CTQwNAk2NS4yNTAJMjk1NTAwCTAuMDAwCTY1LjEzMAk2NS43NTAKKzM3 CTQwNQk2NS4wMDAJMzI5NzAwCTAuMDAwCTY0LjYzMAk2NS4yNTAKKzM3CTQwNgk2Ni4wMDAJNDEy NDAwCTAuMDAwCTY0Ljg4MAk2Ni4xMzAKKzM4CTQwNwk2NC44NzUJMTc2MzAwCTAuMDAwCTY0LjAw MAk2NC44NzUKKzM4CTQwOAk2NC44NzUJMTYzMzAwCTAuMDAwCTY0LjM3NQk2NS4xMjUKKzM4CTQw OQk2NC43NTAJMjUzODAwCTAuMDAwCTY0LjI1MAk2NS4wMDAKKzM4CTQxMAk2NC4yNTAJMjc5MjAw CTAuMDAwCTY0LjAwMAk2NC42MzAKKzM4CTQxMQk2NC4zODAJMzA4NjAwCTAuMDAwCTY0LjAwMAk2 NC42MzAKKzM4CTQxMgk2Mi41MDAJNDEyMDAwCTAuMDAwCTYyLjUwMAk2NC41MDAKKzM4CTQxMwk2 My41MDAJNjEwMzAwCTAuMDAwCTYxLjI1MAk2My41MDAKKzM4CTQxNAk2My4zODAJNDcyODAwCTAu MDAwCTYzLjAwMAk2My43NTAKKzM5CTQxNQk1NC42MjUJNTEyOTAwCTAuMDAwCTUzLjM3NQk1NC43 NTAKKzM5CTQxNgk1NC4yNTAJNTA0OTAwCTAuMDAwCTU0LjAwMAk1NS4yNTAKKzM5CTQxNwk1My41 MDAJNjUxNzAwCTAuMDAwCTUzLjUwMAk1NS4wMDAKKzM5CTQxOAk1My4wMDAJMzM0MTAwCTAuMDAw CTUyLjc1MAk1My43NTAKKzM5CTQxOQk1Mi4wMDAJNTc5OTAwCTAuMDAwCTUxLjg3NQk1My41MDAK KzM5CTQyMAk1MS4xMjUJNjcyMzAwCTAuMDAwCTUxLjAwMAk1Mi44NzUKKzM5CTQyMQk1MS4yNTAJ NDUxMDAwCTAuMDAwCTUwLjM4MAk1MS42MzAKKzM5CTQyMgk1MS4yNTAJNDExOTAwCTAuMDAwCTUw Ljg3NQk1MS43NTAKKzM5CTQyMwk1MS4yNTAJNjYzODAwCTAuMDAwCTUwLjUwMAk1MS42MjUKKzM5 CTQyNAk1My44NzUJODIxODAwCTAuMDAwCTUyLjAwMAk1NC41MDAKKzM5CTQyNQk1My41MDAJNzYx NDAwCTAuMDAwCTUzLjI1MAk1NC4zNzUKKzQwCTQyNgk2Ni4wMDAJNDM3MjAwCTAuMDAwCTY0LjI1 MAk2Ni4wMDAKKzQwCTQyNwk2NS4xMzAJNTUzMDAwCTAuMDAwCTY0Ljc1MAk2Ni4xMzAKKzQwCTQy OAk2NC44ODAJNDQ5MDAwCTAuMDAwCTY0LjM4MAk2NS4zODAKKzQwCTQyOQk2NC43NTAJMzk3NDAw CTAuMDAwCTY0LjI1MAk2NS4wMDAKKzQwCTQzMAk2NC4zODAJMzc1ODAwCTAuMDAwCTYzLjg4MAk2 NC42MzAKKzQwCTQzMQk2NS4wMDAJMjcwODAwCTAuMDAwCTY0LjAwMAk2NS4yNTAKKzQwCTQzMgk2 NS4xMjUJNDEwNjAwCTAuMDAwCTY0LjM3NQk2NS41MDAKKzQwCTQzMwk2NS41MDAJNTU1NzAwCTAu MDAwCTY1LjEzMAk2Ni4wMDAKKzQwCTQzNAk2NS4yNTAJNjQ0MTAwCTAuMDAwCTY0LjM4MAk2NS4z ODAKKzQxCTQzNQk1Ni43NTAJNDkyNTAwCTAuMDAwCTU2LjI1MAk1Ni44ODAKKzQxCTQzNgk1Ni42 MzAJNjE2MjAwCTAuMDAwCTU1Ljc1MAk1Ni42MzAKKzQxCTQzNwk1Ni4zODAJMzQ4MDAwCTAuMDAw CTU2LjEzMAk1Ni42MzAKKzQxCTQzOAk1NS42MjUJNDYxODAwCTAuMDAwCTU1LjUwMAk1Ni4zNzUK KzQxCTQzOQk1NS41MDAJNDM4NDAwCTAuMDAwCTU1LjI1MAk1NS44NzUKKzQxCTQ0MAk1Ni4xMzAJ NTE0OTAwCTAuMDAwCTU1LjEzMAk1Ni4zODAKKzQxCTQ0MQk1Ny44ODAJNjczOTAwCTAuMDAwCTU1 Ljg4MAk1OC4xMzAKKzQxCTQ0Mgk1OC4wMDAJNzAwMjAwCTAuMDAwCTU3LjI1MAk1OC41MDAKKzQx CTQ0Mwk1OC43NTAJNzk2OTAwCTAuMDAwCTU3Ljg4MAk1OS4xMzAKKzQxCTQ0NAk2MC4yNTAJMTA4 OTIwMAkwLjAwMAk1OS43NTAJNjAuNzUwCis0MQk0NDUJNTkuODgwCTc0NzYwMAkwLjAwMAk1OS44 ODAJNjAuNTAwCis0Mgk0NDYJNTUuODc1CTM4NzMwMAkwLjAwMAk1NS4wMDAJNTYuNzUwCis0Mgk0 NDcJNTUuNTAwCTM5NjYwMAkwLjAwMAk1NS41MDAJNTYuNTAwCis0Mgk0NDgJNTQuODgwCTM3MjUw MAkwLjAwMAk1NC41MDAJNTUuMzgwCis0Mgk0NDkJNTQuMTMwCTU1MTYwMAkwLjAwMAk1My41MDAJ NTUuMTMwCis0Mgk0NTAJNTQuMDAwCTM0NjEwMAkwLjAwMAk1My44NzUJNTQuNTAwCis0Mgk0NTEJ NTQuMzc1CTQyNzMwMAkwLjAwMAk1NC4xMjUJNTUuMDAwCis0Mgk0NTIJNTQuNTAwCTM4OTgwMAkw LjAwMAk1My4zODAJNTQuNjMwCis0Mgk0NTMJNTQuNjI1CTQ5NzYwMAkwLjAwMAk1NC4yNTAJNTUu MjUwCis0Mgk0NTQJNTMuNjI1CTUyNDIwMAkwLjAwMAk1My4yNTAJNTQuMjUwCis0Mwk0NTUJNjQu NjI1CTEwNTg4MDAJMC4wMDAJNjMuMzc1CTY0LjYyNQorNDMJNDU2CTY0LjUwMAk2ODk0MDAJMC4w MDAJNjQuMjUwCTY0Ljg4MAorNDMJNDU3CTYzLjc1MAkxMTQwNjAwCTAuMDAwCTYzLjYyNQk2NS4x MjUKKzQzCTQ1OAk2My4yNTAJODkyODAwCTAuMDAwCTYzLjAwMAk2My44ODAKKzQzCTQ1OQk2My44 NzUJNTEyMjAwCTAuMDAwCTYzLjI1MAk2My44NzUKKzQzCTQ2MAk2NC4zNzUJNjQ1ODAwCTAuMDAw CTY0LjAwMAk2NC43NTAKKzQzCTQ2MQk2NS43NTAJMTIxNDEwMAkwLjAwMAk2NC41MDAJNjUuNzUw Cis0Mwk0NjIJNjYuMDAwCTkxMTcwMAkwLjAwMAk2NS4wMDAJNjYuMTMwCis0Mwk0NjMJNjUuMTI1 CTY4NTYwMAkwLjAwMAk2NC42MjUJNjUuNzUwCis0Mwk0NjQJNjQuODgwCTcxNzIwMAkwLjAwMAk2 NC41MDAJNjUuMjUwCis0Mwk0NjUJNjQuMTI1CTQ5MTYwMAkwLjAwMAk2NC4xMjUJNjQuNjI1Cis0 Mwk0NjYJNjQuMjUwCTc1OTIwMAkwLjAwMAk2NC4wMDAJNjQuNzUwCis0Mwk0NjcJNjQuNTAwCTM4 NDYwMAkwLjAwMAk2NC4wMDAJNjQuNzUwCis0Mwk0NjgJNjQuNzUwCTQ5NzUwMAkwLjAwMAk2NC41 MDAJNjUuMjUwCis0Mwk0NjkJNjUuMTI1CTg1NTYwMAkwLjAwMAk2NC43NTAJNjUuMjUwCis0Mwk0 NzAJNjQuODc1CTc3NzIwMAkwLjAwMAk2NC43NTAJNjUuMTI1Cis0Mwk0NzEJNjQuNzUwCTQ4Nzkw MAkwLjAwMAk2NC43NTAJNjUuMTMwCis0Mwk0NzIJNjMuODc1CTU2OTgwMAkwLjAwMAk2My44NzUJ NjQuODc1Cis0Mwk0NzMJNjQuMzgwCTM3MjQwMAkwLjAwMAk2NC4wMDAJNjQuNzUwCis0NAk0NzQJ NjAuMDAwCTI5MDEwMAkwLjAwMAk2MC4wMDAJNjAuNjMwCis0NAk0NzUJNjAuMzgwCTM1ODgwMAkw LjAwMAk1OS4zODAJNjAuNzUwCis0NAk0NzYJNjEuMDAwCTYzODMwMAkwLjAwMAk2MC4zODAJNjEu MjUwCis0NAk0NzcJNjEuNTAwCTk2MzkwMAkwLjAwMAk1OS43NTAJNjEuNjMwCis0NAk0NzgJNjIu NTAwCTEyNDcxMDAJMC4wMDAJNjEuMzgwCTYyLjUwMAorNDQJNDc5CTYzLjUwMAk5ODUxMDAJMC4w MDAJNjIuODgwCTYzLjYzMAorNDQJNDgwCTY0LjUwMAkxNTU2MzAwCTAuMDAwCTYzLjEyNQk2NS4w MDAKKzQ0CTQ4MQk2Ni44NzUJMTY4ODEwMAkwLjAwMAk2NC43NTAJNjYuODc1Cis0NAk0ODIJNjYu NzUwCTE1Nzg3MDAJMC4wMDAJNjYuMzc1CTY3LjUwMAorNDUJNDgzCTc2Ljc1MAkxMzIxNzAwCTAu MDAwCTc0Ljc1MAk3Ni43NTAKKzQ1CTQ4NAk3NS41MDAJMTYwNDEwMAkwLjAwMAk3NS41MDAJNzcu NjMwCis0NQk0ODUJNzYuMzgwCTEyNTQwMDAJMC4wMDAJNzUuMjUwCTc2LjYzMAorNDUJNDg2CTc2 LjAwMAk4ODcxMDAJMC4wMDAJNzUuNjMwCTc2LjUwMAorNDUJNDg3CTc2LjYzMAk0OTA1MDAJMC4w MDAJNzUuNzUwCTc3LjAwMAorNDUJNDg4CTc2LjI1MAk4NjgzMDAJMC4wMDAJNzYuMjUwCTc3LjI1 MAorNDUJNDg5CTc0Ljc1MAk4MzEwMDAJMC4wMDAJNzQuNTAwCTc2LjM3NQorNDUJNDkwCTczLjM3 NQk5OTc5MDAJMC4wMDAJNzMuMjUwCTc0Ljg3NQorNDUJNDkxCTc0LjEzMAk3NDc1MDAJMC4wMDAJ NzMuMzgwCTc0LjYzMAorNDUJNDkyCTc0LjUwMAk2MTQ5MDAJMC4wMDAJNzMuMjUwCTc0LjYzMAor NDUJNDkzCTc1LjEzMAk3NTIzMDAJMC4wMDAJNzQuNjMwCTc2LjEzMAorNDUJNDk0CTc5LjAwMAkx MzQ2MTAwCTAuMDAwCTc1LjM3NQk3OS4wMDAKKzQ1CTQ5NQk4MC4zODAJMjIwNzYwMAkwLjAwMAk3 OC4zODAJODAuMzgwCis0NQk0OTYJODEuMTMwCTEzNDI1MDAJMC4wMDAJNzkuMjUwCTgxLjEzMAor NDUJNDk3CTgzLjUwMAkxNDM5MzAwCTAuMDAwCTgxLjM4MAk4NC41MDAKKzQ1CTQ5OAk4Mi43NTAJ MTUwMDQwMAkwLjAwMAk4Mi4zNzUJODQuMzc1Cis0Ngk0OTkJOTYuMTMwCTcyNTQwMAkwLjAwMAk5 NS43NTAJOTguMDAwCis0Ngk1MDAJOTYuMjUwCTM3MzcwMAkwLjAwMAk5Ni4xMjUJOTcuMTI1Cis0 Ngk1MDEJOTMuMDAwCTc2MDYwMAkwLjAwMAk5Mi41MDAJOTcuMDAwCis0Ngk1MDIJOTUuNjI1CTkx NTEwMAkwLjAwMAk5Mi4zNzUJOTUuNjI1Cis0Ngk1MDMJOTYuMDAwCTk1MDkwMAkwLjAwMAk5NS4w MDAJOTYuNzUwCis0Ngk1MDQJOTcuNjI1CTEwMjQyMDAJMC4wMDAJOTUuNTAwCTk4LjUwMAorNDYJ NTA1CTk2LjYzMAkxMDYwNjAwCTAuMDAwCTk2LjUwMAk5OC4zODAKKzQ2CTUwNgk5OC4wMDAJMTEx NDIwMAkwLjAwMAk5Ni4wMDAJOTkuMjUwCis0Ngk1MDcJOTguMDAwCTg1MDkwMAkwLjAwMAk5Ny4w MDAJOTguMzgwCis0Nwk1MDgJMTAyLjAwMAk3MTE4MDAJMC4wMDAJMTAxLjg4MAkxMDMuMjUwCis0 Nwk1MDkJMTAyLjYyNQk4NTgwMDAJMC4wMDAJMTAxLjI1MAkxMDIuODc1Cis0Nwk1MTAJMTAzLjI1 MAk2MDcxMDAJMC4wMDAJMTAyLjAwMAkxMDMuMzc1Cis0Nwk1MTEJMTAzLjg3NQk4OTQyMDAJMC4w MDAJMTAyLjYyNQkxMDQuMDAwCis0Nwk1MTIJMTA2LjYyNQkxNjUxMjAwCTAuMDAwCTEwNC42MjUJ MTA2Ljc1MAorNDcJNTEzCTEwNy4wMDAJMTA0OTAwMAkwLjAwMAkxMDYuMDAwCTEwNy4zODAKKzQ3 CTUxNAkxMDguNzUwCTk3ODgwMAkwLjAwMAkxMDcuMzc1CTEwOS4wMDAKKzQ3CTUxNQkxMDkuNTAw CTEwMDc1MDAJMC4wMDAJMTA3LjI1MAkxMTAuMDAwCis0Nwk1MTYJMTEwLjEyNQk3OTQxMDAJMC4w MDAJMTA5LjYyNQkxMTAuNTAwCis0Nwk1MTcJMTEyLjYzMAkxMDIwNDAwCTAuMDAwCTExMC4wMDAJ MTEyLjYzMAorNDcJNTE4CTExMS41MDAJOTI5NDAwCTAuMDAwCTExMS4wMDAJMTEyLjEzMAorNDgJ NTE5CTExNi41MDAJNDI0NzAwCTAuMDAwCTExNS42MjUJMTE2LjYyNQorNDgJNTIwCTExNS4yNTAJ NjY4OTAwCTAuMDAwCTExNC4wMDAJMTE1LjI1MAorNDgJNTIxCTExNC4wMDAJNzIyMDAwCTAuMDAw CTExMy4xMjUJMTE1LjAwMAorNDgJNTIyCTExMS43NTAJODAyMzAwCTAuMDAwCTExMC43NTAJMTE0 Ljc1MAorNDgJNTIzCTExMS4yNTAJNjczNTAwCTAuMDAwCTExMC41MDAJMTEyLjUwMAorNDgJNTI0 CTExMC43NTAJNTM4OTAwCTAuMDAwCTExMC4yNTAJMTExLjc1MAorNDgJNTI1CTExMi41MDAJODEz MDAwCTAuMDAwCTEwOS43NTAJMTEyLjg3NQorNDgJNTI2CTExNC42MzAJNjY1NDAwCTAuMDAwCTEx My4wMDAJMTE1LjAwMAorNDgJNTI3CTExNS42MzAJODQzNjAwCTAuMDAwCTExMy4zODAJMTE1LjYz MAorNDgJNTI4CTExNC4zODAJNjQ3ODAwCTAuMDAwCTExNC4yNTAJMTE1Ljg4MAorNDgJNTI5CTEx My4wMDAJNDA0NDAwCTAuMDAwCTExMi44NzUJMTE1LjAwMAorNDgJNTMwCTExMS4yNTAJNzM0ODAw CTAuMDAwCTExMC4yNTAJMTEyLjg4MAorNDgJNTMxCTExMS44NzUJODkwMzAwCTAuMDAwCTExMC4y NTAJMTExLjg3NQorNDgJNTMyCTExMy41MDAJODAzMDAwCTAuMDAwCTExMS4yNTAJMTEzLjg3NQor NDgJNTMzCTExNC4wMDAJNjYyMTAwCTAuMDAwCTExMy4wMDAJMTE0Ljg4MAorNDgJNTM0CTExNS43 NTAJNTczOTAwCTAuMDAwCTExMy42MzAJMTE2LjEzMAorNDgJNTM1CTExMy4xMzAJNzkxNDAwCTAu MDAwCTExMy4wMDAJMTE2LjI1MAorNDgJNTM2CTExMy4zNzUJODMxNzAwCTAuMDAwCTExMi42MjUJ MTE0Ljc1MAorNDgJNTM3CTExMy43NTAJNjcyMzAwCTAuMDAwCTExMy4xMzAJMTE0LjUwMAorNDgJ NTM4CTExNC4yNTAJNDE5NjAwCTAuMDAwCTExMy42MzAJMTE0LjYzMAorNDgJNTM5CTExNy4yNTAJ NzM3ODAwCTAuMDAwCTExNC4xMjUJMTE3LjI1MAorNDgJNTQwCTExOC4wMDAJOTcxNTAwCTAuMDAw CTExNy4wMDAJMTE5Ljc1MAorNDgJNTQxCTEyMS4wMDAJMTE3MDMwMAkwLjAwMAkxMTguMTMwCTEy MS4wMDAKKzQ4CTU0MgkxMjEuNzUwCTEyMzM0MDAJMC4wMDAJMTIxLjUwMAkxMjIuODc1Cis0OAk1 NDMJMTIxLjEzMAk2MjU1MDAJMC4wMDAJMTIwLjI1MAkxMjIuMjUwCis0OQk1NDQJMTIwLjg3NQk1 NDI5MDAJMC4wMDAJMTIwLjI1MAkxMjIuNzUwCis0OQk1NDUJMTE4LjAwMAk4NjUzMDAJMC4wMDAJ MTE3Ljc1MAkxMjEuMzgwCis0OQk1NDYJMTIwLjAwMAk2Njk4MDAJMC4wMDAJMTE3Ljg4MAkxMjAu ODgwCis0OQk1NDcJMTIwLjI1MAk1NTYyMDAJMC4wMDAJMTE5Ljc1MAkxMjEuMDAwCis0OQk1NDgJ MTIxLjAwMAkzNzMxMDAJMC4wMDAJMTIwLjM3NQkxMjEuMjUwCis0OQk1NDkJMTE5LjI1MAk5NDMz MDAJMC4wMDAJMTE4LjYyNQkxMTkuNjI1Cis1MAk1NTAJMTIyLjg4MAk4MTQzMDAJMC4wMDAJMTIx LjYzMAkxMjMuNTAwCis1MAk1NTEJMTIxLjc1MAk2OTExMDAJMC4wMDAJMTIxLjUwMAkxMjMuMjUw Cis1MAk1NTIJMTIzLjEyNQk4MTk3MDAJMC4wMDAJMTIxLjUwMAkxMjQuMjUwCis1MAk1NTMJMTIz Ljc1MAk5MTE1MDAJMC4wMDAJMTIyLjYyNQkxMjQuODc1Cis1MAk1NTQJMTIzLjg3NQk5NDIzMDAJ MC4wMDAJMTIzLjEyNQkxMjQuNTAwCis1MAk1NTUJMTIzLjAwMAkxMDcwOTAwCTAuMDAwCTEyMi44 NzUJMTI0LjEyNQorNTAJNTU2CTEyNC42MjUJMTA5OTMwMAkwLjAwMAkxMjIuNzUwCTEyNC43NTAK KzUwCTU1NwkxMjYuNjI1CTExMTE5MDAJMC4wMDAJMTI0LjI1MAkxMjYuNjI1Cis1MAk1NTgJMTI4 LjYyNQkyMDk3NTAwCTAuMDAwCTEyNi4wMDAJMTI5LjUwMAorNTAJNTU5CTEyNy44NzUJMTI3MTUw MAkwLjAwMAkxMjYuNTAwCTEyOC4zNzUKKzUxCTU2MAkxMjkuODc1CTExOTAyMDAJMC4wMDAJMTI4 Ljg3NQkxMzAuMTI1Cis1MQk1NjEJMTMxLjEzMAkxMzkxMjAwCTAuMDAwCTEyOS4xMzAJMTMxLjI1 MAorNTEJNTYyCTEzMi4xMzAJMTEwNDYwMAkwLjAwMAkxMzEuMDAwCTEzMi4yNTAKKzUxCTU2Mwkx MzIuMjUwCTgwMzMwMAkwLjAwMAkxMzEuNzUwCTEzMi41MDAKKzUxCTU2NAkxMzQuMjUwCTY1ODQw MAkwLjAwMAkxMzEuNTAwCTEzNC4yNTAKKzUxCTU2NQkxMzMuMDAwCTY4NzEwMAkwLjAwMAkxMzIu NzUwCTEzNC4wMDAKKzUyCTU2NgkxMjYuNzUwCTE0MTMyMDAJMC4wMDAJMTI1LjAwMAkxMjcuMjUw Cis1Mgk1NjcJMTI2LjUwMAk5NDY0MDAJMC4wMDAJMTI1LjUwMAkxMjcuMDAwCis1Mgk1NjgJMTIz Ljg4MAk5MjI2MDAJMC4wMDAJMTIzLjUwMAkxMjYuNTAwCis1Mgk1NjkJMTIyLjI1MAkxNDc0NTAw CTAuMDAwCTEyMS43NTAJMTIzLjI1MAorNTIJNTcwCTEyMi4xMjUJODAzNjAwCTAuMDAwCTEyMi4w MDAJMTIzLjM3NQorNTIJNTcxCTEyMi4yNTAJNjUwOTAwCTAuMDAwCTEyMS44ODAJMTIyLjg4MAor NTIJNTcyCTEyMy42MjUJODU4OTAwCTAuMDAwCTEyMi4zNzUJMTIzLjYyNQorNTIJNTczCTEyNS4y NTAJMTE2NTgwMAkwLjAwMAkxMjQuMDAwCTEyNS43NTAKKzUyCTU3NAkxMjYuODc1CTc4NDgwMAkw LjAwMAkxMjUuMTI1CTEyNy4yNTAKKzUyCTU3NQkxMjcuNTAwCTEwMzA2MDAJMC4wMDAJMTI3LjAw MAkxMjguMjUwCis1Mgk1NzYJMTI0LjUwMAkxMzU0MzAwCTAuMDAwCTEyNC4wMDAJMTI3LjYzMAor NTMJNTc3CTExMS4yNTAJMTA0MzIwMAkwLjAwMAkxMDkuMjUwCTExMS41MDAKKzUzCTU3OAkxMTIu ODgwCTE0NTg5MDAJMC4wMDAJMTEwLjc1MAkxMTMuNTAwCis1Mwk1NzkJMTEwLjAwMAkxMjQxMzAw CTAuMDAwCTEwOS44NzUJMTEyLjUwMAorNTMJNTgwCTExMC4yNTAJMTExNzAwMAkwLjAwMAkxMDku Mzc1CTExMS43NTAKKzUzCTU4MQkxMTEuNTAwCTgxMjkwMAkwLjAwMAkxMDkuNzUwCTExMS42MjUK KzUzCTU4MgkxMTIuMDAwCTEwMDUwMDAJMC4wMDAJMTExLjYyNQkxMTIuODc1Cis1Mwk1ODMJMTEx LjAwMAk3Nzk0MDAJMC4wMDAJMTEwLjM3NQkxMTEuNTAwCis1Mwk1ODQJMTA5LjI1MAk4Njg1MDAJ MC4wMDAJMTA5LjEyNQkxMTEuNjI1Cis1NAk1ODUJMTA4LjAwMAk3Mjk2MDAJMC4wMDAJMTA3LjM3 NQkxMDguNjI1Cis1NAk1ODYJMTEwLjI1MAkxNDU1OTAwCTAuMDAwCTEwOC41MDAJMTEwLjUwMAor NTQJNTg3CTExMC42MjUJMTQzMjMwMAkwLjAwMAkxMTAuMzc1CTExMi4wMDAKKzU0CTU4OAkxMTEu MDAwCTk5MDcwMAkwLjAwMAkxMTAuMzc1CTExMS41MDAKKzU0CTU4OQkxMTIuMDAwCTk1NDcwMAkw LjAwMAkxMTEuMTI1CTExMi41MDAKKzU0CTU5MAkxMTMuNzUwCTIxMTA1MDAJMC4wMDAJMTEyLjc1 MAkxMTQuMjUwCis1NAk1OTEJMTE0LjAwMAk4MTc2MDAJMC4wMDAJMTEyLjUwMAkxMTQuMDAwCis1 NAk1OTIJMTE0Ljc1MAkxMjQxMDAwCTAuMDAwCTExMy41MDAJMTE1LjM4MAorNTQJNTkzCTExNC4w MDAJOTE0OTAwCTAuMDAwCTExNC4wMDAJMTE1LjUwMAorNTQJNTk0CTExMi43NTAJODgxNDAwCTAu MDAwCTExMi4zNzUJMTE0LjAwMAorNTQJNTk1CTExMi4yNTAJODM2NzAwCTAuMDAwCTExMS41MDAJ MTEzLjAwMAorNTQJNTk2CTExMi4yNTAJNjk0MjAwCTAuMDAwCTExMS43NTAJMTEzLjI1MAorNTUJ NTk3CTExMi43NTAJNzcwNTAwCTAuMDAwCTExMC42MzAJMTEyLjg4MAorNTUJNTk4CTExMi4yNTAJ OTMxNTAwCTAuMDAwCTExMi4wMDAJMTEzLjUwMAorNTUJNTk5CTExMS4xMjUJNzIwNzAwCTAuMDAw CTExMC41MDAJMTEyLjI1MAorNTUJNjAwCTExMC43NTAJMTAyODcwMAkwLjAwMAkxMTAuMTI1CTEx MS4xMjUKKzU1CTYwMQkxMDkuODgwCTgzNjQwMAkwLjAwMAkxMDkuNjMwCTExMS4zODAKKzU1CTYw MgkxMTAuNzUwCTExMDQ0MDAJMC4wMDAJMTA5LjUwMAkxMTEuNjI1Cis1NQk2MDMJMTExLjg3NQk4 OTk0MDAJMC4wMDAJMTEwLjYyNQkxMTIuMjUwCis1NQk2MDQJMTEzLjI1MAkxMDkwMDAwCTAuMDAw CTExMS44NzUJMTEzLjUwMAorNTUJNjA1CTExMy4zODAJMTAyMjkwMAkwLjAwMAkxMTIuNjMwCTEx NC4yNTAKKzU1CTYwNgkxMTMuNzUwCTExMjI1MDAJMC4wMDAJMTEyLjc1MAkxMTQuNjMwCis1NQk2 MDcJMTE2LjUwMAkxNDYzNTAwCTAuMDAwCTExNC4wMDAJMTE2LjUwMAorNTUJNjA4CTExNi4yNTAJ MTMzNzkwMAkwLjAwMAkxMTYuMDAwCTExNy4yNTAKKzU2CTYwOQkxMDcuMjUwCTcwNDcwMAkwLjAw MAkxMDUuMzc1CTEwNy41MDAKKzU2CTYxMAkxMDcuMTI1CTgwMjQwMAkwLjAwMAkxMDYuMjUwCTEw Ny4zNzUKKzU2CTYxMQkxMDUuMjUwCTg5NzUwMAkwLjAwMAkxMDUuMjUwCTEwNy4xMzAKKzU2CTYx MgkxMDQuMzc1CTEwNzY5MDAJMC4wMDAJMTA0LjEyNQkxMDUuNjI1Cis1Ngk2MTMJMTA1LjI1MAk4 NTYxMDAJMC4wMDAJMTA0LjAwMAkxMDUuNzUwCis1Ngk2MTQJMTA3LjI1MAk5MjU3MDAJMC4wMDAJ MTA0LjUwMAkxMDcuMjUwCis1Ngk2MTUJMTA4LjEzMAkxMDQ3MTAwCTAuMDAwCTEwNi43NTAJMTA4 LjM4MAorNTYJNjE2CTEwNy41MDAJNjI1MTAwCTAuMDAwCTEwNy4xMjUJMTA4LjEyNQorNTYJNjE3 CTEwNy4wMDAJODk1OTAwCTAuMDAwCTEwNi4yNTAJMTA3LjM3NQorNTYJNjE4CTEwNi41MDAJODEw MDAwCTAuMDAwCTEwNS41MDAJMTA3LjI1MAorNTYJNjE5CTEwNi4xMjUJOTMxMTAwCTAuMDAwCTEw NS4xMjUJMTA2LjM3NQorNTYJNjIwCTEwNS4zODAJNzEwMjAwCTAuMDAwCTEwNS4xMzAJMTA3LjAw MAorNTYJNjIxCTEwNy4xMjUJMTU5MTgwMAkwLjAwMAkxMDQuNTAwCTEwNy43NTAKKzU2CTYyMgkx MDguMjUwCTEwMDI3MDAJMC4wMDAJMTA2Ljc1MAkxMDguNzUwCis1Ngk2MjMJMTA5LjAwMAkxMDU5 MzAwCTAuMDAwCTEwNy44NzUJMTA5LjYyNQorNTYJNjI0CTEwOC4zODAJNjEwNDAwCTAuMDAwCTEw OC4yNTAJMTA5LjM4MAorNTcJNjI1CTEyNC42MjUJOTI5NTAwCTAuMDAwCTEyNC42MjUJMTI2LjEy NQorNTcJNjI2CTEyNS43NTAJMTIwMDEwMAkwLjAwMAkxMjUuMjUwCTEyNi44NzUKKzU3CTYyNwkx MjUuODgwCTc2MzIwMAkwLjAwMAkxMjUuNzUwCTEyNi41MDAKKzU3CTYyOAkxMjYuNzUwCTU4OTcw MAkwLjAwMAkxMjMuNzUwCTEyNi44NzUKKzU3CTYyOQkxMjcuNTAwCTEyNzA2MDAJMC4wMDAJMTI2 LjUwMAkxMjcuNzUwCis1Nwk2MzAJMTI1Ljc1MAkxNjY4NDAwCTAuMDAwCTEyNS4zNzUJMTI3LjEy NQorNTcJNjMxCTEyNC44ODAJMTA1NjcwMAkwLjAwMAkxMjQuMjUwCTEyNS43NTAKKzU3CTYzMgkx MjMuMjUwCTk0NDMwMAkwLjAwMAkxMjMuMjUwCTEyNS41MDAKKzU3CTYzMwkxMjQuMDAwCTc4Mjcw MAkwLjAwMAkxMjIuNzUwCTEyNC4wMDAKKzU4CTYzNAkxMjQuMjUwCTc1NDIwMAkwLjAwMAkxMjMu MjUwCTEyNC41MDAKKzU4CTYzNQkxMjMuNzUwCTQxODMwMAkwLjAwMAkxMjMuNjI1CTEyNC4yNTAK KzU4CTYzNgkxMjMuMTI1CTUwNTIwMAkwLjAwMAkxMjIuNzUwCTEyNC4yNTAKKzU4CTYzNwkxMjMu NTAwCTU3MzYwMAkwLjAwMAkxMjIuNzUwCTEyNC4wMDAKKzU4CTYzOAkxMjMuMTI1CTY4NTAwMAkw LjAwMAkxMjIuODc1CTEyMy44NzUKKzU4CTYzOQkxMjEuMDAwCTg3MjUwMAkwLjAwMAkxMjAuNzUw CTEyMi42MzAKKzU4CTY0MAkxMjAuMDAwCTEzODgxMDAJMC4wMDAJMTE5Ljg3NQkxMjIuMjUwCis1 OAk2NDEJMTE5Ljc1MAkxMDA3MDAwCTAuMDAwCTExOS4wMDAJMTIwLjM3NQorNTkJNjQyCTEyMy42 MjUJMTA2OTYwMAkwLjAwMAkxMjMuMjUwCTEyNC42MjUKKzU5CTY0MwkxMjQuMTMwCTExNjMzMDAJ MC4wMDAJMTIzLjYzMAkxMjUuMDAwCis1OQk2NDQJMTI4LjI1MAkyMTM4ODAwCTAuMDAwCTEyNC42 MzAJMTI4LjUwMAorNTkJNjQ1CTEyOS42MzAJMjUzOTAwMAkwLjAwMAkxMjkuMTMwCTEzMC42MzAK KzU5CTY0NgkxMzIuNTAwCTIyNzAyMDAJMC4wMDAJMTI5LjM3NQkxMzIuNjI1Cis1OQk2NDcJMTMz LjEzMAkxODI1MjAwCTAuMDAwCTEzMi4zODAJMTM0LjUwMAorNTkJNjQ4CTEzMy4yNTAJMTIxMjMw MAkwLjAwMAkxMzIuNjI1CTEzNC4xMjUKKzU5CTY0OQkxMzQuNjI1CTE5MzY1MDAJMC4wMDAJMTMz LjI1MAkxMzUuMjUwCis1OQk2NTAJMTM3LjAwMAkxMTI4NzAwCTAuMDAwCTEzMy43NTAJMTM3LjAw MAorNTkJNjUxCTEzNi42MzAJMTU2MzYwMAkwLjAwMAkxMzYuMTMwCTEzNy42MzAKKzYwCTY1Mgkx MzAuNTAwCTEwMzcyMDAJMC4wMDAJMTI4LjI1MAkxMzEuMTI1Cis2MAk2NTMJMTI5LjM3NQkxMTE4 ODAwCTAuMDAwCTEyOS4wMDAJMTMwLjYyNQorNjAJNjU0CTEyOC43NTAJMTU1MjIwMAkwLjAwMAkx MjguMTI1CTEzMC4wMDAKKzYwCTY1NQkxMjcuNzUwCTExOTc4MDAJMC4wMDAJMTI3Ljc1MAkxMjgu NzUwCis2MAk2NTYJMTI0LjUwMAkyMDU3OTAwCTAuMDAwCTEyNC41MDAJMTI4LjAwMAorNjAJNjU3 CTEyNS4zNzUJMTQwNDQwMAkwLjAwMAkxMjQuMTI1CTEyNS42MjUKKzYwCTY1OAkxMjYuMzgwCTEw OTg0MDAJMC4wMDAJMTI1LjUwMAkxMjYuNjMwCis2MAk2NTkJMTI2LjYyNQk5OTM0MDAJMC4wMDAJ MTI2LjM3NQkxMjcuNjI1Cis2MAk2NjAJMTI4LjEyNQk4NDA4MDAJMC4wMDAJMTI2Ljg3NQkxMjgu MjUwCis2MAk2NjEJMTI3Ljc1MAk5NDkwMDAJMC4wMDAJMTI3LjUwMAkxMjkuNTAwCis2MQk2NjIJ MTI2LjUwMAkxMjgwMzAwCTAuMDAwCTEyNS41MDAJMTI2Ljc1MAorNjEJNjYzCTEyNS42MzAJMTEz NTAwMAkwLjAwMAkxMjUuMTMwCTEyNi44ODAKKzYxCTY2NAkxMjUuMzc1CTEyNTg4MDAJMC4wMDAJ MTI0Ljc1MAkxMjYuMzc1Cis2MQk2NjUJMTI1LjAwMAk3NzA1MDAJMC4wMDAJMTI0LjYzMAkxMjUu NjMwCis2MQk2NjYJMTI0Ljc1MAk1Nzk0MDAJMC4wMDAJMTI0Ljc1MAkxMjUuNjI1Cis2MQk2NjcJ MTI1Ljc1MAk3NzI5MDAJMC4wMDAJMTI1LjAwMAkxMjYuMjUwCis2MQk2NjgJMTI3LjEyNQk5MjU3 MDAJMC4wMDAJMTI1LjM3NQkxMjcuMjUwCis2MQk2NjkJMTI3Ljg4MAk5NzgzMDAJMC4wMDAJMTI3 LjAwMAkxMjguMjUwCis2MQk2NzAJMTMwLjEzMAkyMjM5MDAwCTAuMDAwCTEyOC41MDAJMTMwLjg4 MAorNjEJNjcxCTEzMC4yNTAJMTE1NzYwMAkwLjAwMAkxMjkuNzUwCTEzMC42MjUKKzYxCTY3Mgkx MjguMDAwCTE1NTEyMDAJMC4wMDAJMTI3Ljc1MAkxMzAuODc1Cis2Mgk2NzMJMTMzLjAwMAkxMjE1 MDAwCTAuMDAwCTEzMi4zODAJMTMzLjI1MAorNjIJNjc0CTEzMi4zNzUJODU3MTAwCTAuMDAwCTEz MS44NzUJMTMyLjc1MAorNjIJNjc1CTEzMS4zNzUJODI5MzAwCTAuMDAwCTEzMS4yNTAJMTMyLjM3 NQorNjIJNjc2CTEzMC44ODAJNjc1MjAwCTAuMDAwCTEzMC43NTAJMTMxLjYzMAorNjIJNjc3CTEz MC4zNzUJOTIxOTAwCTAuMDAwCTEyOS43NTAJMTMxLjc1MAorNjIJNjc4CTEyOS43NTAJOTM5NzAw CTAuMDAwCTEyOS4yNTAJMTMwLjI1MAorNjIJNjc5CTEyOC4wMDAJMTY2NjYwMAkwLjAwMAkxMjcu MjUwCTEyOS41MDAKKzYyCTY4MAkxMjguNjI1CTEzNzE5MDAJMC4wMDAJMTI3LjI1MAkxMzAuMDAw Cis2Mgk2ODEJMTI5LjEyNQkxMjY1NjAwCTAuMDAwCTEyOC4yNTAJMTI5LjUwMAorNjIJNjgyCTEy OS43NTAJMTE3NjEwMAkwLjAwMAkxMjguNzUwCTEzMC4xMzAKKzYyCTY4MwkxMjguNTAwCTE2NDQ1 MDAJMC4wMDAJMTI4LjUwMAkxMzAuNjMwCis2Mwk2ODQJMTIxLjEzMAkxNzUzMDAwCTAuMDAwCTEx OS4zODAJMTIxLjEzMAorNjMJNjg1CTEyMC4xMzAJMTMxNjYwMAkwLjAwMAkxMTkuMjUwCTEyMC41 MDAKKzYzCTY4NgkxMTkuODc1CTE4MTkwMDAJMC4wMDAJMTE5LjEyNQkxMjEuNjI1Cis2Mwk2ODcJ MTE5LjM3NQkxMjY4OTAwCTAuMDAwCTExOS4yNTAJMTIwLjg3NQorNjMJNjg4CTExOC43NTAJMTQw MDMwMAkwLjAwMAkxMTcuMzc1CTExOS43NTAKKzYzCTY4OQkxMTkuMzgwCTEzNjUxMDAJMC4wMDAJ MTE4LjM4MAkxMTkuNzUwCis2Mwk2OTAJMTIwLjg3NQkxMTI1MzAwCTAuMDAwCTExOC43NTAJMTIx LjEyNQorNjMJNjkxCTEyMi4wMDAJMTc1MzAwMAkwLjAwMAkxMjEuMzgwCTEyMy4zODAKKzYzCTY5 MgkxMjMuMTMwCTkxNDMwMAkwLjAwMAkxMjIuMDAwCTEyMy4yNTAKKzYzCTY5MwkxMjQuMDAwCTEx NTE1MDAJMC4wMDAJMTIzLjEyNQkxMjQuMjUwCis2Mwk2OTQJMTIzLjc1MAk4MjA1MDAJMC4wMDAJ MTIzLjUwMAkxMjQuNTAwCis2NAk2OTUJMTQxLjc1MAkxNjM4NDAwCTAuMDAwCTE0MC4yNTAJMTQx Ljc1MAorNjQJNjk2CTE0NC42MzAJMTY2MjUwMAkwLjAwMAkxNDIuMTMwCTE0NC44ODAKKzY0CTY5 NwkxNDYuNjI1CTE5NDAyMDAJMC4wMDAJMTQ0LjI1MAkxNDguMDAwCis2NAk2OTgJMTQ5LjAwMAkx OTg1NjAwCTAuMDAwCTE0Ni42MjUJMTQ5LjM3NQorNjQJNjk5CTE0OC42MzAJMTQwNzYwMAkwLjAw MAkxNDcuMDAwCTE0OS4zODAKKzY0CTcwMAkxNTAuMjUwCTE4OTAxMDAJMC4wMDAJMTQ5LjEzMAkx NTEuNTAwCis2NAk3MDEJMTUyLjI1MAkxNTg2MTAwCTAuMDAwCTE1MC4wMDAJMTUzLjUwMAorNjQJ NzAyCTE1Mi41MDAJMTc4NjEwMAkwLjAwMAkxNTEuNTAwCTE1NC41MDAKKzY0CTcwMwkxNTIuODc1 CTE1MjQxMDAJMC4wMDAJMTUxLjYyNQkxNTMuODc1Cis2NAk3MDQJMTUzLjc1MAkxMTA1OTAwCTAu MDAwCTE1Mi4zNzUJMTU0LjAwMAorNjQJNzA1CTE1NC4yNTAJMjEyNzgwMAkwLjAwMAkxNTMuNzUw CTE1Ni42MjUKKzY0CTcwNgkxNTQuMDAwCTEyMjA5MDAJMC4wMDAJMTUzLjM4MAkxNTUuMTMwCis2 NAk3MDcJMTUyLjc1MAkxMDExNjAwCTAuMDAwCTE1MS4yNTAJMTU0LjYzMAorNjQJNzA4CTE1My4y NTAJNTYyNzAwCTAuMDAwCTE1Mi4xMjUJMTUzLjc1MAorNjUJNzA5CTE0MS4xMzAJMTg1ODYwMAkw LjAwMAkxMzguODgwCTE0MS4yNTAKKzY1CTcxMAkxNDEuMTI1CTE1NjE2MDAJMC4wMDAJMTQwLjUw MAkxNDIuMDAwCis2NQk3MTEJMTQwLjAwMAkxMjI5MDAwCTAuMDAwCTEzOS41MDAJMTQwLjM4MAor NjUJNzEyCTEzOC43NTAJODg3NjAwCTAuMDAwCTEzOC4wMDAJMTQwLjAwMAorNjUJNzEzCTEzNi4w MDAJMTkzODMwMAkwLjAwMAkxMzUuNTAwCTEzOC44NzUKKzY1CTcxNAkxMzYuMTI1CTE2Mjg2MDAJ MC4wMDAJMTM1LjEyNQkxMzYuMzc1Cis2NQk3MTUJMTM5LjM4MAkxNjMwMDAwCTAuMDAwCTEzNi4w MDAJMTM5LjUwMAorNjUJNzE2CTE0MC4zNzUJMjYxODEwMAkwLjAwMAkxMzguNTAwCTE0MS4wMDAK KzY1CTcxNwkxNDMuNzUwCTI2MjkxMDAJMC4wMDAJMTQwLjg3NQkxNDMuODc1Cis2NQk3MTgJMTQz Ljg4MAkyMjUxMTAwCTAuMDAwCTE0My41MDAJMTQ1LjUwMAorNjUJNzE5CTE0NC4xMzAJMTc2Njkw MAkwLjAwMAkxNDIuODgwCTE0NC41MDAKKzY1CTcyMAkxMzkuMjUwCTI4NjYxMDAJMC4wMDAJMTM4 Ljc1MAkxNDIuODgwCis2NQk3MjEJMTM3LjM4MAk0Mzc5NTAwCTAuMDAwCTEzNi4yNTAJMTM5Ljg4 MAorNjUJNzIyCTEzNy4wMDAJMjE5NDUwMAkwLjAwMAkxMzYuMDAwCTEzOC41MDAKKzY1CTcyMwkx MzguMjUwCTE0MTMxMDAJMC4wMDAJMTM1LjYyNQkxMzguNTAwCis2Ngk3MjQJMTIzLjYyNQkyNDMx MTAwCTAuMDAwCTEyMi4zNzUJMTI0LjUwMAorNjYJNzI1CTEyMi4wMDAJMTYwOTMwMAkwLjAwMAkx MjEuODgwCTEyNS4yNTAKKzY2CTcyNgkxMjAuODgwCTMxNDIyMDAJMC4wMDAJMTE5Ljc1MAkxMjMu MDAwCis2Ngk3MjcJMTIzLjAwMAkyMjM5NTAwCTAuMDAwCTEyMC4zNzUJMTIzLjAwMAorNjYJNzI4 CTEyMS4xMzAJMjIyMDQwMAkwLjAwMAkxMjAuODgwCTEyMy4zODAKKzY2CTcyOQkxMjEuODc1CTE5 NDc2MDAJMC4wMDAJMTIwLjUwMAkxMjIuMzc1Cis2Ngk3MzAJMTIwLjI1MAkxNDg0NzAwCTAuMDAw CTExOS44NzUJMTIxLjI1MAorNjYJNzMxCTEyMS4zNzUJMTY5NzAwMAkwLjAwMAkxMjAuMjUwCTEy MS4zNzUKKzY2CTczMgkxMjAuMzc1CTEyODM5MDAJMC4wMDAJMTIwLjEyNQkxMjEuNTAwCis2Nwk3 MzMJMTIzLjEzMAkyMTA3NzAwCTAuMDAwCTEyMi41MDAJMTI0Ljc1MAorNjcJNzM0CTEyMS4zODAJ MjU4MTIwMAkwLjAwMAkxMTkuMjUwCTEyMi4wMDAKKzY3CTczNQkxMjEuNTAwCTExMDM0MDAJMC4w MDAJMTIwLjAwMAkxMjEuODgwCis2Nwk3MzYJMTIzLjEyNQk5OTgyMDAJMC4wMDAJMTIxLjI1MAkx MjMuMjUwCis2Nwk3MzcJMTIzLjc1MAk3NTE0MDAJMC4wMDAJMTIyLjg3NQkxMjQuMjUwCis2Nwk3 MzgJMTIyLjc1MAkxMTMwNDAwCTAuMDAwCTEyMS44NzUJMTI0LjM3NQorNjgJNzM5CTE1MS43NTAJ MTgwNDcwMAkwLjAwMAkxNTEuNTAwCTE1NC4xMzAKKzY4CTc0MAkxNTQuMjUwCTMzMDg5MDAJMC4w MDAJMTQ5LjUwMAkxNTYuMDAwCis2OAk3NDEJMTU1LjI1MAkyOTQ1OTAwCTAuMDAwCTE1NC42MjUJ MTU2LjYyNQorNjgJNzQyCTE1OC42MzAJMzI0ODgwMAkwLjAwMAkxNTUuODgwCTE1OS42MzAKKzY4 CTc0MwkxNjAuMTI1CTMyNzIyMDAJMC4wMDAJMTU3Ljc1MAkxNjEuNTAwCis2OAk3NDQJMTYwLjYz MAkyMzg1MDAwCTAuMDAwCTE1OS4xMzAJMTYyLjM4MAorNjgJNzQ1CTE2My4wMDAJMTU2MTcwMAkw LjAwMAkxNTkuNzUwCTE2My4wMDAKKzY4CTc0NgkxNjYuODc1CTI3OTI1MDAJMC4wMDAJMTY0LjI1 MAkxNjcuNjI1Cis2OAk3NDcJMTY2Ljc1MAkyMTg3OTAwCTAuMDAwCTE2Ni4wMDAJMTY3LjYzMAor NjgJNzQ4CTE2NC44ODAJMTY1MjIwMAkwLjAwMAkxNjMuODgwCTE2Ni43NTAKKzY4CTc0OQkxNjMu NzUwCTE0MzA1MDAJMC4wMDAJMTYzLjI1MAkxNjUuODc1Cis2OAk3NTAJMTYzLjAwMAkyMjY5NjAw CTAuMDAwCTE2My4wMDAJMTY3LjM4MAorNjgJNzUxCTE2NS4zODAJMTk5ODIwMAkwLjAwMAkxNjIu MjUwCTE2Ni4xMzAKKzY5CTc1MgkxNTkuMjUwCTIwNTc5MDAJMC4wMDAJMTU4Ljc1MAkxNjAuODgw Cis2OQk3NTMJMTU5LjM4MAkxNjY4NDAwCTAuMDAwCTE1OC41MDAJMTYwLjAwMAorNjkJNzU0CTE2 MC4yNTAJMjQzNTgwMAkwLjAwMAkxNTkuNzUwCTE2MS4wMDAKKzY5CTc1NQkxNjMuMDAwCTIyODQw MDAJMC4wMDAJMTU5LjEyNQkxNjMuMjUwCis2OQk3NTYJMTY0LjM3NQkyMzg2OTAwCTAuMDAwCTE2 My4wMDAJMTY1LjYyNQorNjkJNzU3CTE2Ni43NTAJMTYzMjIwMAkwLjAwMAkxNjQuNTAwCTE2Ni43 NTAKKzY5CTc1OAkxNjkuMDAwCTMyMDMzMDAJMC4wMDAJMTY3LjEzMAkxNjkuNjMwCis2OQk3NTkJ MTcwLjM4MAkzMjk5OTAwCTAuMDAwCTE2OC4wMDAJMTcyLjEzMAorNjkJNzYwCTE3My4zODAJMjU4 NjYwMAkwLjAwMAkxNzAuMzgwCTE3NC4wMDAKKzY5CTc2MQkxNzMuMjUwCTIxMDkyMDAJMC4wMDAJ MTcyLjAwMAkxNzUuMDAwCis3MAk3NjIJMTUwLjUwMAkyNjMwNTAwCTAuMDAwCTE0OS41MDAJMTUz Ljc1MAorNzAJNzYzCTE1MC43NTAJMzA3MzMwMAkwLjAwMAkxNDguNTAwCTE1MS44ODAKKzcwCTc2 NAkxNTQuNjMwCTE5MDg0MDAJMC4wMDAJMTUxLjAwMAkxNTQuNzUwCis3MAk3NjUJMTU1LjI1MAkx ODY4NTAwCTAuMDAwCTE1NC43NTAJMTU2Ljg4MAorNzAJNzY2CTE1Ni41MDAJMTU0NDMwMAkwLjAw MAkxNTQuNTAwCTE1Ny4yNTAKKzcwCTc2NwkxNTEuMDAwCTIwNDQyMDAJMC4wMDAJMTUxLjAwMAkx NTYuMzc1Cis3MQk3NjgJMTQ1LjI1MAkyOTIyMTAwCTAuMDAwCTE0NC4xMzAJMTQ3LjM4MAorNzEJ NzY5CTE0MC4xMjUJMzkyMzkwMAkwLjAwMAkxNDAuMDAwCTE0NS43NTAKKzcxCTc3MAkxMzUuMDAw CTQ2NjUwMDAJMC4wMDAJMTMyLjAwMAkxNDEuMjUwCis3MQk3NzEJMTA0LjAwMAk2Mzg0NDAwCTAu MDAwCTEwMi4wMDAJMTMwLjc1MAorNzEJNzcyCTExNS4wMDAJMAkwLjAwMAkxMTAuMTMwCTEyMi4w MDAKKzcxCTc3MwkxMjIuNzUwCTUzODY2MDAJMC4wMDAJMTIwLjAwMAkxMjUuNTAwCis3Mgk3NzQJ MTE4Ljg4MAkyMjMzNjAwCTAuMDAwCTExNS4wMDAJMTE5LjI1MAorNzIJNzc1CTExNS41MDAJMTgy NDcwMAkwLjAwMAkxMTUuMDAwCTExOS41MDAKKzcyCTc3NgkxMTcuMjUwCTI3OTg5MDAJMC4wMDAJ MTE1LjI1MAkxMTguMjUwCis3Mgk3NzcJMTE4LjI1MAkxNTUwMjAwCTAuMDAwCTExNi44ODAJMTE5 LjUwMAorNzIJNzc4CTExOC4yNTAJMTIxNzAwMAkwLjAwMAkxMTYuNTAwCTExOC4zNzUKKzcyCTc3 OQkxMTkuNTAwCTE2NDY0MDAJMC4wMDAJMTE4Ljc1MAkxMjAuMzgwCis3Mgk3ODAJMTE5Ljg3NQk2 MzAzMDAJMC4wMDAJMTE5LjAwMAkxMTkuODc1Cis3Mgk3ODEJMTE1Ljc1MAkxMDg2ODAwCTAuMDAw CTExNS4xMzAJMTE3LjYzMAorNzMJNzgyCTExMS42MzAJMTIzMDMwMAkwLjAwMAkxMTAuNzUwCTEx Mi4xMzAKKzczCTc4MwkxMTIuMjUwCTc2OTAwMAkwLjAwMAkxMTEuNTAwCTExMi43NTAKKzczCTc4 NAkxMTMuMzgwCTg2NzQwMAkwLjAwMAkxMTIuNzUwCTExNC4wMDAKKzczCTc4NQkxMTIuODc1CTg5 NjgwMAkwLjAwMAkxMTIuNjI1CTExMy43NTAKKzczCTc4NgkxMTEuNTAwCTkzMjIwMAkwLjAwMAkx MTAuNzUwCTExMy41MDAKKzczCTc4NwkxMTAuMjUwCTE0ODkwMDAJMC4wMDAJMTA5LjUwMAkxMTEu MTMwCis3Mwk3ODgJMTE0LjAwMAkxNTY0OTAwCTAuMDAwCTExMS42MzAJMTE0Ljc1MAorNzMJNzg5 CTExMi44NzUJOTU4MjAwCTAuMDAwCTExMi4zNzUJMTEzLjg3NQorNzQJNzkwCTExNC4xMjUJMTY1 MjcwMAkwLjAwMAkxMTIuNTAwCTExNC4zNzUKKzc0CTc5MQkxMTMuNTAwCTk0NzQwMAkwLjAwMAkx MTMuMzc1CTExNC4xMjUKKzc0CTc5MgkxMTIuNzUwCTExMDAyMDAJMC4wMDAJMTEyLjUwMAkxMTQu MzgwCis3NAk3OTMJMTEyLjUwMAkyMTk1OTAwCTAuMDAwCTExMC42MzAJMTEyLjYzMAorNzQJNzk0 CTExMy4wMDAJMTU1ODEwMAkwLjAwMAkxMTEuODgwCTExMy4wMDAKKzc0CTc5NQkxMTMuMzgwCTEx ODc3MDAJMC4wMDAJMTEzLjEzMAkxMTQuMjUwCis3NAk3OTYJMTE1LjAwMAkxMzY1MzAwCTAuMDAw CTExMy42MzAJMTE1LjI1MAorNzQJNzk3CTExNC42MjUJMTk5MjAwMAkwLjAwMAkxMTQuNTAwCTEx Ni41MDAKKzc0CTc5OAkxMTQuMDAwCTE1ODIxMDAJMC4wMDAJMTEzLjYyNQkxMTUuMDAwCis3NAk3 OTkJMTEzLjc1MAkyMjI1MDAwCTAuMDAwCTExMi42MjUJMTE0LjAwMAorNzQJODAwCTExNS41MDAJ MjQwNjQwMAkwLjAwMAkxMTMuMjUwCTExNS43NTAKKzc0CTgwMQkxMTcuMzc1CTIyMDk1MDAJMC4w MDAJMTE1Ljc1MAkxMTcuNjI1Cis3NAk4MDIJMTE4LjI1MAkyNjQ4MjAwCTAuMDAwCTExNy43NTAJ MTE5LjM3NQorNzQJODAzCTExNy4xMjUJMTYxOTgwMAkwLjAwMAkxMTcuMTI1CTExOS4xMjUKKzc1 CTgwNAkxMTYuMzgwCTEzMzM4MDAJMC4wMDAJMTE2LjAwMAkxMTguMzgwCis3NQk4MDUJMTE2Ljg3 NQkxNTA5ODAwCTAuMDAwCTExNi4xMjUJMTE3LjUwMAorNzUJODA2CTExNy4xMzAJOTM5MDAwCTAu MDAwCTExNi44ODAJMTE3LjYzMAorNzUJODA3CTExNy4zODAJMTA0OTgwMAkwLjAwMAkxMTYuODgw CTExOC4yNTAKKzc1CTgwOAkxMTcuNzUwCTE3MDgzMDAJMC4wMDAJMTE3LjM3NQkxMTguNzUwCis3 NQk4MDkJMTE2Ljc1MAkxMTA1NjAwCTAuMDAwCTExNi4wMDAJMTE3LjYzMAorNzUJODEwCTExNi4y NTAJMTE0MTIwMAkwLjAwMAkxMTUuODc1CTExNy4wMDAKKzc1CTgxMQkxMTYuMDAwCTExNzM0MDAJ MC4wMDAJMTE1LjAwMAkxMTYuMzgwCis3NQk4MTIJMTE2LjI1MAk5NDY2MDAJMC4wMDAJMTE1LjM3 NQkxMTYuMzc1Cis3Ngk4MTMJOTguNzUwCTEyNDk3MDAJMC4wMDAJOTguMDAwCTk5LjM4MAorNzYJ ODE0CTk5LjUwMAkxMTI3OTAwCTAuMDAwCTk4LjUwMAk5OS43NTAKKzc2CTgxNQkxMDAuMTI1CTEx Mjk0MDAJMC4wMDAJOTkuMzc1CTEwMC41MDAKKzc2CTgxNgkxMDAuMzc1CTYzODgwMAkwLjAwMAkx MDAuMjUwCTEwMC43NTAKKzc2CTgxNwk5OS4zODAJMTI0NTQwMAkwLjAwMAk5OC4yNTAJMTAwLjc1 MAorNzYJODE4CTk4Ljg4MAkxMTU3NzAwCTAuMDAwCTk4LjUwMAk5OS4zODAKKzc2CTgxOQk5Ny43 NTAJOTU2NTAwCTAuMDAwCTk3LjUwMAk5OC42MjUKKzc2CTgyMAk5Ny42MzAJMTAwMTMwMAkwLjAw MAk5Ni44ODAJOTguMTMwCis3Ngk4MjEJOTcuMTMwCTE0MzQyMDAJMC4wMDAJOTYuODgwCTk4LjEz MAorNzYJODIyCTk5LjI1MAkyMDI2OTAwCTAuMDAwCTk3LjM4MAk5OS41MDAKKzc3CTgyMwk5NS4z NzUJMTAwNTEwMAkwLjAwMAk5NS4xMjUJOTUuNzUwCis3Nwk4MjQJOTQuNTAwCTY4MjIwMAkwLjAw MAk5NC4yNTAJOTUuNTAwCis3Nwk4MjUJOTQuNzUwCTExNjU3MDAJMC4wMDAJOTQuNTAwCTk1LjM3 NQorNzcJODI2CTk0LjEzMAkxMTkyMzAwCTAuMDAwCTk0LjAwMAk5NS4xMzAKKzc3CTgyNwk5NC4x MzAJMTYzNzEwMAkwLjAwMAk5NC4wMDAJOTQuNjMwCis3Nwk4MjgJOTguMDAwCTE3NjA0MDAJMC4w MDAJOTQuNTAwCTk4LjEzMAorNzcJODI5CTk4Ljg3NQkyMzY2MDAwCTAuMDAwCTk4LjM3NQk5OS41 MDAKKzc3CTgzMAkxMDAuMDAwCTI0MTg3MDAJMC4wMDAJOTguODgwCTEwMC4zODAKKzc3CTgzMQk5 OS43NTAJMTg5MDUwMAkwLjAwMAk5OS41MDAJMTAxLjYzMAorNzgJODMyCTEwNi42MjUJMTA1MDQw MAkwLjAwMAkxMDYuMDAwCTEwNi43NTAKKzc4CTgzMwkxMDYuNTAwCTE3MTYyMDAJMC4wMDAJMTA1 Ljg4MAkxMDcuNzUwCis3OAk4MzQJMTA2LjEzMAk4Njg0MDAJMC4wMDAJMTA1Ljg4MAkxMDYuODgw Cis3OAk4MzUJMTA1Ljg3NQk3NTIzMDAJMC4wMDAJMTA1LjI1MAkxMDYuMzc1Cis3OAk4MzYJMTA1 LjUwMAk3ODI4MDAJMC4wMDAJMTA1LjI1MAkxMDUuODgwCis3OAk4MzcJMTA1Ljg3NQk5MzQ4MDAJ MC4wMDAJMTA1LjEyNQkxMDYuMzc1Cis3OAk4MzgJMTA2LjM3NQk2NDUyMDAJMC4wMDAJMTA1Ljg3 NQkxMDYuNTAwCis3OAk4MzkJMTA3LjEyNQk5MjE2MDAJMC4wMDAJMTA3LjAwMAkxMDguMDAwCis3 OAk4NDAJMTEwLjg4MAk0MTIwNzAwCTAuMDAwCTExMC4xMzAJMTExLjI1MAorNzgJODQxCTExMS4x MjUJMTkxNjkwMAkwLjAwMAkxMDkuODc1CTExMS4yNTAKKzc4CTg0MgkxMDkuODc1CTE1MzEwMDAJ MC4wMDAJMTA5LjUwMAkxMTAuODc1Cis3OQk4NDMJMTAyLjM4MAkxMzQ3MDAwCTAuMDAwCTEwMS41 MDAJMTAzLjUwMAorNzkJODQ0CTEwNS41MDAJMTYzNDcwMAkwLjAwMAkxMDEuODgwCTEwNS41MDAK Kzc5CTg0NQkxMDUuODgwCTE2MDk0MDAJMC4wMDAJMTA1LjUwMAkxMDcuNjMwCis3OQk4NDYJMTA3 LjUwMAkxNDM4MjAwCTAuMDAwCTEwNS44ODAJMTA3Ljc1MAorNzkJODQ3CTEwNy44ODAJMTE5Mjkw MAkwLjAwMAkxMDcuMTMwCTEwOC4zODAKKzc5CTg0OAkxMDUuMDAwCTEwNzcwMDAJMC4wMDAJMTA0 Ljc1MAkxMDcuNzUwCis4MAk4NDkJMTA3LjM3NQkxMTAxNzAwCTAuMDAwCTEwNy4xMjUJMTA5LjAw MAorODAJODUwCTEwNy44ODAJMTE2MjAwMAkwLjAwMAkxMDYuMzgwCTEwOC4yNTAKKzgwCTg1MQkx MDguMjUwCTE1NzAwMDAJMC4wMDAJMTA2LjAwMAkxMDkuMDAwCis4MAk4NTIJMTA5LjUwMAk5MDEz MDAJMC4wMDAJMTA4LjYyNQkxMDkuNTAwCis4MAk4NTMJMTA1LjM3NQkxNDE4NjAwCTAuMDAwCTEw NS4zNzUJMTA4LjYyNQorODAJODU0CTEwMy41MDAJMjI1ODYwMAkwLjAwMAkxMDIuODc1CTEwNi42 MjUKKzgwCTg1NQkxMDEuMDAwCTMxMTM4MDAJMC4wMDAJOTkuNzUwCTEwMy44ODAKKzgwCTg1Ngkx MDAuMjUwCTIzMDgxMDAJMC4wMDAJOTkuNTAwCTEwMi4wMDAKKzgwCTg1Nwk5OS4yNTAJMzEyMTQw MAkwLjAwMAk5Ni4yNTAJMTAwLjg3NQorODAJODU4CTk5LjM4MAkxNjkwMjAwCTAuMDAwCTk4LjI1 MAkxMDAuMzgwCis4MAk4NTkJMTAwLjc1MAkxMzMwMzAwCTAuMDAwCTk5LjM4MAkxMDEuNjMwCis4 MAk4NjAJMTA1LjM3NQkxODY2NTAwCTAuMDAwCTEwMS43NTAJMTA1LjM3NQorODAJODYxCTEwNy42 MjUJMjY1ODYwMAkwLjAwMAkxMDQuNjI1CTEwOS4wMDAKKzgwCTg2MgkxMDcuNzUwCTE5MTgzMDAJ MC4wMDAJMTA2LjUwMAkxMDguNzUwCis4MAk4NjMJMTA2Ljc1MAkxMjcwNzAwCTAuMDAwCTEwNi42 MjUJMTA4LjI1MAorODEJODY0CTExMS41MDAJMzM4OTgwMAkwLjAwMAkxMTEuMjUwCTExNi4wMDAK KzgxCTg2NQkxMTIuNTAwCTE5MDk0MDAJMC4wMDAJMTEwLjc1MAkxMTIuODc1Cis4MQk4NjYJMTEz LjM4MAkxMTczODAwCTAuMDAwCTExMi4xMzAJMTEzLjc1MAorODEJODY3CTExMi44NzUJOTk3OTAw CTAuMDAwCTExMi4zNzUJMTEzLjEyNQorODEJODY4CTExNC4zNzUJMTQ3MTkwMAkwLjAwMAkxMTIu NjI1CTExNC41MDAKKzgxCTg2OQkxMTIuODgwCTEwOTMxMDAJMC4wMDAJMTEyLjg4MAkxMTQuNjMw Cis4MQk4NzAJMTExLjI1MAkxNDM1MjAwCTAuMDAwCTExMS4wMDAJMTEyLjUwMAorODEJODcxCTEx MS41MDAJOTU0OTAwCTAuMDAwCTExMC42MjUJMTExLjc1MAorODEJODcyCTExMy41MDAJMTYxNzEw MAkwLjAwMAkxMTEuNTAwCTExMy41MDAKKzgxCTg3MwkxMTIuNzUwCTI0NjM5MDAJMC4wMDAJMTEy LjEzMAkxMTQuMDAwCis4MQk4NzQJMTEzLjc1MAkxODk2MDAwCTAuMDAwCTExMi4yNTAJMTE0LjYz MAorODEJODc1CTExMy44NzUJMjA4NDYwMAkwLjAwMAkxMTMuMzc1CTExNC4zNzUKKzgxCTg3Ngkx MTMuODgwCTM0MTMwMAkwLjAwMAkxMTMuNzUwCTExNC4yNTAKKzgxCTg3NwkxMTMuNTAwCTM5Njgw MAkwLjAwMAkxMTMuNTAwCTExNC4yNTAKKzgxCTg3OAkxMTMuNjMwCTcxNDEwMAkwLjAwMAkxMTMu MDAwCTExMy44ODAKKzgxCTg3OQkxMTMuMzc1CTcyODIwMAkwLjAwMAkxMTMuMjUwCTExMy44NzUK KzgxCTg4MAkxMTMuMDAwCTQ2MTMwMAkwLjAwMAkxMTIuODgwCTExMy41MDAKKzgxCTg4MQkxMTIu MTI1CTEwMzc3MDAJMC4wMDAJMTEyLjEyNQkxMTMuNzUwCis4MQk4ODIJMTEyLjUwMAkxMzA3NDAw CTAuMDAwCTExMi4yNTAJMTEzLjg4MAorODEJODgzCTExMi4xMzAJMTA4NTEwMAkwLjAwMAkxMTEu ODgwCTExMy4wMDAKKzgxCTg4NAkxMTAuMjUwCTExODk0MDAJMC4wMDAJMTEwLjAwMAkxMTEuODc1 Cis4MQk4ODUJMTA5LjAwMAkxNzE1NTAwCTAuMDAwCTEwOC43NTAJMTEwLjM3NQorODEJODg2CTEw Ni44ODAJMjA3ODAwMAkwLjAwMAkxMDYuNzUwCTExMC43NTAKKzgxCTg4NwkxMDguMzgwCTk2MjAw MAkwLjAwMAkxMDcuMjUwCTEwOC4zODAKKzgxCTg4OAkxMDguMTMwCTYwODcwMAkwLjAwMAkxMDcu NzUwCTEwOC4yNTAKKzgxCTg4OQkxMDYuNzUwCTE3NDY1MDAJMC4wMDAJMTA1LjUwMAkxMDcuMTMw Cis4MQk4OTAJMTA3LjUwMAkxMTY4MTAwCTAuMDAwCTEwNi43NTAJMTA3Ljc1MAorODEJODkxCTEw OS4xMzAJMTU4MjAwMAkwLjAwMAkxMDYuNjMwCTEwOS4yNTAKKzgxCTg5MgkxMTUuNzUwCTQzMzA0 MDAJMC4wMDAJMTE0LjI1MAkxMTYuMTMwCis4MQk4OTMJMTE3LjYyNQk0NTkyNTAwCTAuMDAwCTEx NC44NzUJMTE4LjI1MAorODIJODk0CTExOC4wMDAJMTk2MzcwMAkwLjAwMAkxMTcuNzUwCTExOS42 MjUKKzgyCTg5NQkxMTkuMjUwCTIyMTEwMDAJMC4wMDAJMTE3Ljg3NQkxMjAuMTI1Cis4Mgk4OTYJ MTIxLjAwMAkyODQxMjAwCTAuMDAwCTExOS44ODAJMTIxLjYzMAorODIJODk3CTEyMi42MjUJMjQ0 MTEwMAkwLjAwMAkxMjAuNTAwCTEyMi42MjUKKzgyCTg5OAkxMjQuMjUwCTI0Nzg0MDAJMC4wMDAJ MTIyLjM4MAkxMjUuMDAwCis4Mgk4OTkJMTI0LjUwMAkxOTQ5MjAwCTAuMDAwCTEyMy4wMDAJMTI1 LjM4MAorODIJOTAwCTEyNy4wMDAJMjUyNDMwMAkwLjAwMAkxMjQuNjMwCTEyNy4wMDAKKzgyCTkw MQkxMjYuNzUwCTE3MTgzMDAJMC4wMDAJMTI2LjI1MAkxMjcuMTMwCis4Mgk5MDIJMTI2Ljg4MAkx OTE5MTAwCTAuMDAwCTEyNS42MzAJMTI3LjYzMAorODMJOTAzCTEyOC41MDAJMjUzMjAwMAkwLjAw MAkxMjguMzgwCTEzMS4wMDAKKzgzCTkwNAkxMjkuNTAwCTE3NTE3MDAJMC4wMDAJMTI4LjI1MAkx MjkuODc1Cis4Mwk5MDUJMTMyLjM3NQkxODY1MzAwCTAuMDAwCTEyOS42MjUJMTMyLjUwMAorODMJ OTA2CTEzMi43NTAJMjM3MjQwMAkwLjAwMAkxMzEuNTAwCTEzMy44NzUKKzgzCTkwNwkxMzQuNjMw CTE5MjM4MDAJMC4wMDAJMTMyLjI1MAkxMzUuMDAwCis4Mwk5MDgJMTM1LjAwMAkyNDg1NDAwCTAu MDAwCTEzMy44ODAJMTM2LjI1MAorODMJOTA5CTEzNy4zNzUJMjczODkwMAkwLjAwMAkxMzUuMzc1 CTEzNy43NTAKKzgzCTkxMAkxMzkuNTAwCTIyNzgxMDAJMC4wMDAJMTM3LjAwMAkxMzkuNzUwCis4 Mwk5MTEJMTM3Ljg4MAkxODU0MjAwCTAuMDAwCTEzNy44ODAJMTM4Ljc1MAorODQJOTEyCTExMC42 MzAJMjIxNDcwMAkwLjAwMAkxMTAuMTMwCTExMS44ODAKKzg0CTkxMwkxMDguNTAwCTM1NTU1MDAJ MC4wMDAJMTA4LjEzMAkxMTEuMDAwCis4NAk5MTQJMTA2Ljg3NQkzMDI2ODAwCTAuMDAwCTEwNS42 MjUJMTA4LjM3NQorODQJOTE1CTEwOS4yNTAJMjA4NjcwMAkwLjAwMAkxMDYuNzUwCTEwOS4yNTAK Kzg0CTkxNgkxMDkuODgwCTIwODkwMDAJMC4wMDAJMTA5LjI1MAkxMTAuNzUwCis4NAk5MTcJMTA5 Ljc1MAkxNDYzODAwCTAuMDAwCTEwOS4zNzUJMTEwLjc1MAorODQJOTE4CTEwOS41MDAJMjEwOTMw MAkwLjAwMAkxMDkuMDAwCTExMC4yNTAKKzg0CTkxOQkxMDguNTAwCTE1NzA0MDAJMC4wMDAJMTA4 LjEyNQkxMDkuMzc1Cis4NQk5MjAJOTguMDAwCTE0Mzg4MDAJMC4wMDAJOTcuNjMwCTk5LjM4MAor ODUJOTIxCTk3LjI1MAkxOTA5NTAwCTAuMDAwCTk2Ljc1MAk5OC4yNTAKKzg1CTkyMgk5OS43NTAJ MTQxNzIwMAkwLjAwMAk5Ny4wMDAJOTkuODc1Cis4NQk5MjMJOTkuODgwCTg5MzYwMAkwLjAwMAk5 OS41MDAJMTAwLjUwMAorODUJOTI0CTEwMS4yNTAJNzkxMDAwCTAuMDAwCTk5LjEyNQkxMDEuNjI1 Cis4NQk5MjUJMTA0LjI1MAkzMDMzNjAwCTAuMDAwCTk5Ljc1MAkxMDQuNzUwCis4NQk5MjYJMTAx LjYyNQkyMDI1OTAwCTAuMDAwCTEwMS4zNzUJMTAzLjc1MAorODUJOTI3CTk5Ljg3NQkxNjMxOTAw CTAuMDAwCTk5LjM3NQkxMDEuMjUwCis4NQk5MjgJMTAwLjM4MAkxMzE1NzAwCTAuMDAwCTk5LjYz MAkxMDAuMzgwCis4Ngk5MjkJOTQuNjI1CTE5NzMwMDAJOTIuMDAwCTkxLjg3NQk5NC43NTAKKzg2 CTkzMAk5Mi4zODAJMjUxNTkwMAk5NC4wMDAJOTIuMjUwCTk1LjAwMAorODYJOTMxCTkxLjI1MAky MDQwMTAwCTkyLjYyNQk5MS4yNTAJOTQuMjUwCis4Ngk5MzIJOTAuODc1CTE2MTE1MDAJOTEuMzc1 CTkwLjYyNQk5Mi41MDAKKzg2CTkzMwk5MC4yNTAJMTMzMzMwMAk5MC43NTAJODkuNzUwCTkwLjg3 NQorODYJOTM0CTkyLjM3NQkxMzM4NDAwCTkwLjM3NQk5MC4yNTAJOTIuNTAwCis4Ngk5MzUJOTUu MzgwCTMxMDM5MDAJOTQuMDAwCTkzLjUwMAk5NS43NTAKKzg2CTkzNgk5NS41MDAJMjI1MzIwMAk5 NS4xMjUJOTUuMDAwCTk3LjEyNQorODYJOTM3CTk2LjM3NQkzNTgyMDAwCTk1LjAwMAk5Mi42MjUJ OTguMTI1Cis4Ngk5MzgJOTUuMjUwCTEyMDk1MDAJOTYuMjUwCTk1LjI1MAk5Ni4zNzUKKzg2CTkz OQk5Mi44ODAJMTQyNjQwMAk5NS4yNTAJOTIuODgwCTk1LjUwMAorODYJOTQwCTk1LjYzMAkxMjcz NDAwCTkyLjg4MAk5Mi44ODAJOTUuNjMwCis4Nwk5NDEJOTIuMjUwCTE1MDI2MDAJOTEuMTI1CTkw LjAwMAk5Mi4yNTAKKzg3CTk0Mgk5MS4yNTAJMTYzMjUwMAk5MS43NTAJOTEuMDAwCTkyLjEzMAor ODcJOTQzCTg5Ljg4MAkxNDAxNzAwCTkwLjM4MAk4OS42MzAJOTAuODgwCis4Nwk5NDQJODkuMjUw CTE3MjQyMDAJOTAuMDAwCTg4LjYyNQk5MC4zNzUKKzg3CTk0NQk4OS43NTAJOTQ1ODAwCTg5LjYy NQk4OS4xMjUJODkuODc1Cis4Nwk5NDYJOTAuMjUwCTExMzA3MDAJODkuNzUwCTg5Ljc1MAk5MC44 NzUKKzg3CTk0Nwk5Mi4xMjUJMTU4MTUwMAk5MC41MDAJODkuODc1CTkyLjM3NQorODcJOTQ4CTkw Ljc1MAkxOTU0MDAwCTkyLjc1MAk5MC4xMzAJOTMuMjUwCis4Nwk5NDkJODkuNzUwCTEyOTUxMDAJ OTAuNTAwCTg5LjUwMAk5MS4xMzAKKzg3CTk1MAk4OS42MjUJMTMxNDUwMAk5MC4wMDAJODkuMTI1 CTkxLjEyNQorODcJOTUxCTg5LjYzMAkxMTQ4NDAwCTkwLjAwMAk4OS4zODAJOTAuNzUwCis4Nwk5 NTIJODkuNzUwCTEzNjMyMDAJODkuNzUwCTg5LjEyNQk5MC42MjUKKzg3CTk1Mwk4OS44NzUJMTQ0 NjEwMAk4OS43NTAJODkuMjUwCTkwLjM3NQorODcJOTU0CTg5LjM4MAkxMDU2NTAwCTg5Ljg4MAk4 OC43NTAJOTAuMjUwCis4OAk5NTUJODIuMzgwCTE5MjY0MDAJODMuMzgwCTgyLjI1MAk4NC44ODAK Kzg4CTk1Ngk4NC44NzUJMzAyMDEwMAk4Mi42MjUJODIuNjI1CTg1LjAwMAorODgJOTU3CTg1LjEy NQkyMjc1NjAwCTg1LjM3NQk4NC42MjUJODUuODc1Cis4OAk5NTgJODYuMDAwCTIwNTI5MDAJODUu NjMwCTg0LjUwMAk4Ni4xMzAKKzg4CTk1OQk4Ny41MDAJMTcxMjMwMAk4Ni4xMzAJODUuODgwCTg3 LjUwMAorODgJOTYwCTg4LjI1MAkzMzE2NjAwCTg5LjUwMAk4OC4xMjUJODkuNzUwCis4OAk5NjEJ ODguNTAwCTIyMTU2MDAJODguNzUwCTg3LjYyNQk4OC44NzUKKzg4CTk2Mgk4OC42MjUJMjA2MzEw MAk4OC41MDAJODcuNTAwCTg4LjYyNQorODgJOTYzCTg5LjUwMAkxNzkyODAwCTg4LjUwMAk4OC4y NTAJODkuNzUwCis4OAk5NjQJOTAuMDAwCTIxMTcyMDAJODkuNjMwCTg5LjUwMAk5MC4yNTAKKzg4 CTk2NQk5MC4xMjUJMTMyNDkwMAk4OS44NzUJODkuNjI1CTkwLjEyNQorODgJOTY2CTg5LjI1MAkx NDc1NDAwCTkwLjAwMAk4OS4wMDAJOTAuNjMwCis4OQk5NjcJODkuMjUwCTE0NzU0MDAJOTAuMDAw CTg5LjAwMAk5MC42MzAKKzg5CTk2OAk4OC4xMzAJOTkzMTAwCTg5LjEzMAk4OC4xMzAJODkuMjUw Cis4OQk5NjkJODguMTI1CTEwMDA5MDAJODcuODc1CTg3Ljc1MAk4OC43NTAKKzg5CTk3MAk4OC41 MDAJMTEwODkwMAk4OC4xMzAJODcuMzgwCTg4LjUwMAorODkJOTcxCTg4LjEzMAkxMjY4NjAwCTg4 Ljg4MAk4Ny43NTAJODguODgwCis4OQk5NzIJOTAuNzUwCTE2ODE5MDAJODguNTAwCTg4LjI1MAk5 MC43NTAKKzg5CTk3Mwk5MC42MjUJMjA3NDQwMAk5MS4yNTAJOTAuMzc1CTkyLjEyNQorODkJOTc0 CTkyLjUwMAkyMzQxMjAwCTkyLjUwMAk5Mi4xMjUJOTMuMDAwCis4OQk5NzUJOTMuODc1CTIwNDQ5 MDAJOTIuNTAwCTkyLjM3NQk5NC4wMDAKKzkwCTk3Ngk2Mi44ODAJMjU0MTgwMAk2Mi4zODAJNjIu MzgwCTYzLjM4MAorOTAJOTc3CTU2LjEzMAkxMjE5MzUwMAkwLjAwMAk1Ni4wMDAJNTkuODgwCis5 MAk5NzgJNTEuODc1CTEzNDIxMjAwCTUzLjYyNQk1MC43NTAJNTQuODc1Cis5MAk5NzkJNTMuMDAw CTgwMjU0MDAJMC4wMDAJNTEuMjUwCTUzLjM4MAorOTAJOTgwCTUxLjM3NQk3NjU4MDAwCTUzLjEy NQk1MC4yNTAJNTMuMjUwCis5MAk5ODEJNDguODc1CTczODQ2MDAJNTEuMjUwCTQ4Ljc1MAk1MS42 MjUKKzkwCTk4Mgk1MS43NTAJNjExNTcwMAk1MC4wMDAJNDkuMDAwCTUyLjAwMAorOTAJOTgzCTUx LjI1MAk0MTg2MjAwCTUxLjYyNQk1MS4wMDAJNTIuNjI1Cis5MQk5ODQJNDYuMzgwCTM2Mzg5MDAJ NDcuMDAwCTQ1Ljg4MAk0Ny4wMDAKKzkxCTk4NQk0OC42MjUJMzQyMDUwMAk0Ni41MDAJNDYuNTAw CTQ4Ljc1MAorOTEJOTg2CTQ4Ljg3NQkzMDU0NTAwCTQ4Ljc1MAk0Ny41MDAJNDkuMjUwCis5MQk5 ODcJNDkuMDAwCTc4MDI0MDAJNTIuODc1CTQ4Ljc1MAk1My4yNTAKKzkxCTk4OAk0OS42MjUJMzMw NzUwMAk0OS4xMjUJNDguMjUwCTUwLjAwMAorOTEJOTg5CTUwLjI1MAkzMDk1NzAwCTUwLjAwMAk0 OS43NTAJNTAuODc1Cis5MQk5OTAJNTEuNTAwCTI5ODE1MDAJNTEuMDAwCTUwLjg3NQk1MS42MjUK KzkxCTk5MQk1Mi42MjUJMzAzOTUwMAk1Mi4wMDAJNTIuMDAwCTUyLjYyNQorOTEJOTkyCTUyLjEy NQkyNjM1NDAwCTUyLjI1MAk1Mi4wMDAJNTMuMDAwCis5Mgk5OTMJNDIuMjUwCTI0OTQyMDAJNDMu NjI1CTQyLjAwMAk0My42MjUKKzkyCTk5NAk0Mi4zNzUJMzkyMjMwMAk0MS44NzUJNDEuMTI1CTQy LjM3NQorOTIJOTk1CTQ1LjYzMAk2MjYwMzAwCTQ0Ljg4MAk0NC41MDAJNDUuODgwCis5Mgk5OTYJ NDQuMDAwCTQyMTY3MDAJNDYuMDAwCTQzLjg3NQk0Ni4zNzUKKzkzCTk5Nwk1MS44NzUJMjMzMTcw MAk1Mi4yNTAJNTEuNTAwCTUyLjYyNQorOTMJOTk4CTUyLjAwMAkyNTk1MzAwCTUxLjg3NQk1MS42 MjUJNTIuNTAwCis5Mwk5OTkJNTMuMTI1CTIwNjcyMDAJNTIuMzc1CTUxLjg3NQk1My4yNTAKKzkz CTEwMDAJNTUuMTI1CTQxODQwMDAJNTQuMDAwCTUzLjc1MAk1NS4yNTAKKzkzCTEwMDEJNTUuNzUw CTEyMTEwMDAJNTUuNTAwCTU1LjEyNQk1Ni4wMDAKKzkzCTEwMDIJNTQuMzgwCTI0ODc5MDAJNTYu MDAwCTU0LjM4MAk1Ni4xMzAKKzkzCTEwMDMJNTMuODc1CTE5NzY4MDAJNTQuNTAwCTUzLjc1MAk1 NS4xMjUKKzkzCTEwMDQJNTMuMTMwCTIzODUzMDAJNTQuNzUwCTUzLjEzMAk1NC43NTAKKzkzCTEw MDUJNTMuNzUwCTE4NjU4MDAJNTMuMjUwCTUzLjI1MAk1NC4xMjUKKzk0CTEwMDYJNTkuMDAwCTE4 NDY4MDAJNTguMTMwCTU4LjAwMAk1OS4xMzAKKzk0CTEwMDcJNTkuNTAwCTI1NzAwMDAJNTkuMDAw CTU4LjUwMAk1OS44NzUKKzk0CTEwMDgJNTguNTAwCTIzNzk4MDAJNjAuMDAwCTU4LjUwMAk2MC4w MDAKKzk0CTEwMDkJNTguODc1CTE0NTg2MDAJNTguNTAwCTU4LjAwMAk1OS4zNzUKKzk0CTEwMTAJ NTkuMjUwCTE3MzQ5MDAJNTguODc1CTU4LjUwMAk1OS41MDAKKzk0CTEwMTEJNTguNjMwCTE2OTA2 MDAJNTkuMTMwCTU4LjUwMAk1OS4zODAKKzk0CTEwMTIJNTguMTMwCTE1MDMxMDAJNTguNzUwCTU4 LjEzMAk1OC44ODAKKzk0CTEwMTMJNTguNzUwCTE4MDQyMDAJNTguMjUwCTU4LjI1MAk1OS4wMDAK Kzk0CTEwMTQJNTguNjMwCTE1ODYwMDAJNTguNzUwCTU4LjM4MAk1OS41MDAKKzk0CTEwMTUJNTcu NTAwCTE1MjgxMDAJNTguNTAwCTU3LjEzMAk1OC41MDAKKzk0CTEwMTYJNTcuMTI1CTIyNTU5MDAJ NTcuMzc1CTU2LjM3NQk1Ny4zNzUKKzk0CTEwMTcJNTYuMDAwCTE5NTk1MDAJNTYuNzUwCTU1Ljc1 MAk1Ny4wMDAKKzk0CTEwMTgJNTUuMjUwCTIyNzg1MDAJNTUuODc1CTU1LjEyNQk1NS44NzUKKzk0 CTEwMTkJNTUuMjUwCTMxNzY2MDAJNTUuMTI1CTU0Ljc1MAk1NS42MjUKKzk0CTEwMjAJNTguNjMw CTQyMTkzMDAJNTUuNzUwCTU1Ljc1MAk1OC43NTAKKzk0CTEwMjEJNTguMjUwCTEwMTU0OTAwCTU4 Ljg4MAk1NS4zODAJNTkuMzgwCis5NQkxMDIyCTUyLjg4MAkxNTY1NjAwCTUzLjM4MAk1Mi43NTAJ NTMuNjMwCis5NQkxMDIzCTUzLjI1MAkxOTg1NTAwCTUyLjUwMAk1Mi4wMDAJNTMuMzgwCis5NQkx MDI0CTU0LjAwMAkxODczNzAwCTUzLjM3NQk1My4zNzUJNTQuNjI1Cis5NQkxMDI1CTU0LjUwMAkx NzI3NDAwCTU0LjM4MAk1NC4wMDAJNTQuNjMwCis5NQkxMDI2CTU0LjYyNQkxNDk1NzAwCTU1LjI1 MAk1NC41MDAJNTUuMjUwCis5NQkxMDI3CTUyLjc1MAkyMjkwMjAwCTU0Ljg4MAk1Mi41MDAJNTUu MDAwCis5NgkxMDI4CTUzLjM4MAkyMDk3NTAwCTUzLjUwMAk1MS4zODAJNTMuNzUwCis5NgkxMDI5 CTUyLjI1MAkyMjA3NzAwCTUzLjI1MAk1MS43NTAJNTMuNTAwCis5NgkxMDMwCTU4LjM4MAk4NzU4 MTAwCTU1LjAwMAk1NC4wMDAJNTguNjMwCis5NgkxMDMxCTU4Ljc1MAk1NjYwNTAwCTU4LjM3NQk1 OC4wMDAJNTkuNTAwCis5NwkxMDMyCTU4LjUwMAkyMjE3MjAwCTU4Ljg4MAk1OC41MDAJNTkuMjUw Cis5NwkxMDMzCTU3LjEyNQkyMjk3NTAwCTU3Ljg3NQk1Ni43NTAJNTguMjUwCis5NwkxMDM0CTU3 LjUwMAkxOTA4NjAwCTU3LjM3NQk1Ni44NzUJNTcuODc1Cis5NwkxMDM1CTU4LjAwMAkxNjA4NTAw CTU3LjUwMAk1Ni44NzUJNTguMzc1Cis5NwkxMDM2CTU4LjM4MAkxMzc2NjAwCTU4LjEzMAk1Ny44 ODAJNTguNjMwCis5NwkxMDM3CTU3Ljc1MAkxNTAwMzAwCTU4LjI1MAk1Ny41MDAJNTguMjUwCis5 OAkxMDM4CTU1LjYyNQkxODE3MjAwCTU2Ljc1MAk1NS42MjUJNTYuODc1Cis5OAkxMDM5CTU1Ljg4 MAkzMTg5MzAwCTU1Ljc1MAk1NC41MDAJNTYuMjUwCis5OAkxMDQwCTYyLjM4MAk4ODA3NTAwCTU5 LjAwMAk1OC4wMDAJNjIuNjMwCis5OAkxMDQxCTYxLjM4MAkzNzE0MTAwCTYyLjI1MAk2MS4xMzAJ NjIuMzgwCis5OQkxMDQyCTcyLjI1MAkyMzQxNjAwCTczLjYyNQk3Mi4yNTAJNzQuMTI1Cis5OQkx MDQzCTczLjEyNQkyMDQwODAwCTcyLjUwMAk3MS44NzUJNzMuMTI1Cis5OQkxMDQ0CTczLjI1MAkx NTM2NDAwCTcyLjg4MAk3Mi43NTAJNzMuNzUwCis5OQkxMDQ1CTc0LjM3NQkyNDYzNDAwCTczLjUw MAk3My4zNzUJNzQuNTAwCis5OQkxMDQ2CTc1LjM4MAkzOTMzOTAwCTc0LjAwMAk3My43NTAJNzUu NzUwCis5OQkxMDQ3CTc1LjAwMAk1MjE2OTAwCTc1LjUwMAk3My44NzUJNzYuMTI1Cis5OQkxMDQ4 CTc0LjYyNQkzMzcyNTAwCTc0LjYyNQk3NC4xMjUJNzUuMzc1Cis5OQkxMDQ5CTczLjAwMAkyNjE1 MjAwCTc0LjYyNQk3Mi44NzUJNzQuNjI1Cis5OQkxMDUwCTczLjg4MAkyODI5NjAwCTcyLjYzMAk3 Mi42MzAJNzQuMzgwCisxMDAJMTA1MQk3MS43NTAJMTQxODUwMAk3Mi43NTAJNzEuNTAwCTczLjAw MAorMTAwCTEwNTIJNzIuMTMwCTI3NDI0MDAJNzIuMDAwCTcwLjI1MAk3Mi44ODAKKzEwMAkxMDUz CTczLjYyNQkzMjkyMDAwCTcyLjM3NQk3Mi4yNTAJNzMuODc1CisxMDAJMTA1NAk3NC4zODAJMTQ1 ODYwMAk3My42MzAJNzMuNTAwCTc0LjM4MAorMTAwCTEwNTUJNzQuNjI1CTI1NjI4MDAJNzQuODc1 CTc0LjUwMAk3NS4yNTAKKzEwMAkxMDU2CTc0LjM4MAkxMzUyMTAwCTc0LjM4MAk3NC4xMzAJNzQu ODgwCisxMDAJMTA1Nwk3NC4yNTAJMTQ1MDcwMAk3NC4yNTAJNzMuODc1CTc0LjM3NQorMTAwCTEw NTgJNzQuMjUwCTE0OTY0MDAJNzQuMTI1CTc0LjEyNQk3NC44NzUKKzEwMQkxMDU5CTg3LjEzMAky NTc2NDAwCTg3Ljg4MAk4Ni4wMDAJODguMjUwCisxMDEJMTA2MAk4OS4wMDAJNTk3NzcwMAk5MC41 MDAJODguNjMwCTkwLjUwMAorMTAxCTEwNjEJOTEuNjI1CTU4ODY0MDAJODkuMzc1CTg5LjEyNQk5 Mi4wMDAKKzEwMQkxMDYyCTkzLjUwMAk0MzE4OTAwCTkxLjUwMAk5MS4wMDAJOTMuODgwCisxMDEJ MTA2Mwk5My42MjUJMzM0NjMwMAk5My4xMjUJOTIuODc1CTkzLjg3NQorMTAxCTEwNjQJOTUuMjUw CTM2OTQ1MDAJOTMuMTI1CTkyLjg3NQk5NS42MjUKKzEwMgkxMDY1CTg5LjM3NQkzMzk0MDAwCTkw LjEyNQk4OC4zNzUJOTAuNzUwCisxMDIJMTA2Ngk4OS4xMzAJMzMwODQwMAk4OS42MzAJODguNjMw CTkwLjI1MAorMTAyCTEwNjcJOTAuMjUwCTI5OTU3MDAJOTAuNTAwCTg5Ljc1MAk5MC43NTAKKzEw MgkxMDY4CTkxLjc1MAkyOTA1MjAwCTkxLjM4MAk5MC44ODAJOTIuMjUwCisxMDIJMTA2OQk5My4w MDAJMjU2MjUwMAk5MS44NzUJOTEuODc1CTkzLjM3NQorMTAyCTEwNzAJOTMuMDAwCTIxOTI5MDAJ OTMuNjMwCTkzLjAwMAk5NC4wMDAKKzEwMwkxMDcxCTEwOS4wMDAJMzI4NTYwMAkxMDYuNTAwCTEw NS42MjUJMTA5LjUwMAorMTAzCTEwNzIJMTA4LjYyNQkxMjU3MjAwCTEwOS4xMjUJMTA4LjUwMAkx MDkuNzUwCisxMDMJMTA3MwkxMDguODc1CTE0MzA4MDAJMTA5LjEyNQkxMDguNjI1CTEwOS4zNzUK KzEwMwkxMDc0CTEwOS42MzAJMTc5NTMwMAkxMDguODgwCTEwOC44ODAJMTEwLjAwMAorMTAzCTEw NzUJMTA5Ljg3NQkxOTY2ODAwCTExMC4wMDAJMTA5LjYyNQkxMTAuMzc1CisxMDMJMTA3NgkxMDku MTI1CTE5NzE0MDAJMTA5Ljg3NQkxMDguODc1CTExMC4zNzUKKzEwMwkxMDc3CTEwOS4yNTAJMjMy NzcwMAkxMDkuNTAwCTEwOC4zODAJMTA5LjYzMAorMTAzCTEwNzgJMTEwLjc1MAkxNzQ4MzAwCTEw OS4yNTAJMTA5LjI1MAkxMTAuODc1CisxMDMJMTA3OQkxMTIuMDAwCTI3MDEwMDAJMTExLjAwMAkx MTAuMjUwCTExMi4xMjUKKzEwMwkxMDgwCTExMi4zNzUJMjk0NjgwMAkxMTIuMTI1CTExMC43NTAJ MTEyLjc1MAorMTAzCTEwODEJMTEzLjYyNQkzMDI5NzAwCTExMi4zNzUJMTEyLjI1MAkxMTQuNjI1 CisxMDMJMTA4MgkxMTEuMzc1CTM2OTgxMDAJMTEzLjg3NQkxMTEuMTI1CTExNC4wMDAKKzEwMwkx MDgzCTEwNi43NTAJNDcwMDcwMAkxMTEuMzgwCTEwNi41MDAJMTExLjM4MAorMTAzCTEwODQJMTA3 LjYzMAk1NTE0MzAwCTEwNy4wMDAJMTA1LjYzMAkxMDguMjUwCisxMDMJMTA4NQkxMDYuNjI1CTMy MzkwMDAJMTA4LjEyNQkxMDYuNTAwCTEwOC41MDAKKzEwNAkxMDg2CTkxLjg4MAkzNzQ0NDAwCTg5 LjEzMAk4OS4xMzAJOTEuODgwCisxMDQJMTA4Nwk4OS4zNzUJMzYwNTgwMAk5Mi4wMDAJODkuMTI1 CTkyLjAwMAorMTA0CTEwODgJOTAuODc1CTI2NzQwMDAJODkuODc1CTg5Ljc1MAk5MS4xMjUKKzEw NAkxMDg5CTkxLjI1MAkxODc3NDAwCTkwLjg4MAk5MC44ODAJOTEuODgwCisxMDQJMTA5MAk5MS43 NTAJOTQ1NDAwCTkyLjAwMAk5MS42MjUJOTIuMTI1CisxMDQJMTA5MQk5Mi4wMDAJMTU3MjAwMAk5 MS43NTAJOTAuNzUwCTkyLjAwMAorMTA1CTEwOTIJODcuMjUwCTQ2MjQ2MDAJODguMTMwCTg2LjAw MAk4OC41MDAKKzEwNQkxMDkzCTg2LjM3NQkyNjY0NDAwCTg3LjI1MAk4Ni4xMjUJODcuMjUwCisx MDUJMTA5NAk4My4xMjUJMzc0MjgwMAk4Ni41MDAJODMuMTI1CTg2LjUwMAorMTA1CTEwOTUJODcu MDAwCTQ2MTMwMDAJODQuMTI1CTgzLjUwMAk4Ny43NTAKKzEwNQkxMDk2CTg3LjYyNQk0ODIxMTAw CTg2Ljc1MAk4NS43NTAJODkuMjUwCisxMDUJMTA5Nwk5Ni4yNTAJOTg1NjkwMAk5MC4wMDAJODku NjI1CTk2LjI1MAorMTA1CTEwOTgJMTAyLjAwMAkxMzE0NTkwMAk5Ni42MjUJOTYuNTAwCTEwNC4x MjUKKzEwNQkxMDk5CTEwMi4yNTAJNTI5MzAwMAkxMDEuNTAwCTEwMS4zNzUJMTAzLjg3NQorMTA1 CTExMDAJMTAzLjAwMAk0OTU5MTAwCTEwMC43NTAJMTAwLjc1MAkxMDQuNTAwCisxMDUJMTEwMQkx MDcuMDAwCTc5ODkwMDAJMTAzLjEzMAkxMDMuMTMwCTEwOS4wMDAKKzEwNQkxMTAyCTEwNC4xMjUJ NDcyMTgwMAkxMDcuNjI1CTEwNC4xMjUJMTA4LjAwMAorMTA2CTExMDMJMTEzLjYyNQkzNDY3OTAw CTExNC4wMDAJMTEzLjUwMAkxMTQuODc1CisxMDYJMTEwNAkxMTQuMjUwCTMyMzc0MDAJMTEzLjg4 MAkxMTMuNzUwCTExNS4wMDAKKzEwNgkxMTA1CTExNy42MjUJNTgzNTMwMAkxMTQuMzc1CTExNC4y NTAJMTE4LjUwMAorMTA2CTExMDYJMTE4LjAwMAk0OTg1OTAwCTExOC4wMDAJMTE3LjUwMAkxMTgu ODgwCisxMDYJMTEwNwkxMTkuMTI1CTUzMjIyMDAJMTE2Ljc1MAkxMTYuNzUwCTEyMC44NzUKKzEw NgkxMTA4CTEyMC4yNTAJNDA5NzMwMAkxMTkuMDAwCTExOC42MzAJMTIwLjYzMAorMTA2CTExMDkJ MTI0LjEyNQk1MzU1ODAwCTEyMS43NTAJMTIxLjI1MAkxMjUuNjI1CisxMDYJMTExMAkxMjUuNjMw CTQxMjYyMDAJMTI1LjAwMAkxMjQuMDAwCTEyNi4xMzAKKzEwNgkxMTExCTEyNC44ODAJMjg4MjUw MAkxMjMuODgwCTEyMy44ODAJMTI1LjUwMAorMTA3CTExMTIJMTA4Ljc1MAk0NzIyOTAwCTExNC44 NzUJMTA4LjM3NQkxMTUuMTI1CisxMDcJMTExMwkxMTAuNzUwCTQ1NTg5MDAJMTA4LjM3NQkxMDcu NjI1CTExMi4wMDAKKzEwNwkxMTE0CTExMS4yNTAJMzYxOTgwMAkxMTEuMTMwCTExMC4yNTAJMTEz Ljc1MAorMTA3CTExMTUJMTA5Ljc1MAkzMDQ2NjAwCTExMS44NzUJMTA5LjUwMAkxMTIuMzc1Cisx MDcJMTExNgkxMTEuMjUwCTI5MzE2MDAJMTEwLjM4MAkxMTAuMzgwCTExMy43NTAKKzEwNwkxMTE3 CTExMC4zODAJMjM3OTUwMAkxMTIuMTMwCTExMC4wMDAJMTEyLjc1MAorMTA3CTExMTgJMTE3LjYy NQk1NDA3NzAwCTExMS4wMDAJMTEwLjUwMAkxMTguMTI1CisxMDcJMTExOQkxMTkuNzUwCTQxNDk5 MDAJMTE3LjUwMAkxMTYuMTMwCTEyMC41MDAKKzEwOAkxMTIwCTkxLjc1MAkzNjgzNjAwCTg5LjYz MAk4OS4xMzAJOTIuNjMwCisxMDgJMTEyMQkxMDMuNjMwCTkwMTQ5MDAJOTYuMDAwCTk1LjYzMAkx MDMuNzUwCisxMDgJMTEyMgkxMDMuODc1CTM5OTA0MDAJMTAzLjEyNQkxMDEuNjI1CTEwNC4xMjUK KzEwOAkxMTIzCTEwNC43NTAJMzMzODIwMAkxMDMuNTAwCTEwMy4zODAJMTA1LjUwMAorMTA4CTEx MjQJMTA3LjM4MAkzOTkyODAwCTEwNS4yNTAJMTAzLjc1MAkxMDguMDAwCisxMDgJMTEyNQkxMDcu NTAwCTM1MDUzMDAJMTA3LjEyNQkxMDcuMDAwCTEwOC44NzUKKzEwOAkxMTI2CTEwNy4yNTAJMzEy MDYwMAkxMDguMDAwCTEwNy4yNTAJMTA5LjAwMAorMTA4CTExMjcJMTA4Ljg3NQkyMjY1ODAwCTEw OC4zNzUJMTA3Ljc1MAkxMDkuMzc1CisxMDgJMTEyOAkxMDkuMjUwCTIxNTExMDAJMTA4LjAwMAkx MDguMDAwCTEwOS4zNzUKKzEwOQkxMTI5CTEyNC43NTAJMTMxMjIwMAkxMjQuNzUwCTEyNC4wMDAJ MTI1LjUwMAorMTA5CTExMzAJMTI0LjUwMAkxODY0NDAwCTEyNC44NzUJMTI0LjEyNQkxMjcuMTI1 CisxMDkJMTEzMQkxMjMuNzUwCTI0NDY1MDAJMTI0LjAwMAkxMjMuMTMwCTEyNS4yNTAKKzEwOQkx MTMyCTEyNS44ODAJMjAxMzIwMAkxMjQuMjUwCTEyNC4wMDAJMTI1Ljg4MAorMTA5CTExMzMJMTI1 LjAwMAkxODQ1MTAwCTEyNS43NTAJMTI0LjYyNQkxMjYuMjUwCisxMDkJMTEzNAkxMjYuNjI1CTIz MDIzMDAJMTI1Ljg3NQkxMjUuNjI1CTEyNy4xMjUKKzEwOQkxMTM1CTEyNy44NzUJMTgzNTQwMAkx MjYuODc1CTEyNi44NzUJMTI4LjAwMAorMTA5CTExMzYJMTI4LjM4MAkzMTQ4MDAwCTEyOC4wMDAJ MTI3LjYzMAkxMjkuNTAwCisxMDkJMTEzNwkxMjYuMjUwCTI0MDI0MDAJMTI5LjAwMAkxMjYuMTMw CTEyOS4zODAKKzEwOQkxMTM4CTEyNy43NTAJMjI0ODUwMAkxMjUuNTAwCTEyNS41MDAJMTI4LjAw MAorMTA5CTExMzkJMTI5Ljg3NQkyODU4MzAwCTEyOC41MDAJMTI4LjI1MAkxMzAuMTI1CisxMDkJ MTE0MAkxMzAuMDAwCTE0MDA5MDAJMTI5Ljg4MAkxMjkuMTMwCTEzMC4wMDAKKzEwOQkxMTQxCTEy OS41MDAJMjg2MzkwMAkxMzAuNzUwCTEyOC42MzAJMTMxLjI1MAorMTA5CTExNDIJMTI3LjYyNQkx ODc1NzAwCTEyOS41MDAJMTI3LjM3NQkxMjkuNTAwCisxMDkJMTE0MwkxMjUuNjI1CTIxMzU0MDAJ MTI4Ljc1MAkxMjUuMjUwCTEyOS4xMjUKKzEwOQkxMTQ0CTEyOS4zNzUJMzQ3MzcwMAkxMjUuNTAw CTEyNC4wMDAJMTI5LjUwMAorMTEwCTExNDUJMTMzLjM3NQkyODg2NDAwCTEzMC42MjUJMTMwLjI1 MAkxMzMuODc1CisxMTAJMTE0NgkxMzMuNzUwCTM0ODE2MDAJMTMzLjEyNQkxMzIuNzUwCTEzNS4x MjUKKzExMAkxMTQ3CTEzNC4zNzUJMTU2OTQwMAkxMzMuMzc1CTEzMi44NzUJMTM0LjUwMAorMTEw CTExNDgJMTM0LjUwMAkxNDI5MjAwCTEzNC4zNzUJMTM0LjAwMAkxMzQuODc1CisxMTAJMTE0OQkx MzMuMjUwCTI3MjQxMDAJMTM1LjAwMAkxMzMuMDAwCTEzNS43NTAKKzExMAkxMTUwCTEzNC43NTAJ MjM5MjMwMAkxMzMuNTAwCTEzMy4yNTAJMTM1Ljg3NQorMTEwCTExNTEJMTM2Ljg4MAkyNzc0NTAw CTEzNC42MzAJMTM0LjYzMAkxMzcuNjMwCisxMTAJMTE1MgkxNDUuMDAwCTc4MDM4MDAJMTM3LjYz MAkxMzcuMzgwCTE0NS41MDAKKzExMAkxMTUzCTE0Ni43NTAJNTc3NzEwMAkxNDQuNzUwCTE0My4w MDAJMTUwLjAwMAorMTExCTExNTQJMTU3LjYyNQkyODMzMDAwCTE1OC4xMjUJMTU2LjEyNQkxNTgu NTAwCisxMTEJMTE1NQkxNTguMDAwCTU1MTU0MDAJMTU3LjUwMAkxNTcuMDAwCTE2MC43NTAKKzEx MQkxMTU2CTE1OC4xMjUJMjc5OTcwMAkxNTguMjUwCTE1Ny43NTAJMTYwLjI1MAorMTExCTExNTcJ MTU5LjM3NQk5MzEzMDAJMTU4LjEyNQkxNTguMTI1CTE1OS42MjUKKzExMQkxMTU4CTE2My4wMDAJ MzMxNjAwMAkxNTkuNjMwCTE1OS42MzAJMTYzLjUwMAorMTExCTExNTkJMTYyLjYyNQk0Njc3ODAw CTE2My42MjUJMTYyLjYyNQkxNjYuMDAwCisxMTEJMTE2MAkxNjIuMDAwCTQ0Mzc0MDAJMTYyLjg3 NQkxNTkuMTI1CTE2NC4wMDAKKzExMQkxMTYxCTE1OC41MDAJMzAzNjMwMAkxNjEuMzc1CTE1OC4z NzUJMTYyLjYyNQorMTExCTExNjIJMTU1LjYyNQk2MDUxOTAwCTE1MS4wMDAJMTUxLjAwMAkxNTgu MDAwCisxMTEJMTE2MwkxNjAuMDAwCTI3Njk5MDAJMTU2LjYzMAkxNTYuMjUwCTE2MC4xMzAKKzEx MgkxMTY0CTE0MS4yNTAJMzU4MzAwMAkxNDMuMTMwCTE0MC4yNTAJMTQzLjUwMAorMTEyCTExNjUJ MTM3LjYyNQk2MzA4NTAwCTE0MC43NTAJMTM3LjEyNQkxNDAuODc1CisxMTIJMTE2NgkxNDMuODc1 CTQyODI3MDAJMTM3LjYyNQkwLjAwMAkxNDQuMDAwCisxMTIJMTE2NwkxNDYuNTAwCTQxOTg0MDAJ MTQ0LjM4MAkxNDQuMTMwCTE0OC4wMDAKKzExMgkxMTY4CTE0Ni44NzUJMzY3MDQwMAkxNDcuMDAw CTE0NC4wMDAJMTQ3LjUwMAorMTEyCTExNjkJMTQzLjAwMAkxNzcyMjAwCTE0Ni44ODAJMTQzLjAw MAkxNDYuODgwCisxMTMJMTE3MAkxMzYuNTAwCTI2MzQ0MDAJMTM0LjUwMAkxMzMuMjUwCTEzNi44 ODAKKzExMwkxMTcxCTEzNy44ODAJMzkzMTkwMAkxMzguNjMwCTEzNC4zODAJMTM5LjAwMAorMTEz CTExNzIJMTM3LjUwMAkxODQ1MzAwCTEzNy4zODAJMTM1Ljc1MAkxMzguMzgwCisxMTMJMTE3Mwkx MzcuNzUwCTI2NTUxMDAJMTM3LjM3NQkxMzYuNzUwCTEzOS43NTAKKzExMwkxMTc0CTEzOS43NTAJ MjM0MzIwMAkxMzguMDAwCTEzNy43NTAJMTQwLjEzMAorMTEzCTExNzUJMTM3LjM4MAkyMzU2NzAw CTEzOS42MzAJMTM2LjYzMAkxNDEuMjUwCisxMTMJMTE3NgkxNDAuMDAwCTMwMjIyMDAJMTM3LjI1 MAkxMzQuNzUwCTE0MC4xMzAKKzExMwkxMTc3CTE0Mi4zODAJMzkxNzEwMAkxNDAuMDAwCTEzOS4w MDAJMTQzLjc1MAorMTEzCTExNzgJMTUzLjYyNQkxMDY1OTEwMAkxNTAuNTAwCTE0OS41MDAJMTU3 LjAwMAorMTEzCTExNzkJMTUwLjc1MAkzMDA1MDAwCTE1Mi4yNTAJMTUwLjYyNQkxNTIuODc1Cisx MTQJMTE4MAk5OC42MjUJMjk0OTYwMAkxMDIuNDM3CTk4LjYyNQkxMDQuMTI1CisxMTQJMTE4MQk5 OS4xMzAJMjA2MDAwMAkxMDAuMTMwCTk5LjAwMAkxMDAuODEwCisxMTQJMTE4MgkxMDEuNjkwCTEw NjkxMDAJOTkuMzgwCTk5LjI1MAkxMDEuNzUwCisxMTQJMTE4MwkxMDIuNzUwCTIzMDczMDAJMTAy Ljg3NQkxMDIuNzUwCTEwMy42ODcKKzExNAkxMTg0CTEwMy4xMzAJMzU1ODAwMAkxMDMuNjkwCTEw Mi45NDAJMTA1LjUwMAorMTE0CTExODUJMTA0LjYyNQkyNzM2NTAwCTEwNC4wMDAJMTAzLjE4Nwkx MDUuMTg3CisxMTQJMTE4NgkxMDUuNjI1CTI2MzUwMDAJMTA0LjUwMAkxMDQuMDYyCTEwNS43NTAK KzExNAkxMTg3CTEwNi40MzcJNTAxNzAwMAkxMDUuNTYyCTEwNS4wMDAJMTA2LjgxMgorMTE0CTEx ODgJMTA1LjI1MAkzNTU1NjAwCTEwNS4zNzUJMTA1LjA2MgkxMDcuMTg3CisxMTQJMTE4OQkxMDQu MjUwCTQzMDgyMDAJMTA1LjAwMAkxMDIuNjI1CTEwNS4wMDAKKzExNAkxMTkwCTEwNC4xOTAJNDA1 OTQwMAkxMDMuNTAwCTEwMi45NDAJMTA1LjUwMAorMTE0CTExOTEJMTAwLjA2Mgk3MTgyODAwCTEw NC4zMTIJOTkuMzc1CTEwNC44NzUKKzExNAkxMTkyCTEwMC4xMzAJNjQxMDcwMAk5OC4yNTAJOTcu NTAwCTEwMS4xMzAKKzExNAkxMTkzCTEwMi4xMzAJMzQxNDUwMAkxMDAuNTYwCTEwMC4zMTAJMTAy LjQ0MAorMTE0CTExOTQJMTAyLjYyNQk0Mjc1NDAwCTEwMy41MDAJMTAxLjI1MAkxMDQuMDAwCisx MTQJMTE5NQkxMDMuNDM3CTYzMjE3MDAJMTAzLjE4NwkxMDIuMzc1CTEwNC45MzcKKzExNAkxMTk2 CTEwNS4wMDAJNDE4OTEwMAkxMDQuODc1CTEwNC41MDAJMTA1LjE4NworMTE0CTExOTcJMTA4LjM4 MAk0OTcwNjAwCTEwNS4xOTAJMTA0LjY5MAkxMDguMzgwCisxMTQJMTE5OAkxMDAuMTI1CTEzOTA3 ODAwCTEwMC4yNTAJOTkuNjI1CTEwMi4wMDAKKzExNAkxMTk5CTk5LjM4MAk2NTgzNTAwCTk5Ljgx MAk5OC41MDAJMTAwLjYzMAorMTE0CTEyMDAJOTkuMTg3CTM5MTE1MDAJOTkuODEyCTk4LjkzNwkx MDAuMDAwCisxMTQJMTIwMQk5OC4xMjUJMjgwNzkwMAk5OS4yNTAJOTguMDAwCTk5LjkzNworMTE0 CTEyMDIJOTYuNTAwCTcwMTk3MDAJOTYuNzUwCTk1LjYzMAk5Ny44ODAKKzExNAkxMjAzCTk3LjAw MAk1MTkyNDAwCTk3LjEzMAk5Ni41MDAJOTguMDAwCisxMTQJMTIwNAk5OC4xODcJNDQxMzYwMAk5 Ny4wMDAJOTcuMDAwCTk5LjMxMgorMTE0CTEyMDUJOTguNzUwCTI5MDAxMDAJOTguMzEyCTk4LjAw MAk5OS41NjIKKzExNAkxMjA2CTEwMC41NjIJMzQzNzcwMAkxMDAuMDAwCTEwMC4wMDAJMTAxLjI1 MAorMTE0CTEyMDcJOTkuMzgwCTM1ODU2MDAJMTAwLjEzMAk5OC42OTAJMTAwLjI1MAorMTE1CTEy MDgJOTguMTI1CTUyMDUxMDAJOTkuMTI1CTk4LjEyNQk5OS44MTIKKzExNQkxMjA5CTk2LjEyNQk2 NDY0MjAwCTk3LjEyNQk5NS44NzUJOTguMjUwCisxMTUJMTIxMAk5Ny41MDAJNDE2NzEwMAk5Ny4z ODAJOTYuNjkwCTk4LjE5MAorMTE1CTEyMTEJOTkuMTMwCTM0MDM0MDAJOTcuODgwCTk3LjQ0MAk5 OS44ODAKKzExNQkxMjEyCTEwMC4yNTAJMjk1MTcwMAk5OS4xODcJOTguMTg3CTEwMC42MjUKKzEx NQkxMjEzCTk5LjYzMAkyOTI1MzAwCTEwMC44ODAJOTkuMDAwCTEwMS4xMzAKKzExNQkxMjE0CTEw MS4yNTAJMzQyMDcwMAk5OS42OTAJOTkuMjUwCTEwMS4zODAKKzExNQkxMjE1CTEwMC44ODAJMzU4 NTEwMAkxMDEuMzEwCTk5LjU2MAkxMDEuODEwCisxMTUJMTIxNgkxMDEuNTYwCTM1OTQ3MDAJMTAw LjYzMAkxMDAuNTYwCTEwMi4zMTAKKzExNQkxMjE3CTEwMi44NzUJMjU4NTAwMAkxMDEuNjg3CTEw MS40MzcJMTAzLjAwMAorMTE1CTEyMTgJMTAyLjA2Mgk0MTA3ODAwCTEwMy4wMDAJMTAxLjQzNwkx MDMuMjUwCisxMTYJMTIxOQkxMDguODEyCTQyNDA3MDAJMTA5LjAwMAkxMDcuNjI1CTEwOS4xMjUK KzExNgkxMjIwCTEwNi4xMzAJNDg4NDAwMAkxMDguNzUwCTEwNi4wMDAJMTA5LjI1MAorMTE2CTEy MjEJMTA4LjEzMAk0Mjc2OTAwCTEwNi4yNTAJMTA2LjE5MAkxMDkuNTAwCisxMTYJMTIyMgkxMTEu NzUwCTQwMzkyMDAJMTEwLjAwMAkxMDkuOTQwCTExMi4zMTAKKzExNgkxMjIzCTExMi4wMDAJMzAz MDAwMAkxMTEuODgwCTExMC4wNjAJMTEyLjEzMAorMTE2CTEyMjQJMTEyLjQ0MAkzMTg3ODAwCTEx Mi41MDAJMTEyLjAwMAkxMTQuNjkwCisxMTYJMTIyNQkxMTMuMDAwCTE2MzY0MDAJMTEyLjM4MAkx MTIuMzEwCTExMy40NDAKKzExNgkxMjI2CTExNC4xMjUJMjE4NDYwMAkxMTQuMTI1CTExMy41NjIJ MTE0LjgxMgorMTE2CTEyMjcJMTE0LjgxMAk0MzU2MDAwCTExNC4xMzAJMTEzLjUwMAkxMTYuMzEw CisxMTYJMTIyOAkxMTYuNzUwCTMxNjY0MDAJMTE2LjAwMAkxMTUuNTAwCTExNi45MzcKKzExNgkx MjI5CTExNS4xOTAJMzIxOTgwMAkxMTYuNTYwCTExNC41MDAJMTE2LjYzMAorMTE3CTEyMzAJMTE1 LjAwMAkyMjU4MjAwCTExMy43NTAJMTEzLjYzMAkxMTUuNTYwCisxMTcJMTIzMQkxMTcuMDYyCTMx ODk1MDAJMTE0Ljc1MAkxMTQuNjI1CTExOC41MDAKKzExNwkxMjMyCTExOC41MDAJMzA3MDEwMAkx MTguMjUwCTExNy4zNzUJMTE5LjI1MAorMTE3CTEyMzMJMTE5LjM4MAkyMzM5ODAwCTExOC41MDAJ MTE4LjI1MAkxMjAuMDAwCisxMTcJMTIzNAkxMTkuNjI1CTIyNjg2MDAJMTE5Ljc1MAkxMTkuMDAw CTEyMC42MjUKKzExNwkxMjM1CTExNy4wMDAJMjU1NzgwMAkxMTkuMjUwCTExNy4wMDAJMTIwLjAw MAorMTE3CTEyMzYJMTE4LjM4MAkyMTgwMTAwCTExNy4xMzAJMTE2LjAwMAkxMTguOTQwCisxMTcJ MTIzNwkxMjAuMTg3CTMxNjg0MDAJMTE4LjU2MgkxMTguNTAwCTEyMC4zNzUKKzExNwkxMjM4CTEy Mi4wMDAJNDQ4OTIwMAkxMjEuMDAwCTEyMC4zMTIJMTIzLjAwMAorMTE3CTEyMzkJMTI4LjEzMAkx MjMwODYwMAkxMjguMjUwCTEyNy43NTAJMTMxLjAwMAorMTE3CTEyNDAJMTI3LjQ0MAk2MDQ5OTAw CTEyNi4wMDAJMTI0LjUwMAkxMjguNDQwCisxMTcJMTI0MQkxMjMuODgwCTQxNTMxMDAJMTI3LjE5 MAkxMjMuNjkwCTEyOS4wMDAKKzExNwkxMjQyCTEyNC4yNTAJMjg3NDYwMAkxMjUuODc1CTEyMi41 MDAJMTI1LjkzNworMTE4CTEyNDMJMTIzLjUwMAk0OTk0NzAwCTEyNS43NTAJMTIzLjM3NQkxMjcu NDM3CisxMTgJMTI0NAkxMjIuNTAwCTU1Nzk4MDAJMTIyLjEzMAkxMTguMTkwCTEyMi41MDAKKzEx OAkxMjQ1CTEyNi41NjIJNDk2NTEwMAkxMjEuMzc1CTEyMC42MjUJMTI2LjU2MgorMTE4CTEyNDYJ MTI5LjEzMAk0NTU3MTAwCTEyOC4wMDAJMTI3LjYzMAkxMjkuOTQwCisxMTgJMTI0NwkxMzAuMDAw CTMyNDY4MDAJMTI5LjAwMAkxMjguNTAwCTEzMC42ODcKKzExOAkxMjQ4CTEzMC41MDAJMzMxOTQw MAkxMzAuMDAwCTEyOC4xOTAJMTMwLjk0MAorMTE5CTEyNDkJMTMzLjYyNQkzODIwNDAwCTEzNC41 MDAJMTMyLjE4NwkxMzYuMTg3CisxMTkJMTI1MAkxMzEuNDM3CTM1NDQ5MDAJMTMzLjc1MAkxMzAu MDAwCTEzNC4xMjUKKzExOQkxMjUxCTEyOC41MDAJNDE0OTcwMAkxMzAuNzUwCTEyNy42MzAJMTMx LjUwMAorMTE5CTEyNTIJMTI1LjM3NQk2MjY4NzAwCTEyNS4wNjIJMTIzLjM3NQkxMjYuNDM3Cisx MTkJMTI1MwkxMjQuODEwCTczMDI2MDAJMTI0LjEzMAkxMTguOTQwCTEyNS4yNTAKKzExOQkxMjU0 CTEyMC4yNTAJNjcyMTAwMAkxMjMuNzUwCTExNy4zMTAJMTIzLjc1MAorMTE5CTEyNTUJMTE5LjI1 MAk3MTgzNzAwCTEyNC4wMDAJMTE4Ljc1MAkxMjQuMDAwCisxMTkJMTI1NgkxMjAuNzUwCTY1ODI0 MDAJMTE5LjUwMAkxMTguMTI1CTEyMi44NzUKKzExOQkxMjU3CTEyMy41MDAJOTE1NjMwMAkxMjAu NzUwCTExNi44MTIJMTIzLjUwMAorMTE5CTEyNTgJMTI3LjMxMgk1ODQxNjAwCTEyNC40MzcJMTIy LjUwMAkxMjcuOTM3CisxMTkJMTI1OQkxMzAuODc1CTU0MDI1MDAJMTMwLjEyNQkxMjkuNTYyCTEz Mi44NzUKKzExOQkxMjYwCTEyOC4xOTAJNDY5NjgwMAkxMzAuNTAwCTEyNi41NjAJMTMwLjUwMAor MTIwCTEyNjEJMTQ3LjM4MAkzNDU2NTAwCTE0OC41MDAJMTQ3LjE5MAkxNDkuOTQwCisxMjAJMTI2 MgkxNDcuODgwCTQwOTYzMDAJMTQ4Ljg4MAkxNDUuNzUwCTE0OS43NTAKKzEyMAkxMjYzCTE0OS4w MDAJMzI5MzAwMAkxNDcuNjkwCTE0Ni44MTAJMTQ5LjU2MAorMTIwCTEyNjQJMTQ5Ljk0MAkzNTY5 MDAwCTE0OC44ODAJMTQ3LjUwMAkxNTAuOTQwCisxMjAJMTI2NQkxNTEuMzgwCTM3ODg3MDAJMTUw Ljc1MAkxNDkuOTQwCTE1Mi4xOTAKKzEyMAkxMjY2CTE1Ni4wMDAJNDM3MTUwMAkxNTAuODgwCTE1 MC42OTAJMTU2Ljc1MAorMTIwCTEyNjcJMTU3LjEyNQk1MTA5MTAwCTE1Ny4wMDAJMTU2LjUwMAkx NTguODc1CisxMjAJMTI2OAkxNTcuODgwCTQzMzM5MDAJMTU2LjY5MAkxNTYuNjMwCTE1OS44ODAK KzEyMAkxMjY5CTE1Ny40MzcJMjk5NzYwMAkxNTcuMDAwCTE1NS43NTAJMTU3LjUwMAorMTIxCTEy NzAJMTY1LjAwMAkzODg1ODAwCTE2My41MDAJMTYyLjUwMAkxNjUuODEwCisxMjEJMTI3MQkxNjQu Mzc1CTI4MjY0MDAJMTY2Ljg3NQkxNjQuMzEyCTE2Ni44NzUKKzEyMQkxMjcyCTE2Ni4wNjIJNDM4 MTYwMAkxNjUuNDM3CTE2NS4wNjIJMTY5LjYyNQorMTIxCTEyNzMJMTcxLjU2MAk0OTA4NDAwCTE2 Ni42MzAJMTY2LjYzMAkxNzIuMTkwCisxMjEJMTI3NAkxNzYuMzc1CTM3MzkzMDAJMTcxLjU2Mgkx NzEuNTYyCTE3OC45MzcKKzEyMQkxMjc1CTE4Mi4yNTAJNDM1MjMwMAkxNzcuNTAwCTE3NS4yNTAJ MTgzLjAwMAorMTIxCTEyNzYJMTg1LjAwMAkzNTM1MDAwCTE4Mi42OTAJMTgxLjEzMAkxODUuMzgw CisxMjEJMTI3NwkxODcuOTM3CTE1MjQ5MDAJMTg0Ljc1MAkxODQuMDYyCTE4Ny45MzcKKzEyMQkx Mjc4CTE4OS4yNTAJMjYzNDYwMAkxODYuNTAwCTE4Ni4wMDAJMTg5LjkzNworMTIxCTEyNzkJMTg3 LjEyNQkxODgxMTAwCTE4OC42MjUJMTg3LjAwMAkxODguOTM3CisxMjEJMTI4MAkxODYuNzUwCTI0 MDY2MDAJMTg2Ljg3NQkxODYuMzEyCTE4OC42MjUKKzEyMQkxMjgxCTE4NC4zNzUJMTkzMjQwMAkx ODYuNzUwCTE4My41MDAJMTg3LjE4NworMTIxCTEyODIJMTgzLjAwMAk0MDc0ODAwCTE4NS4wMDAJ MTgxLjUwMAkxODYuNTAwCisxMjEJMTI4MwkxODkuNjMwCTQ5NTM4MDAJMTgzLjAwMAkxODIuODEw CTE4OS44ODAKKzEyMgkxMjg0CTE3Ny45MzcJNDYwMDEwMAkxNzIuMjUwCTE3MS4wNjIJMTc3Ljkz NworMTIyCTEyODUJMTc2Ljk0MAk0NTU0NjAwCTE3OC4wMDAJMTc1Ljc1MAkxODAuMDAwCisxMjIJ MTI4NgkxNzMuNzUwCTQzMTg3MDAJMTc3LjI1MAkxNzMuMTMwCTE3OS42OTAKKzEyMgkxMjg3CTE3 My42MjUJNTIzNDgwMAkxNzIuMDAwCTE2OS4zMTIJMTczLjkzNworMTIyCTEyODgJMTY5Ljc1MAk3 Mzk5MDAwCTE3MS4wMDAJMTY2LjUwMAkxNzEuODgwCisxMjIJMTI4OQkxNjguMzc1CTQ3OTU0MDAJ MTY5LjUwMAkxNjUuMTI1CTE2OS41MDAKKzEyMgkxMjkwCTE2Ny43NTAJNDM3MTIwMAkxNzAuNTAw CTE2Ni44ODAJMTcwLjk0MAorMTIyCTEyOTEJMTY2Ljc1MAkzODcxNTAwCTE2OC41MDAJMTY1LjA2 MgkxNjguOTM3CisxMjIJMTI5MgkxNzEuMDAwCTEwNzUwNTAwCTE3My41MDAJMTcwLjEyNQkxNzcu MDAwCisxMjIJMTI5MwkxNzguMzgwCTU4MDMyMDAJMTczLjg4MAkxNzMuNzUwCTE3OC45NDAKKzEy MgkxMjk0CTE3OC44NzUJMzc3OTkwMAkxNzguNjI1CTE3Ny4wNjIJMTgwLjAwMAorMTIyCTEyOTUJ MTgyLjE5MAk1MDA5NTAwCTE3OS44ODAJMTc4LjU2MAkxODQuODgwCisxMjIJMTI5NgkxODEuNTAw CTM1MDQ5MDAJMTgxLjYzMAkxODAuMjUwCTE4Mi44ODAKKzEyMwkxMjk3CTE4Mi4wMDAJMzk1MTQw MAkxNzkuMTg3CTE3Ny4xMjUJMTgyLjMxMgorMTIzCTEyOTgJMTgxLjAwMAkzMzAzMDAwCTE4Mi4w MDAJMTgwLjE5MAkxODMuNTAwCisxMjMJMTI5OQkxNzguMDYwCTM0NTI3MDAJMTc5LjUwMAkxNzgu MDAwCTE4MC4wMDAKKzEyMwkxMzAwCTE3Ny42MzAJNzI1MjUwMAkxNzcuNTAwCTE3Mi45NDAJMTc3 Ljc1MAorMTIzCTEzMDEJMTY4LjU2Mgk5NzQ4NDAwCTE3Ni42MjUJMTY4LjAwMAkxNzguMDAwCisx MjMJMTMwMgkxNjcuMDAwCTU5NDgzMDAJMTY4LjY4NwkxNjYuNjI1CTE3MC41MDAKKzEyMwkxMzAz CTE2NS4zODAJNTAwNzUwMAkxNjcuMDAwCTE2NC4wMDAJMTY3LjYzMAorMTIzCTEzMDQJMTY5LjUw MAk1OTEwNTAwCTE2OC4wMDAJMTY2LjUwMAkxNzAuNTAwCisxMjMJMTMwNQkxNzEuMzEyCTQ5MTQ0 MDAJMTcyLjAwMAkxNjkuNTAwCTE3My4yNTAKKzEyMwkxMzA2CTE3Mi4zODAJNDEzMzIwMAkxNzEu MDYwCTE3MC41NjAJMTc1Ljg4MAorMTIzCTEzMDcJMTc4LjU2MgkzNzMzNDAwCTE3Ny4wMDAJMTc2 Ljg3NQkxODEuMjUwCisxMjMJMTMwOAkxNzcuMjUwCTI5MTc2MDAJMTgwLjAwMAkxNzYuNTAwCTE4 MS41MDAKKzEyNAkxMzA5CTE4Ny4wMDAJNDI2NTUwMAkxODYuMDAwCTE4Mi4zMTIJMTg4LjA2Mgor MTI0CTEzMTAJMTg2LjMxMAkzMDU1OTAwCTE4NS42MzAJMTg0LjAwMAkxODguMDYwCisxMjQJMTMx MQkxODMuNDQwCTQ0ODk5MDAJMTgzLjUwMAkxODEuMDYwCTE4My42MzAKKzEyNAkxMzEyCTE4MC4w MDAJMzQyMzIwMAkxODQuMDAwCTE3OS45NDAJMTg0LjAwMAorMTI0CTEzMTMJMTc5LjM4MAkzNjMw NTAwCTE4Mi43NTAJMTc3LjYzMAkxODMuODgwCisxMjQJMTMxNAkxNzcuNzUwCTQxNjUyMDAJMTc5 LjUwMAkxNzMuNTAwCTE3OS41MDAKKzEyNAkxMzE1CTE3MC4zNzUJNTk2NDQwMAkxNzcuNTAwCTE3 MC4xMjUJMTc3LjUwMAorMTI0CTEzMTYJMTY2Ljc1MAk3NjkxODAwCTE3MC44ODAJMTY0LjA2MAkx NzIuMzEwCisxMjQJMTMxNwkxNjkuNzUwCTczNTgwMDAJMTY3LjAwMAkxNjMuMDAwCTE2OS43NTAK KzEyNAkxMzE4CTE3MS44NzUJNjU4MDgwMAkxNjkuNzUwCTE2NS4xMjUJMTcxLjg3NQorMTI0CTEz MTkJMTk0LjUwMAkxOTU4NDkwMAkxOTcuMjUwCTE5Mi42ODcJMTk4Ljc1MAorMTI0CTEzMjAJMTk5 Ljc1MAkxMDM3NTUwMAkxOTMuMzgwCTE5Mi45NDAJMjA2LjU2MAorMTI0CTEzMjEJMjA5Ljg4MAk5 MzMzMDAwCTIwNC43NTAJMjAyLjMxMAkyMTAuNzUwCisxMjQJMTMyMgkyMTIuMDAwCTEwNDY0NjAw CTIxMi4wMDAJMjA4LjUwMAkyMTUuMjUwCisxMjQJMTMyMwkyMDUuMDAwCTU2NzA5MDAJMjA5LjI1 MAkyMDMuNTAwCTIxMC41MDAKKzEyNQkxMzI0CTIwOS4yNTAJNDE2OTgwMAkyMTEuODgwCTIwOC4w MDAJMjE0LjAwMAorMTI1CTEzMjUJMjE3LjI1MAk0OTkzNDAwCTIxMS4yNTAJMjExLjA2MgkyMTcu NTAwCisxMjUJMTMyNgkyMTguNjMwCTQ3NzQyMDAJMjE3LjI1MAkyMTcuMDYwCTIyMS44ODAKKzEy NQkxMzI3CTIyMS4wMDAJNDE4NjQwMAkyMjAuNTAwCTIxNy41MDAJMjIxLjg3NQorMTI1CTEzMjgJ MjI1LjUwMAk2MDMzNDAwCTIyMS4xMjUJMjE1LjUwMAkyMjguNDM3CisxMjUJMTMyOQkyNDYuMDAw CTEyMTY1NzAwCTIzNC4wMDAJMjM0LjAwMAkyNDYuMDAwCisxMjUJMTMzMAkyMzkuMjUwCTkwMzY5 MDAJMjQxLjUwMAkyMzYuMDAwCTI0My41MDAKKzEyNQkxMzMxCTIzNy41MDAJNTc4MDIwMAkyMzYu MDAwCTIzMi4wMDAJMjM5LjYyNQorMTI1CTEzMzIJMjM4LjUwMAk0MzE2OTAwCTIzOC4yNTAJMjM3 LjAwMAkyNDAuNjI1CisxMjUJMTMzMwkyMzUuODc1CTM4OTU4MDAJMjM4LjI1MAkyMzMuMDYyCTIz OC43NTAKKzEyNQkxMzM0CTIzMi44NzUJMzIyMDkwMAkyMzUuNjI1CTIzMi41MDAJMjM2LjM3NQor MTI1CTEzMzUJMjMwLjM4MAkzNDUyMzAwCTIzMi43NTAJMjI5LjE5MAkyMzMuMzgwCisxMjUJMTMz NgkyMjMuNzUwCTQyOTkxMDAJMjMwLjMxMAkyMjEuNzUwCTIzMC42OTAKKzEyNQkxMzM3CTIyMS4x ODcJNDcwMjUwMAkyMjIuNTAwCTIyMS4wMDAJMjI2LjAwMAorMTI1CTEzMzgJMjM2LjI1MAk4MzE0 MDAwCTIyMy4wMDAJMjIxLjQ0MAkyMzYuNjMwCisxMjUJMTMzOQkxMTYuMDAwCTEwNTUyNjAwCTEx Ni42ODcJMTEyLjYyNQkxMTYuODc1CisxMjUJMTM0MAkxMTYuMDAwCTYzNzk1MDAJMTE2LjAwMAkx MTQuMTg3CTExNi43NTAKKzEyNgkxMzQxCTEyNC40NDAJNjA0MzUwMAkxMjIuNzUwCTEyMi4zMTAJ MTI0Ljg4MAorMTI2CTEzNDIJMTIyLjAwMAk4NDQyMTAwCTEyMy4zNzUJMTIxLjAwMAkxMjMuNjI1 CisxMjYJMTM0MwkxMjIuMzgwCTY0NjMwMDAJMTIyLjAwMAkxMjAuODgwCTEyNC4wNjAKKzEyNgkx MzQ0CTEyMi45NDAJNjI0NTMwMAkxMjIuNjMwCTEyMi4wNjAJMTI1Ljg4MAorMTI2CTEzNDUJMTI0 LjAwMAk0MzU0NjAwCTEyNS4wMDAJMTIyLjc1MAkxMjUuMTkwCisxMjYJMTM0NgkxMjMuMTg3CTQ3 NzMwMDAJMTI0LjI1MAkxMjIuNjg3CTEyNS42MjUKKzEyNwkxMzQ3CTk4LjAwMAkxODcyMDQwMAk5 NC4wMDAJOTMuNTYyCTk4LjI1MAorMTI3CTEzNDgJMTA0Ljc1MAkxOTY3MzMwMAk5OS4wMDAJOTgu MzgwCTEwNS4wMDAKKzEyNwkxMzQ5CTEwNy44ODAJMTM2ODE1MDAJMTA1LjUwMAkxMDQuNDQwCTEw OC40NDAKKzEyNwkxMzUwCTEwNi4xMjUJMTA2NjUwMDAJMTA4LjgxMgkxMDYuMDAwCTEwOS44NzUK KzEyNwkxMzUxCTEwNC4wNjAJOTcxMDMwMAkxMDUuMDAwCTEwMS44MTAJMTA1LjAwMAorMTI3CTEz NTIJMTA1LjAwMAkzMTA4NDAwCTEwNS45MzcJMTA0LjEyNQkxMDYuMDAwCisxMjcJMTM1MwkxMDQu MTg3CTU2Nzc3MDAJMTA0LjkzNwkxMDMuMzc1CTEwNC45MzcKKzEyNwkxMzU0CTEwMy4wNjAJNTcx OTkwMAkxMDMuNjkwCTEwMi4xMzAJMTA0LjUwMAorMTI3CTEzNTUJMTAzLjc1MAk1MzM2MDAwCTEw Mi41NjIJMTAyLjI1MAkxMDQuNDM3CisxMjcJMTM1NgkxMDUuNTYwCTYyMDg2MDAJMTAzLjQ0MAkx MDMuMzgwCTEwNi4zMTAKKzEyNwkxMzU3CTExMi4wMDAJMTQ2Nzk5MDAJMTA5LjgxMgkxMDcuOTM3 CTExMi44NzUKKzEyNwkxMzU4CTExNi4wMDAJOTkyNDQwMAkxMTMuMDAwCTExMi41MDAJMTE2LjUw MAorMTI4CTEzNTkJMTA5LjE5MAk3MTE3MzAwCTEwOC4wMDAJMTA1Ljc1MAkxMDkuNjkwCisxMjgJ MTM2MAkxMDkuMTI1CTc2ODA3MDAJMTEwLjY4NwkxMDguNjI1CTExMS4wNjIKKzEyOAkxMzYxCTEw OC4wNjAJNDgzNDkwMAkxMDkuMDYwCTEwNy43NTAJMTEwLjQ0MAorMTI4CTEzNjIJMTEwLjEyNQk0 NzczNTAwCTEwOC41MDAJMTA4LjA2MgkxMTAuMTI1CisxMjgJMTM2MwkxMDguMzc1CTQwMDU1MDAJ MTA5Ljg3NQkxMDguMjUwCTExMC4zMTIKKzEyOAkxMzY0CTEwOC42MjUJNDUyODcwMAkxMDkuMTI1 CTEwOC4xODcJMTEwLjQzNworMTI4CTEzNjUJMTA5Ljc1MAkzNzQwNzAwCTEwOS42ODcJMTA4LjEy NQkxMTAuMDAwCisxMjgJMTM2NgkxMDkuMjUwCTQwODEzMDAJMTA5LjU2MAkxMDkuMDYwCTExMC43 NTAKKzEyOAkxMzY3CTEwOS4wNjAJMjY4MzEwMAkxMTAuNDQwCTEwOC43NTAJMTEwLjUwMAorMTI4 CTEzNjgJMTA4Ljc1MAkzNDM1MTAwCTEwOS42OTAJMTA4LjU2MAkxMTAuNTAwCisxMjgJMTM2OQkx MDcuODc1CTI4NzAzMDAJMTA5LjE4NwkxMDYuNjI1CTEwOS41MDAKKzEyOAkxMzcwCTExNS42MjUJ MTAzNDY4MDAJMTEyLjQzNwkxMTEuODc1CTExNS44MTIKKzEyOAkxMzcxCTExMi4wNjAJODIyNzgw MAkxMTQuMDAwCTExMC44ODAJMTE0LjUwMAorMTI5CTEzNzIJMTA3LjAwMAk1NjY1OTAwCTEwNy41 MDAJMTA2LjEzMAkxMDguMjUwCisxMjkJMTM3MwkxMDkuMDAwCTY2MjI1MDAJMTA5LjAwMAkxMDcu ODgwCTEwOS44MTAKKzEyOQkxMzc0CTExMC4wMDAJODg1NjQwMAkxMDguMjUwCTEwNy42ODcJMTEx LjY4NworMTI5CTEzNzUJMTEyLjc1MAk2NTYzNTAwCTExMC4wMDAJMTA5Ljk0MAkxMTMuMzgwCisx MjkJMTM3NgkxMTMuNTAwCTY3NzE0MDAJMTEyLjgxMAkxMTEuOTQwCTExNC42OTAKKzEyOQkxMzc3 CTExNC4yNTAJNjEzNzgwMAkxMTQuNTAwCTExMy44NzUJMTE1LjM3NQorMTI5CTEzNzgJMTE1LjI1 MAk2NDkyNDAwCTExNS44NzUJMTExLjYyNQkxMTUuODc1CisxMjkJMTM3OQkxMjEuNTAwCTEyMTI0 MzAwCTExNS4zNzUJMTE1LjA2MgkxMjIuMjUwCisxMjkJMTM4MAkxMjYuODgwCTExODYyOTAwCTEy NS4wMDAJMTI0LjYzMAkxMjguMjUwCisxMjkJMTM4MQkxMjIuNTAwCTgxNjMwMDAJMTI1Ljc1MAkx MjIuMDYwCTEyNy4wMDAKKzEzMAkxMzgyCTEwMi45NDAJNjQwMjgwMAkxMDQuMTMwCTEwMi42MzAJ MTA0LjgxMAorMTMwCTEzODMJMTAzLjUwMAk3NDI4MTAwCTEwMi4zODAJMTAxLjAwMAkxMDQuMzgw CisxMzAJMTM4NAkxMTcuMDAwCTIyOTI3OTAwCTExMi4wMDAJMTExLjc1MAkxMTcuODEyCisxMzAJ MTM4NQkxMTQuNDQwCTg3NjQ3MDAJMTE3LjAwMAkxMTMuNzUwCTExNy4wMDAKKzEzMQkxMzg2CTkw LjEzMAk3NzA1MzAwCTkwLjE5MAk4OS44MTAJOTQuNDQwCisxMzEJMTM4Nwk4Ni4wMDAJMTI1Nzk1 MDAJODUuODgwCTg0LjgxMAk4OC4wMDAKKzEzMQkxMzg4CTgxLjU2MAkxMjcyNDkwMAk4NS41MDAJ ODAuMDYwCTg3Ljk0MAorMTMxCTEzODkJODkuMDAwCTk1MTQwMDAJODQuNTAwCTg0LjUwMAk4OS4z NzUKKzEzMQkxMzkwCTg0LjgxMAk2MDUyMzAwCTg5LjAwMAk4NC4yNTAJODkuNTYwCisxMzIJMTM5 MQk5Mi43NTAJNTY3MTgwMAk5My43NTAJOTEuODEwCTk0LjAwMAorMTMyCTEzOTIJOTYuNjg3CTk3 MTI5MDAJOTUuMzc1CTk0LjMxMgk5Ny43NTAKKzEzMgkxMzkzCTEwOC4zMTIJMjUyNDMzMDAJMTA0 LjM3NQkxMDMuNTAwCTExMC4wMDAKKzEzMgkxMzk0CTExMS4yNTAJMTQ3NjA0MDAJMTA3LjUwMAkx MDcuMjUwCTExMy45MzcKKzEzMwkxMzk1CTEwNi40NzAJNjc5MzEwMAkxMDcuMTcwCTEwNS4zNzAJ MTA3LjM0MAorMTMzCTEzOTYJOTkuMjkwCTE2Njg4MTAwCTEwNS4wMDAJOTcuOTA1CTEwNS4wMTAK KzEzMwkxMzk3CTk1LjQ5MAkxNDQ5NDgwMAk5Ny45MDAJOTUuMDIwCTk4LjQwMAorMTMzCTEzOTgJ OTguMzkwCTEyMTI3OTAwCTk1LjEwMAk5NC4yMDAJOTguNDQwCisxMzMJMTM5OQk5NC45NjAJMTQy NDY2MDAJOTUuNDAwCTkzLjM0MAk5OC45MDAKKzEzNAkxNDAwCTk5LjcwMAk5OTU3MzAwCTk3LjAw MAk5Ny4wMDAJOTkuODgwCisxMzQJMTQwMQkxMDYuNTAwCTE5ODQ5NTAwCTEwMy4wMDAJMTAyLjMw MAkxMTAuMDAwCisxMzQJMTQwMgkxMTQuNDcwCTI1ODIyNDAwCTExMi4wMDAJMTEwLjQ1MAkxMTUu OTAwCisxMzQJMTQwMwkxMTQuODMwCTEyNzU5MTAwCTExNC4zNTAJMTEzLjc1MAkxMTYuNDAwCisx MzUJMTQwNAkxMTkuNjAwCTc3MjY5MDAJMTE3LjUwMAkxMTcuNTAwCTExOS42MDAKKzEzNQkxNDA1 CTExNy44MDAJNTYyOTEwMAkxMTkuNTIwCTExNy43NjAJMTE5LjkwMAorMTM1CTE0MDYJMTE1LjI3 MAk1ODE4MDAwCTExNy4zNTAJMTE1LjA4MAkxMTcuNTkwCisxMzUJMTQwNwkxMTIuNjUwCTk1OTg3 MDAJMTE0LjAwMAkxMTIuMDAwCTExNC4xMDAKKzEzNQkxNDA4CTExMS44MDAJNjc1NzYwMAkxMTIu NjUwCTExMS42NDAJMTEzLjg2MAorMTM1CTE0MDkJMTEyLjg5MAk1MTM4OTAwCTExMi41MDAJMTEx LjkwMAkxMTMuNjAwCisxMzUJMTQxMAkxMTMuNjQwCTM4MTIyMDAJMTEzLjI1MAkxMTIuODUwCTEx NC43NTAKKzEzNQkxNDExCTExNi45NzAJNjE1NDQwMAkxMTMuNjQwCTExMy41NjAJMTE3LjYwMAor MTM1CTE0MTIJMTE3LjUwMAk5NjI1NzAwCTExNy42MDAJMTE2LjUwMAkxMTkuMDAwCisxMzUJMTQx MwkxMTcuMjUwCTY0MjM3MDAJMTE3LjAwMAkxMTcuMDAwCTExOC4yNTAKKzEzNQkxNDE0CTExNi4x MDAJMzA5OTEwMAkxMTcuNTAwCTExNS42MDAJMTE3LjUwMAorMTM1CTE0MTUJMTE3LjM2MAk2NTQy NzAwCTExNi4zMDAJMTE2LjEwMAkxMTguMTQwCisxMzYJMTQxNgkxMDQuNzIwCTkzMTI2MDAJMTA2 LjUwMAkxMDMuNjUwCTEwNi45NTAKKzEzNgkxNDE3CTEwMS45NjAJMTAyNjY4MDAJMTA0LjczMAkx MDEuNjAwCTEwNS40MDAKKzEzNgkxNDE4CTEwMy44NTAJODg5NDgwMAkxMDEuNjAwCTEwMS41NjAJ MTA0LjEzMAorMTM2CTE0MTkJMTA3LjI1MAk4NzY3MjAwCTEwNS45MDAJMTA1LjYyMAkxMDcuODAw CisxMzYJMTQyMAkxMDguNTMwCTc4NDE4MDAJMTA2LjE1MAkxMDYuMTEwCTEwOS4zMDAKKzEzNgkx NDIxCTEwNy44MjAJNTMzMDEwMAkxMDguNTMwCTEwNy4yODAJMTA5LjM4MAorMTM3CTE0MjIJMTA4 LjgwMAk1Njc1MTAwCTEwOC41MDAJMTA3LjIxMAkxMDkuNDcwCisxMzcJMTQyMwkxMDguMTgwCTM3 MDQxMDAJMTA3LjgwMAkxMDcuMTAwCTExMC4wOTAKKzEzNwkxNDI0CTEwNi41MTAJNDE3NjgwMAkx MDcuMjUwCTEwNS43OTAJMTA3LjM3MAorMTM3CTE0MjUJMTA2LjI1MAk0MDI4MzAwCTEwNS44MDAJ MTA1LjI2MAkxMDcuMzcwCisxMzcJMTQyNgkxMDQuMTkwCTYzOTgwMDAJMTA1LjAwMAkxMDQuMTAw CTEwNi4xMDAKKzEzNwkxNDI3CTEwNC4wODAJNjc2MzIwMAkxMDMuNzAwCTEwMi43MDAJMTA0LjU0 MAorMTM3CTE0MjgJMTA0Ljk1MAk1MjU0ODAwCTEwMy44NTAJMTAyLjgxMAkxMDQuOTUwCisxMzcJ MTQyOQkxMDUuODYwCTYwMjQ0MDAJMTA1LjAwMAkxMDQuNjUwCTEwNi42NDAKKzEzNwkxNDMwCTEw Ni4yMDAJNTczMDIwMAkxMDYuNTAwCTEwNS40MDAJMTA2Ljg1MAorMTM3CTE0MzEJMTA1LjAxMAk0 NzEzMTAwCTEwNi4zNTAJMTA1LjAxMAkxMDYuNTkwCisxMzgJMTQzMgk5MS4zMDAJMTM3ODMxMDAJ OTQuNDUwCTkwLjMwMAk5NC40NTAKKzEzOAkxNDMzCTkwLjAwMAkxMzE3MjIwMAk5MS4zMDAJODcu NDkwCTkxLjUwMAorMTM4CTE0MzQJOTEuNzIwCTExMDc3MjAwCTkwLjIwMAk4OS45MDAJOTIuNzEw CisxMzgJMTQzNQk5Mi43MTAJODY3NjIwMAk5MS43MjAJOTEuMzQwCTkzLjQ4MAorMTM4CTE0MzYJ OTMuNzcwCTcyMjEyMDAJOTIuMzAwCTkyLjEwMAk5My45MDAKKzEzOAkxNDM3CTk2Ljk1MAkxMTEx ODgwMAk5Mi45MDAJOTIuNDAwCTk3LjYyMAorMTM4CTE0MzgJOTcuMzEwCTk3ODUxMDAJOTcuMTUw CTk2LjgwMAk5OC44ODAKKzEzOAkxNDM5CTk4LjAyMAk5NzMzMDAwCTk2LjY1MAk5NS4zNzAJOTgu NDUwCisxMzgJMTQ0MAk5OC41MDAJNzA5MzQwMAk5OC4wMzAJOTYuNzUwCTk5LjAwMAorMTM4CTE0 NDEJOTcuMTQwCTc1MjUzMDAJOTguNTAwCTk2Ljc2MAk5OC41MDAKKzEzOQkxNDQyCTEyMy4yMDAJ Nzk1MDQwMAkxMjEuMTIwCTEyMC4wNjAJMTIzLjIxMAorMTM5CTE0NDMJMTIwLjI1MAk4MDYxMDAw CTEyMS41NTAJMTIwLjEyMAkxMjIuMzAwCisxMzkJMTQ0NAkxMjEuMTAwCTcwMzYwMDAJMTIwLjgw MAkxMTkuNDEwCTEyMS40ODAKKzEzOQkxNDQ1CTEyMS4zNDAJNjIyNTUwMAkxMjAuMTUwCTEyMC4x NTAJMTIyLjE0MAorMTM5CTE0NDYJMTIyLjIwMAk1NTk2MjAwCTEyMS41MTAJMTIxLjM1MAkxMjIu OTcwCisxMzkJMTQ0NwkxMjMuODkwCTgwNTQyMDAJMTIxLjkwMAkxMjEuMDEwCTEyNC43MDAKKzE0 MAkxNDQ4CTc1LjQ5MAk3OTUzMDAwCTc3Ljg1MAk3NS4yMDAJNzguMjUwCisxNDAJMTQ0OQk3NC42 NTAJMTMyOTYxMDAJNzUuNDAwCTczLjI1MAk3NS45NTAKKzE0MAkxNDUwCTc1LjYwMAk4OTA5NzAw CTc1LjQ1MAk3NS4zMDAJNzcuNDAwCisxNDAJMTQ1MQk3Ni4xNzAJODU5MjAwMAk3NC4yMDAJNzMu MjUwCTc2Ljc3MAorMTQwCTE0NTIJNzcuMTQwCTc3NzU4MDAJNzYuMTgwCTc1LjE2MAk3Ny43NTAK KzE0MAkxNDUzCTc1Ljk0MAk3MjQwOTAwCTc1LjYwMAk3NS40NzAJNzYuOTAwCisxNDEJMTQ1NAk3 Mi4wMDAJMTA5NDU2MDAJNzEuMzUwCTcxLjI1MAk3My42MjAKKzE0MQkxNDU1CTY3LjYwMAkxMjA1 NjAwMAk3Mi4wMTAJNjcuMTYwCTcyLjQxMAorMTQxCTE0NTYJNjguNTgwCTEyMDEyOTAwCTY3Ljg1 MAk2Ny43MDAJNjkuNDAwCisxNDEJMTQ1Nwk3MC41MTAJODQ2OTkwMAk2Ny45NTAJNjcuODcwCTcw LjcxMAorMTQxCTE0NTgJNzMuNTAwCTUyNDMwMDAJNzIuNDUwCTcyLjAwMAk3My45MDAKKzE0MQkx NDU5CTcxLjMwMAk5NDg4MTAwCTczLjAwMAk3MS4wMzAJNzMuNDgwCisxNDEJMTQ2MAk2OS42NzAJ MTExNjUxMDAJNzEuNDAwCTY5LjQ1MAk3Mi4yNTAKKzE0MQkxNDYxCTY4Ljc2MAkxMDA3MzQwMAk3 MC42MDAJNjguNTMwCTcxLjI1MAorMTQxCTE0NjIJNjkuNDEwCTExMDM0NjAwCTY4LjAwMAk2Ny41 NTAJNjkuNzUwCisxNDIJMTQ2Mwk2OS4zNTAJMTA5ODk4MDAJNjguOTAwCTY3LjMwMAk3MC4wMDAK KzE0MgkxNDY0CTY2LjQwMAkxMTU3NjQwMAk2OC43NTAJNjUuNzYwCTY5LjQ3MAorMTQyCTE0NjUJ NzEuMTgwCTExOTE4NjAwCTcwLjM3MAk2OC4wMDAJNzEuNDAwCisxNDIJMTQ2Ngk3MS43OTAJMTAx MzY0MDAJNzAuNTAwCTcwLjAyMAk3Mi43MDAKKzE0MgkxNDY3CTcwLjQwMAkxMjcwODEwMAk3MC43 NTAJNjkuMTEwCTcxLjYwMAorMTQyCTE0NjgJNjguMjUwCTg4MzIwMDAJNzAuNDAwCTY3LjIyMAk3 MC43MDAKKzE0MgkxNDY5CTY3Ljg4MAk2OTE1MDAwCTY4LjIxMAk2Ny4xMjMJNjguMjMwCisxNDIJ MTQ3MAk2NS45OTAJNzEyNjkwMAk2Ny45NDAJNjUuODUwCTY4LjM1MAorMTQyCTE0NzEJNjcuOTAw CTgzNzA4MDAJNjcuMDAwCTY2LjYxMAk2OS40MjAKKzE0MgkxNDcyCTY5LjE3MAk4MDM2ODAwCTY5 LjAwMAk2Ni44MDAJNjkuOTAwCisxNDIJMTQ3Mwk3MS42MTAJODQzMjUwMAk2OS4yMDAJNjguMzUw CTcyLjA1MAorMTQyCTE0NzQJNzEuODMwCTY5NDA5MDAJNzAuNjEwCTcwLjQwMAk3NC4zMDAKKzE0 MgkxNDc1CTcxLjc3MAk1MjYzMzAwCTcxLjA1MAk3MC42MTAJNzIuNjQwCisxNDMJMTQ3Ngk1NS4w NzAJMTIxNTU4MDAJNTYuMDUwCTU0LjgxMAk1Ni43MDAKKzE0MwkxNDc3CTU3LjU4MAkxMjY3MjYw MAk1NC42NTAJNTQuMDEwCTU4LjQ4MAorMTQzCTE0NzgJNjMuOTIwCTE3ODUyNTAwCTYyLjAwMAk2 MS41MDAJNjMuOTIwCisxNDMJMTQ3OQk2My40MjAJNzkyNTMwMAk2MS41NDAJNjEuNTQwCTYzLjgw MAorMTQzCTE0ODAJNjguNDgwCTE0NjAwMjAwCTY3Ljc1MAk2Ni41ODAJNjguNDgwCisxNDMJMTQ4 MQk2NC45MDAJMTU4Mjg5MDAJNjYuNjAwCTY0LjI0MAk2Ny4wMDUKKzE0MwkxNDgyCTcyLjIwMAky MTM0NDUwMAk3Mi44MDAJNzEuMjMwCTczLjAwMAorMTQzCTE0ODMJNzQuMjUwCTEyNTMyNzAwCTcx LjczMAk3MC4yNjAJNzQuMjUwCisxNDQJMTQ4NAk3Mi4xMDAJMTA1NzAwMDAJNzUuNTAwCTcxLjc1 MAk3NS41NTAKKzE0NAkxNDg1CTc0LjU2MAk3NTM4ODAwCTcyLjUwMAk3Mi4xNjAJNzQuNjIwCisx NDQJMTQ4Ngk3Ni41NjAJMTI1NDQ4MDAJNzUuMTUwCTc0LjU2MAk3Ny41MDAKKzE0NAkxNDg3CTc2 Ljc0MAkxMTY0ODUwMAk3Ni41NjAJNzQuMjAwCTc3LjA1MAorMTQ0CTE0ODgJNzguNjcwCTEyODY1 ODAwCTc3LjAwMAk3Ni4wMjAJNzkuNDAwCisxNDQJMTQ4OQk3OC45NDAJOTg0NDMwMAk3OC42NzAJ NzguNTAwCTc5Ljc5MAorMTQ0CTE0OTAJODAuNDAwCTkzOTUyMDAJNzguOTAwCTc4LjMyMAk4MC41 MDAKKzE0NAkxNDkxCTgyLjUwMAkxMjAwNTEwMAk4Mi4wMDAJODEuNzAwCTgzLjgxMAorMTQ0CTE0 OTIJODEuNjgwCTEwNDY2NzAwCTgxLjc1MAk4MC40NzAJODIuMDEwCisxNDUJMTQ5Mwk4MC4yNjAJ NTkyMjcwMAk3OS43NTAJNzkuNDQwCTgxLjUwNworMTQ1CTE0OTQJNzkuNzYwCTI0MjAyMDAJODAu MjAwCTc5Ljc2MAk4MS4wMDAKKzE0NQkxNDk1CTc4LjUwMAk1Nzg0MzAwCTc5LjgxMAk3OC4yNjAJ ODAuNzAwCisxNDUJMTQ5Ngk3Ny4zNjAJNjMzNDQwMAk3OC41MDAJNzYuNjEwCTc5LjE4MAorMTQ1 CTE0OTcJNzYuMjUwCTgwNjY2MDAJNzcuMDAwCTc1LjYwMAk3Ny40MzAKKzE0NQkxNDk4CTc3LjUw MAk3ODcxNDAwCTc3LjEwMAk3Ny4xMDAJNzguNDYwCisxNDUJMTQ5OQk4MC41NzAJNzg2NDUwMAk3 OC44MDAJNzguMTkwCTgwLjU3MAorMTQ1CTE1MDAJODEuNjUwCTU5NjM0MDAJODAuNzAwCTgwLjIx MAk4MS42NTAKKzE0NQkxNTAxCTgzLjU5MAk3OTIzMzAwCTgxLjkwMAk4MS44MTAJODQuNTkwCisx NDUJMTUwMgk4Ni4wMDAJMTE5MDcwMDAJODMuOTUwCTgzLjc1MAk4Ni4xODAKKzE0NQkxNTAzCTg0 LjE5MAk5NTA5NzAwCTg1LjU1MAk4NC4wNzAJODUuNjkwCisxNDYJMTUwNAk3Ni41MDAJNTYxNzcw MAk3Ny41MDAJNzYuNTAwCTc4LjA5MAorMTQ2CTE1MDUJNzUuODYwCTExMjE4NjAwCTc2LjEwMAk3 NC4zMTAJNzYuMzUwCisxNDYJMTUwNgk3Ny40NTAJODMwMDEwMAk3Ni40MDAJNzUuMzUwCTc3LjQ1 MAorMTQ2CTE1MDcJNzkuMzMwCTc3OTMwMDAJNzguMDIwCTc3LjkxMAk3OS41MTAKKzE0NgkxNTA4 CTc5LjUxMAk1NDQxMzAwCTc5LjA4MAk3OC44MjYJNzkuNzAwCisxNDYJMTUwOQk3OS4wNDAJNjI5 NTYwMAk3OS41NzAJNzguNzEwCTgwLjA1MAorMTQ3CTE1MTAJNzkuODUwCTcwMjQ3MDAJODEuMTMw CTc5LjgwMAk4MS4zMzAKKzE0NwkxNTExCTc5Ljc1MAk3NDcyMjAwCTc5LjcwMAk3OC43MzAJODAu NjgwCisxNDcJMTUxMgk4MC42OTAJNTI5ODUwMAk3OS42OTAJNzkuMzgwCTgwLjgyMAorMTQ3CTE1 MTMJODAuODgwCTQ2MTU2MDAJODEuMDUwCTgwLjM1MAk4MS4yNzAKKzE0NwkxNTE0CTgxLjAyMAk0 MjYyMjAwCTgwLjg3MAk4MC4yODAJODEuNTAwCisxNDcJMTUxNQk4MS41MTAJNDYzNDIwMAk4MS40 NTAJODAuNjUwCTgxLjU0MAorMTQ4CTE1MTYJODkuNzAwCTg4NDI1MDAJOTEuNDUwCTg5LjAxMAk5 MS41MTAKKzE0OAkxNTE3CTkwLjMxMAk1NTI5NzAwCTg5LjkwMAk4OS43NTAJOTAuNDYwCisxNDgJ MTUxOAk5NC4wMjAJMTk4MTM2MDAJOTUuMDcwCTkzLjU1MAk5NS42NTAKKzE0OAkxNTE5CTk1LjMy MAk5MzAyMTAwCTk1LjAwMAk5NC43MTAJOTUuMzUwCisxNDgJMTUyMAk5Ny4xMDAJOTI4NTMwMAk5 Ni4wMDAJOTUuNzMwCTk3LjQ0MAorMTQ4CTE1MjEJOTcuNzAwCTY5NTI3MDAJOTcuMjMwCTk2LjY0 MAk5OC4wNDAKKzE0OAkxNTIyCTk3LjUxMAk0MzcxNjAwCTk3Ljg0MAk5Ny4zMjAJOTguMTYwCisx NDkJMTUyMwk5OS4zMDAJMzYxMTcwMAkxMDAuMDYwCTk5LjMwMAkxMDAuMzAwCisxNDkJMTUyNAk5 OS43MTAJMzU2MjQwMAk5OS4xMDAJOTkuMDgwCTEwMC4wOTAKKzE0OQkxNTI1CTk5LjM3MAkzOTMw NTAwCTk5Ljk5MAk5OS4zMjAJMTAwLjAwMAorMTQ5CTE1MjYJOTguNDIwCTQ4MzA1MDAJOTkuMzEw CTk4LjE1MAk5OS43NzAKKzE0OQkxNTI3CTk3LjgwMAk1NDQ3NzAwCTk4LjQyMAk5Ny41MjAJOTku MjMwCisxNDkJMTUyOAk5Ny4zMTAJNTY5MDIwMAk5OC42MDAJOTcuMTkwCTk4LjYwMAorMTQ5CTE1 MjkJOTUuOTYwCTY2Mjk2MDAJOTcuNDAwCTk1LjQ2MAk5Ny41MTAKKzE0OQkxNTMwCTk2Ljc5MAk3 MDEyMTAwCTk1LjIwMAk5NS4yMDAJOTcuNDYwCisxNDkJMTUzMQk5Ni41NDAJMzM2MjUwMAk5Ni41 MDAJOTYuMjMwCTk3LjA5MAorMTUwCTE1MzIJOTYuODQwCTQ4MDcwMDAJOTYuNTcwCTk1LjYwMAk5 Ni44OTAKKzE1MAkxNTMzCTk2LjM5MAkzNTQ4NTAwCTk2LjU4MAk5Ni4xMzAJOTYuOTIwCisxNTAJ MTUzNAk5Ni40NTAJMzk3MTgwMAk5NS45NTAJOTUuNTYwCTk2Ljk4MAorMTUwCTE1MzUJOTQuNTkw CTUwODQyMDAJOTYuNDkwCTk0LjU5MAk5Ni44ODAKKzE1MAkxNTM2CTk0LjUzMAk2MzkxNDAwCTk0 LjMwMAk5My43NzAJOTUuMjgwCisxNTAJMTUzNwk5My4wNjAJNjUzNjQwMAk5NC4zODAJOTIuNjgw CTk0Ljc0MAorMTUwCTE1MzgJOTEuMjEwCTg1NjA4MDAJOTIuMDAwCTkxLjE1MAk5Mi45ODAKKzE1 MAkxNTM5CTkzLjMwMAk2MjkwNjAwCTkyLjAwMAk5MS42ODAJOTMuMzgwCisxNTEJMTU0MAk4NS4z NTAJNTY3NzMwMAk4NS4zMDAJODUuMDUwCTg1Ljk0MAorMTUxCTE1NDEJODMuNjUwCTc1MzAxMDAJ ODUuMDAwCTgzLjU4MAk4NS4wMTAKKzE1MQkxNTQyCTgzLjg5MAk2NTk1MjAwCTg0LjQwMAk4My41 MTAJODQuNTAwCisxNTEJMTU0Mwk4NC45NTAJNjAwOTIwMAk4NC4wMDAJODMuNDIwCTg1LjI1MAor MTUxCTE1NDQJODUuMjUwCTYwMDE1MDAJODUuOTAwCTg1LjIwMAk4Ni4wOTAKKzE1MQkxNTQ1CTg0 LjEzMAk2Mjk4NzAwCTg0Ljg0MAk4My43ODAJODUuMjQwCisxNTIJMTU0Ngk4My42OTAJNTI2ODUw MAk4My43MDAJODMuMTAwCTgzLjk4MAorMTUyCTE1NDcJODIuMjEwCTcxMzQ5MDAJODMuMDUwCTgx LjkwMAk4My4wNTAKKzE1MgkxNTQ4CTgzLjkxMAk1OTE2OTAwCTgyLjU0MAk4Mi41MTAJODMuOTQw CisxNTIJMTU0OQk4NC4wMjAJNDM2MTUwMAk4My43MDAJODMuNTEwCTg0LjU2MAorMTUyCTE1NTAJ ODQuMDQwCTM1NTk1MDAJODQuMTAwCTgzLjY2MAk4NC41NDAKKzE1MgkxNTUxCTg1LjEzMAk0ODMz NzAwCTgzLjYwMAk4My41NzAJODUuMTMwCisxNTMJMTU1Mgk4NC4xNjAJNDY1MDMwMAk4NC4xMDAJ ODMuOTgwCTg0LjQ0MAorMTUzCTE1NTMJODQuNDgwCTM4NzQyMDAJODQuMzUwCTgzLjg4MAk4NC42 NTAKKzE1MwkxNTU0CTg0Ljk4MAk0MjA0NjAwCTg0LjQ4MAk4NC4xNTAJODQuOTgwCisxNTMJMTU1 NQk4NS43NDAJNTE5ODAwMAk4NS4xNDAJODUuMDEwCTg1Ljk4MAorMTUzCTE1NTYJODYuNzIwCTQ1 NDI3MDAJODUuOTUwCTg1Ljg4MAk4Ni45ODAKKzE1MwkxNTU3CTg3LjE2MAk1MDAxNDAwCTg3LjAw MAk4Ni43MjAJODguMTAwCisxNTMJMTU1OAk4Ny4zMjAJNTE1MDgwMAk4Ny45NTAJODcuMTMwCTg4 LjAzMAorMTUzCTE1NTkJODguMDQwCTM5ODQ0MDAJODcuMTQwCTg3LjEwMAk4OC4xMDAKKzE1Mwkx NTYwCTg3LjQyMAkzMDc2OTAwCTg4LjA0MAk4Ny40MDAJODguMTAwCisxNTMJMTU2MQk4Ni43MTAJ NDA5MDAwMAk4Ny40MzAJODYuNTEwCTg3LjkxMAorMTUzCTE1NjIJODYuNjMwCTMwMTYzMDAJODYu NzcwCTg2LjI3MAk4Ny4yMDAKKzE1MwkxNTYzCTg2LjAwMAk0NjI2NjAwCTg2LjAyMAk4NS41ODAJ ODYuMjAwCisxNTMJMTU2NAk4NC45ODAJNjY2NTIwMAk4Ni4yNjAJODQuNDMwCTg2LjQ4MAorMTUz CTE1NjUJODQuNzgwCTQyMzM3MDAJODQuNzUwCTg0LjMwMAk4NC45ODAKKzE1MwkxNTY2CTg0Ljg1 MAk1OTI4NTAwCTg0Ljc4MAk4NC42MDAJODUuMjUwCisxNTMJMTU2Nwk4NS45MjAJNzI3NTYwMAk4 NC4zMDAJODQuMjkwCTg2LjE1MAorMTUzCTE1NjgJODkuMzcwCTEzODI0NTAwCTg4LjIwMAk4OC4w MDAJODkuNzMwCisxNTMJMTU2OQk4OC44MjAJNzA3OTgwMAk4OC40NTAJODguMjkwCTg5LjE5MAor MTUzCTE1NzAJODguMTAwCTYyNzIxMDAJODguNDAwCTg3LjY2MAk4OC43NjAKKzE1MwkxNTcxCTg3 LjM5MAk1OTk4OTAwCTg4LjIyMAk4Ny4yOTAJODguNDUwCisxNTMJMTU3Mgk4OC40MzAJNTc3NTAw MAk4Ny4zNjAJODcuMzEwCTg4LjkwMAorMTUzCTE1NzMJODkuMDAwCTczMzczMDAJODguMzMwCTg4 LjI1MAk4OS41NzAKKzE1MwkxNTc0CTkwLjAwMAk2MDM1MTAwCTg4LjU4MAk4OC41MDAJOTAuMjcw CisxNTMJMTU3NQk4OS41MDAJNDIyNjUwMAk4OS44MDAJODkuNDMwCTkwLjI0MAorMTUzCTE1NzYJ ODkuNzUwCTQ1MTg1MDAJODkuNDAwCTg4Ljk1MAk4OS45MDAKKzE1MwkxNTc3CTkwLjExMAk1MTYw OTAwCTg5LjMzMAk4OS4yMzAJOTAuNjAwCisxNTMJMTU3OAk5MC40NzAJNTM5MTEwMAk4OS41NTAJ ODkuNTAwCTkxLjIyMAorMTUzCTE1NzkJOTEuMjAwCTY1NTMzMDAJOTEuMjUwCTkwLjk3MAk5MS45 MDAKKzE1MwkxNTgwCTkyLjM4MAk2OTUyMTAwCTkxLjA1MAk5MC44MjAJOTIuNzAwCisxNTMJMTU4 MQk5My4yODAJNjcwODUwMAk5Mi40MDAJOTIuNDAwCTkzLjUyMAorMTUzCTE1ODIJOTMuMzcwCTQ5 MDczMDAJOTIuNTAwCTkyLjUwMAk5My43MDAKKzE1MwkxNTgzCTkzLjM3MAk0NTEzMTAwCTkzLjAw MAk5My4wMDAJOTMuOTUwCisxNTQJMTU4NAk5NC4xMzAJMzU0MTIwMAk5NC4yODAJOTQuMTMwCTk0 LjY0MAorMTU0CTE1ODUJOTIuNzAwCTU2NjQyMDAJOTQuMTQwCTkyLjU0MAk5NC44MzAKKzE1NAkx NTg2CTkyLjc2MAk0ODM4NzAwCTkyLjk1MAk5Mi4zMDAJOTMuMTAwCisxNTQJMTU4Nwk5My4zMDAJ NDIzMzAwMAk5Mi43MDAJOTIuNTAwCTkzLjk3MAorMTU0CTE1ODgJOTMuNTcwCTI4Njg4MDAJOTMu MTYwCTkzLjE2MAk5NC4wMjAKKzE1NAkxNTg5CTk0LjMzMAk0Mjk5MjAwCTkzLjUwMAk5My40ODAJ OTQuNjcwCisxNTUJMTU5MAk5My4zMDAJMzgyMTkwMAk5Mi42NDAJOTIuNTkwCTkzLjQzMAorMTU1 CTE1OTEJOTIuOTIwCTQ1NDEyMDAJOTIuNzUwCTkyLjc1MAk5My43MzAKKzE1NQkxNTkyCTkyLjQx MAk0MDM3OTAwCTkzLjE1MAk5Mi4yMDAJOTMuMjEwCisxNTUJMTU5Mwk5Mi4zNzAJNDc1NDAwMAk5 Mi45NDAJOTIuMzYwCTkzLjE4MAorMTU1CTE1OTQJOTEuNjAwCTgwNTEwMDAJOTIuMzUwCTkxLjU5 MAk5Mi41MTAKKzE1NQkxNTk1CTkyLjEzMAk1MDg3ODAwCTkxLjcwMAk5MS43MDAJOTIuNTYwCisx NTUJMTU5Ngk5Mi4zNTAJNDUxMzkwMAk5Mi4wMjAJOTIuMDEwCTkzLjAwMAorMTU1CTE1OTcJOTIu NDEwCTM0MjQ4MDAJOTIuMzUwCTkyLjA5MAk5Mi44MDAKKzE1NQkxNTk4CTkxLjUxMAk0NDk0MzAw CTkyLjI1MAk5MS4yMDAJOTIuNDEwCisxNTYJMTU5OQk5MS4zODAJNDQxOTEwMAk5MC40NjAJOTAu MjIwCTkxLjQxMAorMTU2CTE2MDAJOTAuNDQwCTU3NDA4MDAJOTEuNDkwCTkwLjA0MAk5MS43NjAK KzE1NgkxNjAxCTkwLjMyMAkzNzM3OTAwCTkwLjA4MAk4OS43NzMJOTAuNjIwCisxNTYJMTYwMgk4 OS41NzAJNDU3OTMwMAk5MC4yMzAJODkuMjYwCTkwLjMzMAorMTU2CTE2MDMJODkuMDAwCTc4MzY4 MDAJODkuMDUwCTg4LjcwNgk4OS4zODAKKzE1NgkxNjA0CTg4LjQ0MAk2Mzc2NTAwCTg5LjAwMAk4 OC4xMDAJODkuMjAwCisxNTYJMTYwNQk4Ny42MDAJNTI3MzQwMAk4OC4yODAJODcuNTAwCTg4LjQ2 MAorMTU2CTE2MDYJODYuMjAwCTgyOTY1MDAJODcuMzUwCTg2LjA5MAk4Ny41NjAKKzE1NgkxNjA3 CTg1Ljc1MAk4NDUwMDAwCTg1LjkwMAk4NS4xNzAJODYuMjQwCisxNTYJMTYwOAk4NC41NzAJNzA5 MDgwMAk4NS43NjAJODQuMjQwCTg1Ljk3MgorMTU2CTE2MDkJODMuNjQwCTEwNzA4MzAwCTg0LjYz MAk4My40NzAJODUuNDEwCisxNTYJMTYxMAk3Ni43MDAJMjc5MzI0MDAJNzkuNDkwCTc2LjMzMAk3 OS42NjAKKzE1NgkxNjExCTc2LjY1MAkxMzI1NjEwMAk3Ny4xNTAJNzYuMTQwCTc3Ljc1MAorMTU2 CTE2MTIJNzUuNDgwCTkyOTI3MDAJNzYuOTgwCTc1LjI1MAk3Ny4yMDAKKzE1NgkxNjEzCTcyLjAx MAkyMDM4OTgwMAk3NS40ODAJNzEuODUwCTc1Ljg3MAorMTU2CTE2MTQJNzQuMDMwCTE2MjczNjAw CTcyLjk5MAk3Mi44MDAJNzQuMTAwCisxNTYJMTYxNQk3NC4yMTAJMTA5ODUyMDAJNzQuMDUwCTcz LjI2MAk3NC43MDAKKzE1NgkxNjE2CTc0LjYxMAkxMDIyMzQwMAk3NS4yNDAJNzQuMDUwCTc1Ljcy MAorMTU2CTE2MTcJNzUuNDMwCTEyNTAwMjAwCTc0LjY4MAk3NC42NTAJNzYuOTgwCisxNTYJMTYx OAk3Ny4wNTAJMTE3MDY4MDAJNzUuNjkwCTc1LjUwMAk3Ny4xODAKKzE1NgkxNjE5CTc1LjkxMAk4 NjM4MzAwCTc3LjA1MAk3NS42NTAJNzcuMTEwCisxNTcJMTYyMAk4My4xNDAJNTM0MDkwMAk4Mi45 MzAJODIuNTAwCTgzLjc4MAorMTU3CTE2MjEJODQuMDAwCTQ0OTAyMDAJODMuMTQwCTgzLjAwMAk4 NC4wODAKKzE1NwkxNjIyCTg0LjE5MAk0NzEyOTAwCTgzLjcxMAk4My41NjAJODQuNjMwCisxNTcJ MTYyMwk4NC4xOTAJNTIxMDYwMAk4NC4xNTAJODMuNzkwCTg0LjY5MAorMTU3CTE2MjQJODQuNzAw CTQ2NjE3MDAJODQuMjAwCTg0LjEwMAk4NC45MDAKKzE1NwkxNjI1CTg2LjA4MAk3Nzg4NjAwCTg0 LjQ1MAk4NC40NDAJODYuMjEwCisxNTcJMTYyNgk4Ni43MTAJODYzMzYwMAk4Ni4wODAJODUuNzUw CTg3LjYwMAorMTU3CTE2MjcJODYuOTUwCTEzMzI4MzAwCTg2LjMzMAk4Ni4yMjAJODcuOTQwCisx NTcJMTYyOAk4OS44MjAJMjc4NzYyMDAJOTAuNTEwCTg5LjczMAk5Mi4wNDAKKzE1NwkxNjI5CTg5 Ljg2MAkxMDY3NjQwMAk4OS44MDAJODkuMzEwCTkwLjk4MAorMTU3CTE2MzAJOTAuNDgwCTczOTE2 MDAJOTAuMDQwCTg5LjU1MAk5MC43MDAKKzE1NwkxNjMxCTkxLjU2MAk4ODYyMzAwCTkwLjA1MAk5 MC4wMTAJOTIuMDAwCisxNTcJMTYzMgk5MS40OTAJOTIyMjUwMAk5MC45MTAJOTAuODAwCTkxLjk1 MApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZSBiL3NyYy90 ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKaW5kZXggOGZhMGE2YzQ3ZmIuLmZjNDhlZDJh ZmM1IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3NjaGVkdWxlCisrKyBi L3NyYy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUKQEAgLTEwNCw2ICsxMDQsMTEgQEAg dGVzdDogcHVibGljYXRpb24gc3Vic2NyaXB0aW9uCiAjIC0tLS0tLS0tLS0KIHRlc3Q6IHNlbGVj dF92aWV3cyBwb3J0YWxzX3AyIGZvcmVpZ25fa2V5IGRlcGVuZGVuY3kgZ3VjIGJpdG1hcG9wcyBj b21ib2NpZCB0c2VhcmNoIHRzZGljdHMgZm9yZWlnbl9kYXRhIHdpbmRvdyB4bWxtYXAgZnVuY3Rp b25hbF9kZXBzIGFkdmlzb3J5X2xvY2sgaW5kaXJlY3RfdG9hc3QgZXF1aXZjbGFzcyBzdGF0c19y ZXdyaXRlIGdyYXBoX3RhYmxlCiAKKyMgLS0tLS0tLS0tLQorIyBSb3cgUGF0dGVybiBSZWNvZ25p dGlvbiB0ZXN0cworIyAtLS0tLS0tLS0tCit0ZXN0OiBycHIgcnByX2Jhc2UgcnByX2V4cGxhaW4g cnByX25mYSBycHJfaW50ZWdyYXRpb24KKwogIyAtLS0tLS0tLS0tCiAjIEFub3RoZXIgZ3JvdXAg b2YgcGFyYWxsZWwgdGVzdHMgKEpTT04gcmVsYXRlZCkKICMgLS0tLS0tLS0tLQpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jw ci5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmIxNWIzMGM4NWFj Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByLnNxbApAQCAtMCww ICsxLDIxMjEgQEAKKy0tCistLSBUZXN0IGZvciByb3cgcGF0dGVybiByZWNvZ25pdGlvbjogV0lO RE9XIGNsYXVzZSBpbnRlZ3JhdGlvbiBhbmQKKy0tIHNjZW5hcmlvIHRlc3RzIHVzaW5nIHN5bnRo ZXRpYyBzdG9jayBkYXRhLgorLS0KKy0tIFBhcnNlci9wbGFubmVyIHRlc3RzOiBycHJfYmFzZS5z cWwKKy0tIE5GQSBlbmdpbmUgdGVzdHM6IHJwcl9uZmEuc3FsCistLSBFWFBMQUlOIHN0YXRpc3Rp Y3MgdGVzdHM6IHJwcl9leHBsYWluLnNxbAorLS0KKworXGdldGVudiBhYnNfc3JjZGlyIFBHX0FC U19TUkNESVIKKworLS0gU3ludGhldGljIHN0b2NrIGRhdGEgZm9yIFJQUiBwYXR0ZXJuIG1hdGNo aW5nIHRlc3RzCitDUkVBVEUgVEFCTEUgcnByX3N0b2NrICgKKyAgICAgICBwYXJ0X2lkIGludGVn ZXIsCisgICAgICAgcm4gICAgICBpbnRlZ2VyLAorICAgICAgIHByaWNlICAgbnVtZXJpYygxMCwz KSwKKyAgICAgICB2b2x1bWUgIGJpZ2ludCwKKyAgICAgICBvcGVuICAgIG51bWVyaWMoMTAsMyks CisgICAgICAgbG93ICAgICBudW1lcmljKDEwLDMpLAorICAgICAgIGhpZ2ggICAgbnVtZXJpYygx MCwzKQorKTsKKworXHNldCBmaWxlbmFtZSA6YWJzX3NyY2RpciAnL2RhdGEvc3RvY2suZGF0YScK K0NPUFkgcnByX3N0b2NrIEZST00gOidmaWxlbmFtZSc7CitBTkFMWVpFIHJwcl9zdG9jazsKKwor Q1JFQVRFIFRFTVAgVEFCTEUgc3RvY2sgKAorICAgICAgIGNvbXBhbnkgVEVYVCwKKyAgICAgICB0 ZGF0ZSBEQVRFLAorICAgICAgIHByaWNlIElOVEVHRVIKKyk7CitJTlNFUlQgSU5UTyBzdG9jayBW QUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTAxJywgMTAwKTsKK0lOU0VSVCBJTlRPIHN0b2Nr IFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDInLCAyMDApOworSU5TRVJUIElOVE8gc3Rv Y2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wMycsIDE1MCk7CitJTlNFUlQgSU5UTyBz dG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA0JywgMTQwKTsKK0lOU0VSVCBJTlRP IHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDUnLCAxNTApOworSU5TRVJUIElO VE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNicsIDkwKTsKK0lOU0VSVCBJ TlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDcnLCAxMTApOworSU5TRVJU IElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wOCcsIDEzMCk7CitJTlNF UlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA5JywgMTIwKTsKK0lO U0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMTAnLCAxMzApOwor SU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wMScsIDUwKTsK K0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDInLCAyMDAw KTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDMnLCAx NTAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDQn LCAxNDAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDct MDUnLCAxNTAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMt MDctMDYnLCA2MCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcyMDIz LTA3LTA3JywgMTEwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcy MDIzLTA3LTA4JywgMTMwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55Mics ICcyMDIzLTA3LTA5JywgMTIwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55 MicsICcyMDIzLTA3LTEwJywgMTMwMCk7CisKK1NFTEVDVCAqIEZST00gc3RvY2s7CisKKy0tCist LSBCYXNpYyBwYXR0ZXJuIG1hdGNoaW5nIHdpdGggUFJFVi9ORVhUCistLQorCistLSBiYXNpYyB0 ZXN0IHVzaW5nIFBSRVYKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBudGhfdmFsdWUodGRh dGUsIDIpIE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgK KyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisg REVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisg IERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gYmFzaWMgdGVzdCB1c2luZyBQ UkVWLiBVUCBhcHBlYXJzIHR3aWNlCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJz dF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbnRoX3Zh bHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRoX3NlY29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cg dyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERP V04rIFVQKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVW KHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSBiYXNpYyB0 ZXN0IHVzaW5nIFBSRVYuIFVzZSAnKicKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZp cnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBudGhf dmFsdWUodGRhdGUsIDIpIE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRP VyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCog RE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihw cmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gYmFzaWMgdGVz dCB1c2luZyBQUkVWLiBVc2UgJz8nCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJz dF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbnRoX3Zh bHVlKHRkYXRlLCAyKSBPVkVSIHcgQVMgbnRoX3NlY29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cg dyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVA/IERP V04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJp Y2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tIHRlc3QgdXNpbmcg YWx0ZXJuYXRpb24gKHwpIHdpdGggc2VxdWVuY2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJp Y2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisg UEFUVEVSTiAoU1RBUlQgKFVQIHwgRE9XTikpCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisg IFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNl KQorKTsKKworLS0gdGVzdCB1c2luZyBhbHRlcm5hdGlvbiAofCkgd2l0aCBncm91cCBxdWFudGlm aWVyCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMg KAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIChVUCB8IERPV04p KykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNl KSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSB0ZXN0IHVzaW5nIG5l c3RlZCBhbHRlcm5hdGlvbgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFs dWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jawor IFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFS VCAoKFVQIERPV04pIHwgRkxBVCkrKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBB UyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSksCisg IEZMQVQgQVMgcHJpY2UgPSBQUkVWKHByaWNlKQorKTsKKworLS0gdGVzdCB1c2luZyBncm91cCB3 aXRoIHF1YW50aWZpZXIKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sKKyBX SU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoKFVQIERP V04pKykKKyBERUZJTkUKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBw cmljZSA8IFBSRVYocHJpY2UpCispOworCistLSB0ZXN0IHVzaW5nIGFic29sdXRlIHRocmVzaG9s ZCB2YWx1ZXMgKG5vdCByZWxhdGl2ZSBQUkVWKQorLS0gSElHSDogcHJpY2UgPiAxNTAsIExPVzog cHJpY2UgPCAxMDAsIE1JRDogbmV1dHJhbCByYW5nZQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3 CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwK KyBQQVRURVJOIChMT1cgTUlEKiBISUdIKQorIERFRklORQorICBMT1cgQVMgcHJpY2UgPCAxMDAs CisgIE1JRCBBUyBwcmljZSA+PSAxMDAgQU5EIHByaWNlIDw9IDE1MCwKKyAgSElHSCBBUyBwcmlj ZSA+IDE1MAorKTsKKworLS0gdGVzdCB0aHJlc2hvbGQtYmFzZWQgcGF0dGVybiB3aXRoIGFsdGVy bmF0aW9uCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkg T1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcg QVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKExPVyAoTUlEIHwgSElH SCkrKQorIERFRklORQorICBMT1cgQVMgcHJpY2UgPCAxMDAsCisgIE1JRCBBUyBwcmljZSA+PSAx MDAgQU5EIHByaWNlIDw9IDE1MCwKKyAgSElHSCBBUyBwcmljZSA+IDE1MAorKTsKKworLS0gYmFz aWMgdGVzdCB3aXRoIGZpeGVkLWxlbmd0aCBwYXR0ZXJuIChBIEEgQSA9IGV4YWN0bHkgMykKK1NF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sK KyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQSBB IEEpCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPj0gMTQwIEFORCBwcmljZSA8PSAxNTAKKyk7CisK Ky0tIHRlc3QgdXNpbmcge259IHF1YW50aWZpZXIgKEEgQSBBIHNob3VsZCBiZSBvcHRpbWl6ZWQg dG8gQXszfSkKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisg UEFUVEVSTiAoQXszfSkKKyBERUZJTkUKKyAgQSBBUyBwcmljZSA+PSAxNDAgQU5EIHByaWNlIDw9 IDE1MAorKTsKKworLS0gdGVzdCB1c2luZyB7bix9IHF1YW50aWZpZXIgKDIgb3IgbW9yZSkKK1NF TEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZST00gc3RvY2sK KyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoQXsy LH0pCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAxMDAKKyk7CisKKy0tIHRlc3QgdXNpbmcge24s bX0gcXVhbnRpZmllciAoMiB0byA0KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291 bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkg Y29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworIElOSVRJQUwKKyBQQVRURVJOIChBezIsNH0pCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPiAx MDAKKyk7CisKKy0tIHRlc3QgcHJlZml4L3N1ZmZpeCBtZXJnZSBvcHRpbWl6YXRpb24gd2l0aCBi b3VuZGVkIHF1YW50aWZpZXIKKy0tIFBhdHRlcm4gQSBCIChBIEIpezEsMn0gQSBCIHNob3VsZCBi ZSBvcHRpbWl6ZWQgdG8gKEEgQil7Myw0fQorQ1JFQVRFIFRFTVAgVEFCTEUgcnByX3QgKGlkIGlu dCwgdmFsIHRleHQpOworSU5TRVJUIElOVE8gcnByX3QgVkFMVUVTCisgICgxLCdBJyksKDIsJ0In KSwKKyAgKDMsJ0EnKSwoNCwnQicpLAorICAoNSwnQScpLCg2LCdCJyksCisgICg3LCdBJyksKDgs J0InKSwKKyAgKDksJ1gnKTsKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgbWF0 Y2hfY291bnQKK0ZST00gcnByX3QKK1dJTkRPVyB3IEFTICgKKyAgT1JERVIgQlkgaWQKKyAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgSU5JVElBTAorICBQQVRURVJOIChBIEIgKEEgQil7MSwy fSBBIEIpCisgIERFRklORQorICAgIEEgQVMgdmFsID0gJ0EnLAorICAgIEIgQVMgdmFsID0gJ0In CispOworRFJPUCBUQUJMRSBycHJfdDsKKworLS0gbGFzdF92YWx1ZSgpIHNob3VsZCByZW1haW4g Y29uc2lzdGVudAorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgbGFzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29t cGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBE RUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAg RE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSBvbWl0ICJTVEFSVCIgaW4gREVG SU5FIGJ1dCBpdCBpcyBvayBiZWNhdXNlICJTVEFSVCBBUyBUUlVFIiBpcworLS0gaW1wbGljaXRs eSBkZWZpbmVkLiBwZXIgc3BlYy4KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBudGhfdmFs dWUodGRhdGUsIDIpIE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRPVyB3 IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9X TispCisgREVGSU5FCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJp Y2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gdGhlIGZpcnN0IHJvdyBzdGFydCB3aXRoIGxlc3Mg dGhhbiBvciBlcXVhbCB0byAxMDAKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3Rv Y2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAo TE9XUFJJQ0UgVVArIERPV04rKQorIERFRklORQorICBMT1dQUklDRSBBUyBwcmljZSA8PSAxMDAs CisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHBy aWNlKQorKTsKKworLS0gc2Vjb25kIHJvdyByYWlzZXMgMTIwJQorU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkg T1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFu eQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElO SVRJQUwKKyBQQVRURVJOIChMT1dQUklDRSBVUCsgRE9XTispCisgREVGSU5FCisgIExPV1BSSUNF IEFTIHByaWNlIDw9IDEwMCwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSAqIDEuMiwKKyAg RE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLSB1c2luZyBORVhUCitTRUxFQ1Qg Y29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3Zh bHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElP TiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQRE9XTikKKyBERUZJTkUKKyAgU1RB UlQgQVMgVFJVRSwKKyAgVVBET1dOIEFTIHByaWNlID4gUFJFVihwcmljZSkgQU5EIHByaWNlID4g TkVYVChwcmljZSkKKyk7CisKKy0tIHVzaW5nIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cg KHNhbWUgcGF0dGVybiBhcyBhYm92ZTsKKy0tIG1hdGNoIGxlbmd0aCBpcyBhbHdheXMgMiwgc28g cmVzdWx0IGlzIGlkZW50aWNhbCB0byBTS0lQIFBBU1QgTEFTVCBST1cuCistLSBTS0lQIFRPIE5F WFQgUk9XJ3MgZGlzdGluY3QgZWZmZWN0IGlzIHRlc3RlZCBpbiBiYWNrdHJhY2tpbmcgc2VjdGlv bi4pCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMg KAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworIElOSVRJ QUwKKyBQQVRURVJOIChTVEFSVCBVUERPV04pCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisg IFVQRE9XTiBBUyBwcmljZSA+IFBSRVYocHJpY2UpIEFORCBwcmljZSA+IE5FWFQocHJpY2UpCisp OworCistLSBQUkVWIHJldHVybnMgTlVMTCBhdCBwYXJ0aXRpb24ncyBmaXJzdCByb3cgKG51bGxf c2xvdCBwYXRoKQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3 CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRF UiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworIFBBVFRFUk4gKEJPVU5EQVJZIFJFU1QrKQorIERFRklORQorICBCT1VOREFSWSBBUyBQ UkVWKHByaWNlKSBJUyBOVUxMLAorICBSRVNUIEFTIFBSRVYocHJpY2UpIElTIE5PVCBOVUxMCisp OworCistLSBORVhUIHJldHVybnMgTlVMTCBhdCBwYXJ0aXRpb24ncyBsYXN0IHJvdyAobnVsbF9z bG90IHBhdGgpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcK K0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVS IEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAoQSsgQk9VTkRB UlkpCisgREVGSU5FCisgIEEgQVMgTkVYVChwcmljZSkgSVMgTk9UIE5VTEwsCisgIEJPVU5EQVJZ IEFTIE5FWFQocHJpY2UpIElTIE5VTEwKKyk7CisKKy0tIERFU0Mgb3JkZXI6IFBSRVYgcmVmZXJz IHRvIHRoZSByb3cgd2l0aCBsYXRlciBkYXRlCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNl LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04g QlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlIERFU0MKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyBQQVRURVJOIChTVEFSVCBET1dOKyBVUCspCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUs CisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHBy aWNlKQorKTsKKworLS0gTXVsdGlwbGUgcGFydGl0aW9ucyB3aXRoIHVuZXF1YWwgc2l6ZXMKK1dJ VEggbXVsdGlfcGFydCBBUyAoCisgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICgnYScsIDEsIDEw KSwgKCdhJywgMiwgMjApLCAoJ2EnLCAzLCAxNSksCisgICgnYicsIDEsIDUpLAorICAoJ2MnLCAx LCAxMDApLCAoJ2MnLCAyLCAyMDApLCAoJ2MnLCAzLCAxNTApLCAoJ2MnLCA0LCAxNDApLCAoJ2Mn LCA1LCAzMDApCisgKSBBUyB0KGdycCwgaWQsIHZhbCkKKykKK1NFTEVDVCBncnAsIGlkLCB2YWws IGNvdW50KCopIE9WRVIgdworRlJPTSBtdWx0aV9wYXJ0CitXSU5ET1cgdyBBUyAoCisgUEFSVElU SU9OIEJZIGdycAorIE9SREVSIEJZIGlkCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFU VEVSTiAoQSBCKykKKyBERUZJTkUKKyAgQSBBUyB2YWwgPD0gTkVYVCh2YWwpLAorICBCIEFTIHZh bCA+IFBSRVYodmFsKSBPUiB2YWwgPCBQUkVWKHZhbCkKKyk7CisKKy0tIEZMT0FUL05VTUVSSUMg REVGSU5FIGNvbmRpdGlvbnMKK1dJVEggZmxvYXRfZGF0YSBBUyAoCisgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICgxLCAxLjA6OmZsb2F0OCksICgyLCAxLjUpLCAoMywgMS40OTk5KSwgKDQsIDEu NTAwMDEpLCAoNSwgMC4xKQorICkgQVMgdChpZCwgdmFsKQorKQorU0VMRUNUIGlkLCB2YWwsIGNv dW50KCopIE9WRVIgdworRlJPTSBmbG9hdF9kYXRhCitXSU5ET1cgdyBBUyAoCisgT1JERVIgQlkg aWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChBIEIrKQorIERFRklORQor ICBBIEFTIFRSVUUsCisgIEIgQVMgdmFsID4gUFJFVih2YWwpICogMC45OQorKTsKKworLS0KKy0t IEVycm9yIGNhc2VzOiBQUkVWL05FWFQgdXNhZ2UgcmVzdHJpY3Rpb25zCistLQorCistLSBQUkVW IG91dHNpZGUgREVGSU5FIGNsYXVzZQorU0VMRUNUIHByZXYocHJpY2UpIEZST00gc3RvY2s7CisK Ky0tIE5FWFQgb3V0c2lkZSBERUZJTkUgY2xhdXNlCitTRUxFQ1QgbmV4dChwcmljZSkgRlJPTSBz dG9jazsKKworLS0gTmVzdGVkIFBSRVYKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAo QSkKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYoUFJFVihwcmljZSkpCispOworCistLSBO ZXN0ZWQgTkVYVAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQ QVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklO RSBBIEFTIHByaWNlID4gTkVYVChORVhUKHByaWNlKSkKKyk7CisKKy0tIFBSRVYgbmVzdGVkIGlu c2lkZSBORVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBB UlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5F IEEgQVMgcHJpY2UgPiBORVhUKFBSRVYocHJpY2UpKQorKTsKKworLS0gUFJFViBuZXN0ZWQgaW5z aWRlIGV4cHJlc3Npb24gaW5zaWRlIE5FWFQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5E T1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVS TiAoQSkKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQocHJpY2UgKiBQUkVWKHByaWNlKSkK Kyk7CisKKy0tIFRyaXBsZSBuZXN0aW5nOiBlcnJvciByZXBvcnRlZCBhdCBvdXRlcm1vc3QgUFJF VgorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHBy aWNlID4gUFJFVihQUkVWKFBSRVYocHJpY2UpKSkKKyk7CisKKy0tIE5vIGNvbHVtbiByZWZlcmVu Y2UgaW4gUFJFVi9ORVhUIGFyZ3VtZW50CistLSBQUkVWKDEpOiBjb25zdGFudCBvbmx5LCBubyBj b2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAg REVGSU5FIEEgQVMgUFJFVigxKSA+IDAKKyk7CisKKy0tIE5FWFQoMSArIDIpOiBjb25zdGFudCBl eHByZXNzaW9uLCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jawor V0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBB VFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgTkVYVCgxICsgMikgPiAwCispOworCistLSAyLWFy ZyBmb3JtOiBQUkVWKDEsIDEpOiBjb25zdGFudCBleHByZXNzaW9uIGFzIGZpcnN0IGFyZworU0VM RUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29t cGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYoMSwg MSkgPiAwCispOworCistLSBDb21wb3VuZCBuYXZpZ2F0aW9uIHdpdGhvdXQgYSBjb2x1bW4gcmVm ZXJlbmNlIG11c3QgYmUgcmVqZWN0ZWQgdG9vLAorLS0gY29uc2lzdGVudCB3aXRoIHRoZSBzaW1w bGUgZm9ybXMgYWJvdmUuCistLSBQUkVWKEZJUlNUKDEpKTogY29tcG91bmQsIGNvbnN0YW50IG9u bHksIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAo QSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKDEpKSA+IDAKKyk7CisKKy0tIE5FWFQoTEFT VCgxICsgMikpOiBjb21wb3VuZCwgY29uc3RhbnQgZXhwcmVzc2lvbiwgbm8gY29sdW1uIHJlZmVy ZW5jZQorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFT IE5FWFQoTEFTVCgxICsgMikpID4gMAorKTsKKworLS0gUFJFVihGSVJTVCgxLCAyKSk6IGNvbXBv dW5kLCB0d28tYXJnIGlubmVyLCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJP TSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElB TAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCgxLCAyKSkgPiAw CispOworCistLSBQUkVWKEZJUlNUKDEpLCAyKTogY29tcG91bmQsIG91dGVyIG9mZnNldCBvbmx5 LCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcg QVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEp CisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCgxKSwgMikgPiAwCispOworCistLSBQUkVWKEZJ UlNUKDEsIDIpLCAzKTogY29tcG91bmQsIGlubmVyIGFuZCBvdXRlciBvZmZzZXRzLCBubyBjb2x1 bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVG SU5FIEEgQVMgUFJFVihGSVJTVCgxLCAyKSwgMykgPiAwCispOworCistLSBOb24tY29uc3RhbnQg b2Zmc2V0OiBjb2x1bW4gcmVmZXJlbmNlIGFzIG9mZnNldAorU0VMRUNUIHByaWNlIEZST00gc3Rv Y2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAg ICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHByaWNlKSA+IDAKKyk7 CisKKy0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IGNvbHVtbiByZWZlcmVuY2UgaW4gY29tcG91bmQg aW5uZXIgb2Zmc2V0CitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVG SU5FIEEgQVMgUFJFVihMQVNUKHByaWNlLCBwcmljZSksIDIpID4gMAorKTsKKworLS0gTm9uLWNv bnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVyZW5jZSBpbiBjb21wb3VuZCBvdXRlciBvZmZzZXQK K1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZ IGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVW KExBU1QocHJpY2UsIDEpLCBwcmljZSkgPiAwCispOworCistLSBOb24tY29uc3RhbnQgb2Zmc2V0 OiB2b2xhdGlsZSBmdW5jdGlvbiBhcyBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitX SU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFU VEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCByYW5kb20oKTo6aW50KSA+IDAK Kyk7CisKKy0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IHN1YnF1ZXJ5IGFzIG9mZnNldAorU0VMRUNU IHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFu eQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2Us IChTRUxFQ1QgMSkpID4gMAorKTsKKworLS0gRmlyc3QgYXJnOiBzdWJxdWVyeSAoY2F1Z2h0IGJ5 IERFRklORS1sZXZlbCBzdWJxdWVyeSByZXN0cmljdGlvbikKK1NFTEVDVCBwcmljZSBGUk9NIHN0 b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisg ICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlICsgKFNFTEVDVCAxKSkg PiAwCispOworCistLSBWb2xhdGlsZSBmdW5jdGlvbiBpbnNpZGUgbmF2LmFyZyBpcyByZWplY3Rl ZCBpbiB0aGUgcGxhbm5lcgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBm aXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50 KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBj b21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJF VihwcmljZSArIHJhbmRvbSgpICogMCkgPj0gMAorKTsKKworLS0gbmV4dHZhbCBpcyB2b2xhdGls ZSAocGVyIHBnX3Byb2MpLCBzbyBpdCBpcyByZWplY3RlZCB2aWEgdGhlIEZ1bmNFeHByCistLSBw YXRoIHdpdGggdGhlICJ2b2xhdGlsZSBmdW5jdGlvbnMiIG1lc3NhZ2UKK0NSRUFURSBTRVFVRU5D RSBycHJfc2VxOworU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQ QVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklO RSBBIEFTIHByaWNlID4gbmV4dHZhbCgncnByX3NlcScpCispOworRFJPUCBTRVFVRU5DRSBycHJf c2VxOworCistLSBBIHZvbGF0aWxlIERFRklORSBpcyBub3cgcmVqZWN0ZWQgaW4gdGhlIHBsYW5u ZXIsIG5vdCBhdCBwYXJzZSB0aW1lLCBzbyBhCistLSB2aWV3IHRoYXQgaGlkZXMgb25lIGlzIGNy ZWF0ZWQgc3VjY2Vzc2Z1bGx5IGFuZCBvbmx5IGVycm9ycyB3aGVuIHJlYWQuCitDUkVBVEUgVEVN UCBWSUVXIHJwcl92b2xhdGlsZV92aWV3IEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNl LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyBwcmljZSA+IHJhbmRvbSgpICogMAorKTsKK1NFTEVDVCAqIEZST00g cnByX3ZvbGF0aWxlX3ZpZXc7CitEUk9QIFZJRVcgcnByX3ZvbGF0aWxlX3ZpZXc7CisKKy0tIERF RklORSBjYW5ub3QgcmVmZXJlbmNlIGFuIG91dGVyIHF1ZXJ5J3MgY29sdW1uLiAgQSBjb3JyZWxh dGVkIG91dGVyCistLSByZWZlcmVuY2UgbXVzdCBwcm9kdWNlIGEgY2xlYW4gZXJyb3IsIG5vdCB0 aGUgaW50ZXJuYWwgIlVwcGVyLWxldmVsIFZhciIKKy0tIGVsb2cgdGhhdCBwdWxsX3Zhcl9jbGF1 c2Ugd291bGQgb3RoZXJ3aXNlIHJhaXNlLgorLS0gUXVhbGlmaWVkIG91dGVyIHJlZmVyZW5jZSAo by50aHJlc2hvbGQpOgorU0VMRUNUICogRlJPTSAoVkFMVUVTICg5NSkpIEFTIG8odGhyZXNob2xk KSwKK0xBVEVSQUwgKAorICAgIFNFTEVDVCBwcmljZSBGUk9NIHN0b2NrCisgICAgV0lORE9XIHcg QVMgKAorICAgICAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgSU5JVElBTAorICAg ICAgICBQQVRURVJOIChBKQorICAgICAgICBERUZJTkUgQSBBUyBwcmljZSA+IG8udGhyZXNob2xk CisgICAgKQorKSBzOworLS0gVW5xdWFsaWZpZWQgbmFtZSByZXNvbHZpbmcgdG8gdGhlIG91dGVy IGNvbHVtbiAodGhyZXNob2xkKToKK1NFTEVDVCAqIEZST00gKFZBTFVFUyAoOTUpKSBBUyBvKHRo cmVzaG9sZCksCitMQVRFUkFMICgKKyAgICBTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworICAgIFdJ TkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICAgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIElOSVRJ QUwKKyAgICAgICAgUEFUVEVSTiAoQSkKKyAgICAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiB0aHJl c2hvbGQKKyAgICApCispIHM7CistLSBPdXRlciByZWZlcmVuY2UgaW5zaWRlIGEgbmF2aWdhdGlv biBhcmd1bWVudCBpcyByZWplY3RlZCB0b286CitTRUxFQ1QgKiBGUk9NIChWQUxVRVMgKDk1KSkg QVMgbyh0aHJlc2hvbGQpLAorTEFURVJBTCAoCisgICAgU0VMRUNUIHByaWNlIEZST00gc3RvY2sK KyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZ IHRkYXRlCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgUFJFVihv LnRocmVzaG9sZCwgMSkgPiAwCisgICAgKQorKSBzOworCistLSBERUZJTkUgcmVqZWN0cyBhIHNj aGVtYS1xdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZSAodGhyZWUgb3IgbW9yZSBuYW1lCistLSBw YXJ0cykgb25jZSBpdCByZXNvbHZlczsgdGhlIHF1YWxpZmllZCBmb3JtIGl0c2VsZiBpcyBub3Qg YWxsb3dlZC4gIChzdG9jaworLS0gaXMgYSB0ZW1wIHRhYmxlLCBzbyBpdCBpcyBxdWFsaWZpZWQg d2l0aCBwZ190ZW1wIGhlcmUuKQorLS0gMy1wYXJ0IChzY2hlbWEudGFibGUuY29sdW1uKToKK1NF TEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNv bXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBwZ190ZW1w LnN0b2NrLnByaWNlID4gMAorKTsKKy0tIHdob2xlLXJvdyB2YXJpYW50IChzY2hlbWEudGFibGUu Kik6CitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg KHBnX3RlbXAuc3RvY2suKikgSVMgTk9UIE5VTEwKKyk7CisKKy0tCistLSAyLWFyZyBQUkVWL05F WFQ6IGZ1bmN0aW9uYWwgdGVzdHMKKy0tCisKKy0tIFBSRVYocHJpY2UsIDIpOiBtYXRjaCByb3dz IHdoZXJlIGN1cnJlbnQgcHJpY2UgPiBwcmljZSAyIHJvd3MgYmFjaworLS0gc3RvY2s6IDEwMCwg OTAsIDgwLCA5NSwgMTEwCistLSBQYXR0ZXJuIChBIEIrKTogQT1hbnksIEIgd2hlcmUgcHJpY2Ug PiBQUkVWKHByaWNlLCAyKQorLS0gQXQgcG9zIDIgKDgwKTogQSBtYXRjaGVzLiBwb3MgMyAoOTUp OiA5NSA+IFBSRVYoOTUsMik9OTAgVFJVRS4KKy0tICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBwb3MgNCAoMTEwKTogMTEwID4gUFJFVigxMTAsMik9ODAgVFJVRS4gTWF0Y2ghCitTRUxFQ1Qg Y29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcs IGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitX SU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIg QVMgcHJpY2UgPiBQUkVWKHByaWNlLCAyKQorKTsKKworLS0gTkVYVChwcmljZSwgMik6IG1hdGNo IHJvd3Mgd2hlcmUgY3VycmVudCBwcmljZSA+IHByaWNlIDIgcm93cyBhaGVhZAorLS0gcG9zIDAg KDEwMCk6IE5FWFQoMTAwLDIpPTgwLCAxMDA+ODAgVFJVRS4gcG9zIDEgKDkwKTogTkVYVCg5MCwy KT05NSwgOTA+OTUgRkFMU0UuIE1hdGNoIGVuZHMuCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHBy aWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2Up IE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAg UEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyBwcmljZSA+IE5FWFQocHJpY2UsIDIpCispOworCistLSBFeHByZXNzaW9ucyBp bnNpZGUgUFJFVi9ORVhUIGFyZzogZXhwciBpcyBldmFsdWF0ZWQgb24gdGFyZ2V0IHJvdworLS0g UFJFVihwcmljZSAtIDUwLCAxKTogZmV0Y2hlcyAocHJpY2UgLSA1MCkgZnJvbSAxIHJvdyBiYWNr CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9N IHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkg dGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2Ug LSA1MCwgMSkKKyk7CisKKy0tIE5FWFQocHJpY2UgKiAyLCAxKTogZmV0Y2hlcyAocHJpY2UgKiAy KSBmcm9tIDEgcm93IGFoZWFkCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAg IGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291 bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZ IGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBw cmljZSA8IE5FWFQocHJpY2UgKiAyLCAxKQorKTsKKworLS0gTGFyZ2Ugb2Zmc2V0OiBQUkVWKHZh bCwgOTk5KSBvbiAxMDAwLXJvdyBzZXJpZXMgbWF0Y2hlcyBvbmx5IGxhc3Qgcm93CistLSBORVhU KHZhbCwgOTk5KSBtYXRjaGVzIG9ubHkgZmlyc3Qgcm93CitTRUxFQ1QgdmFsLCBmaXJzdF92YWx1 ZSh2YWwpIE9WRVIgdywgbGFzdF92YWx1ZSh2YWwpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyB0KHZhbCkKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHZhbCwgOTk5KSA9IDEKKykKK09SREVS IEJZIHZhbCBERVNDIExJTUlUIDM7CisKK1NFTEVDVCB2YWwsIGZpcnN0X3ZhbHVlKHZhbCkgT1ZF UiB3LCBsYXN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDEwMDApIEFTIHQodmFsKQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIE5FWFQodmFsLCA5OTkpID0gMTAwMAorKQorTElNSVQgMzsKKwor LS0gUFJFVihwcmljZSwgMCk6IG9mZnNldCAwIG1lYW5zIGN1cnJlbnQgcm93LCBhbHdheXMgZXF1 YWwgdG8gcHJpY2UKKy0tIEErIG1hdGNoZXMgZW50aXJlIHBhcnRpdGlvbiBhcyBvbmUgZ3JvdXA7 IGNvdW50ID0gcGFydGl0aW9uIHNpemUKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisg ICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3 LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIFBSRVYocHJpY2UsIDApID0gcHJpY2UKKyk7CisKKy0tIDItYXJnIFBSRVYvTkVYVCBvdXRz aWRlIERFRklORSBjbGF1c2UKK1NFTEVDVCBwcmV2KHByaWNlLCAyKSBGUk9NIHN0b2NrOworU0VM RUNUIG5leHQocHJpY2UsIDIpIEZST00gc3RvY2s7CisKKy0tIDItYXJnIFBSRVYvTkVYVDogbmVn YXRpdmUgb2Zmc2V0CitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShw cmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZ IGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQ UkVWKHByaWNlLCAtMSkgSVMgTk9UIE5VTEwKKyk7CisKKy0tIDItYXJnIFBSRVYvTkVYVDogTlVM TCBvZmZzZXQgKHR5cGVkKQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFs dWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgUFJFVihwcmljZSwgTlVMTDo6aW50OCkgSVMgTk9UIE5VTEwKKyk7CisKKy0tIDItYXJnIFBS RVYvTkVYVDogTlVMTCBvZmZzZXQgKHVudHlwZWQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHBy aWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBOVUxMKSBJUyBOT1QgTlVMTAorKTsKKworLS0g Mi1hcmcgUFJFVi9ORVhUOiBob3N0IHZhcmlhYmxlIG5lZ2F0aXZlIGFuZCBOVUxMCitQUkVQQVJF IHRlc3RfcHJldl9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAg ICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIHByaWNlID4gUFJFVihwcmljZSwgJDEpCispOworRVhFQ1VURSB0ZXN0X3By ZXZfb2Zmc2V0KC0xKTsKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldChOVUxMKTsKK0RFQUxMT0NB VEUgdGVzdF9wcmV2X29mZnNldDsKKworLS0gMi1hcmcgUFJFVi9ORVhUOiBob3N0IHZhcmlhYmxl IHdpdGggZXhwcmVzc2lvbiAoMCArICQxKQorUFJFUEFSRSB0ZXN0X3ByZXZfb2Zmc2V0KGludDgp IEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkg T1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBS RVYocHJpY2UsIDAgKyAkMSkKKyk7CitFWEVDVVRFIHRlc3RfcHJldl9vZmZzZXQoLTEpOworRVhF Q1VURSB0ZXN0X3ByZXZfb2Zmc2V0KE5VTEwpOworREVBTExPQ0FURSB0ZXN0X3ByZXZfb2Zmc2V0 OworCistLSAyLWFyZyBQUkVWL05FWFQ6IGhvc3QgdmFyaWFibGUgd2l0aCBwb3NpdGl2ZSB2YWx1 ZQorLS0gRXhlcmNpc2VzIFJQUl9OQVZfT0ZGU0VUX05FRURTX0VWQUwgLT4gZXZhbF9uYXZfbWF4 X29mZnNldCgpIHBhdGgKK1BSRVBBUkUgdGVzdF9wcmV2X29mZnNldChpbnQ4KSBBUworU0VMRUNU IGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQo KikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNv bXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgcHJpY2UgPiBQUkVW KHByaWNlLCAkMSkKKyk7CitFWEVDVVRFIHRlc3RfcHJldl9vZmZzZXQoMSk7CitFWEVDVVRFIHRl c3RfcHJldl9vZmZzZXQoMik7CitERUFMTE9DQVRFIHRlc3RfcHJldl9vZmZzZXQ7CisKKy0tIDIt YXJnOiB0d28gUFJFViB3aXRoIGRpZmZlcmVudCBvZmZzZXRzIGluIHNhbWUgREVGSU5FIGNsYXVz ZQorLS0gQjogcHJpY2UgZXhjZWVkcyBib3RoIDEtYmFjayBhbmQgMi1iYWNrIHZhbHVlcworU0VM RUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZF UiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9j aworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRl CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHByaWNlID4gUFJFVihw cmljZSwgMSkgQU5EIHByaWNlID4gUFJFVihwcmljZSwgMikKKyk7CisKKy0tIDItYXJnOiBQUkVW IGFuZCBORVhUIHdpdGggZXhwbGljaXQgb2Zmc2V0cyBpbiBzYW1lIERFRklORSBjbGF1c2UKKy0t IEE6IHByaWNlIGV4Y2VlZHMgMS1iYWNrIGFuZCBpcyBiZWxvdyAxLWFoZWFkIChhc2NlbmRpbmcg aW50ZXJpb3IgcG9pbnQpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZp cnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQo KikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNv bXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IFBSRVYocHJpY2UsIDEpIEFO RCBwcmljZSA8IE5FWFQocHJpY2UsIDEpCispOworCistLSBQYXNzLWJ5LXJlZiB0eXBlczogdHdv IFBSRVYgY2FsbHMgdGFyZ2V0aW5nIGRpZmZlcmVudCBwb3NpdGlvbnMuCistLSBWZXJpZmllcyB0 aGF0IGRhdHVtQ29weSBpbiBSRVNUT1JFIHByZXZlbnRzIGRhbmdsaW5nIHBvaW50ZXJzIHdoZW4K Ky0tIG5hdl9zbG90IGlzIHJlLWZldGNoZWQgZm9yIHRoZSBzZWNvbmQgbmF2aWdhdGlvbi4KKy0t IHRkYXRlOjp0ZXh0IGdpdmVzIGRpc3RpbmN0IHRleHQgdmFsdWVzIHBlciByb3cgKGUuZy4gJzA3 LTAxLTIwMjMnKS4KKy0tIEIgbWF0Y2hlcyB3aGVuIDEtYmFjayBkYXRlIHRleHQgPiAyLWJhY2sg ZGF0ZSB0ZXh0IChhbHdheXMgdHJ1ZSBmb3IKKy0tIGFzY2VuZGluZyBkYXRlcyksIHNvIEIrIGV4 dGVuZHMgdGhlIGZ1bGwgcGFydGl0aW9uIGFmdGVyIEEuCitTRUxFQ1QgY29tcGFueSwgdGRhdGUs IHRkYXRlOjp0ZXh0IEFTIHRkYXRlX3RleHQsCisgICAgICAgZmlyc3RfdmFsdWUodGRhdGU6OnRl eHQpIE9WRVIgdywgbGFzdF92YWx1ZSh0ZGF0ZTo6dGV4dCkgT1ZFUiB3LCBjb3VudCgqKSBPVkVS IHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBP UkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyBQ UkVWKHRkYXRlOjp0ZXh0LCAxKSA+IFBSRVYodGRhdGU6OnRleHQsIDIpCispOworCistLSBudW1l cmljOiBQUkVWKHByaWNlOjpudW1lcmljLCAxKSA+IFBSRVYocHJpY2U6Om51bWVyaWMsIDIpCist LSBCIG1hdGNoZXMgd2hlbiBwcmljZSAxLWJhY2sgPiBwcmljZSAyLWJhY2sgKGFzY2VuZGluZyBw YWlyKS4KK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2U6Om51bWVyaWMgQVMgbnByaWNlLAor ICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlOjpudW1lcmljKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJp Y2U6Om51bWVyaWMpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQor ICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgUFJFVihwcmljZTo6bnVtZXJpYywgMSkg PiBQUkVWKHByaWNlOjpudW1lcmljLCAyKQorKTsKKworLS0KKy0tIEZJUlNUL0xBU1QgbmF2aWdh dGlvbgorLS0KKworLS0gVGVzdCBkYXRhIGZvciBGSVJTVC9MQVNUOiB2YWx1ZXMgY3ljbGUgYmFj ayBzbyBGSVJTVCh2YWwpID0gTEFTVCh2YWwpCistLSBhdCBzcGVjaWZpYyBwb3NpdGlvbnMuCitD UkVBVEUgVEVNUCBUQUJMRSBycHJfbmF2IChpZCBpbnQsIHZhbCBpbnQpOworSU5TRVJUIElOVE8g cnByX25hdiBWQUxVRVMgKDEsMTApLCgyLDIwKSwoMywzMCksKDQsMTApLCg1LDUwKSwoNiwxMCk7 CisKKy0tIEZJUlNUKHZhbCkgPSBjb25zdGFudDogQiBtYXRjaGVzIHdoZW4gbWF0Y2hfc3RhcnQg aGFzIHZhbD0xMAorLS0gbWF0Y2hfc3RhcnQ9MSgxMCk6IEE9aWQxLCBCPWlkMiwgRklSU1QodmFs KT0xMCAtPiBtYXRjaCB7MSwyfQorLS0gbWF0Y2hfc3RhcnQ9MygzMCk6IEE9aWQzLCBCPWlkNCwg RklSU1QodmFsKT0zMCE9MTAgLT4gbm8gbWF0Y2gKKy0tIG1hdGNoX3N0YXJ0PTQoMTApOiBBPWlk NCwgQj1pZDUsIEZJUlNUKHZhbCk9MTAgLT4gbWF0Y2ggezQsNX0KK1NFTEVDVCBpZCwgdmFsLCBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwK K0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMg VFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gMTAKKyk7CisKKy0tIExBU1QodmFsKTogYWx3YXlzIGVx dWFscyBjdXJyZW50IHJvdydzIHZhbCAob2Zmc2V0IDAgZGVmYXVsdCkKKy0tIEVxdWl2YWxlbnQg dG86IEIgQVMgdmFsID4gMTUKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1mLCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnByX25hdiBXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBMQVNUKHZhbCkg PiAxNQorKTsKKworLS0gUmVsdWN0YW50IEErPyB3aXRoIEZJUlNUKHZhbCkgPSBMQVNUKHZhbCk6 IGZpbmQgc2hvcnRlc3QgbWF0Y2ggd2hlcmUKKy0tIGZpcnN0IGFuZCBsYXN0IHJvd3MgaGF2ZSB0 aGUgc2FtZSB2YWwuCistLSBtYXRjaF9zdGFydD0xKDEwKTogcmVsdWN0YW50IHRyaWVzIEIgZWFy bHk6CistLSAgIGlkMigyMCE9MTApLCBpZDMoMzAhPTEwKSwgaWQ0KDEwPTEwKSAtPiBtYXRjaCB7 MSwyLDMsNH0KKy0tIG1hdGNoX3N0YXJ0PTUoNTApOiBpZDYoMTAhPTUwKSAtPiBubyBtYXRjaAor U0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtbAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErPyBC KQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1QodmFsKSA9IExBU1QodmFsKQorKTsK KworLS0gR3JlZWR5IEErIHdpdGggRklSU1QodmFsKSA9IExBU1QodmFsKTogZmluZCBsb25nZXN0 IG1hdGNoIHdoZXJlCistLSBmaXJzdCBhbmQgbGFzdCByb3dzIGhhdmUgdGhlIHNhbWUgdmFsLgor LS0gbWF0Y2hfc3RhcnQ9MSgxMCk6IGdyZWVkeSBBIGVhdHMgYWxsLCBCIHRyaWVzIGxhc3Q6Cist LSAgIGlkNigxMD0xMCkgLT4gbWF0Y2ggezEsMiwzLDQsNSw2fQorU0VMRUNUIGlkLCB2YWwsIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtbAor RlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMg VFJVRSwgQiBBUyBGSVJTVCh2YWwpID0gTEFTVCh2YWwpCispOworCistLSBTS0lQIFRPIE5FWFQg Uk9XIHdpdGggRklSU1QodmFsKSA9IExBU1QodmFsKTogb3ZlcmxhcHBpbmcgbWF0Y2ggYXR0ZW1w dHMuCistLSBXaXRoIE9ORSBST1cgUEVSIE1BVENILCBlYWNoIHJvdyBzaG93cyBvbmx5IGl0cyBm aXJzdCBtYXRjaCByZXN1bHQuCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtZiwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1sCitGUk9NIHJwcl9uYXYgV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1QodmFs KSA9IExBU1QodmFsKQorKTsKKworLS0gRklSU1QvTEFTVCAyLWFyZyBvZmZzZXQgZm9ybQorLS0K Ky0tIEZJUlNUKHZhbCwgMCkgPSBGSVJTVCh2YWwpOiBtYXRjaF9zdGFydCByb3cKK1NFTEVDVCBp ZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMg Y250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUg QSBBUyBUUlVFLCBCIEFTIEZJUlNUKHZhbCwgMCkgPSAxMAorKTsKKworLS0gRklSU1QodmFsLCAx KTogbWF0Y2hfc3RhcnQgKyAxIHJvdyAoc2Vjb25kIHJvdyBvZiBtYXRjaCkKKy0tIG1hdGNoX3N0 YXJ0PTEoMTApOiBGSVJTVCh2YWwsMSk9MjAsIEIgbmVlZHMgdmFsPTIwIC0+IGlkMigyMCkgbWF0 Y2gsIGlkMygzMCkgbm8KKy0tIG1hdGNoX3N0YXJ0PTMoMzApOiBGSVJTVCh2YWwsMSk9MTAsIEIg bmVlZHMgdmFsPTEwIC0+IGlkNCgxMCkgbWF0Y2gKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYg V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIHZh bCA9IEZJUlNUKHZhbCwgMSkKKyk7CisKKy0tIEZJUlNUKHZhbCwgOTkpOiBvZmZzZXQgYmV5b25k IG1hdGNoIHJhbmdlIC0+IE5VTEwsIG5vIG1hdGNoCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikg T1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisg ICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwsIDk5KSBJUyBOT1QgTlVMTAorKTsK KworLS0gTEFTVCh2YWwsIDApID0gTEFTVCh2YWwpOiBjdXJyZW50IHJvdworU0VMRUNUIGlkLCB2 YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQK K0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFT IFRSVUUsIEIgQVMgTEFTVCh2YWwsIDApID4gMTUKKyk7CisKKy0tIExBU1QodmFsLCAxKTogb25l IHJvdyBiYWNrIGZyb20gY3VycmVudCAocHJldmlvdXMgbWF0Y2ggcm93KQorLS0gQXQgQiBldmFs dWF0aW9uIG9uIGlkMjogTEFTVCh2YWwsMSkgPSB2YWwgYXQgaWQxID0gMTAKKy0tIEIgbWF0Y2hl cyB3aGVuIHByZXZpb3VzIHJvdyB2YWwgPCAzMAorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTEFT VCh2YWwsIDEpIDwgMzAKKyk7CisKKy0tIExBU1QodmFsLCA5OSk6IG9mZnNldCBiZWZvcmUgbWF0 Y2hfc3RhcnQgLT4gTlVMTAorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQK K0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFT IFRSVUUsIEIgQVMgTEFTVCh2YWwsIDk5KSBJUyBOT1QgTlVMTAorKTsKKworLS0gRXJyb3I6IE5V TEwgb2Zmc2V0CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEZST00gcnByX25hdiBX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyBGSVJTVCh2YWwsIE5VTEw6OmludDgpIElTIE5VTEwKKyk7CisKKy0tIEVycm9yOiBuZWdh dGl2ZSBvZmZzZXQKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2 IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIExBU1QodmFsLCAtMSkgSVMgTlVMTAorKTsKKworLS0gRklSU1QvTEFTVCBvdXRzaWRl IERFRklORSBjbGF1c2UgKGVycm9yIGNhc2VzKQorU0VMRUNUIGZpcnN0KHZhbCkgRlJPTSBycHJf bmF2OworU0VMRUNUIGxhc3QodmFsKSBGUk9NIHJwcl9uYXY7CitTRUxFQ1QgZmlyc3QodmFsLCAx KSBGUk9NIHJwcl9uYXY7CisKKy0tIEZ1bmN0aW9uYWwgbm90YXRpb246IHNob3VsZCBhY2Nlc3Mg Y29sdW1uLCBub3QgUlBSIG5hdmlnYXRpb24KK0NSRUFURSBURU1QIFRBQkxFIHJwcl9uYW1lcyAo cHJldiBpbnQsIG5leHQgaW50LCBmaXJzdCB0ZXh0LCBsYXN0IHRleHQpOworSU5TRVJUIElOVE8g cnByX25hbWVzIFZBTFVFUyAoMSwgMiwgJ0pvZScsICdCbG93Jyk7CitTRUxFQ1QgcHJldihmKSwg bmV4dChmKSwgZmlyc3QoZiksIGxhc3QoZikgRlJPTSBycHJfbmFtZXMgZjsKK0RST1AgVEFCTEUg cnByX25hbWVzOworCistLSBDb21wb3VuZCBuYXZpZ2F0aW9uOiBQUkVWKEZJUlNUKHZhbCksIE0p CistLSBycHJfbmF2OiAoMSwxMCksKDIsMjApLCgzLDMwKSwoNCwxMCksKDUsNTApLCg2LDEwKQor LS0gUFJFVihGSVJTVCh2YWwpLCAxKTogdGFyZ2V0ID0gbWF0Y2hfc3RhcnQgKyAwIC0gMSA9IG1h dGNoX3N0YXJ0IC0gMQorLS0gQXQgbWF0Y2hfc3RhcnQ9MTogdGFyZ2V0PTAgLT4gb3V0IG9mIHJh bmdlIC0+IE5VTEwKKy0tIEF0IG1hdGNoX3N0YXJ0PTM6IHRhcmdldD0yKHZhbD0yMCkgLT4gMjAg PiAwIC0+IHRydWUKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1m LCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsKSwgMSkg PiAwCispOworCistLSBORVhUKEZJUlNUKHZhbCwgMSksIDEpOiB0YXJnZXQgPSBtYXRjaF9zdGFy dCArIDEgKyAxID0gbWF0Y2hfc3RhcnQgKyAyCistLSBBdCBtYXRjaF9zdGFydD0xLCBCIG9uIGlk MjogdGFyZ2V0PTErMSsxPTModmFsPTMwKSwgMzA+MCAtPiB0cnVlCitTRUxFQ1QgaWQsIHZhbCwg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJP TSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJV RSwgQiBBUyBORVhUKEZJUlNUKHZhbCwgMSksIDEpID4gMAorKTsKKworLS0gUFJFVihMQVNUKHZh bCksIDIpOiB0YXJnZXQgPSBjdXJyZW50cG9zIC0gMCAtIDIgPSBjdXJyZW50cG9zIC0gMgorLS0g U2FtZSBiYWNrd2FyZCByZWFjaCBhcyBQUkVWKHZhbCwgMikKK1NFTEVDVCBpZCwgdmFsLCBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJw cl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBC IEFTIFBSRVYoTEFTVCh2YWwpLCAyKSBJUyBOT1QgTlVMTAorKTsKKworLS0gTkVYVChMQVNUKHZh bCwgMSksIDIpOiB0YXJnZXQgPSBjdXJyZW50cG9zIC0gMSArIDIgPSBjdXJyZW50cG9zICsgMQor LS0gTG9va3MgMSByb3cgYWhlYWQ6IHNhbWUgYXMgTkVYVCh2YWwsIDEpCitTRUxFQ1QgaWQsIHZh bCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAor RlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMg VFJVRSwgQiBBUyBORVhUKExBU1QodmFsLCAxKSwgMikgSVMgTk9UIE5VTEwKKyk7CisKKy0tIENv bXBvdW5kOiBvdXRlciBvZmZzZXQgYmV5b25kIHBhcnRpdGlvbiAoUFJFViBmYXIgYmFjaykKK1NF TEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBB UyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsKSwgOTkpIElTIE5PVCBOVUxMCispOworCistLSBD b21wb3VuZDogb3V0ZXIgb2Zmc2V0IGJleW9uZCBwYXJ0aXRpb24gKE5FWFQgZmFyIGZvcndhcmQp CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2IFdJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5F IEEgQVMgVFJVRSwgQiBBUyBORVhUKEZJUlNUKHZhbCksIDk5KSBJUyBOT1QgTlVMTAorKTsKKwor LS0gQ29tcG91bmQ6IGlubmVyIG9mZnNldCBiZXlvbmQgbWF0Y2ggcmFuZ2UgKEZJUlNUIG9mZnNl dCB0b28gbGFyZ2UpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJP TSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQisp CisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBQUkVWKEZJUlNUKHZhbCwgOTkpLCAxKSBJUyBO T1QgTlVMTAorKTsKKworLS0gQ29tcG91bmQ6IGlubmVyIG9mZnNldCBiZXlvbmQgbWF0Y2ggcmFu Z2UgKExBU1Qgb2Zmc2V0IHRvbyBsYXJnZSkKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVS IHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIE5FWFQoTEFTVCh2YWws IDk5KSwgMSkgSVMgTk9UIE5VTEwKKyk7CisKKy0tIENvbXBvdW5kOiBOVUxMIG91dGVyIG9mZnNl dCAocnVudGltZSBlcnJvcikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBy cHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIFBSRVYoRklSU1QodmFsKSwgTlVMTDo6aW50OCkgSVMgTlVMTAorKTsKKwor LS0gQ29tcG91bmQ6IG5lZ2F0aXZlIG91dGVyIG9mZnNldCAocnVudGltZSBlcnJvcikKK1NFTEVD VCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQoTEFTVCh2 YWwpLCAtMSkgSVMgTlVMTAorKTsKKworLS0gQ29tcG91bmQ6IGRlZmF1bHQgb2Zmc2V0cyBvbiBi b3RoIHNpZGVzCistLSBQUkVWKEZJUlNUKHZhbCkpOiBpbm5lcj0wIChtYXRjaF9zdGFydCksIG91 dGVyPTEgLT4gdGFyZ2V0ID0gbWF0Y2hfc3RhcnQgLSAxCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJf bmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBB UyBQUkVWKEZJUlNUKHZhbCkpIElTIE5PVCBOVUxMCispOworCistLSBORVhUKExBU1QodmFsKSk6 IGlubmVyPTAgKGN1cnJlbnRwb3MpLCBvdXRlcj0xIC0+IHRhcmdldCA9IGN1cnJlbnRwb3MgKyAx CitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikg T1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisg ICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBORVhUKExBU1QodmFsKSkgSVMgTk9UIE5VTEwKKyk7 CisKKy0tIENvbXBvdW5kOiBpbm5lciBOVUxMIG9mZnNldCAocnVudGltZSBlcnJvcikKK1NFTEVD VCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYoRklSU1Qo dmFsLCBOVUxMOjppbnQ4KSwgMSkgSVMgTlVMTAorKTsKKworLS0gQ29tcG91bmQ6IGlubmVyIG5l Z2F0aXZlIG9mZnNldCAocnVudGltZSBlcnJvcikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBP VkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQoTEFTVCh2YWwsIC0xKSwgMSkgSVMgTlVMTAor KTsKKworLS0gQ29tcG91bmQgKyBob3N0IHZhcmlhYmxlIG9mZnNldHMKK1BSRVBBUkUgdGVzdF9j b21wb3VuZF9vZmZzZXQoaW50OCwgaW50OCkgQVMKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYg V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBS RVYoRklSU1QodmFsLCAkMSksICQyKSBJUyBOT1QgTlVMTAorKTsKK0VYRUNVVEUgdGVzdF9jb21w b3VuZF9vZmZzZXQoMCwgMSk7CitFWEVDVVRFIHRlc3RfY29tcG91bmRfb2Zmc2V0KDEsIDEpOwor REVBTExPQ0FURSB0ZXN0X2NvbXBvdW5kX29mZnNldDsKKworLS0gQ29tcG91bmQgKyBTS0lQIFRP IE5FWFQgUk9XOiBvdmVybGFwcGluZyBtYXRjaGVzIHdpdGggUFJFVihGSVJTVCgpKQorU0VMRUNU IGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUg QSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsKSwgMSkgPiAwCispOworCistLSBDb21wb3Vu ZCArIG11bHRpcGxlIHBhcnRpdGlvbnMKK0NSRUFURSBURU1QIFRBQkxFIHJwcl9uYXZfcGFydCAo Z2lkIGludCwgaWQgaW50LCB2YWwgaW50KTsKK0lOU0VSVCBJTlRPIHJwcl9uYXZfcGFydCBWQUxV RVMKKyAgICAoMSwxLDEwKSwoMSwyLDIwKSwoMSwzLDMwKSwKKyAgICAoMiwxLDQwKSwoMiwyLDUw KSwoMiwzLDYwKTsKK1NFTEVDVCBnaWQsIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdl9wYXJ0IFdJTkRPVyB3 IEFTICgKKyAgICBQQVJUSVRJT04gQlkgZ2lkIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVF LCBCIEFTIE5FWFQoRklSU1QodmFsKSwgMSkgPiAwCispOworRFJPUCBUQUJMRSBycHJfbmF2X3Bh cnQ7CisKKy0tIFJldmVyc2UgbmVzdGluZzogRklSU1Qgd3JhcHBpbmcgUFJFViBpcyBwcm9oaWJp dGVkCitTRUxFQ1QgaWQsIHZhbCBGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1Qo UFJFVih2YWwpKSA+IDAKKyk7CisKKy0tIFJldmVyc2UgbmVzdGluZzogTEFTVCB3cmFwcGluZyBO RVhUIGlzIHByb2hpYml0ZWQKK1NFTEVDVCBpZCwgdmFsIEZST00gcnByX25hdiBXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgVFJV RSwgQiBBUyBMQVNUKE5FWFQodmFsKSkgPiAwCispOworCitEUk9QIFRBQkxFIHJwcl9uYXY7CisK Ky0tCistLSBTS0lQIFRPIC8gQmFja3RyYWNraW5nIC8gRnJhbWUgYm91bmRhcnkKKy0tCisKKy0t IG1hdGNoIGV2ZXJ5dGhpbmcKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3Zh bHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3RvY2sK KyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQor IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChBKykKKyBERUZJ TkUKKyAgQSBBUyBUUlVFCispOworCistLSBudGhfdmFsdWUgYmV5b25kIHJlZHVjZWQgZnJhbWUg KG5vIElHTk9SRSBOVUxMUykKKy0tIFRlc3RzIFdpbkdldFNsb3RJbkZyYW1lL1dpbkdldEZ1bmNB cmdJbkZyYW1lIG91dC1vZi1mcmFtZSB3aXRoIFJQUgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwKKyBudGhfdmFsdWUocHJpY2UsIDUpIE9WRVIgdyBBUyBudGhfNQorRlJPTSBzdG9jawor V0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVG SU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERP V04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gYmFja3RyYWNraW5nIHdpdGggcmVj bGFzc2lmaWNhdGlvbiBvZiByb3dzCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHRkYXRlKSBP VkVSIHcsIGxhc3RfdmFsdWUodGRhdGUpIE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBB UyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworIElOSVRJQUwKKyBQQVRURVJOIChBKyBCKykKKyBERUZJTkUKKyAgQSBB UyBwcmljZSA+IDEwMCwKKyAgQiBBUyBwcmljZSA+IDEwMAorKTsKKworLS0gYmFja3RyYWNraW5n IHdpdGggcmVjbGFzc2lmaWNhdGlvbiBvZiByb3dzCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZSh0 ZGF0ZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgSU5JVElBTAorIFBBVFRFUk4gKEErIEIrKQorIERFRklORQor ICBBIEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNlID4gMTAwCispOworCistLSBTS0lQIFRP IE5FWFQgUk9XIHdpdGggbGltaXRlZCBmcmFtZSAoSXNoaWktc2FuJ3MgdGVzdCBjYXNlKQorLS0g RWFjaCByb3cgc2hvdWxkIHByb2R1Y2UgaXRzIG93biBtYXRjaCB3aXRoaW4gaXRzIGZyYW1lCitX SVRIIGRhdGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoJ0EnLCAxKSwgKCdBJywg MiksCisgICgnQicsIDMpLCAoJ0InLCA0KQorICkgQVMgdChnaWQsIGlkKQorKQorU0VMRUNUIGdp ZCwgaWQsIGFycmF5X2FnZyhpZCkgT1ZFUiB3CitGUk9NIGRhdGEKK1dJTkRPVyB3IEFTICgKKyBQ QVJUSVRJT04gQlkgZ2lkCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lO RworIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyBQQVRURVJOIChBKykKKyBERUZJTkUg QSBBUyBpZCA8IDEwCispOworCistLSBMaW1pdGVkIGZyYW1lIHdpdGggYWJzb3JwdGlvbiB0ZXN0 CistLSBSb3cgMDogZnJhbWUgWzAsMl0sIGNhbid0IHNlZSBCIGF0IHJvdyAzIC0+IG5vIG1hdGNo CistLSBSb3cgMTogZnJhbWUgWzEsM10sIGNhbiBzZWUgQSBBIEIgLT4gc2hvdWxkIG1hdGNoIHJv d3MgMS0zCitXSVRIIGZyYW1lX2Fic29yYl90ZXN0IEFTICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgKDAsICdBJyksICgxLCAnQScpLCAoMiwgJ0EnKSwgKDMsICdCJykKKyApIEFTIHQoaWQs IGZsYWcpCispCitTRUxFQ1QgaWQsIGZsYWcsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gZnJhbWVf YWJzb3JiX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyBQQVRURVJOIChBKyBCKQorIERFRklORQorICBBIEFTIGZsYWcgPSAnQScsCisgIEIgQVMg ZmxhZyA9ICdCJworKTsKKworLS0gUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBvZmZzZXQg Rk9MTE9XSU5HCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZSh0ZGF0 ZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcsCisgY291bnQoKikgT1ZFUiB3Cisg RlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVS IEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lORworIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykK KyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwK KyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworCistLQorLS0gQWdncmVnYXRlcwor LS0KKworLS0gdXNpbmcgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCitTRUxFQ1QgY29t cGFueSwgdGRhdGUsIHByaWNlLAorIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbGFzdF92 YWx1ZShwcmljZSkgT1ZFUiB3LAorIG1heChwcmljZSkgT1ZFUiB3LAorIG1pbihwcmljZSkgT1ZF UiB3LAorIHN1bShwcmljZSkgT1ZFUiB3LAorIGF2ZyhwcmljZSkgT1ZFUiB3LAorIGNvdW50KHBy aWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKK1BBUlRJVElPTiBCWSBjb21w YW55CitST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKK0FG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworSU5JVElBTAorUEFUVEVSTiAoU1RBUlQgVVAr IERPV04rKQorREVGSU5FCitTVEFSVCBBUyBUUlVFLAorVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNl KSwKK0RPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gdXNpbmcgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyBmaXJz dF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBtYXgo cHJpY2UpIE9WRVIgdywKKyBtaW4ocHJpY2UpIE9WRVIgdywKKyBzdW0ocHJpY2UpIE9WRVIgdywK KyBhdmcocHJpY2UpIE9WRVIgdywKKyBjb3VudChwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitX SU5ET1cgdyBBUyAoCitQQVJUSVRJT04gQlkgY29tcGFueQorUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCitBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CitJTklUSUFMCitQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCitERUZJTkUKK1NUQVJUIEFTIFRS VUUsCitVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorRE9XTiBBUyBwcmljZSA8IFBSRVYocHJp Y2UpCispOworCistLSByb3dfbnVtYmVyKCkgd2l0aGluIFJQUiByZWR1Y2VkIGZyYW1lCitTRUxF Q1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCByb3dfbnVtYmVyKCkgT1ZFUiB3LCBjb3VudCgqKSBP VkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQor IE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAoU1RB UlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+ IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tCist LSBTUUwgSW50ZWdyYXRpb246IEpPSU4sIENURSwgTEFURVJBTAorLS0KKworLS0gSk9JTiBjYXNl CitDUkVBVEUgVEVNUCBUQUJMRSB0MSAoaSBpbnQsIHYxIGludCk7CitDUkVBVEUgVEVNUCBUQUJM RSB0MiAoaiBpbnQsIHYyIGludCk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMSwxMCk7CitJTlNF UlQgSU5UTyB0MSBWQUxVRVMoMSwxMSk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMSwxMik7CitJ TlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwxMCk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwxMSk7 CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwxMik7CisKK1NFTEVDVCAqIEZST00gdDEsIHQyIFdI RVJFIHQxLnYxIDw9IDExIEFORCB0Mi52MiA8PSAxMTsKKworU0VMRUNUICosIGNvdW50KCopIE9W RVIgdyBGUk9NIHQxLCB0MgorV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSB0MS5pCisgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAor IFBBVFRFUk4gKEEpCisgREVGSU5FCisgQSBBUyB2MSA8PSAxMSBBTkQgdjIgPD0gMTEKKyk7CisK Ky0tIFdJVEggY2FzZQorV0lUSCB3c3RvY2sgQVMgKAorICBTRUxFQ1QgKiBGUk9NIHN0b2NrIFdI RVJFIHRkYXRlIDwgJzIwMjMtMDctMDgnCispCitTRUxFQ1QgdGRhdGUsIHByaWNlLAorZmlyc3Rf dmFsdWUodGRhdGUpIE9WRVIgdywKK2NvdW50KCopIE9WRVIgdworIEZST00gd3N0b2NrCisgV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisg UEFUVEVSTiAoU1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBV UCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkK Kyk7CisKKy0tIFJlU2NhbiB0ZXN0OiBMQVRFUkFMIGpvaW4gZm9yY2VzIFdpbmRvd0FnZyByZXNj YW4gd2l0aCBSUFIKKy0tIFRlc3RzIEV4ZWNSZVNjYW5XaW5kb3dBZ2cgY2xlYXJpbmcgbmF2X3Ns b3QKK1NFTEVDVCBnLngsIHN1Yi4qCitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyKSBnKHgpLAor TEFURVJBTCAoCisgIFNFTEVDVCBpZCwgcHJpY2UsIGNvdW50KCopIE9WRVIgdyBBUyBjCisgIEZS T00gKFZBTFVFUyAoMSwgMTAwKSwgKDIsIDIwMCksICgzLCAxNTApKSBBUyB0KGlkLCBwcmljZSkK KyAgV0hFUkUgaWQgPD0gZy54ICsgMQorICBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChTVEFSVCBVUCspCisgICAgREVGSU5FCisgICAgICBTVEFSVCBBUyBUUlVFLAor ICAgICAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKQorICApCispIHN1YgorT1JERVIgQlkgZy54 LCBzdWIuaWQ7CisKKy0tIFBSRVYgaGFzIG11bHRpcGxlIGNvbHVtbiByZWZlcmVuY2UKK0NSRUFU RSBURU1QIFRBQkxFIHJwcjEgKGlkIElOVEVHRVIsIGkgU0VSSUFMLCBqIElOVEVHRVIpOworSU5T RVJUIElOVE8gcnByMShpZCwgaikgU0VMRUNUIDEsIGcqMiBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAxMCkgQVMgZzsKK1NFTEVDVCBpZCwgaSwgaiwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBycHIx CisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBpZAorIE9SREVSIEJZIGkKKyBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgQ09ORCspCisgREVG SU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIENPTkQgQVMgUFJFVihpICsgaiArIDEpIDwgMTAKKyk7 CisKKy0tCistLSBMYXJnZS1zY2FsZSAvIHNjYWxhYmlsaXR5IHRlc3RzCistLQorCistLSBTbW9r ZSB0ZXN0IGZvciBsYXJnZXIgcGFydGl0aW9ucy4KK1dJVEggcyBBUyAoCisgU0VMRUNUIHYsIGNv dW50KCopIE9WRVIgdyBBUyBjCisgRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAw KSB2KQorIFdJTkRPVyB3IEFTICgKKyAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICBJTklU SUFMCisgIFBBVFRFUk4gKCByKyApCisgIERFRklORSByIEFTIFRSVUUKKyApCispCistLSBTaG91 bGQgYmUgZXhhY3RseSBvbmUgbG9uZyBtYXRjaCBhY3Jvc3MgYWxsIHJvd3MuCitTRUxFQ1QgKiBG Uk9NIHMgV0hFUkUgYyA+IDA7CisKK1dJVEggcyBBUyAoCisgU0VMRUNUIHYsIGNvdW50KCopIE9W RVIgdyBBUyBjCisgRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSB2KQorIFdJ TkRPVyB3IEFTICgKKyAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICBJTklUSUFMCisgIFBB VFRFUk4gKCByICkKKyAgREVGSU5FIHIgQVMgVFJVRQorICkKKykKKy0tIEV2ZXJ5IHJvdyBzaG91 bGQgYmUgaXRzIG93biBtYXRjaC4KK1NFTEVDVCBjb3VudCgqKSBGUk9NIHMgV0hFUkUgYyA+IDA7 CisKKy0tIExhcmdlIHBhcnRpdGlvbiB0ZXN0OiAxMDBLIHJvd3Mgd2l0aCBBKyBCKiBDezEwMDAw LH0gcGF0dGVybgorLS0gVGVzdHMgdGhhdCBpbnQzMiBjb3VudCBkb2Vzbid0IG92ZXJmbG93IHdp dGggbGFyZ2UgcmVwZXRpdGlvbnMKK1dJVEggZGF0YSBBUyAoCisgU0VMRUNUIGdlbmVyYXRlX3Nl cmllcygwLCAxMDAwMDApIEFTIHYKKyksCityZXN1bHQgQVMgKAorIFNFTEVDVCB2LAorICAgICAg ICBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVuLAorICAgICAgICBmaXJzdF92YWx1ZSh2KSBP VkVSIHcgQVMgbWF0Y2hfZmlyc3QsCisgICAgICAgIGxhc3RfdmFsdWUodikgT1ZFUiB3IEFTIG1h dGNoX2xhc3QKKyBGUk9NIGRhdGEKKyBXSU5ET1cgdyBBUyAoCisgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgSU5JVElBTAorICBQQVRURVJOIChBKyBCKiBDezEwMDAwLH0pCisgIERFRklO RQorICAgQSBBUyB2IDwgMzMzMzMsCisgICBCIEFTIHYgPj0gMzMzMzMgQU5EIHYgPCA2NjY2NiwK KyAgIEMgQVMgdiA+PSA2NjY2NiBBTkQgdiA8IDk5OTk5CisgKQorKQorLS0gU2hvdWxkIG1hdGNo OiBBICgzMzMzMyByb3dzKSArIEIgKDMzMzMzIHJvd3MpICsgQyAoMzMzMzMgcm93cykgPSA5OTk5 OSByb3dzCitTRUxFQ1QgbWF0Y2hfZmlyc3QsIG1hdGNoX2xhc3QsIG1hdGNoX2xlbiBGUk9NIHJl c3VsdCBXSEVSRSBtYXRjaF9sZW4gPiAwOworCistLSBKSVQgUFJFVi9ORVhUIG5hdmlnYXRpb24g dGVzdDogMTAwSyByb3dzIHdpdGggUFJFViBpbiBERUZJTkUuCistLSBFeGVyY2lzZXMgRUVPUF9S UFJfTkFWX1NFVC9SRVNUT1JFIEpJVCBjb2RlIHBhdGhzIChoYXNfcnByX25hdiByZWxvYWQpCist LSBhdCBzY2FsZS4gVi1zaGFwZTogcHJpY2UgcmlzZXMgdGhlbiBmYWxscywgcmVwZWF0ZWQgYWNy b3NzIHBhcnRpdGlvbi4KK1NFVCBqaXQgPSBvbjsKK1NFVCBqaXRfYWJvdmVfY29zdCA9IDA7CitX SVRIIGRhdGEgQVMgKAorIFNFTEVDVCBpLCBhYnMoNTAwMDAgLSBpKSBBUyBwcmljZQorIEZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAwMCkgaQorKSwKK3Jlc3VsdCBBUyAoCisgU0VMRUNUIGks IHByaWNlLAorICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVuLAorICAgICAgICBm aXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIG1hdGNoX2ZpcnN0CisgRlJPTSBkYXRhCisgV0lO RE9XIHcgQVMgKAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElOSVRJQUwKKyAgUEFU VEVSTiAoRE9XTisgVVArKQorICBERUZJTkUKKyAgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNl KSwKKyAgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSkKKyApCispCitTRUxFQ1QgY291bnQoKikg QVMgbWF0Y2hlZF9yb3dzLCBtYXgobWF0Y2hfbGVuKSBBUyBsb25nZXN0X21hdGNoCitGUk9NIHJl c3VsdCBXSEVSRSBtYXRjaF9sZW4gPiAwOworUkVTRVQgaml0X2Fib3ZlX2Nvc3Q7CitSRVNFVCBq aXQ7CisKKy0tIEpJVCBjb21wb3VuZCBuYXZpZ2F0aW9uIHRlc3QKK1NFVCBqaXQgPSBvbjsKK1NF VCBqaXRfYWJvdmVfY29zdCA9IDA7CitTRUxFQ1QgY291bnQoKikgQVMgbWF0Y2hlZF9yb3dzCitG Uk9NICgKKyBTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2xlbgorIEZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHQodikKKyBXSU5ET1cgdyBBUyAoCisgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgUEFUVEVSTiAoQSBCKykKKyAgREVGSU5FIEEgQVMgVFJVRSwg QiBBUyBQUkVWKEZJUlNUKHYpLCAxKSA+IDAKKyApCispIHN1YiBXSEVSRSBtYXRjaF9sZW4gPiAw OworUkVTRVQgaml0X2Fib3ZlX2Nvc3Q7CitSRVNFVCBqaXQ7CisKKy0tCistLSBJR05PUkUgTlVM TFMKKy0tCisKKy0tIG5vIE5VTEwgcm93cyBjYXNlLiBUaGUgcmVzdWx0IHNob3VsZCBiZSBpZGVu dGljYWwgd2l0aCAiYmFzaWMgdGVzdCB1c2luZyBQUkVWIgorU0VMRUNUIGNvbXBhbnksIHRkYXRl LCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIElHTk9SRSBOVUxMUyBPVkVSIHcsCisgbGFzdF92 YWx1ZShwcmljZSkgSUdOT1JFIE5VTExTIE9WRVIgdywKKyBudGhfdmFsdWUodGRhdGUsIDIpIElH Tk9SRSBOVUxMUyBPVkVSIHcgQVMgbnRoX3NlY29uZAorIEZST00gc3RvY2sKKyBXSU5ET1cgdyBB UyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAoU1RBUlQgVVArIERPV04r KQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2Up LAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisKKy0tIG50aF92YWx1ZSB3aXRo IElHTk9SRSBOVUxMUyBvcHRpb24gd2FudHMgdG8gZmluZCB0aGUgc2Vjb25kIHJvdyBidXQKKy0t IGR1ZSB0byBhIE5VTEwgaW4gdGhlIG1pZGRsZSwgaXQgcmV0dXJucyB0aGUgdGhpcmQgcm93Lgor V0lUSCBkYXRhIEFTICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgKDEwLCAxKSwgKDExLCBO VUxMKSwgKDEyLCAzKSwgKDEzLCA0KQorICApIEFTIHQoZ2lkLCBpZCkpCisgIFNFTEVDVCBnaWQs IGlkLCBudGhfdmFsdWUoaWQsIDIpIElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgc2Vjb25kX3ZhbCwK KyAgYXJyYXlfYWdnKGlkKSBPVkVSIHcKKyAgRlJPTSBkYXRhCisgIFdJTkRPVyB3IEFTICgKKyAg IE9SREVSIEJZIGdpZAorICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgIFBBVFRFUk4g KEErKQorICAgREVGSU5FIEEgQVMgZ2lkIDwgMTMKKyAgKTsKKworLS0gbnRoX3ZhbHVlIHdpdGgg SUdOT1JFIE5VTExTIG9wdGlvbiB3YW50cyB0byBmaW5kIHRoZSB0aGlyZCByb3cgYnV0CistLSBk dWUgdG8gYSBOVUxMIGluIHRoZSBtaWRkbGUsIGl0IHJlYWNoZXMgdGhlIGVuZCBvZiByZWR1Y2Vk IGZyYW1lIGFuZAorLS0gcmV0dXJucyBOVUxMCitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAoMTAsIDEpLCAoMTEsIE5VTEwpLCAoMTIsIDMpLCAoMTMsIDQpCisgICkg QVMgdChnaWQsIGlkKSkKKyAgU0VMRUNUIGdpZCwgaWQsIG50aF92YWx1ZShpZCwgMykgSUdOT1JF IE5VTExTIE9WRVIgdyBBUyB0aHJpZF92YWwsCisgIGFycmF5X2FnZyhpZCkgT1ZFUiB3CisgIEZS T00gZGF0YQorICBXSU5ET1cgdyBBUyAoCisgICBPUkRFUiBCWSBnaWQKKyAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICBQQVRURVJOIChBKykKKyAgIERFRklORSBBIEFTIGdpZCA8IDEz CisgICk7CisKKy0tIG50aF92YWx1ZSBiZXlvbmQgcmVkdWNlZCBmcmFtZSB3aXRoIElHTk9SRSBO VUxMUworLS0gVGVzdHMgaWdub3JlbnVsbHNfZ2V0ZnVuY2FyZ2luZnJhbWUgZWFybHkgb3V0LW9m LWZyYW1lIGNoZWNrCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorIG50aF92YWx1ZShw cmljZSwgNSkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBudGhfNV9pbgorRlJPTSBzdG9jaworV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5F CisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04g QVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKworLS0gSUdOT1JFIE5VTExTICsgZmlyc3RfdmFs dWUgd2hlcmUgZmlyc3QgdmFsdWUgaW4gcmVkdWNlZCBmcmFtZSBpcyBOVUxMCitXSVRIIGRhdGEg QVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoMSwgTlVMTCksICgyLCBOVUxMKSwgKDMs IDMwKSwgKDQsIDQwKQorICkgQVMgdChpZCwgdmFsKSkKK1NFTEVDVCBpZCwgdmFsLAorIGZpcnN0 X3ZhbHVlKHZhbCkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBmdl9pZ251bGwsCisgY291bnQoKikg T1ZFUiB3CitGUk9NIGRhdGEKK1dJTkRPVyB3IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKEErKQorIERFRklORSBBIEFTIFRSVUUKKyk7CisK Ky0tIElHTk9SRSBOVUxMUyArIGFsbCB2YWx1ZXMgTlVMTCBpbiByZWR1Y2VkIGZyYW1lCitXSVRI IGRhdGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoMSwgTlVMTCksICgyLCBOVUxM KSwgKDMsIE5VTEwpCisgKSBBUyB0KGlkLCB2YWwpKQorU0VMRUNUIGlkLCB2YWwsCisgZmlyc3Rf dmFsdWUodmFsKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGZ2X2lnbnVsbCwKKyBsYXN0X3ZhbHVl KHZhbCkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsdl9pZ251bGwsCisgY291bnQoKikgT1ZFUiB3 CitGUk9NIGRhdGEKK1dJTkRPVyB3IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworIFBBVFRFUk4gKEErKQorIERFRklORSBBIEFTIFRSVUUKKyk7CisKKy0tCist LSBsYXN0X3ZhbHVlIElHTk9SRSBOVUxMUyB3aXRoIHJlZHVjZWQgZnJhbWUgY29udGFpbmluZyBh bGwgTlVMTHMKKy0tIEV4ZXJjaXNlcyBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZSBTRUVL X1RBSUwgb3V0LW9mLWZyYW1lIHBhdGgKKy0tIHdoZW4gbm90bnVsbF9yZWxwb3MgPj0gbnVtX3Jl ZHVjZWRfZnJhbWUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgcnByX251bGx2YWwgKGlkIElOVCwg dmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfbnVsbHZhbCBWQUxVRVMgKDEsIDEwKSwgKDIsIE5V TEwpLCAoMywgTlVMTCksICg0LCAyMCk7CisKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIGxhc3Rf dmFsdWUodmFsKSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIGx2X2lnbnVsbCwKKyAgICAgICBjb3Vu dCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9udWxsdmFsCitXSU5ET1cgdyBBUyAoCisgIE9S REVSIEJZIGlkCisgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgUEFUVEVSTiAoQSBCKykK KyAgREVGSU5FCisgICAgQSBBUyB2YWwgSVMgTk9UIE5VTEwsCisgICAgQiBBUyB2YWwgSVMgTlVM TAorKTsKKworLS0KKy0tIE5VTEwgaGFuZGxpbmcKKy0tCisKK0NSRUFURSBURU1QIFRBQkxFIHN0 b2NrX251bGwgKGNvbXBhbnkgVEVYVCwgdGRhdGUgREFURSwgcHJpY2UgSU5URUdFUik7CitJTlNF UlQgSU5UTyBzdG9ja19udWxsIFZBTFVFUyAoJ2MxJywgJzIwMjMtMDctMDEnLCAxMDApOworSU5T RVJUIElOVE8gc3RvY2tfbnVsbCBWQUxVRVMgKCdjMScsICcyMDIzLTA3LTAyJywgTlVMTCk7ICAt LSBOVUxMIGluIG1pZGRsZQorSU5TRVJUIElOVE8gc3RvY2tfbnVsbCBWQUxVRVMgKCdjMScsICcy MDIzLTA3LTAzJywgMjAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrX251bGwgVkFMVUVTICgnYzEnLCAn MjAyMy0wNy0wNCcsIDE1MCk7CisKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50 KCopIE9WRVIgdyBBUyBtYXRjaF9jb3VudAorRlJPTSBzdG9ja19udWxsCitXSU5ET1cgdyBBUyAo CisgIFBBUlRJVElPTiBCWSBjb21wYW55CisgIE9SREVSIEJZIHRkYXRlCisgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBQQVRURVJOIChTVEFSVCBV UCBET1dOKQorICBERUZJTkUgU1RBUlQgQVMgVFJVRSwgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNl KSwgRE9XTiBBUyBwcmljZSA8CitQUkVWKHByaWNlKQorKTsKKworLS0gQ29uc2VjdXRpdmUgTlVM THM6IFBSRVYgbmF2aWdhdGVzIHRocm91Z2ggTlVMTCB2YWx1ZXMKK0NSRUFURSBURU1QIFRBQkxF IHJwcl9jb25zZWNfbnVsbCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9jb25z ZWNfbnVsbCBWQUxVRVMKKyAoMSwgMTAwKSwgKDIsIE5VTEwpLCAoMywgTlVMTCksICg0LCBOVUxM KSwgKDUsIDIwMCksICg2LCAzMDApOworCistLSBQUkVWKHZhbCkgSVMgTlVMTCBzdWNjZWVkcyBm b3IgYm90aCBudWxsX3Nsb3QgKGZpcnN0IHJvdykgYW5kIGFjdHVhbCBOVUxMCitTRUxFQ1QgaWQs IHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfY29uc2VjX251bGwKK1dJTkRP VyB3IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRF Uk4gKEEgQisgQykKKyBERUZJTkUKKyAgQSBBUyB2YWwgSVMgTlVMTCwKKyAgQiBBUyB2YWwgSVMg TlVMTCBBTkQgUFJFVih2YWwpIElTIE5VTEwsCisgIEMgQVMgdmFsIElTIE5PVCBOVUxMCispOwor CistLSBORVhUKHZhbCkgdGhyb3VnaCBjb25zZWN1dGl2ZSBOVUxMcworU0VMRUNUIGlkLCB2YWws IGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2NvbnNlY19udWxsCitXSU5ET1cgdyBB UyAoCisgT1JERVIgQlkgaWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChB IEIrIEMpCisgREVGSU5FCisgIEEgQVMgdmFsIElTIE5PVCBOVUxMLAorICBCIEFTIHZhbCBJUyBO VUxMIEFORCBORVhUKHZhbCkgSVMgTlVMTCwKKyAgQyBBUyB2YWwgSVMgTlVMTCBBTkQgTkVYVCh2 YWwpIElTIE5PVCBOVUxMCispOworCitEUk9QIFRBQkxFIHJwcl9jb25zZWNfbnVsbDsKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBTdG9jayBTY2VuYXJpbyBUZXN0cyAoMTYzMiByb3dzLCBwYXJ0aXRpb25lZCByZWdp b25zKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisKKy0tIENvbnNlY3V0aXZlIHJpc2luZyBkYXlzOiBmaW5kIHN0cmVha3Mg b2YgNysgZGF5cworU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBP VkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBl bmRfcm4sCisgICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJf c3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisg ICAgICAgIE9SREVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICAgICAgUEFUVEVSTiAoVVB7Nyx9KQorICAgICAgICBERUZJTkUgVVAgQVMgcHJpY2Ug PiBQUkVWKHByaWNlKQorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFydF9y bjsKKworLS0gVi1zaGFwZSByZWNvdmVyeTogNCsgZGF5cyBkZWNsaW5lIGZvbGxvd2VkIGJ5IDQr IGRheXMgcmlzZQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBP VkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBl bmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJp Y2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisg ICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9S REVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAg ICAgUEFUVEVSTiAoREVDTElORXs0LH0gUklTRXs0LH0pCisgICAgICAgIERFRklORQorICAgICAg ICAgICAgREVDTElORSBBUyBwcmljZSA8IFBSRVYocHJpY2UpLAorICAgICAgICAgICAgUklTRSBB UyBwcmljZSA+IFBSRVYocHJpY2UpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZ IHN0YXJ0X3JuOworCistLSBXLWJvdHRvbTogZGVjbGluZSwgYm91bmNlLCByZS1kZWNsaW5lLCBy ZWNvdmVyeQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBPVkVS IHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBlbmRf cm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJpY2Us CisgICAgICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisgICAg ICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAgICBX SU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9SREVS IEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAg UEFUVEVSTiAoREVDTElORXszLH0gQk9VTkNFezMsfSBESVB7Myx9IFJFQ09WRVJ7Myx9KQorICAg ICAgICBERUZJTkUKKyAgICAgICAgICAgIERFQ0xJTkUgQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwK KyAgICAgICAgICAgIEJPVU5DRSBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICAgICAgICAgICAg RElQIEFTIHByaWNlIDwgUFJFVihwcmljZSksCisgICAgICAgICAgICBSRUNPVkVSIEFTIHByaWNl ID4gUFJFVihwcmljZSkKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIgQlkgc3RhcnRf cm47CisKKy0tIFZvbHVtZSBzdXJnZSBzdHJlYWs6IDYrIGNvbnNlY3V0aXZlIGRheXMgb2YgaW5j cmVhc2luZyB2b2x1bWUKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBmaXJzdF92YWx1ZShy bikgT1ZFUiB3IEFTIHN0YXJ0X3JuLAorICAgICAgICAgICBsYXN0X3ZhbHVlKHJuKSBPVkVSIHcg QVMgZW5kX3JuLAorICAgICAgICAgICBmaXJzdF92YWx1ZSh2b2x1bWUpIE9WRVIgdyBBUyBzdGFy dF92b2wsCisgICAgICAgICAgIGxhc3RfdmFsdWUodm9sdW1lKSBPVkVSIHcgQVMgZW5kX3ZvbCwK KyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jawor ICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAg T1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg ICAgICBQQVRURVJOIChJTklUIFNVUkdFezUsfSkKKyAgICAgICAgREVGSU5FCisgICAgICAgICAg ICBTVVJHRSBBUyB2b2x1bWUgPiBQUkVWKHZvbHVtZSkKKyAgICApCispIHQgV0hFUkUgZGF5cyA+ IDAgT1JERVIgQlkgc3RhcnRfcm47CisKKy0tIFZvbGF0aWxpdHkgc3F1ZWV6ZTogY29uc2VjdXRp dmUgbmFycm93aW5nIG9mIGRhaWx5IHByaWNlIHJhbmdlCitTRUxFQ1QgKiBGUk9NICgKKyAgICBT RUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFz dF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUoaGln aCAtIGxvdykgT1ZFUiB3IEFTIHN0YXJ0X3JhbmdlLAorICAgICAgICAgICBsYXN0X3ZhbHVlKGhp Z2ggLSBsb3cpIE9WRVIgdyBBUyBlbmRfcmFuZ2UsCisgICAgICAgICAgIGNvdW50KCopIE9WRVIg dyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAg IFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9SREVSIEJZIHJuCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoSU5JVCBOQVJST1d7 NSx9KQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIE5BUlJPVyBBUyAoaGlnaCAtIGxvdykg PCBQUkVWKGhpZ2gpIC0gUFJFVihsb3cpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVS IEJZIHN0YXJ0X3JuOworCistLSBHYXAgdXA6IG9wZW4gc2lnbmlmaWNhbnRseSBoaWdoZXIgdGhh biBwcmV2aW91cyBjbG9zZSAoNSUrKQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0 X3ZhbHVlKHJuKSBPVkVSIHcgQVMgZ2FwX3JuLAorICAgICAgICAgICBmaXJzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3IEFTIHByZXZfY2xvc2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUob3BlbikgT1ZF UiB3IEFTIGdhcF9vcGVuLAorICAgICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAg RlJPTSBycHJfc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBw YXJ0X2lkCisgICAgICAgIE9SREVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoUFJFVl9EQVkgR0FQX1VQKQorICAgICAgICBE RUZJTkUKKyAgICAgICAgICAgIEdBUF9VUCBBUyBvcGVuID4gUFJFVihwcmljZSkgKiAxLjA1Cisg ICAgKQorKSB0IFdIRVJFIGNudCA+IDAgT1JERVIgQlkgZ2FwX3JuOworCistLSBQcmljZS12b2x1 bWUgZGl2ZXJnZW5jZTogcHJpY2UgcmlzaW5nIHdoaWxlIHZvbHVtZSBkZWNsaW5pbmcgKGJlYXJp c2ggc2lnbmFsKQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBP VkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBl bmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJp Y2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisg ICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9S REVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAg ICAgUEFUVEVSTiAoSU5JVCBESVZFUkdFezMsfSkKKyAgICAgICAgREVGSU5FCisgICAgICAgICAg ICBESVZFUkdFIEFTIHByaWNlID4gUFJFVihwcmljZSkgQU5EIHZvbHVtZSA8IFBSRVYodm9sdW1l KQorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFydF9ybjsKKworLS0gQ29u c29saWRhdGlvbiB0aGVuIGJyZWFrb3V0OiBzaWRld2F5cyBtb3ZlbWVudCBmb2xsb3dlZCBieSBz aGFycCByaXNlCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9W RVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVu ZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmlj ZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAg ICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAg IFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JE RVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAg ICBQQVRURVJOIChGTEFUezUsfSBCUkVBS09VVCkKKyAgICAgICAgREVGSU5FCisgICAgICAgICAg ICBGTEFUIEFTIHByaWNlIEJFVFdFRU4gUFJFVihwcmljZSkgKiAwLjk4IEFORCBQUkVWKHByaWNl KSAqIDEuMDIsCisgICAgICAgICAgICBCUkVBS09VVCBBUyBwcmljZSA+IFBSRVYocHJpY2UpICog MS4wNQorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFydF9ybjsKKworLS0g RGVhZCBjYXQgYm91bmNlOiBkZWNsaW5lIGZvbGxvd2VkIGJ5IHdlYWsgcmVjb3ZlcnkgKDwxJSBw ZXIgZGF5KQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBPVkVS IHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBlbmRf cm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJpY2Us CisgICAgICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisgICAg ICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAgICBX SU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9SREVS IEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAg UEFUVEVSTiAoREVDTElORXs0LH0gQk9VTkNFezMsfSkKKyAgICAgICAgREVGSU5FCisgICAgICAg ICAgICBERUNMSU5FIEFTIHByaWNlIDwgUFJFVihwcmljZSksCisgICAgICAgICAgICBCT1VOQ0Ug QVMgcHJpY2UgPiBQUkVWKHByaWNlKSBBTkQgcHJpY2UgPCBQUkVWKHByaWNlKSAqIDEuMDEKKyAg ICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIgQlkgc3RhcnRfcm47CisKKy0tIFVwdHJlbmQ6 IDcrIGNvbnNlY3V0aXZlIGRheXMgb2YgaGlnaGVyIGhpZ2hzIEFORCBoaWdoZXIgbG93cworU0VM RUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgc3RhcnRf cm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBlbmRfcm4sCisgICAgICAg ICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJpY2UsCisgICAgICAgICAg IGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisgICAgICAgICAgIGNvdW50 KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAo CisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9SREVSIEJZIHJuCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoVVBU UkVORHs3LH0pCisgICAgICAgIERFRklORQorICAgICAgICAgICAgVVBUUkVORCBBUyBoaWdoID4g UFJFVihoaWdoKSBBTkQgbG93ID4gUFJFVihsb3cpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAw IE9SREVSIEJZIHN0YXJ0X3JuOworCistLSBQYW5pYyBhbmQgc25hcC1iYWNrOiAzJSsgZGFpbHkg ZHJvcHMgZm9sbG93ZWQgYnkgMiUrIHJlYm91bmQKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVD VCBmaXJzdF92YWx1ZShybikgT1ZFUiB3IEFTIHN0YXJ0X3JuLAorICAgICAgICAgICBsYXN0X3Zh bHVlKHJuKSBPVkVSIHcgQVMgZW5kX3JuLAorICAgICAgICAgICBmaXJzdF92YWx1ZShwcmljZSkg T1ZFUiB3IEFTIHN0YXJ0X3ByaWNlLAorICAgICAgICAgICBsYXN0X3ZhbHVlKHByaWNlKSBPVkVS IHcgQVMgZW5kX3ByaWNlLAorICAgICAgICAgICBjb3VudCgqKSBPVkVSIHcgQVMgZGF5cworICAg IEZST00gcnByX3N0b2NrCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBQQVJUSVRJT04gQlkg cGFydF9pZAorICAgICAgICBPUkRFUiBCWSBybgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4gKFBBTklDezIsfSBTTkFQKQorICAgICAgICBE RUZJTkUKKyAgICAgICAgICAgIFBBTklDIEFTIHByaWNlIDwgUFJFVihwcmljZSkgKiAwLjk3LAor ICAgICAgICAgICAgU05BUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpICogMS4wMgorICAgICkKKykg dCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFydF9ybjsKKworLS0gVm9sdW1lIGNsaW1heCBy ZXZlcnNhbDogdXB0cmVuZCwgdm9sdW1lIHNwaWtlICgxLjV4KSwgdGhlbiBkZWNsaW5lCitTRUxF Q1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFydF9y biwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAgICAg ICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAgICAg bGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAgICAgICAgICAgY291bnQo KikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgK KyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChSQUxM WXszLH0gQ0xJTUFYIFNFTExPRkZ7Mix9KQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIFJB TExZIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgICAgICAgICAgICBDTElNQVggQVMgdm9sdW1l ID4gUFJFVih2b2x1bWUpICogMS41LAorICAgICAgICAgICAgU0VMTE9GRiBBUyBwcmljZSA8IFBS RVYocHJpY2UpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZIHN0YXJ0X3JuOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsIGIvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvcnByX2Jhc2Uuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMDAwLi5mY2VmZDU5ZGU0YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mv c3FsL3Jwcl9iYXNlLnNxbApAQCAtMCwwICsxLDQ0MDMgQEAKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIEJhc2Ug VGVzdHMKKy0tIFRlc3RzIGZvciBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiAoSVNPL0lFQyAxOTA3 NS01KQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLQorLS0gUGFyc2VyIExheWVyOgorLS0gICBLZXl3b3JkIFVzYWdlIFRl c3RzCistLSAgIERFRklORSBDbGF1c2UgVGVzdHMKKy0tICAgRlJBTUUgT3B0aW9ucyBUZXN0cwor LS0gICBQQVJUSVRJT04gQlkgKyBGUkFNRSBUZXN0cworLS0gICBQQVRURVJOIFN5bnRheCBUZXN0 cworLS0gICBRdWFudGlmaWVycyBUZXN0cworLS0gICBOYXZpZ2F0aW9uIEZ1bmN0aW9ucyBUZXN0 cworLS0gICBTS0lQIFRPIC8gSU5JVElBTCBUZXN0cworLS0gICBTZXJpYWxpemF0aW9uL0Rlc2Vy aWFsaXphdGlvbiBUZXN0cworLS0gICBHbHVlZCBRdWFudGlmaWVyIC8gQWx0ZXJuYXRpb24gVGVz dHMKKy0tICAgRXJyb3IgQ2FzZXMgVGVzdHMKKy0tICAgV2luZG93IERlZHVwbGljYXRpb24gVGVz dHMKKy0tCistLSBQbGFubmVyIExheWVyOgorLS0gICBQYXR0ZXJuIE9wdGltaXphdGlvbiBUZXN0 cworLS0gICBBYnNvcnB0aW9uIEZsYWcgRGlzcGxheSBUZXN0cworLS0gICBBYnNvcnB0aW9uIEFu YWx5c2lzIFRlc3RzCistLSAgIEVkZ2UgQ2FzZSBUZXN0cworLS0gICBPcHRpbWl6YXRpb24gRmFs bGJhY2sgVGVzdHMKKy0tICAgUGxhbm5lciBJbnRlZ3JhdGlvbiBUZXN0cworLS0gICBTdWJxdWVy eSBhbmQgQ1RFIFRlc3RzCistLSAgIEpPSU4gVGVzdHMKKy0tICAgQ29tcGxleCBFeHByZXNzaW9u IFRlc3RzCistLSAgIFNldCBPcGVyYXRpb25zIFRlc3RzCistLSAgIFNvcnRpbmcgYW5kIEdyb3Vw aW5nIFRlc3RzCistLSAgIFNRTCBGdW5jdGlvbiBJbmxpbmluZyBUZXN0cworLS0gICBTdHJlc3Mg VGVzdHMKKy0tICAgRXJyb3IgTGltaXQgVGVzdHMKKy0tCistLSBDb250cmlidXRlZCBUZXN0czoK Ky0tICAgQmFzaWMgUGF0dGVybiBNYXRjaGluZworLS0gICBQYXRob2xvZ2ljYWwgUGF0dGVybnMK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9IFdBUk5JTkc7CisKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gS2V5d29yZCBVc2FnZSBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIFJQUiBrZXl3b3JkcyBhcyBjb2x1 bW4gbmFtZXMKKy0tIEtleXdvcmRzOiBkZWZpbmUsIGluaXRpYWwsIHBhc3QsIHBhdHRlcm4sIHNl ZWsKKworQ1JFQVRFIFRBQkxFIHJwcl9rZXl3b3JkcyAoCisgICAgaWQgSU5ULAorICAgIGRlZmlu ZSBJTlQsICAgICAgLS0gREVGSU5FIGtleXdvcmQKKyAgICBpbml0aWFsIElOVCwgICAgIC0tIElO SVRJQUwga2V5d29yZAorICAgIHBhc3QgSU5ULCAgICAgICAgLS0gUEFTVCBrZXl3b3JkCisgICAg cGF0dGVybiBJTlQsICAgICAtLSBQQVRURVJOIGtleXdvcmQKKyAgICBzZWVrIElOVCwgICAgICAg IC0tIFNFRUsga2V5d29yZAorLS0gRVJST1I6IFNFRUsgaXMgbm90IHN1cHBvcnRlZAorICAgIHNr aXAgSU5UICAgICAgICAgLS0gU0tJUCBrZXl3b3JkIChwcmUtZXhpc3RpbmcpCispOworCitJTlNF UlQgSU5UTyBycHJfa2V5d29yZHMgVkFMVUVTICgxLCAxMCwgMjAsIDMwLCA0MCwgNTAsIDYwKTsK KworU0VMRUNUIGlkLCBkZWZpbmUsIGluaXRpYWwsIHBhc3QsIHBhdHRlcm4sIHNlZWssIHNraXAK K0ZST00gcnByX2tleXdvcmRzCitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfa2V5d29y ZHM7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gREVGSU5FIENsYXVzZSBUZXN0cworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIFNpbXBs ZSBjb2x1bW4gcmVmZXJlbmNlcworQ1JFQVRFIFRBQkxFIHN0b2NrX3ByaWNlICgKKyAgICBkdCBE QVRFLAorICAgIHN5bWJvbCBURVhULAorICAgIHByaWNlIE5VTUVSSUMsCisgICAgdm9sdW1lIElO VAorKTsKKworSU5TRVJUIElOVE8gc3RvY2tfcHJpY2UgVkFMVUVTCisgICAgKCcyMDI0LTAxLTAx JywgJ0FBUEwnLCAxNTAsIDEwMDApLAorICAgICgnMjAyNC0wMS0wMicsICdBQVBMJywgMTU1LCAx MjAwKSwKKyAgICAoJzIwMjQtMDEtMDMnLCAnQUFQTCcsIDE1MiwgOTAwKSwKKyAgICAoJzIwMjQt MDEtMDQnLCAnQUFQTCcsIDE2MCwgMTUwMCksCisgICAgKCcyMDI0LTAxLTA1JywgJ0FBUEwnLCAx NTgsIDExMDApOworCistLSBTaW1wbGUgY29sdW1uIHJlZmVyZW5jZQorU0VMRUNUIGR0LCBwcmlj ZSwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBzdG9ja19wcmljZQorV0lORE9XIHcgQVMg KAorICAgIFBBUlRJVElPTiBCWSBzeW1ib2wKKyAgICBPUkRFUiBCWSBkdAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKFVQ KykKKyAgICBERUZJTkUgVVAgQVMgcHJpY2UgPiAxNTAKKykKK09SREVSIEJZIGR0OworCistLSBN dWx0aXBsZSBjb2x1bW4gcmVmZXJlbmNlcworU0VMRUNUIGR0LCBwcmljZSwgdm9sdW1lLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHN0b2NrX3ByaWNlCitXSU5ET1cgdyBBUyAoCisgICAg UEFSVElUSU9OIEJZIHN5bWJvbAorICAgIE9SREVSIEJZIGR0CisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoR09PRCspCisg ICAgREVGSU5FIEdPT0QgQVMgcHJpY2UgPiAxNTAgQU5EIHZvbHVtZSA+IDEwMDAKKykKK09SREVS IEJZIGR0OworCistLSBFeHByZXNzaW9uIGluIERFRklORQorU0VMRUNUIGR0LCBwcmljZSwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBzdG9ja19wcmljZQorV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBzeW1ib2wKKyAgICBPUkRFUiBCWSBkdAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEhJR0grKQor ICAgIERFRklORSBISUdIIEFTIHByaWNlICogMS4xID4gMTY1CispCitPUkRFUiBCWSBkdDsKKwor LS0gQXJpdGhtZXRpYyBhbmQgZnVuY3Rpb25zCitTRUxFQ1QgZHQsIHByaWNlLCB2b2x1bWUsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gc3RvY2tfcHJpY2UKK1dJTkRPVyB3IEFTICgKKyAg ICBQQVJUSVRJT04gQlkgc3ltYm9sCisgICAgT1JERVIgQlkgZHQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDQUxDKykK KyAgICBERUZJTkUgQ0FMQyBBUyAocHJpY2UgKyB2b2x1bWUgLyAxMDApID4gMTYwCispCitPUkRF UiBCWSBkdDsKKworRFJPUCBUQUJMRSBzdG9ja19wcmljZTsKKworLS0gQXV0by1nZW5lcmF0ZWQg REVGSU5FCitDUkVBVEUgVEFCTEUgcnByX2F1dG8gKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQg SU5UTyBycHJfYXV0byBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDE1KTsK KworLS0gT25lIHZhcmlhYmxlIHVuZGVmaW5lZCAoQiBhdXRvLWdlbmVyYXRlZCBhcyAiQiBJUyBU UlVFIikKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9h dXRvCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyBCKikKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAxNQorKQorT1JERVIgQlkgaWQ7CisKKy0tIE11bHRpcGxlIHVu ZGVmaW5lZCB2YXJpYWJsZXMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl9hdXRvCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgLS0gQiBhbmQgQyBhdXRvLWdl bmVyYXRlZCBhcyAiQiBJUyBUUlVFIiwgIkMgSVMgVFJVRSIKKykKK09SREVSIEJZIGlkOworCist LSBBbGwgdmFyaWFibGVzIGRlZmluZWQgZXhwbGljaXRseQorU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2F1dG8KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKFggWSBaKQorICAgIERFRklORQorICAgICAgICBYIEFTIHZhbCA+ IDEwLAorICAgICAgICBZIEFTIHZhbCA+IDIwLAorICAgICAgICBaIEFTIHZhbCA8IDIwCispCitP UkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfYXV0bzsKKworLS0gRHVwbGljYXRlIHZhcmlh YmxlIG5hbWVzCitDUkVBVEUgVEFCTEUgcnByX2R1cCAoaWQgSU5UKTsKK0lOU0VSVCBJTlRPIHJw cl9kdXAgVkFMVUVTICgxKSwgKDIpOworCistLSBEdXBsaWNhdGUgREVGSU5FIHZhcmlhYmxlIG5h bWUgaXMgbm90IGFsbG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2R1cAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgaWQgPiAwLCBBIEFTIGlkIDwgMTAKKyk7CisKK0RST1AgVEFCTEUgcnByX2R1cDsKKwor LS0gQm9vbGVhbiBjb2VyY2lvbgorQ1JFQVRFIFRBQkxFIHJwcl9ib29sIChpZCBJTlQsIGZsYWcg Qk9PTEVBTik7CitJTlNFUlQgSU5UTyBycHJfYm9vbCBWQUxVRVMgKDEsIHRydWUpLCAoMiwgZmFs c2UpOworCistLSBERUZJTkUgY2xhdXNlIG11c3QgYmUgYSBib29sZWFuIGV4cHJlc3Npb24KK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2Jvb2wKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIGlkCispOworCistLSBC b29sZWFuIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVDVCBpZCwgZmxhZywgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfYm9vbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoVCspCisgICAgREVGSU5FIFQgQVMgZmxhZworKQorT1JERVIgQlkgaWQ7CisKKy0t IE5VTEw6OmJvb2xlYW4KK1NFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBy cHJfYm9vbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoTispCisg ICAgREVGSU5FIE4gQVMgTlVMTDo6Ym9vbGVhbgorKQorT1JERVIgQlkgaWQ7CisKKy0tIEltcGxp Y2l0IGNhc3QgdG8gYm9vbGVhbiB2aWEgY3VzdG9tIHR5cGUKK0NSRUFURSBUWVBFIHRydXRoeWlu dCBBUyAodiBpbnQpOworQ1JFQVRFIEZVTkNUSU9OIHRydXRoeWludF90b19ib29sKHRydXRoeWlu dCkgUkVUVVJOUyBib29sZWFuIEFTICQkCisgIFNFTEVDVCAoJDEpLnYgPD4gMDsKKyQkIExBTkdV QUdFIFNRTCBJTU1VVEFCTEUgU1RSSUNUOworQ1JFQVRFIENBU1QgKHRydXRoeWludCBBUyBib29s ZWFuKQorICBXSVRIIEZVTkNUSU9OIHRydXRoeWludF90b19ib29sKHRydXRoeWludCkKKyAgQVMg QVNTSUdOTUVOVDsKKworQ1JFQVRFIFRBQkxFIHJwcl9jb2VyY2UgKGlkIGludCwgdmFsIHRydXRo eWludCk7CitJTlNFUlQgSU5UTyBycHJfY29lcmNlIFZBTFVFUyAoMSwgUk9XKDEpKSwgKDIsIFJP VygwKSksICgzLCBST1coNSkpLCAoNCwgUk9XKDApKTsKKworU0VMRUNUIGlkLCB2YWwsIGNudAor RlJPTSAoU0VMRUNUIGlkLCB2YWwsCisgICAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IEFTIGNu dAorICAgICAgRlJPTSBycHJfY29lcmNlCisgICAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgICAg T1JERVIgQlkgaWQKKyAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgICBERUZJTkUg QSBBUyB2YWwKKyAgICAgICkKKykgcyBPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfY29l cmNlOworRFJPUCBDQVNUICh0cnV0aHlpbnQgQVMgYm9vbGVhbik7CitEUk9QIEZVTkNUSU9OIHRy dXRoeWludF90b19ib29sKHRydXRoeWludCk7CitEUk9QIFRZUEUgdHJ1dGh5aW50OworCitEUk9Q IFRBQkxFIHJwcl9ib29sOworCistLSBDb21wbGV4IGV4cHJlc3Npb25zCitDUkVBVEUgVEFCTEUg cnByX2NvbXBsZXggKGlkIElOVCwgdmFsMSBJTlQsIHZhbDIgSU5UKTsKK0lOU0VSVCBJTlRPIHJw cl9jb21wbGV4IFZBTFVFUyAoMSwgMTAsIDIwKSwgKDIsIDE1LCAyNSksICgzLCAyMCwgMzApOwor CistLSBDQVNFIGV4cHJlc3Npb24KK1NFTEVDVCBpZCwgdmFsMSwgdmFsMiwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfY29tcGxleAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQyspCisgICAgREVGSU5FIEMgQVMgQ0FTRSBXSEVOIHZhbDEgPiAxMCBU SEVOIHZhbDIgPiAyMCBFTFNFIGZhbHNlIEVORAorKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFC TEUgcnByX2NvbXBsZXg7CisKKy0tIFBhdHRlcm4gdmFyaWFibGUgbm90IGluIFBBVFRFUk4gKHNo b3VsZCBiZSBpZ25vcmVkKQorQ1JFQVRFIFRBQkxFIHJwcl91bnVzZWQgKGlkIElOVCk7CitJTlNF UlQgSU5UTyBycHJfdW51c2VkIFZBTFVFUyAoMSksICgyKTsKKworLS0gRXh0cmEgREVGSU5FIHZh cmlhYmxlCitTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3VudXNl ZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgaWQgPiAwLCBCIEFTIGlkID4gNSAgLS0gQiBub3QgaW4gcGF0dGVybgorKQorT1JE RVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX3VudXNlZDsKKworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBGUkFNRSBP cHRpb25zIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworQ1JFQVRFIFRBQkxFIHJwcl9mcmFtZSAoaWQgSU5ULCB2 YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9mcmFtZSBWQUxVRVMKKyAgICAoMSwgMTApLCAoMiwg MTApLCAoMywgMTApLCAgLS0gU2FtZSB2YWw6IDEwCisgICAgKDQsIDIwKSwgKDUsIDIwKSwgICAg ICAgICAgIC0tIFNhbWUgdmFsOiAyMAorICAgICg2LCAzMCk7CisKKy0tIFZhbGlkIGZyYW1lIG9w dGlvbnMKKworLS0gUk9XUzogY291bnRzIHBoeXNpY2FsIHJvd3MgKDEgRk9MTE9XSU5HID0gbmV4 dCAxIHBoeXNpY2FsIHJvdykKKy0tIEV4cGVjdGVkIHJlc3VsdDogRWFjaCByb3cgY2FuIHNlZSAx IHBoeXNpY2FsIHJvdyBhaGVhZAorLS0gaWQ9MSwyLDMgKHZhbD0xMCk6IGNhbiBzZWUgbmV4dCBy b3cgLT4gY250PTIKKy0tIGlkPTQsNSAodmFsPTIwKTogY2FuIHNlZSBuZXh0IHJvdyAtPiBjbnQ9 MgorLS0gaWQ9NiAodmFsPTMwKTogbm8gbmV4dCByb3cgLT4gY250PTEKKy0tIFJlc3VsdDogWzIs MiwyLDIsMiwxXQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00g cnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdmFsCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+PSAwLCBC IEFTIHZhbCA+PSAwCispCitPUkRFUiBCWSBpZDsKKworLS0gRVJST1I6IGZyYW1lIG11c3Qgc3Rh cnQgYXQgY3VycmVudCByb3cgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwCispOworCistLSBFWENMVURFIG9wdGlvbnMKKworLS0gRVhDTFVERSBub3QgcGVybWl0dGVk CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgRVhDTFVERSBDVVJSRU5UIFJPVworICAgIFBBVFRFUk4gKEErKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIEVYQ0xVREUgR1JPVVAgbm90IHBlcm1p dHRlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEVYQ0xVREUgR1JPVVAKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBFWENMVURFIFRJRVMgbm90IHBlcm1pdHRl ZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEVYQ0xVREUgVElFUworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIHJhbmdlIGZyYW1lIGlzIG5vdCBhbGxvd2VkIHdp dGggUlBSCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VE SU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgdmFsID4gMAorKTsKKworLS0gR1JPVVBTIGZyYW1lIGlzIG5vdCBhbGxvd2VkIHdpdGgg UlBSCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElO RyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyk7CisKKy0tIEVSUk9SOiBmcmFtZSBtdXN0IHN0YXJ0IGF0IGN1cnJlbnQg cm93IHdoZW4gcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaXMgdXNlZAorU0VMRUNUIENPVU5UKCop IE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiAxIFBSRUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIEVSUk9SOiBm cmFtZSBtdXN0IHN0YXJ0IGF0IGN1cnJlbnQgcm93IHdpdGggUlBSCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIDEgRk9MTE9XSU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gRVJST1I6IGVu ZCBiZWZvcmUgc3RhcnQ6IENVUlJFTlQgUk9XIEFORCAxIFBSRUNFRElORworU0VMRUNUIENPVU5U KCopIE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBQUkVDRURJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBFUlJPUjogZW5kIGJl Zm9yZSBzdGFydDogQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBQUkVDRURJTkcKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBQUkVDRURJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBT aW5nbGUgcm93IGZyYW1lOiBDVVJSRU5UIFJPVyBBTkQgQ1VSUkVOVCBST1cgaXMgcmVqZWN0ZWQg KHRoZSBzdGFuZGFyZAorLS0gYWxsb3dzIG9ubHkgVU5CT1VOREVEIEZPTExPV0lORyBvciBhIHBv c2l0aXZlIG9mZnNldCBGT0xMT1dJTkcpLgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIENVUlJFTlQgUk9XCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIFplcm8gb2Zmc2V0OiBDVVJSRU5UIFJPVyBB TkQgMCBGT0xMT1dJTkcgZGVub3RlcyB0aGUgc2FtZSBvbmUtcm93IGZyYW1lCistLSBhbmQgaXMg bGlrZXdpc2UgcmVqZWN0ZWQgKGNhdWdodCBhdCBleGVjdXRpb24gdGltZSkuCitTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo QSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gQSBub24t Y29uc3RhbnQgZnJhbWUgZW5kIG9mZnNldCBpcyBhbGxvd2VkOyBhIHplcm8gdmFsdWUgaXMgc3Rp bGwgcmVqZWN0ZWQsCistLSB0aGlzIHRpbWUgYXQgZXhlY3V0aW9uIHRpbWUgKGEgbGl0ZXJhbCBj YW5ub3QgZXhlcmNpc2UgdGhhdCBwYXRoKS4KK1BSRVBBUkUgcnByX2VuZF9vZmZzZXQoaW50OCkg QVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFt ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCAkMSBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBp ZDsKK0VYRUNVVEUgcnByX2VuZF9vZmZzZXQoMik7CitFWEVDVVRFIHJwcl9lbmRfb2Zmc2V0KDAp OworREVBTExPQ0FURSBycHJfZW5kX29mZnNldDsKKworLS0gTGFyZ2Ugb2Zmc2V0OiBDVVJSRU5U IFJPVyBBTkQgMTAwMCBGT0xMT1dJTkcKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxMDAwIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gTWF4aW11bSBvZmZzZXQ6IENVUlJFTlQg Uk9XIEFORCAyMTQ3NDgzNjQ2IEZPTExPV0lORyAoSU5UX01BWCAtIDEpCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMjE0NzQ4 MzY0NiBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0t IGludDY0IGZyYW1lLWVuZCBvdmVyZmxvdzogYSBodWdlIEZPTExPV0lORyBvZmZzZXQgbXVzdCBj bGFtcCB0byB0aGUKKy0tIHBhcnRpdGlvbiBlbmQgKG1hdGNoU3RhcnRSb3cgKyBvZmZzZXQgKyAx IG92ZXJmbG93cyBpbnQ2NDsgdGhlIGNsYW1wIG1ha2VzCistLSBpdCBiZWhhdmUgbGlrZSBVTkJP VU5ERUQgRk9MTE9XSU5HKS4gIEd1YXJkcyBhZ2FpbnN0IHNpZ25lZC1pbnRlZ2VyIG92ZXJmbG93 CistLSBpbiB0aGUgImZyYW1lT2Zmc2V0ICsgMSIgc3ViZXhwcmVzc2lvbiAodW5kZWZpbmVkIGJl aGF2aW9yKS4gIFRoZSBjbnQgdmFsdWVzCistLSBtdXN0IG1hdGNoIHRoZSBVTkJPVU5ERUQgRk9M TE9XSU5HIHJlc3VsdCBmb3IgdGhlIHNhbWUgZGF0YS4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCA5MjIzMzcyMDM2ODU0Nzc1 ODA2IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0g cmFuZ2UgZnJhbWUgaXMgbm90IGFsbG93ZWQgd2l0aCBSUFIKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIHZhbAorICAgIFJBTkdFIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEwIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEI/KQor ICAgIERFRklORSBBIEFTIHZhbCA+PSAwLCBCIEFTIHZhbCA+PSAwCispCitPUkRFUiBCWSBpZDsK KworLS0gR1JPVVBTIGZyYW1lIHdpdGggUlBSIChub3QgcGVybWl0dGVkKQorU0VMRUNUIGlkLCB2 YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgdmFsCisgICAgR1JPVVBTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEEgQj8pCisgICAgREVGSU5FIEEgQVMgdmFsID49IDAsIEIgQVMgdmFsID49IDAKKykKK09SREVS IEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9mcmFtZTsKKworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBQQVJUSVRJT04g QlkgKyBGUkFNRSBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIFRlc3QgUEFSVElUSU9OIEJZIHdpdGggUlBS IHRvIGVuc3VyZSBwcm9wZXIgcGFydGl0aW9uaW5nIGJlaGF2aW9yCitDUkVBVEUgVEFCTEUgcnBy X3BhcnRpdGlvbiAoaWQgSU5ULCBncnAgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9w YXJ0aXRpb24gVkFMVUVTCisgICAgKDEsIDEsIDEwKSwgKDIsIDEsIDIwKSwgKDMsIDEsIDMwKSwK KyAgICAoNCwgMiwgMTUpLCAoNSwgMiwgMjUpLCAoNiwgMiwgMzUpOworCistLSBQQVJUSVRJT04g Qlkgd2l0aCBST1dTIGZyYW1lCitTRUxFQ1QgaWQsIGdycCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9wYXJ0aXRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgZ3JwCisgICAgT1JERVIgQlkgdmFsCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgdmFsID49IDEwLCBCIEFTIHZhbCA+ IDE1CispCitPUkRFUiBCWSBpZDsKKy0tIEV4cGVjdGVkOiBQYXR0ZXJuIG1hdGNoaW5nIHNob3Vs ZCByZXNldCBmb3IgZWFjaCBwYXJ0aXRpb24KKworLS0gUEFSVElUSU9OIEJZIHdpdGggUkFOR0Ug ZnJhbWUKK1NFTEVDVCBpZCwgZ3JwLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00g cnByX3BhcnRpdGlvbgorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBncnAKKyAgICBP UkRFUiBCWSB2YWwKKyAgICBSQU5HRSBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxMCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCPykK KyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMTAsIEIgQVMgdmFsID49IDIwCispCitPUkRFUiBCWSBp ZDsKKworRFJPUCBUQUJMRSBycHJfcGFydGl0aW9uOworCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBBVFRFUk4gU3lu dGF4IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworQ1JFQVRFIFRBQkxFIHJwcl9wYXR0ZXJuIChpZCBJTlQsIHZh bCBJTlQpOworSU5TRVJUIElOVE8gcnByX3BhdHRlcm4gVkFMVUVTCisgICAgKDEsIDUpLCAoMiwg MTApLCAoMywgMTUpLCAoNCwgMjApLCAoNSwgMjUpLAorICAgICg2LCAzMCksICg3LCAzNSksICg4 LCA0MCksICg5LCA0NSksICgxMCwgNTApOworCistLSBBbHRlcm5hdGlvbiAofCkKKworLS0gTXVs dGlwbGUgYWx0ZXJuYXRpdmVzCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfcGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSsgfCBCKyB8IEMrKQorICAgIERFRklORSBBIEFTIHZhbCA+IDM1LCBCIEFTIHZhbCBC RVRXRUVOIDE1IEFORCAzNSwgQyBBUyB2YWwgPCAxNQorKQorT1JERVIgQlkgaWQ7CisKKy0tIEdy b3VwaW5nCisKKy0tIE5lc3RlZCBncm91cGluZyB3aXRoIHF1YW50aWZpZXIKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEgQikgQykrKQorICAgIERFRklORSBB IEFTIHZhbCA+IDEwLCBCIEFTIHZhbCA+IDIwLCBDIEFTIHZhbCA+IDMwCispCitPUkRFUiBCWSBp ZDsKKworLS0gU2VxdWVuY2UKKworLS0gTXVsdGktZWxlbWVudCBzZXF1ZW5jZQorU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BhdHRlcm4KK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSkKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyB2YWwgPCAxNSwKKyAgICAgICAgQiBBUyB2YWwgQkVUV0VFTiAxNSBBTkQg MjUsCisgICAgICAgIEMgQVMgdmFsIEJFVFdFRU4gMjUgQU5EIDM1LAorICAgICAgICBEIEFTIHZh bCBCRVRXRUVOIDM1IEFORCA0NSwKKyAgICAgICAgRSBBUyB2YWwgPj0gNDUKKykKK09SREVSIEJZ IGlkOworCistLSBDb21wbGV4IGNvbWJpbmF0aW9ucworCistLSBBbHRlcm5hdGlvbiB3aXRoIGdy b3VwaW5nCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJf cGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikg fCAoQyBEKSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPCAyMCwgQiBBUyB2YWwgPj0gMjAsIEMgQVMg dmFsIDwgMzAsIEQgQVMgdmFsID49IDMwCispCitPUkRFUiBCWSBpZDsKKworLS0gQWx0ZXJuYXRp b24gKyBzZXF1ZW5jZSArIGdyb3VwaW5nCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfcGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoU1RBUlQgKFVQezIsfSBET1dOPyB8IEZMQVQrKSBGSU5JU0gpCisgICAgREVG SU5FCisgICAgICAgIFNUQVJUIEFTIHZhbCA+PSAwLAorICAgICAgICBVUCBBUyB2YWwgPiAyMCwK KyAgICAgICAgRE9XTiBBUyB2YWwgPD0gMzAsCisgICAgICAgIEZMQVQgQVMgdmFsIEJFVFdFRU4g MjUgQU5EIDM1LAorICAgICAgICBGSU5JU0ggQVMgdmFsID4gNDAKKykKK09SREVSIEJZIGlkOwor CistLSBOZXN0ZWQgYWx0ZXJuYXRpb24gaW4gZ3JvdXBzCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQyB8IEQpKQorICAgIERFRklORSBBIEFTIHZh bCA8IDE1LCBCIEFTIHZhbCBCRVRXRUVOIDE1IEFORCAyNSwgQyBBUyB2YWwgQkVUV0VFTiAyNSBB TkQgMzUsIEQgQVMgdmFsID4gMzUKKykKK09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9w YXR0ZXJuOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIFF1YW50aWZpZXJzIFRlc3RzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworQ1JFQVRF IFRBQkxFIHJwcl9xdWFudCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9xdWFu dCBWQUxVRVMKKyAgICAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApLCAoNCwgNDApLCAoNSwgNTAp LAorICAgICg2LCA2MCksICg3LCA3MCksICg4LCA4MCksICg5LCA5MCksICgxMCwgMTAwKTsKKwor LS0gQmFzaWMgZ3JlZWR5IHF1YW50aWZpZXJzCisKKy0tICogKHplcm8gb3IgbW9yZSkKK1NFTEVD VCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSopCisgICAgREVGSU5FIEEgQVMg dmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tICsgKG9uZSBvciBtb3JlKQorU0VMRUNUIGlk LCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwg PiA1MAorKQorT1JERVIgQlkgaWQ7CisKKy0tID8gKHplcm8gb3Igb25lKQorU0VMRUNUIGlkLCB2 YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPSA1 MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIEVkZ2UgY2FzZSBxdWFudGlmaWVycworCistLSB7MH0g aXMgbm90IGFsbG93ZWQgKG1pbiBtdXN0IGJlID49IDEpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEF7MH0gQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxMDAwLCBC IEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSB7MCwwfSBpcyBub3QgYWxsb3dlZCAo bWF4IG11c3QgYmUgPj0gMSkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQXswLDB9IEIpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTAwMCwgQiBBUyB2YWwgPiAwCisp CitPUkRFUiBCWSBpZDsKKworLS0gezAsMX0gKGVxdWl2YWxlbnQgdG8gPykKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXswLDF9KQorICAgIERFRklORSBBIEFTIHZh bCA9IDUwCispCitPUkRFUiBCWSBpZDsKKworLS0gRXhhY3QgcXVhbnRpZmllcnMge259CisKKy0t IHszfSAocmVwcmVzZW50YXRpdmUgZXhhY3QgcXVhbnRpZmllcikKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFudAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXszfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp CitPUkRFUiBCWSBpZDsKKworLS0gUmFuZ2UgcXVhbnRpZmllcnMge24sfQorCistLSB7Mix9IChy ZXByZXNlbnRhdGl2ZSBuIG9yIG1vcmUpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEF7Mix9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDQwCispCitPUkRFUiBCWSBp ZDsKKworLS0gVXBwZXIgYm91bmQgcXVhbnRpZmllcnMgeyxtfQorCistLSB7LDN9IChyZXByZXNl bnRhdGl2ZSB1cCB0byBtKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBeywzfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0g UmFuZ2UgcXVhbnRpZmllcnMge24sbX0KKworLS0gezMsN30gKHJlcHJlc2VudGF0aXZlIHJhbmdl KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50 CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezMsN30pCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX3F1 YW50OworCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcnMKK0NSRUFURSBUQUJMRSBycHJfcmVsdWN0 YW50IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3JlbHVjdGFudCBWQUxVRVMg KDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKTsKKworLS0gKj8gKHplcm8gb3IgbW9yZSwgcmVsdWN0 YW50KQorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAorU0VM RUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKj8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAor KTsKKworLS0gKz8gKG9uZSBvciBtb3JlLCByZWx1Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVhbnRp ZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9N IHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSA/PyAoemVybyBvciBvbmUs IHJlbHVjdGFudCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0 Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQT8/KQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyk7CisKKy0tIHtuLH0/IChuIG9yIG1vcmUsIHJlbHVjdGFudCkKKy0tIFJlbHVjdGFu dCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQXsyLH0/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIHtuLG19 PyAobiB0byBtLCByZWx1Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNo b3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MSwzfT8pCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0ge259PyAoZXhhY3RseSBuLCByZWx1Y3RhbnQp CistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEF7Mn0/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7 CisKKy0tIHssbX0/ICh1cCB0byBtLCByZWx1Y3RhbnQpIC0gQ09NUExFVEVMWSBVTlRFU1RFRCBS VUxFIQorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAorU0VM RUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBeywzfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4g MAorKTsKKworLS0gezJ9KyAoc2hvdWxkIGJlIHsyfT8gbm90IHsyfSspCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEF7Mn0rKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0t IHsyLH0qIChzaG91bGQgYmUgezIsfT8gbm90IHsyLH0qKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBezIsfSopCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0geywzfSog KHNob3VsZCBiZSB7LDN9PyBub3QgeywzfSopCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9N IHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7LDN9KikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSB7MSwzfSsgKHNob3Vs ZCBiZSB7MSwzfT8gbm90IHsxLDN9KykKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsx LDN9KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBCb3VuZGFyeSBlcnJvcnMg aW4gcmVsdWN0YW50IHF1YW50aWZpZXJzCisKKy0tIG5lZ2F0aXZlIGJvdW5kIGlzIG5vdCBhbGxv d2VkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LTF9PykKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispOworCistLSBFUlJPUjogcXVhbnRpZmllciBib3VuZCBleGNlZWRzIGxpbWl0 cworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIxNDc0ODM2NDd9PykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispOworCistLSBuZWdhdGl2ZSBsb3dlciBib3VuZCBpcyBub3QgYWxs b3dlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBey0xLH0/KQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyk7CisKKy0tIEVSUk9SOiBxdWFudGlmaWVyIGxvd2VyIGJvdW5kIGV4Y2Vl ZHMgbGltaXRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4MzY0Nyx9PykK KyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSB6ZXJvIHVwcGVyIGJvdW5kIGlzIG5v dCBhbGxvd2VkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDB9PykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispOworCistLSBFUlJPUjogeywyMTQ3NDgzNjQ3fT8gKHVwcGVyIGJv dW5kIGluIHJhbmdlIGV4Y2VlZHMgbGltaXRzKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJP TSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBeywyMTQ3NDgzNjQ3fT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gRVJS T1I6IHstMSwzfT8gKG5lZ2F0aXZlIGxvd2VyIGJvdW5kIGluIHJhbmdlIGlzIG5vdCBhbGxvd2Vk KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBey0xLDN9PykKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispOworCistLSBFUlJPUjogezEsMjE0NzQ4MzY0N30/ICh1cHBlciBib3VuZCBp biByYW5nZSBleGNlZWRzIGxpbWl0cykKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsx LDIxNDc0ODM2NDd9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBFUlJPUjog ezUsM30/IChtaW4gPiBtYXggaXMgbm90IGFsbG93ZWQpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEF7NSwzfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gVG9rZW4t c2VwYXJhdGVkIHJlbHVjdGFudCBxdWFudGlmaWVycyAoc3BhY2UgYmV0d2VlbiBxdWFudGlmaWVy IGFuZCA/KQorLS0gVGhlc2UgbWF5IGJlIHRva2VuaXplZCBkaWZmZXJlbnRseSBieSB0aGUgbGV4 ZXIKKworLS0gKiA/ICh0b2tlbiBzZXBhcmF0ZWQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjog cHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9y ZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEqID8p CisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gKyA/ICh0b2tlbiBzZXBhcmF0ZWQp CistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEErID8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsK KworLS0gezIsfSA/ICh0b2tlbiBzZXBhcmF0ZWQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjog cHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9y ZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Mix9 ID8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gKiArIChpbnZhbGlkIGNvbWJp bmF0aW9uKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKiArKQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyk7CisKKy0tICsgKiAoaW52YWxpZCBjb21iaW5hdGlvbikKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSsgKikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOwor CistLSA/ID8gKHBhcnNlZCBhcyA/PyByZWx1Y3RhbnQgcXVhbnRpZmllcikKKy0tIFJlbHVjdGFu dCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQT8gPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCitEUk9QIFRBQkxF IHJwcl9yZWx1Y3RhbnQ7CisKKy0tIFF1YW50aWZpZXIgYm91bmRhcnkgY29uZGl0aW9ucworCitD UkVBVEUgVEFCTEUgcnByX2JvdW5kcyAoaWQgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9ib3VuZHMg VkFMVUVTICgxKSwgKDIpOworCistLSBFUlJPUjogcXVhbnRpZmllciBsb3dlciBib3VuZCBtdXN0 IG5vdCBleGNlZWQgdXBwZXIgYm91bmQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXs1LDN9 KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKKworLS0gTGFyZ2UgYm91bmRzCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEF7MTAwMCwyMDAwfSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAK Kyk7CisKKy0tIFZlcnkgbGFyZ2UgYm91bmQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00g cnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsx MDAwMDB9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKKworLS0gSU5UX01BWCAtIDEgPSAy MTQ3NDgzNjQ2IChhdCBsaW1pdCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2Jv dW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsyMTQ3NDgz NjQ2fSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CisKKy0tIEVSUk9SOiBxdWFudGlmaWVy IGJvdW5kIGV4Y2VlZHMgbGltaXRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9i b3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MjE0NzQ4 MzY0N30pCisgICAgREVGSU5FIEEgQVMgaWQgPiAwCispOworCistLSB7bix9IGJvdW5kYXJ5IGVy cm9ycworCistLSBFUlJPUjogbmVnYXRpdmUgbG93ZXIgYm91bmQgaW4ge24sfSBpcyBub3QgYWxs b3dlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBey0xLH0pCisgICAgREVGSU5FIEEgQVMg aWQgPiAwCispOworCistLSBFUlJPUjogcXVhbnRpZmllciBsb3dlciBib3VuZCBleGNlZWRzIGxp bWl0cworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIxNDc0ODM2NDcsfSkKKyAgICBERUZJ TkUgQSBBUyBpZCA+IDAKKyk7CisKKy0tIHssbX0gYm91bmRhcnkgZXJyb3JzCisKKy0tIFplcm8g dXBwZXIgYm91bmQgaW4geyxtfQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91 bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBeywwfSkKKyAg ICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CisKKy0tIEVSUk9SOiBxdWFudGlmaWVyIHVwcGVyIGJv dW5kIGV4Y2VlZHMgbGltaXRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3Vu ZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDIxNDc0ODM2 NDd9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKKworRFJPUCBUQUJMRSBycHJfYm91bmRz OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIE5hdmlnYXRpb24gRnVuY3Rpb25zIFRlc3RzIChQUkVWIC8gTkVYVCAv IEZJUlNUIC8gTEFTVCkKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorCitDUkVBVEUgVEFCTEUgcnByX25hdiAoaWQgSU5ULCB2 YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9uYXYgVkFMVUVTCisgICAgKDEsIDEwKSwgKDIsIDIw KSwgKDMsIDE1KSwgKDQsIDI1KSwgKDUsIDMwKTsKKworLS0gUFJFViBmdW5jdGlvbiAtIHJlZmVy ZW5jZSBwcmV2aW91cyByb3cgaW4gcGF0dGVybgorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAg ICAgICBCIEFTIHZhbCA+IFBSRVYodmFsKQorKQorT1JERVIgQlkgaWQ7CisKKy0tIE5FWFQgZnVu Y3Rpb24gLSByZWZlcmVuY2UgbmV4dCByb3cgaW4gcGF0dGVybgorU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwg PCBORVhUKHZhbCksCisgICAgICAgIEIgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0t IENvbWJpbmVkIFBSRVYgYW5kIE5FWFQKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEEgQiBDKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+IDAsCisgICAgICAg IEIgQVMgdmFsID4gUFJFVih2YWwpIEFORCB2YWwgPCBORVhUKHZhbCksCisgICAgICAgIEMgQVMg dmFsID4gUFJFVih2YWwpCispCitPUkRFUiBCWSBpZDsKKworLS0gUFJFViBmdW5jdGlvbiBjYW5u b3QgYmUgdXNlZCBvdGhlciB0aGFuIGluIERFRklORQorU0VMRUNUIFBSRVYoaWQpLCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg dmFsID4gMCwKKyAgICAgICAgQiBBUyB2YWwgPiBQUkVWKHZhbCkKKykKK09SREVSIEJZIGlkOwor CistLSBORVhUIGZ1bmN0aW9uIGNhbm5vdCBiZSB1c2VkIG90aGVyIHRoYW4gaW4gREVGSU5FCitT RUxFQ1QgTkVYVChpZCksIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X25hdgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+IFBSRVYo dmFsKQorKQorT1JERVIgQlkgaWQ7CisKKy0tIEZJUlNUIGZ1bmN0aW9uIC0gcmVmZXJlbmNlIG1h dGNoX3N0YXJ0IHJvdworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBC KykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+ IEZJUlNUKHZhbCkKKykKK09SREVSIEJZIGlkOworCistLSBMQVNUIGZ1bmN0aW9uIHdpdGhvdXQg b2Zmc2V0IC0gZXF1aXZhbGVudCB0byBjdXJyZW50IHJvdydzIHZhbHVlCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFT IHZhbCA+IDAsCisgICAgICAgIEIgQVMgTEFTVCh2YWwpID4gUFJFVih2YWwpCispCitPUkRFUiBC WSBpZDsKKworLS0gRklSU1QgYW5kIExBU1QgY29tYmluZWQKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFsID4g MCwKKyAgICAgICAgQiBBUyB2YWwgPiBGSVJTVCh2YWwpIEFORCBMQVNUKHZhbCkgPiBQUkVWKHZh bCkKKykKK09SREVSIEJZIGlkOworCistLSBGSVJTVCBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBv dGhlciB0aGFuIGluIERFRklORQorU0VMRUNUIEZJUlNUKGlkKSwgaWQsIHZhbCBGUk9NIHJwcl9u YXY7CisKKy0tIExBU1QgZnVuY3Rpb24gY2Fubm90IGJlIHVzZWQgb3RoZXIgdGhhbiBpbiBERUZJ TkUKK1NFTEVDVCBMQVNUKGlkKSwgaWQsIHZhbCBGUk9NIHJwcl9uYXY7CisKK0RST1AgVEFCTEUg cnByX25hdjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBTS0lQIFRPIC8gSU5JVElBTCBUZXN0cworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK K0NSRUFURSBUQUJMRSBycHJfc2tpcCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJw cl9za2lwIFZBTFVFUworICAgICgxLCAxKSwgKDIsIDIpLCAoMywgMyksICg0LCA0KSwgKDUsIDUp LAorICAgICg2LCA2KSwgKDcsIDcpLCAoOCwgOCk7CisKKy0tIFNLSVAgVE8gTkVYVCBST1cKKwor LS0gU0tJUCBUTyBORVhUIFJPVworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3NraXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUg QSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDIsIEMgQVMgdmFsID4gNAorKQorT1JERVIgQlkgaWQ7 CisKKy0tIFNLSVAgUEFTVCBMQVNUIFJPVworCistLSBTS0lQIFBBU1QgTEFTVCBST1cKK1NFTEVD VCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9za2lwCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+ IDIsIEMgQVMgdmFsID4gNAorKQorT1JERVIgQlkgaWQ7CisKKy0tIERlZmF1bHQgYmVoYXZpb3Ig KHNob3VsZCBiZSBTS0lQIFBBU1QgTEFTVCBST1cpCisKKy0tIE5vIFNLSVAgVE8gY2xhdXNlIChk ZWZhdWx0KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3NraXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQikKKyAg ICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDEKKykKK09SREVSIEJZIGlkOworCist LSBDb21wYXJlIGRlZmF1bHQgd2l0aCBleHBsaWNpdCBQQVNUIExBU1QgUk9XCistLSBSZXN1bHRz IHNob3VsZCBiZSBpZGVudGljYWwKK1dJVEggZGVmYXVsdF9za2lwIEFTICgKKyAgICBTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX3NraXAKKyAgICBX SU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIg QykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiAyLCBDIEFTIHZhbCA+ IDQKKyAgICApCispLAorZXhwbGljaXRfc2tpcCBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9za2lwCisgICAgV0lORE9XIHcgQVMg KAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgICAgIFBBVFRFUk4gKEEgQiBDKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwg PiAwLCBCIEFTIHZhbCA+IDIsIEMgQVMgdmFsID4gNAorICAgICkKKykKK1NFTEVDVCAnZGVmYXVs dCcgYXMgdHlwZSwgKiBGUk9NIGRlZmF1bHRfc2tpcAorVU5JT04gQUxMCitTRUxFQ1QgJ2V4cGxp Y2l0JyBhcyB0eXBlLCAqIEZST00gZXhwbGljaXRfc2tpcAorT1JERVIgQlkgdHlwZSwgaWQ7CisK K0RST1AgVEFCTEUgcnByX3NraXA7CisKK0NSRUFURSBUQUJMRSBycHJfaW5pdCAoaWQgSU5ULCB2 YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9pbml0IFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAo MywgMzApLCAoNCwgNDApOworCistLSBFeHBsaWNpdCBJTklUSUFMCitTRUxFQ1QgaWQsIHZhbCwg Q09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfaW5pdAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCistLSBJbXBsaWNpdCBJTklUSUFMIChkZWZhdWx0 KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2luaXQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9pbml0Owor CistLSBTRUVLCisKK0NSRUFURSBUQUJMRSBycHJfc2VlayAoaWQgSU5ULCB2YWwgSU5UKTsKK0lO U0VSVCBJTlRPIHJwcl9zZWVrIFZBTFVFUyAoMSwgMTApOworCistLSBTRUVLIGtleXdvcmQsIFNF RUsgbW9kZSBpcyBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJw cl9zZWVrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBTRUVLCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworRFJPUCBUQUJMRSBycHJfc2Vl azsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBTZXJpYWxpemF0aW9uL0Rlc2VyaWFsaXphdGlvbiBUZXN0cworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBSUFItZGVmaW5pbmcgdmlld3MgYW5kIHRhYmxlcyBoZXJlIGFyZSBpbnRlbnRpb25h bGx5IGxlZnQgaW4gcGxhY2UgKG5vdAorLS0gZHJvcHBlZCkgc28gdGhhdCBwZ19kdW1wL3BnX3Vw Z3JhZGUgZXhlcmNpc2UgdGhlIGRlcGFyc2UtdGhlbi1yZS1wYXJzZQorLS0gcm91bmQtdHJpcCBv ZiB0aGUgUlBSIHdpbmRvdyBjbGF1c2UuCisKKy0tIFZpZXcgY3JlYXRpb24gYW5kIGRlcGFyc2lu ZworCitDUkVBVEUgVEFCTEUgcnByX3NlcmlhbCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJ TlRPIHJwcl9zZXJpYWwgVkFMVUVTCisgICAgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDE1KSwgKDQs IDI1KSwgKDUsIDMwKTsKKworLS0gU2ltcGxlIHBhdHRlcm4KK0NSRUFURSBWSUVXIHJwcl9zZXJp YWxfdjEgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJw cl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKKy0tIFZlcmlmeSB2aWV3IHdvcmtzICh0ZXN0 cyBkZXNlcmlhbGl6YXRpb24pCitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjEgT1JERVIgQlkg aWQ7CisKKy0tIFZlcmlmeSBkZXBhcnNpbmcKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3Nl cmlhbF92MSc6OnJlZ2NsYXNzKTsKKworLS0gQ29tcGxleCBwYXR0ZXJuIHdpdGggYWx0ZXJuYXRp b24KK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfdjIgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErIHwgQiopCisgICAgREVGSU5FIEEgQVMgdmFsID4gMjAsIEIg QVMgdmFsIDw9IDIwCispOworCitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjIgT1JERVIgQlkg aWQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjInOjpyZWdjbGFzcyk7CisK Ky0tIFBhdHRlcm4gd2l0aCBncm91cGluZyBhbmQgcXVhbnRpZmllcnMKK0NSRUFURSBWSUVXIHJw cl9zZXJpYWxfdjMgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KChBIEIpezIsNX0gfCBDKikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAxMCwKKyAg ICAgICAgQiBBUyB2YWwgPiAyMCwKKyAgICAgICAgQyBBUyB2YWwgPD0gMTAKKyk7CisKK1NFTEVD VCAqIEZST00gcnByX3NlcmlhbF92MyBPUkRFUiBCWSBpZDsKK1NFTEVDVCBwZ19nZXRfdmlld2Rl ZigncnByX3NlcmlhbF92Myc6OnJlZ2NsYXNzKTsKKworLS0gQWxsIGZlYXR1cmVzIGNvbWJpbmVk CitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3Y0IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgSU5JVElBTAorICAgIFBB VFRFUk4gKFNUQVJUIChNSUR7MSwzfSB8IEFMVCspIEZJTklTSCkKKyAgICBERUZJTkUKKyAgICAg ICAgU1RBUlQgQVMgdmFsID4gNSwKKyAgICAgICAgTUlEIEFTIHZhbCBCRVRXRUVOIDEwIEFORCAy NSwKKyAgICAgICAgQUxUIEFTIHZhbCA+IDI1LAorICAgICAgICBGSU5JU0ggQVMgdmFsID4gMTUK Kyk7CisKK1NFTEVDVCAqIEZST00gcnByX3NlcmlhbF92NCBPUkRFUiBCWSBpZDsKK1NFTEVDVCBw Z19nZXRfdmlld2RlZigncnByX3NlcmlhbF92NCc6OnJlZ2NsYXNzKTsKKworLS0gQWRkaXRpb25h bCBxdWFudGlmaWVycyBmb3IgZGVwYXJzaW5nIGNvdmVyYWdlCisKKy0tID8gcXVhbnRpZmllciAo emVybyBvciBvbmUpCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3Y1IEFTCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+ IDEwLCBCIEFTIHZhbCA+IDIwCispOworCitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjUgT1JE RVIgQlkgaWQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjUnOjpyZWdjbGFz cyk7CisKKy0tIHtuLH0gcXVhbnRpZmllciAobiBvciBtb3JlKQorQ1JFQVRFIFZJRVcgcnByX3Nl cmlhbF92NiBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00g cnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsy LH0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTUKKyk7CisKK1NFTEVDVCAqIEZST00gcnByX3Nl cmlhbF92NiBPUkRFUiBCWSBpZDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF92 Nic6OnJlZ2NsYXNzKTsKKworLS0ge259IHF1YW50aWZpZXIgKGV4YWN0bHkgbikKK0NSRUFURSBW SUVXIHJwcl9zZXJpYWxfdjcgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEF7M30pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworU0VMRUNUICogRlJP TSBycHJfc2VyaWFsX3Y3IE9SREVSIEJZIGlkOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJf c2VyaWFsX3Y3Jzo6cmVnY2xhc3MpOworCistLSBOZXN0ZWQgQUxUIHBhdHRlcm4gKHRlc3RzIGRl cGFyc2Ugb2YgY29tcGxleCBuZXN0ZWQgc3RydWN0dXJlKQorQ1JFQVRFIFZJRVcgcnByX3Nlcmlh bF92OCBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBKyBC KSB8IEMpIEQgfCBBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMTUsIEIgQVMgdmFsIDw9 IDI1LCBDIEFTIHZhbCA8PSAzMCwgRCBBUyB2YWwgPiAzMAorKTsKKworU0VMRUNUICogRlJPTSBy cHJfc2VyaWFsX3Y4IE9SREVSIEJZIGlkOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2Vy aWFsX3Y4Jzo6cmVnY2xhc3MpOworCistLSBOYXZpZ2F0aW9uIGZ1bmN0aW9uIHNlcmlhbGl6YXRp b246IFBSRVYgd2l0aCBvZmZzZXQKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfbmF2MSBBUworU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAg ICAgICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgdmFsID4gUFJFVih2YWwsIDIpKTsKK1NFTEVD VCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF9uYXYxJzo6cmVnY2xhc3MpOworCistLSBOYXZp Z2F0aW9uIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb246IEZJUlNUIGFuZCBMQVNUCitDUkVBVEUgVklF VyBycHJfc2VyaWFsX25hdjIgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJ UlNUKHZhbCkgPCBMQVNUKHZhbCwgMSkpOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2Vy aWFsX25hdjInOjpyZWdjbGFzcyk7CisKKy0tIE5hdmlnYXRpb24gZnVuY3Rpb24gc2VyaWFsaXph dGlvbjogY29tcG91bmQgUFJFVihGSVJTVCgpKQorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF9uYXYz IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQisp CisgICAgICAgICAgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBQUkVWKEZJUlNUKHZhbCwgMSks IDIpID4gMCk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfbmF2Myc6OnJlZ2Ns YXNzKTsKKworLS0gTmF2aWdhdGlvbiBmdW5jdGlvbiBzZXJpYWxpemF0aW9uOiBjb21wb3VuZCBO RVhUKExBU1QoKSkKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfbmF2NCBBUworU0VMRUNUIGlkLCB2 YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICAgICAgIERF RklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChMQVNUKHZhbCksIDIpIElTIE5PVCBOVUxMKTsKK1NF TEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF9uYXY0Jzo6cmVnY2xhc3MpOworCistLSBO YXZpZ2F0aW9uIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb246IGNvbXBvdW5kIFBSRVYoTEFTVCgpKQor Q1JFQVRFIFZJRVcgcnByX3NlcmlhbF9uYXY1IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikg T1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAg ICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgVFJV RSwgQiBBUyBQUkVWKExBU1QodmFsLCAxKSwgMikgPiAwKTsKK1NFTEVDVCBwZ19nZXRfdmlld2Rl ZigncnByX3NlcmlhbF9uYXY1Jzo6cmVnY2xhc3MpOworCistLSBOYXZpZ2F0aW9uIGZ1bmN0aW9u IHNlcmlhbGl6YXRpb246IGNvbXBvdW5kIE5FWFQoRklSU1QoKSkKK0NSRUFURSBWSUVXIHJwcl9z ZXJpYWxfbmF2NiBBUworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJf c2VyaWFsCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRU RVJOIChBIEIrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChGSVJT VCh2YWwpLCAzKSA+IDApOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX25hdjYn OjpyZWdjbGFzcyk7CisKKy0tIFByZXR0eSBkZXBhcnNlOiBuYXZpZ2F0aW9uIGNhbGxzIGFyZSBm dW5jdGlvbi1saWtlIGFuZCB0YWtlIG5vIGV4dHJhIHBhcmVucworQ1JFQVRFIFZJRVcgcnByX25h dl9wcmV0dHlfdiBBUworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJf c2VyaWFsCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRU RVJOIChBIEIrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIFRSVUUsCisgICAgICAgICAgICAg ICAgICAgIEIgQVMgdmFsID4gUFJFVih2YWwpIEFORCBQUkVWKHZhbCkgSVMgTk9UIE5VTEwKKyAg ICAgICAgICAgICAgICAgICAgICAgICBBTkQgTkVYVCh2YWwpID4gRklSU1QodmFsKQorICAgICAg ICAgICAgICAgICAgICAgICAgIEFORCBQUkVWKEZJUlNUKHZhbCkpID4gMCk7CitTRUxFQ1QgcGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9uYXZfcHJldHR5X3YnOjpyZWdjbGFzcywgdHJ1ZSk7CisKKy0tIFJl bHVjdGFudCB7MX0/IHF1YW50aWZpZXIgZGVwYXJzZSB0aHJvdWdoIHJ1bGV1dGlscworQ1JFQVRF IFZJRVcgcnByX3F1YW50X3JlbHVjdGFudF92IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikg T1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAg ICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICAgICAgIElOSVRJQUwKKyAgICAgICAgICAgICBQQVRURVJOIChBezF9PyBCKQorICAg ICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMCk7CitTRUxFQ1QgcGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9xdWFudF9yZWx1Y3RhbnRfdic6OnJlZ2NsYXNzKTsKKworLS0gUXVv dGVkIGlkZW50aWZpZXIgcm91bmQtdHJpcDogbWl4ZWQgY2FzZSBhbmQgcmVzZXJ2ZWQgd29yZHMg bmVlZCBxdW90aW5nCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3F1b3RlZCBBUworU0VMRUNUIGlk LCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgiU3RhcnQiICJVcCIrKQorICAg ICAgICAgICAgIERFRklORSAiU3RhcnQiIEFTIFRSVUUsICJVcCIgQVMgdmFsID4gUFJFVih2YWwp KTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF9xdW90ZWQnOjpyZWdjbGFzcyk7 CisKKy0tIElubGluZSBPVkVSIHJvdW5kLXRyaXA6IGlubGluZSB3aW5kb3cgc3BlYyAobm8gV0lO RE9XIGFsaWFzKSBkZXBhcnNlcyBpbnNpZGUgT1ZFUiAoLi4uKQorQ1JFQVRFIFZJRVcgcnByX3Nl cmlhbF9pbmxpbmVfb3ZlciBBUworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgY291bnQoKikgT1ZF UiAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICAgICAgICAgICBQQVRU RVJOIChBIEIrKQorICAgICAgICAgICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDEwLCBC IEFTIHZhbCA+IFBSRVYodmFsKSkgQVMgY250CitGUk9NIHJwcl9zZXJpYWw7CitTRUxFQ1QgcGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfaW5saW5lX292ZXInOjpyZWdjbGFzcyk7CisKKy0tIE1h dGVyaWFsaXplZCB2aWV3IChpZiBzdXBwb3J0ZWQpCisKK0NSRUFURSBUQUJMRSBycHJfbXZpZXcg KGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfbXZpZXcgVkFMVUVTICgxLCAxMCks ICgyLCAyMCksICgzLCAzMCk7CisKK0NSRUFURSBNQVRFUklBTElaRUQgVklFVyBycHJfbXZpZXdf djEgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9t dmlldworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworU0VMRUNUICogRlJPTSBycHJfbXZpZXdfdjEgT1JE RVIgQlkgaWQ7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9tdmlld192MSc6OnJlZ2NsYXNz KTsKKworLS0gUmVmcmVzaCB0ZXN0CitSRUZSRVNIIE1BVEVSSUFMSVpFRCBWSUVXIHJwcl9tdmll d192MTsKK1NFTEVDVCAqIEZST00gcnByX212aWV3X3YxIE9SREVSIEJZIGlkOworCistLSBDUkVB VEUgVEFCTEUgQVMgU0VMRUNUIHdpdGggUlBSCitDUkVBVEUgVEFCTEUgcnByX2N0YXMgKGlkIElO VCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfY3RhcyBWQUxVRVMgKDEsIDEwKSwgKDIsIDIw KSwgKDMsIDE1KSwgKDQsIDI1KTsKKworQ1JFQVRFIFRBQkxFIHJwcl9jdGFzX3Jlc3VsdCBBUwor U0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2N0YXMKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyB2YWwg PiBQUkVWKHZhbCkKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9jdGFzX3Jlc3VsdCBPUkRFUiBCWSBp ZDsKKworLS0gSU5TRVJUIElOVE8gLi4uIFNFTEVDVCB3aXRoIFJQUgorQ1JFQVRFIFRBQkxFIHJw cl9pbnNlcnRfdGFyZ2V0IChpZCBJTlQsIHZhbCBJTlQsIGNudCBCSUdJTlQpOworSU5TRVJUIElO VE8gcnByX2luc2VydF90YXJnZXQKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gcnByX2N0YXMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMg VFJVRSwgQiBBUyB2YWwgPiBQUkVWKHZhbCkKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9pbnNlcnRf dGFyZ2V0IE9SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9jdGFzX3Jlc3VsdDsKK0RST1Ag VEFCTEUgcnByX2luc2VydF90YXJnZXQ7CitEUk9QIFRBQkxFIHJwcl9jdGFzOworCistLSBQcmVw YXJlZCBzdGF0ZW1lbnRzICh0ZXN0cyBvdXRmdW5jcy5jIC8gcmVhZGZ1bmNzLmMpCisKK0NSRUFU RSBUQUJMRSBycHJfcHJlcCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9wcmVw IFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApOworCistLSBTaW1wbGUgcHJlcGFyZWQg c3RhdGVtZW50CitQUkVQQVJFIHJwcl9wcmVwX3NpbXBsZSBBUworU0VMRUNUIGlkLCB2YWwsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3ByZXAKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09S REVSIEJZIGlkOworCitFWEVDVVRFIHJwcl9wcmVwX3NpbXBsZTsKK0VYRUNVVEUgcnByX3ByZXBf c2ltcGxlOworCitERUFMTE9DQVRFIHJwcl9wcmVwX3NpbXBsZTsKKworLS0gUHJlcGFyZWQgc3Rh dGVtZW50IHdpdGggcGFyYW1ldGVycworUFJFUEFSRSBycHJfcHJlcF9wYXJhbShpbnQpIEFTCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcHJlcAorV0hF UkUgaWQgPD0gJDEKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwCispCitPUkRFUiBCWSBpZDsKKworRVhFQ1VURSBy cHJfcHJlcF9wYXJhbSgyKTsKK0VYRUNVVEUgcnByX3ByZXBfcGFyYW0oMyk7CisKK0RFQUxMT0NB VEUgcnByX3ByZXBfcGFyYW07CisKKy0tIENvbXBsZXggcHJlcGFyZWQgc3RhdGVtZW50CitQUkVQ QVJFIHJwcl9wcmVwX2NvbXBsZXggQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9wcmVwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgQil7MSwyfSB8IEMr KQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA+IDUsCisgICAgICAgIEIgQVMgdmFsID4g MTUsCisgICAgICAgIEMgQVMgdmFsIDw9IDE1CispCitPUkRFUiBCWSBpZDsKKworRVhFQ1VURSBy cHJfcHJlcF9jb21wbGV4OworRVhFQ1VURSBycHJfcHJlcF9jb21wbGV4OworCitERUFMTE9DQVRF IHJwcl9wcmVwX2NvbXBsZXg7CisKK0RST1AgVEFCTEUgcnByX3ByZXA7CisKKy0tIENURSBhbmQg U3VicXVlcnkgKHRlc3RzIGNvcHlmdW5jcy5jKQorCitDUkVBVEUgVEFCTEUgcnByX2NvcHkgKGlk IElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfY29weSBWQUxVRVMgKDEsIDEwKSwgKDIs IDIwKSwgKDMsIDMwKSwgKDQsIDQwKTsKKworLS0gU2ltcGxlIENURQorV0lUSCBycHJfY3RlIEFT ICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00g cnByX2NvcHkKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykKK1NF TEVDVCAqIEZST00gcnByX2N0ZSBPUkRFUiBCWSBpZDsKKworLS0gQ1RFIHdpdGggbXVsdGlwbGUg cmVmZXJlbmNlcyAoZm9yY2VzIG5vZGUgY29weSkKK1dJVEggcnByX2N0ZSBBUyAoCisgICAgU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9jb3B5Cisg ICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAo QSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDE1CisgICAgKQorKQorU0VMRUNUIGMxLmlk LCBjMS5jbnQgYXMgY250MSwgYzIuY250IGFzIGNudDIKK0ZST00gcnByX2N0ZSBjMQorSk9JTiBy cHJfY3RlIGMyIE9OIGMxLmlkID0gYzIuaWQKK09SREVSIEJZIGMxLmlkOworCistLSBTdWJxdWVy eSBpbiBGUk9NIGNsYXVzZQorU0VMRUNUICoKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfY29weQorICAgIFdJTkRPVyB3IEFT ICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQj8pCisgICAgICAg IERFRklORSBBIEFTIHZhbCA+IDEwLCBCIEFTIHZhbCA+IDIwCisgICAgKQorKSBzdWIKK1dIRVJF IGNudCA+IDAKK09SREVSIEJZIGlkOworCistLSBOZXN0ZWQgc3VicXVlcmllcworU0VMRUNUICoK K0ZST00gKAorICAgIFNFTEVDVCAqCisgICAgRlJPTSAoCisgICAgICAgIFNFTEVDVCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgICAgIEZST00gcnByX2NvcHkKKyAgICAgICAg V0lORE9XIHcgQVMgKAorICAgICAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg UEFUVEVSTiAoQSspCisgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPj0gMTAKKyAgICAgICAg KQorICAgICkgaW5uZXJfc3ViCisgICAgV0hFUkUgY250ID4gMAorKSBvdXRlcl9zdWIKK09SREVS IEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9jb3B5OworCistLSBESVNUSU5DVCBhbmQgc2V0IG9w ZXJhdGlvbnMgKHRlc3RzIGVxdWFsZnVuY3MuYykKKworQ1JFQVRFIFRBQkxFIHJwcl9lcXVhbCAo aWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9lcXVhbCBWQUxVRVMgKDEsIDEwKSwg KDIsIDIwKSwgKDMsIDEwKSwgKDQsIDIwKTsKKworLS0gRElTVElOQ1Qgd2l0aCBSUFIKK1NFTEVD VCBESVNUSU5DVCBjbnQKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1YWwKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAg IE9SREVSIEJZIHZhbAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg ICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykg c3ViCitPUkRFUiBCWSBjbnQ7CisKKy0tIFVOSU9OIHdpdGggUlBSIGluIGJvdGggc2lkZXMKK1NF TEVDVCBpZCwgdmFsLCBjbnQgRlJPTSAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdIRVJFIHZhbCA9IDEwCisgICAg V0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSsp CisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICApCispIHN1YjEKK1VOSU9OCitTRUxF Q1QgaWQsIHZhbCwgY250IEZST00gKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1YWwKKyAgICBXSEVSRSB2YWwgPSAyMAorICAgIFdJ TkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQor ICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQorKSBzdWIyCitPUkRFUiBCWSBpZDsK KworLS0gVU5JT04gQUxMCitTRUxFQ1QgaWQsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdJTkRPVyB3IEFT ICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBE RUZJTkUgQSBBUyB2YWwgPiAxMAorICAgICkKKykgc3ViCitVTklPTiBBTEwKK1NFTEVDVCBpZCwg Y250IEZST00gKAorICAgIFNFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZS T00gcnByX2VxdWFsCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAg ICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgUEFUVEVSTiAoQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA8PSAxMAorICAgICkK Kykgc3ViCitPUkRFUiBCWSBpZCwgY250OworCistLSBJTlRFUlNFQ1QKK1NFTEVDVCBpZCwgY250 IEZST00gKAorICAgIFNFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00g cnByX2VxdWFsCisgICAgV0hFUkUgaWQgPD0gMworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAg T1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCisgICAgKQorKSBzdWIxCitJTlRFUlNFQ1QKK1NFTEVDVCBpZCwgY250IEZST00gKAor ICAgIFNFTEVDVCBpZCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFs CisgICAgV0hFUkUgaWQgPj0gMgorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisg ICAgKQorKSBzdWIyCitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfZXF1YWw7CisKKy0t IFZpZXcgd2l0aCBtdWx0aXBsZSB3aW5kb3cgZGVmaW5pdGlvbnMKKworQ1JFQVRFIFRBQkxFIHJw cl9tdWx0aXdpbiAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9tdWx0aXdpbiBW QUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKTsKKworQ1JFQVRFIFZJRVcgcnByX211bHRp d2luX3YgQVMKK1NFTEVDVAorICAgIGlkLAorICAgIHZhbCwKKyAgICBDT1VOVCgqKSBPVkVSIHcx IGFzIGNudDEsCisgICAgQ09VTlQoKikgT1ZFUiB3MiBhcyBjbnQyCitGUk9NIHJwcl9tdWx0aXdp bgorV0lORE9XCisgICAgdzEgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFU VEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDE1CisgICAgKSwKKyAgICB3MiBB UyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChCKikKKyAgICAgICAg REVGSU5FIEIgQVMgdmFsIDw9IDE1CisgICAgKTsKKworU0VMRUNUICogRlJPTSBycHJfbXVsdGl3 aW5fdiBPUkRFUiBCWSBpZDsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX211bHRpd2luX3Yn OjpyZWdjbGFzcyk7CisKKy0tIHtufSBxdWFudGlmaWVyIGRpc3BsYXkgaW4gdmlldworQ1JFQVRF IFZJRVcgcnByX3F1YW50X25fdiBBUworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdwor RlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBJTklUSUFMCisgICAgICAgICAgICAgUEFUVEVSTiAoQXszfSkKKyAgICAgICAgICAgICBE RUZJTkUgQSBBUyB2YWwgPiAwKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3F1YW50X25f dic6OnJlZ2NsYXNzKTsKKworLS0ge24sfSBxdWFudGlmaWVyIGRpc3BsYXkgaW4gdmlldworQ1JF QVRFIFZJRVcgcnByX3F1YW50X25fcGx1c192IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikg T1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAg ICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICAgICAgIElOSVRJQUwKKyAgICAgICAgICAgICBQQVRURVJOIChBezIsfSkKKyAgICAg ICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnBy X3F1YW50X25fcGx1c192Jzo6cmVnY2xhc3MpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEdsdWVkIFF1YW50aWZp ZXIgLyBBbHRlcm5hdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgcnByX2dsdWUgKGlk IElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfZ2x1ZSBWQUxVRVMgKDEsIDUpLCAoMiwg OCksICgzLCA5KSwgKDQsIC0xKSwgKDUsIDYpLCAoNiwgLTIpOworLS0gUXVhbnRpZmllciBnbHVl ZCB0byB0aGUgYWx0ZXJuYXRpb24gb3BlcmF0b3IgJ3wnIHdpdGhvdXQgYSBzcGFjZSAoMDA1OSku CistLSBUaGUgbGV4ZXIgZ2x1ZXMgdGhlIHRyYWlsaW5nICd8JyBpbnRvIG9uZSBPcCB0b2tlbjsg dGhlIGdyYW1tYXIgcmVhdHRhY2hlcyBpdAorLS0gYXMgdGhlIGxvd2VzdC1wcmVjZWRlbmNlIGFs dGVybmF0aW9uIG9uY2UgdGhlIHN1cnJvdW5kaW5nIHNlcXVlbmNlIGlzIGJ1aWx0LgorLS0gRGVw YXJzZSBpcyBjYW5vbmljYWwsIHNvIHRoZSBnbHVlZCwgc3BhY2VkLCBhbmQgbWl4ZWQtc3BhY2lu ZyBmb3JtcyBhbGwKKy0tIHJlZHVjZSB0byB0aGUgc2FtZSBQQVRURVJOIC0tIG9uZSBkZXBhcnNl IHBlciBzaGFwZSBwcm92ZXMgdGhlIHBhcnNlIHRyZWUuCisKKy0tIE9wLWNoYXIgcXVhbnRpZmll cnMgKCosICssID8sICo/LCArPywgPz8pIGdsdWVkIHRvICd8Jy4KK0NSRUFURSBWSUVXIHJwcl9k cF9vcCBBUyBTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHcxIEFTIHcxLCBjb3VudCgqKSBPVkVS IHcyIEFTIHcyLCBjb3VudCgqKSBPVkVSIHczIEFTIHczLAorICAgIGNvdW50KCopIE9WRVIgdzQg QVMgdzQsIGNvdW50KCopIE9WRVIgdzUgQVMgdzUsIGNvdW50KCopIE9WRVIgdzYgQVMgdzYKK0ZS T00gcnByX2dsdWUKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfEIpIERFRklORSBBIEFT IHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHcyIEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSt8 QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzMgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyBQQVRURVJOIChBP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAg ICAgICB3NCBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFT IHZhbCA8PSAwKSwKKyAgICAgICB3NSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEErP3xCKSBERUZJTkUgQSBB UyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NiBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEE/ P3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2RwX29wJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworRFJPUCBWSUVXIHJwcl9kcF9v cDsKKy0tIFNwYWNlZCByZWZlcmVuY2U6IHRoZSBmdWxseS1zcGFjZWQgY2Fub25pY2FsIGZvcm1z LiAgSWRlbnRpY2FsIGRlcGFyc2UgdG8gdGhlCistLSBnbHVlZCBycHJfZHBfb3AgdzEvdzQgYWJv dmUgY29tcGxldGVzIHRoZSBnbHVlZCA9IHNwYWNlZCA9IG1peGVkIGVxdWl2YWxlbmNlLgorQ1JF QVRFIFZJRVcgcnByX2RwX3NwYyBBUyBTRUxFQ1QgY291bnQoKikgT1ZFUiB3MSBBUyB3MSwgY291 bnQoKikgT1ZFUiB3MiBBUyB3MgorRlJPTSBycHJfZ2x1ZQorV0lORE9XIHcxIEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFU VEVSTiAoQSogfCBCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAg ICB3MiBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqPyB8IEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMg dmFsIDw9IDApOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZHBfc3BjJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworRFJPUCBWSUVXIHJwcl9kcF9zcGM7CistLSBSYW5nZSBxdWFudGlmaWVycyBnbHVl ZCB0byAnfCc6IG5vbi1yZWx1Y3RhbnQge259fCAofSArIGNoYXIgJ3wnKSBhbmQKKy0tIHJlbHVj dGFudCB7bn0/fCAofSArIE9wICI/fCIpLgorQ1JFQVRFIFZJRVcgcnByX2RwX3JuZyBBUyBTRUxF Q1QKKyAgICBjb3VudCgqKSBPVkVSIHcxIEFTIHcxLCBjb3VudCgqKSBPVkVSIHcyIEFTIHcyLCBj b3VudCgqKSBPVkVSIHczIEFTIHczLCBjb3VudCgqKSBPVkVSIHc0IEFTIHc0LAorICAgIGNvdW50 KCopIE9WRVIgdzUgQVMgdzUsIGNvdW50KCopIE9WRVIgdzYgQVMgdzYsIGNvdW50KCopIE9WRVIg dzcgQVMgdzcsIGNvdW50KCopIE9WRVIgdzggQVMgdzgKK0ZST00gcnByX2dsdWUKK1dJTkRPVyB3 MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIFBBVFRFUk4gKEF7Mn18QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwg PD0gMCksCisgICAgICAgdzIgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezIsfXxCKSBERUZJTkUgQSBBUyB2 YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3MyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7LDN9 fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHc0IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcgUEFUVEVSTiAoQXsyLDN9fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDAp LAorICAgICAgIHc1IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyfT98QikgREVGSU5FIEEgQVMgdmFsID4g MCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzYgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezIsfT98Qikg REVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQ QVRURVJOIChBeywzfT98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisg ICAgICAgdzggQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezIsM30/fEIpIERFRklORSBBIEFTIHZhbCA+IDAs IEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZHBfcm5nJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworRFJPUCBWSUVXIHJwcl9kcF9ybmc7CistLSBNaXhlZCBzcGFjaW5nOiBh IHNwYWNlIGluc2lkZSB0aGUgcXVhbnRpZmllciB3aXRoICd8JyBzdGlsbCBnbHVlZC4KKy0tICJB KiA/fEIiID0gJyonICsgT3AiP3wiID0gcmVsdWN0YW50ICJBKj8iIHBsdXMgYWx0ZXJuYXRpb24u CitDUkVBVEUgVklFVyBycHJfZHBfbWl4IEFTIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcxIEFTIHcx LCBjb3VudCgqKSBPVkVSIHcyIEFTIHcyLCBjb3VudCgqKSBPVkVSIHczIEFTIHczCitGUk9NIHJw cl9nbHVlCitXSU5ET1cgdzEgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKiA/fEIpIERFRklORSBBIEFTIHZh bCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHcyIEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSsgP3xC KSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3MyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H IFBBVFRFUk4gKEE/ID98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9kcF9taXgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitEUk9Q IFZJRVcgcnByX2RwX21peDsKKy0tIFN0cnVjdHVyZTogcHJlY2VkZW5jZSAofCBpcyBsb3dlc3Qs IHNvIGl0cyByaWdodCBvcGVyYW5kIGlzIHRoZSB3aG9sZQorLS0gZm9sbG93aW5nIHNlcXVlbmNl KSwgY2hhaW5pbmcsIGNvbmNhdGVuYXRpb24sIGFuZCBncm91cGluZy4KK0NSRUFURSBWSUVXIHJw cl9kcF9zdHJ1Y3QgQVMgU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiB3MSBBUyB3MSwgY291bnQo KikgT1ZFUiB3MiBBUyB3MiwgY291bnQoKikgT1ZFUiB3MyBBUyB3MywKKyAgICBjb3VudCgqKSBP VkVSIHc0IEFTIHc0LCBjb3VudCgqKSBPVkVSIHc1IEFTIHc1LCBjb3VudCgqKSBPVkVSIHc2IEFT IHc2CitGUk9NIHJwcl9nbHVlCitXSU5ET1cgdzEgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKnxCIEMpIERF RklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDAsIEMgQVMgdmFsIDwgMTAwKSwKKyAgICAg ICB3MiBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfEIqfEMpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMg dmFsIDw9IDAsIEMgQVMgdmFsIDwgMTAwKSwKKyAgICAgICB3MyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEg Qip8QyBEKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwLCBDIEFTIHZhbCA8IDEw MCwgRCBBUyB2YWwgPiA1KSwKKyAgICAgICB3NCBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKChBKnxCKSkgREVG SU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzUgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRU RVJOIChBKnwoQnxDKSkgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCwgQyBBUyB2 YWwgPCAxMDApLAorICAgICAgIHc2IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoKEEqfEIpKykgREVGSU5FIEEg QVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9kcF9zdHJ1Y3QnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitEUk9QIFZJRVcgcnByX2RwX3N0cnVjdDsKKy0t IEV4ZWN1dGlvbiBzZW1hbnRpY3MgKGRlcGFyc2UgY2Fubm90IHNob3cgcmVsdWN0YW50IHNob3J0 ZXN0LW1hdGNoKS4gIFRoZQorLS0gcnByX2dsdWUgcm93cyAtLSBhbiBBLXJ1biBmb2xsb3dlZCBi eSBCIHJvd3MgLS0gbWFrZSB0aGUgJ3xCJyBhbHRlcm5hdGl2ZQorLS0gcmVhY2hhYmxlOiB3aXRo ICIqIiB0aGUgZ3JlZWR5IGZvcm0gbWF0Y2hlcyB0aGUgd2hvbGUgcnVuIHdoaWxlIHRoZQorLS0g cmVsdWN0YW50IGZvcm0gbWF0Y2hlcyBlbXB0eTsgd2l0aCAiKyIgdGhlIGdyZWVkeSBmb3JtIG1h dGNoZXMgdGhlIHJ1biBhbmQKKy0tIHRoZSByZWx1Y3RhbnQgZm9ybSBtYXRjaGVzIG9uZSByb3cs IGFuZCBvbiBhIEIgcm93ICh3aGVyZSAiQSsiIGZhaWxzKSB0aGUgQgorLS0gYWx0ZXJuYXRpdmUg ZmlyZXMuCitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBjb3VudCgqKSBPVkVSIGdzIEFTIGdzdGFy LCBjb3VudCgqKSBPVkVSIHJzIEFTIHJzdGFyLAorICAgICAgIGNvdW50KCopIE9WRVIgZ3AgQVMg Z3BsdXMsIGNvdW50KCopIE9WRVIgcnAgQVMgcnBsdXMKK0ZST00gcnByX2dsdWUKK1dJTkRPVyBn cyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIFBBVFRFUk4gKEEqfEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9 IDApLAorICAgICAgIHJzIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSo/fEIpIERFRklORSBBIEFTIHZhbCA+ IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIGdwIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSt8QikgREVG SU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgcnAgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRU RVJOIChBKz98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCkKK09SREVSIEJZ IGlkOworLS0gUGF0dGVybnMgdGhhdCBtdXN0IHN0YXkgcmVqZWN0ZWQuICAiJiIgaXMgYW4gaW52 YWxpZCBvcDsgYSAnfCcgd2l0aCBhbiBlbXB0eQorLS0gc2lkZSAobGVhZGluZywgdHJhaWxpbmcs IGRvdWJsZWQsIG9yIGFsb25lIGluIGEgZ3JvdXApIGhhcyBubyBvcGVyYW5kOyAifHwiCistLSBh bmQgIip8fCIgYXJlIGRvdWJsZWQgcGlwZXM7ICJBKiAqfEIiLyJBKiAqP3xCIi8iQXsyfSo/fEIi IGFyZSBkb3VibGVkCistLSBxdWFudGlmaWVycy4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJP TSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEmQikgREVGSU5FIEEgQVMgdmFs ID4gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyBQQVRURVJOIChBKnwpIERFRklORSBBIEFTIHZhbCA+IDApOworU0VMRUNUIGNvdW50KCop IE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8IHxCKSBE RUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfHxCKSBERUZJTkUg QSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJP TSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF8fEIpIERFRklORSBBIEFTIHZh bCA+IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9n bHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8QnwpIERFRklORSBBIEFTIHZhbCA+IDAs IEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAofEEpIERFRklORSBBIEFTIHZhbCA+IDApOworU0VMRUNU IGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAo KEEqfCkpIERFRklORSBBIEFTIHZhbCA+IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9N IHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSogKnxCKSBERUZJTkUgQSBBUyB2 YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJf Z2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqICo/fEIpIERFRklORSBBIEFTIHZhbCA+ IDAsIEIgQVMgdmFsIDw9IDApOworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVl IFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQT8gKj98QikgREVGSU5FIEEgQVMgdmFsID4gMCwg QiBBUyB2YWwgPD0gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyBQQVRURVJOIChBezJ9Kj98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORyBQQVRURVJOIChBezJ9ICo/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMg dmFsIDw9IDApOworLS0gRG91YmxlZCBvcC1jaGFyIHF1YW50aWZpZXJzIGxleCBhcyBvbmUgT3Ag dG9rZW4gYW5kIGFyZSB1bnN1cHBvcnRlZCwgd2hldGhlcgorLS0gZ2x1ZWQgdG8gJ3wnICgiKip8 IiwgIiorfCIsICI/Pz98Iikgb3Igb24gdGhlaXIgb3duICgiKioiKS4KK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqKnxCKSBE RUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqK3xCKSBERUZJTkUg QSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJP TSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEE/Pz98QikgREVGSU5FIEEgQVMg dmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnBy X2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKipCKSBERUZJTkUgQSBBUyB2YWwgPiAw KTsKK0RST1AgVEFCTEUgcnByX2dsdWU7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRXJyb3IgQ2FzZXMgVGVzdHMK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorCitEUk9QIFRBQkxFIElGIEVYSVNUUyBycHJfZXJyOworQ1JFQVRFIFRBQkxFIHJw cl9lcnIgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfZXJyIFZBTFVFUyAoMSwg MTApLCAoMiwgMjApOworCistLSBJbnZhbGlkIHF1YW50aWZpZXIgc3ludGF4CitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErISkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworCistLSBub25l IG9mIHRoZSBmb2xsb3dpbmcgcXVlcmllcyBzaG91bGQgYmUgYWNjZXB0ZWQKK1NFTEVDVCBGUk9N IHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9M TE9XSU5HIFBBVFRFUk4gKEErICEpIERFRklORSBBIEFTIFRSVUUpOworU0VMRUNUIEZST00gcnBy X2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJ TkcgUEFUVEVSTiAoQSsgPyspIERFRklORSBBIEFTIFRSVUUpOworU0VMRUNUIEZST00gcnByX2Vy ciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcg UEFUVEVSTiAoQSogPyspIERFRklORSBBIEFTIFRSVUUpOworU0VMRUNUIEZST00gcnByX2VyciBX SU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFU VEVSTiAoQT8gPz8pIERFRklORSBBIEFTIFRSVUUpOworU0VMRUNUIEZST00gcnByX2VyciBXSU5E T1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVS TiAoQSB7MSwyfT8/KSBERUZJTkUgQSBBUyBUUlVFKTsKKworLS0gbm9uZSBvZiB0aGUgZm9sbG93 aW5nIDQgcmFuZ2UtcXVhbnRpZmllciBxdWVyaWVzIHNob3VsZCBiZSBhY2NlcHRlZAorU0VMRUNU IEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg MSBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyfSAhKSBERUZJTkUgQSBBUyBUUlVFKTsKK1NFTEVDVCBG Uk9NIHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEg Rk9MTE9XSU5HIFBBVFRFUk4gKEF7Mix9ICEpIERFRklORSBBIEFTIFRSVUUpOworU0VMRUNUIEZS T00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBG T0xMT1dJTkcgUEFUVEVSTiAoQXssM30gISkgREVGSU5FIEEgQVMgVFJVRSk7CitTRUxFQ1QgRlJP TSBycHJfZXJyIFdJTkRPVyB3IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZP TExPV0lORyBQQVRURVJOIChBezIsM30gISkgREVGSU5FIEEgQVMgVFJVRSk7CisKKy0tIFVubWF0 Y2hlZCBwYXJlbnRoZXNlcworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBOT1RJQ0U7CitETyAk JAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2Vy ciBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKChBIEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIg QVMgdmFsID4gMTApJzsKKyAgICBSQUlTRSBOT1RJQ0UgJ1VubWF0Y2hlZCBwYXJlbnRoZXNlczog VU5FWFBFQ1RFRCBTVUNDRVNTJzsKK0VYQ0VQVElPTgorICAgIFdIRU4gc3ludGF4X2Vycm9yIFRI RU4KKyAgICAgICAgUkFJU0UgTk9USUNFICdVbm1hdGNoZWQgcGFyZW50aGVzZXM6IEVYUEVDVEVE IEVSUk9SIC0gJScsIFNRTEVSUk07CisgICAgV0hFTiBPVEhFUlMgVEhFTgorICAgICAgICBSQUlT RSBOT1RJQ0UgJ1VubWF0Y2hlZCBwYXJlbnRoZXNlczogVU5FWFBFQ1RFRCBFUlJPUiAtICUnLCBT UUxFUlJNOworRU5EICQkOworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworCist LSBFUlJPUjogZW1wdHkgREVGSU5FIG5vdCBhbGxvd2VkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORQorKTsKKworLS0gRVJST1I6IGVtcHR5IFBBVFRFUk4gbm90IGFsbG93 ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7 CisKKy0tIEVSUk9SOiBERUZJTkUgd2l0aG91dCBQQVRURVJOIChQQVRURVJOIGFuZCBERUZJTkUg bXVzdCBiZSB1c2VkIHRvZ2V0aGVyKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJf ZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAw CispOworCistLSBRdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZXMgKE5PVCBTVVBQT1JURUQpCisK Ky0tIFBhdHRlcm4gdmFyaWFibGUgcXVhbGlmaWVkIG5hbWU6IG5vdCBzdXBwb3J0ZWQgKHZhbGlk IHBlciBJU08vSUVDIDE5MDc1LTUgNi4xNSAvIDQuMTYsIG5vdCB5ZXQgaW1wbGVtZW50ZWQpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIEEudmFsID4gMAorKTsK KworLS0gUEFUVEVSTi1vbmx5IHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3Qgc3VwcG9ydGVk IGV2ZW4gd2l0aG91dCBERUZJTkUgZW50cnkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00g cnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgQisp CisgICAgREVGSU5FIEEgQVMgQi52YWwgPiAwCispOworCistLSBERUZJTkUtb25seSB2YXJpYWJs ZSBxdWFsaWZpZWQgbmFtZTogc3RpbGwgYSBwYXR0ZXJuIHZhcmlhYmxlLCBub3QgYSByYW5nZSB2 YXJpYWJsZQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwLCBCIEFTIEIudmFsID4gMAorKTsKKworLS0gRlJPTS1jbGF1c2UgcmFuZ2UgdmFyaWFibGUg cXVhbGlmaWVkIG5hbWU6IG5vdCBhbGxvd2VkIChwcm9oaWJpdGVkIGJ5IElTTy9JRUMgMTkwNzUt NSA2LjUpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHJwcl9l cnIudmFsID4gMAorKTsKKworLS0gVW5rbm93biBxdWFsaWZpZXIgKG5laXRoZXIgcGF0dGVybiB2 YXIgbm9yIHJhbmdlIHZhcik6IHRoZSBERUZJTkUgcHJlLWNoZWNrCistLSBtdXN0IGZhbGwgdGhy b3VnaCBzbyB0aGF0IG5vcm1hbCBjb2x1bW4gcmVzb2x1dGlvbiBwcm9kdWNlcyBhIHNlbnNpYmxl IGVycm9yLgorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBub3N1 Y2gudmFsID4gMAorKTsKKworLS0gVW5xdWFsaWZpZWQgY29tcG9zaXRlIGZpZWxkIGFjY2VzcyBp biBERUZJTkUgd29ya3M6IG5vIHF1YWxpZmllciBtZWFucyBubworLS0gcGF0dGVybi9yYW5nZS12 YXIgbmF2aWdhdGlvbiwgc28gdGhlIHByZS1jaGVjayBza2lwcyBhbmQgbm9ybWFsIHJlc29sdXRp b24KKy0tIGhhbmRsZXMgIihpdGVtcykuYW1vdW50IiB2aWEgQV9JbmRpcmVjdGlvbiBvbiB0aGUg Y3VycmVudCByb3cuCitDUkVBVEUgVFlQRSBycHJfaXRlbSBBUyAobmFtZSBURVhULCBhbW91bnQg SU5UKTsKK0NSRUFURSBURU1QIFRBQkxFIHJwcl9jb21wb3NpdGUgKGlkIGludCwgaXRlbXMgcnBy X2l0ZW0pOworSU5TRVJUIElOVE8gcnByX2NvbXBvc2l0ZSBWQUxVRVMgKDEsIFJPVygnYScsNSkp LCAoMiwgUk9XKCdiJywxNSkpLCAoMywgUk9XKCdjJywyNSkpOworU0VMRUNUIGlkLCAoaXRlbXMp LmFtb3VudCwgQ09VTlQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfY29tcG9zaXRlCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgKGl0ZW1zKS5hbW91bnQgPiAxMAor KTsKKy0tIEV4cGVjdGVkOiByb3dzIHdoZXJlIChpdGVtcykuYW1vdW50ID4gMTAgZm9ybSBtYXRj aGVzOyBjb3VudHMgcmVmbGVjdCBmcmFtZSBzaXplCisKKy0tIENvbXBvc2l0ZSB0eXBlIGZpZWxk IHNlbGVjdGlvbiAocXVhbGlmaWVkIGZvcm1zKTogdGhlIENvbHVtblJlZiBwb3J0aW9uICgiQS5p dGVtcyIgb3IKKy0tICJycHJfY29tcG9zaXRlLml0ZW1zIikgaXMgd2hhdCBnZXRzIHF1b3RlZDsg dGhlIHRyYWlsaW5nICIuYW1vdW50IiBsaXZlcyBpbgorLS0gdGhlIHN1cnJvdW5kaW5nIEFfSW5k aXJlY3Rpb24gbm9kZSBhbmQgaXMgbm90IHZpc2libGUgdG8gdGhlIHByZS1jaGVjay4KK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2NvbXBvc2l0ZQorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgKEEuaXRlbXMpLmFt b3VudCA+IDEwCispOworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfY29tcG9zaXRl CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUgQSBBUyAocnByX2NvbXBvc2l0ZS5pdGVtcykuYW1vdW50ID4gMTAKKyk7CitEUk9QIFRBQkxF IHJwcl9jb21wb3NpdGU7CitEUk9QIFRZUEUgcnByX2l0ZW07CisKKy0tIEVSUk9SOiB1bmRlZmlu ZWQgY29sdW1uIGluIERFRklORQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJy CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUgQSBBUyBub25leGlzdGVudF9jb2x1bW4gPiAwCispOworCistLSBFUlJPUjogdHlwZSBtaXNt YXRjaAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAn c3RyaW5nJworKTsKKworLS0gRVJST1I6IGFnZ3JlZ2F0ZSBmdW5jdGlvbiBpbiBERUZJTkUgaXMg bm90IHN1cHBvcnRlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBB UyBDT1VOVCgqKSA+IDAKKyk7CisKKy0tIEVSUk9SOiBzZXQtcmV0dXJuaW5nIGZ1bmN0aW9uIGlu IERFRklORSBpcyBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgRlJPTSBycHJfZXJyCitXSU5ET1cgdyBB UyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSsp IERFRklORSBBIEFTIDEgPiBnZW5lcmF0ZV9zZXJpZXMoMSAsMikpOworCistLSBFUlJPUjogd2lu ZG93IGZ1bmN0aW9uIGluIERFRklORSBpcyBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgRlJPTSBycHJf ZXJyCitXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJ TkcgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIDEgPiByb3dfbnVtYmVyKCkgT1ZFUiAoKSk7CisK Ky0tIFN1YnF1ZXJ5IGluIERFRklORSBpcyBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IChTRUxFQ1QgbWF4KHZhbCkgRlJPTSBy cHJfZXJyKQorKTsKKworLS0gUGF0dGVybiB2YXJpYWJsZSBub3QgdXNlZCAoc2hvdWxkIHdvcmss IGV4dHJhIHZhcnMgaWdub3JlZCkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gNSwgQyBBUyB2YWwg PiAxMAorKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX2VycjsKKworLS0gTlVMTCBo YW5kbGluZworCitDUkVBVEUgVEFCTEUgcnByX251bGwgKGlkIElOVCwgdmFsIElOVCk7CitJTlNF UlQgSU5UTyBycHJfbnVsbCBWQUxVRVMgKDEsIDEwKSwgKDIsIE5VTEwpLCAoMywgMzApOworCist LSBOVUxMIGluIERFRklORSBleHByZXNzaW9uCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfbnVsbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTUKKykKK09SREVSIEJZIGlk OworCistLSBJUyBOVUxMIGluIERFRklORQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX251bGwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKE4rKQorICAgIERFRklORSBOIEFTIHZhbCBJUyBOVUxMCispCitPUkRFUiBCWSBp ZDsKKworLS0gSVMgTk9UIE5VTEwgaW4gREVGSU5FCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbnVsbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoTk4rKQorICAgIERFRklORSBOTiBBUyB2YWwgSVMgTk9UIE5VTEwKKykK K09SREVSIEJZIGlkOworCitEUk9QIFRBQkxFIHJwcl9udWxsOworCistLSBDb21wb3VuZCBuYXZp Z2F0aW9uOiBpbm5lciBuYXYgbXVzdCBiZSBkaXJlY3QgYXJnIChub3QgbmVzdGVkIGluIGV4cHJl c3Npb24pCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEw KSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJF Vih2ICsgRklSU1QodikpID4gMAorKTsKKworLS0gRklSU1QvTEFTVCB3cmFwcGluZyBGSVJTVC9M QVNUOiBwcm9oaWJpdGVkCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F IEEgQVMgRklSU1QoRklSU1QodikpID4gMAorKTsKKworLS0gVHJpcGxlIG5lc3Rpbmc6IHByb2hp Yml0ZWQgKDMtbGV2ZWwgZGVlcCBuYXZpZ2F0aW9uKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QoUFJFVih2KSkpID4gMAorKTsKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBXaW5kb3cgRGVkdXBsaWNhdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIG5vbi1SUFIg YW5kIFJQUiB3aW5kb3dzIHdpdGggaWRlbnRpY2FsIGJhc2UgZnJhbWUgYXJlIGtlcHQgc2VwYXJh dGUuCitTRUxFQ1QgaWQsIHZhbCwKKyAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiAoCisgICAgICAg IE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICkgQVMgZnZfbm9ybWFsLAorICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcxIEFTIGZ2X3JwcgorRlJPTSAoVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCks ICg0LCA0MCkpIEFTIHQoaWQsIHZhbCkKK1dJTkRPVyB3MSBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxMAorKTsKKworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBQYXR0ZXJuIE9wdGltaXphdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBmb3IgcGF0dGVy biBvcHRpbWl6YXRpb24KKy0tIFVzZSBFWFBMQUlOIHRvIHZlcmlmeSBvcHRpbWl6ZWQgcGF0dGVy biAoc2hvd24gYXMgIlBhdHRlcm46IC4uLiIpCisKK0NSRUFURSBUQUJMRSBycHJfcGxhbiAoaWQg SU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9wbGFuIFZBTFVFUworICAgICgxLCAxMCks ICgyLCAyMCksICgzLCAzMCksICg0LCA0MCksICg1LCA1MCksCisgICAgKDYsIDYwKSwgKDcsIDcw KSwgKDgsIDgwKSwgKDksIDkwKSwgKDEwLCAxMDApOworCistLSBDb25zZWN1dGl2ZSBWQVIgbWVy Z2U6IEEgQSBBIC0+IGF7M30KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKEEgQSBBKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gQ29uc2VjdXRpdmUgVkFSIG1l cmdlOiBBezJ9IEF7M30gLT4gYXs1fQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoQXsyfSBBezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gQ29uc2VjdXRp dmUgVkFSIG1lcmdlOiBBKyBBKiAtPiBhKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgUEFUVEVSTiAoQSsgQSopIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBDb25zZWN1dGl2 ZSBWQVIgbWVyZ2U6IEEgQSsgLT4gYXsyLH0KKy0tIHdoZXJlIGEgZmluaXRlIHByZXYgKEF7MSwx fSkgbWVldHMgYW4gaW5maW5pdGUgY2hpbGQgKEErKS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIFBBVFRFUk4gKEEgQSspIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBDb25z ZWN1dGl2ZSBWQVIgbWVyZ2UgYXQgdGhlIGJvdW5kYXJ5OiBBezEwNzM3NDE4MjMsfSBBezEwNzM3 NDE4MjMsfSAtPgorLS0gYXsyMTQ3NDgzNjQ2LH0uICBUaGUgbWluIHN1bSAyMTQ3NDgzNjQ2ID0g SU5UMzJfTUFYIC0gMSBpcyB0aGUgbGFyZ2VzdAorLS0gc3RpbGwtZmluaXRlIGJvdW5kLCBzbyB0 aGUgbWVyZ2UgcHJvY2VlZHM7IGEgc3VtIG9mIGV4YWN0bHkgSU5GIGluc3RlYWQKKy0tIGZhbGxz IGJhY2sgKHNlZSB0aGUgT3B0aW1pemF0aW9uIEZhbGxiYWNrIFRlc3RzKS4KK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEF7MTA3Mzc0MTgyMyx9IEF7MTA3Mzc0MTgy Myx9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gQ29uc2VjdXRpdmUgR1JPVVAgbWVyZ2Ug d2l0aCBmaW5pdGUgcXVhbnRpZmllcnM6ICgoQSBCKXs1fSkgKChBIEIpezEwfSkgLT4gbWVyZ2Vk CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoKEEgQil7NX0pICgo QSBCKXsxMH0pKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBD b25zZWN1dGl2ZSBHUk9VUCBtZXJnZSB3aXRoIHVuYm91bmRlZDogKEEgQikrIChBIEIpKyAtPiAo YSBiKXsyLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIp KyAoQSBCKSspIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIENv bnNlY3V0aXZlIEdST1VQIG1lcmdlOiAoQSBCKXsyfSAoQSBCKSsgLT4gKGEgYil7Myx9CistLSBX aGVyZSBhIGZpbml0ZSBwcmV2ICgoQSBCKXsyLDJ9KSBtZWV0cyBhbiBpbmZpbml0ZSBjaGlsZCAo KEEgQikrKS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIp ezJ9IChBIEIpKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0g Q29uc2VjdXRpdmUgR1JPVVAgbWVyZ2UgYXQgdGhlIGJvdW5kYXJ5OiAoQSBCKXsxMDczNzQxODIz LH0gKEEgQil7MTA3Mzc0MTgyMyx9CistLSAtPiAoYSBiKXsyMTQ3NDgzNjQ2LH0uICBUaGUgbWlu IHN1bSBJTlQzMl9NQVggLSAxIGlzIHN0aWxsIGZpbml0ZSwgc28gdGhlCistLSBtZXJnZSBwcm9j ZWVkczsgYSBzdW0gb2YgZXhhY3RseSBJTkYgaW5zdGVhZCBmYWxscyBiYWNrIChzZWUgdGhlCist LSBPcHRpbWl6YXRpb24gRmFsbGJhY2sgVGVzdHMpLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgUEFUVEVSTiAoKEEgQil7MTA3Mzc0MTgyMyx9IChBIEIpezEwNzM3NDE4MjMsfSkg REVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gUFJFRklYIG1lcmdl OiBBIEIgKEEgQikrIC0+IChhIGIpezIsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgUEFUVEVSTiAoQSBCIChBIEIpKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+ IDUwKTsKKworLS0gUFJFRklYIGFuZCBTVUZGSVggbWVyZ2U6IEEgQiAoQSBCKSsgQSBCIC0+IChh IGIpezMsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCIChB IEIpKyBBIEIpIERFRklORSBBIEFTIHZhbCA8PSA0MCwgQiBBUyB2YWwgPiA0MCk7CisKKy0tIEZs YXR0ZW4gbmVzdGVkOiBBICgoQikgKEMpKSAtPiBhIGIgYworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoQSAoKEIpIChDKSkpIERFRklORSBBIEFTIHZhbCA8PSAzMCwg QiBBUyB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjApOworCistLSBEYXRhIGV4ZWN1dGlvbjogU0VR IGZsYXR0ZW4gcHJvZHVjZXMgY29ycmVjdCByZXN1bHRzCitTRUxFQ1QgaWQsIHZhbCwgY291bnQo KikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICAgICAgICAgICBQQVRURVJO IChBICgoQikgKEMpKSkgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBB UyB2YWwgPiA2MCk7CisKKy0tIEFMVCBmbGF0dGVuOiAoQSB8IChCIHwgQykpKyAtPiAoYSB8IGIg fCBjKSsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBy cHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIHwgKEIg fCBDKSkrKSBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsIDw9IDYwLCBDIEFTIHZhbCA+ IDYwKTsKKworLS0gQUxUIGRlZHVwbGljYXRlOiAoQSB8IEIgfCBBKSAtPiAoYSB8IGIpCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSB8IEIgfCBBKSspIERFRklO RSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIERhdGEgZXhlY3V0aW9uOiBB TFQgZGVkdXAgcHJvZHVjZXMgY29ycmVjdCByZXN1bHRzCitTRUxFQ1QgaWQsIHZhbCwgY291bnQo KikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICAgICAgIFBBVFRF Uk4gKChBIHwgQiB8IEEpKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsK KworLS0gUXVhbnRpZmllciBtdWx0aXBseTogKEF7Mn0pezN9IC0+IGF7Nn0KK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezJ9KXszfSkgREVGSU5FIEEgQVMgdmFs ID4gMCk7CisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6IHJlbHVjdGFudCBHUk9VUCBjaGls ZCAoKChBIEIpezJ9Pyl7M30pIHN0YXlzIG5lc3RlZAorLS0gYSByZWx1Y3RhbnQgcXVhbnRpZmll ciBvbiBhIEdST1VQIGlzIG5vdCBzdWJqZWN0IHRvIG11bHRpcGxpY2F0aW9uCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoKEEgQil7Mn0/KXszfSkgREVGSU5FIEEg QVMgdmFsID4gMCwgQiBBUyB2YWwgPiAwKTsKKworLS0gUXVhbnRpZmllciBtdWx0aXBseSBjb250 cm9sOiBncmVlZHkgR1JPVVAgKCgoQSBCKXsyfSl7M30pIC0+IChhIGIpezZ9CitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoKEEgQil7Mn0pezN9KSBERUZJTkUgQSBB UyB2YWwgPiAwLCBCIEFTIHZhbCA+IDApOworCistLSBRdWFudGlmaWVyIG11bHRpcGx5IHdpdGgg Y2hpbGQgcmFuZ2U6IChBezIsM30pezN9IC0+IGF7Niw5fQorLS0gb3V0ZXIgZXhhY3QsIGNoaWxk IHJhbmdlIC0gb3B0aW1pemF0aW9uIGFwcGxpZXMKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIFBBVFRFUk4gKChBezIsM30pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0g UXVhbnRpZmllciBOTyBtdWx0aXBseTogKEF7Mn0pezIsM30gc3RheXMgYXMgKGF7Mn0pezIsM30K Ky0tIG91dGVyIHJhbmdlIC0gZ2FwcyB3b3VsZCBvY2N1ciAoNCw2IG5vdCA0LDUsNiksIG5vIG9w dGltaXphdGlvbgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7 Mn0pezIsM30pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBRdWFudGlmaWVyIE5PIG11bHRp cGx5OiAoQXsyfSl7Mix9IHN0YXlzIGFzIChhezJ9KXsyLH0KKy0tIG91dGVyIHVuYm91bmRlZCAt IGdhcHMgd291bGQgb2NjdXIgKDQsNiw4LC4uLiBub3QgNCw1LDYsLi4uKSwgbm8gb3B0aW1pemF0 aW9uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsyfSl7Mix9 KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUXVhbnRpZmllciBtdWx0aXBseTogKEEpezIs fSAtPiBhezIsfQorLS0gY2hpbGQgZXhhY3QgMSAtIG5vIGdhcHMsIG9wdGltaXphdGlvbiBhcHBs aWVzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSl7Mix9KSBE RUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUXVhbnRpZmllciBtdWx0aXBseTogKEEpKyAtPiBh KworLS0gY2hpbGQgZXhhY3QgMSAtIG5vIGdhcHMsIG9wdGltaXphdGlvbiBhcHBsaWVzCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSkrKSBERUZJTkUgQSBBUyB2 YWwgPiAwKTsKKworLS0gUXVhbnRpZmllciBOTyBtdWx0aXBseTogKEF7Mn0pezMsNX0gc3RheXMg YXMgKGF7Mn0pezMsNX0KKy0tIG91dGVyIHJhbmdlLCBjaGlsZCBleGFjdCA+IDEgLSBnYXBzIHdv dWxkIG9jY3VyICg2LDgsMTAgbm90IDYsNyw4LDksMTApCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgICAgICBQQVRURVJOICgoQXsyfSl7Myw1fSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisK Ky0tIFF1YW50aWZpZXIgbXVsdGlwbHk6IChBezIsM30pezIsM30gLT4gYXs0LDl9CistLSBvdXRl ciByYW5nZSwgY2hpbGQgcmFuZ2U6IGNvdW50cyBbNCw2XSBVIFs2LDldID0gWzQsOV0gYXJlIGNv bnRpZ3VvdXMsIHNvIGl0IGZvbGRzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQ QVRURVJOICgoQXsyLDN9KXsyLDN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUXVhbnRp ZmllciBOTyBtdWx0aXBseTogKEF7NCw1fSl7MiwzfSBzdGF5cyBhcyAoYXs0LDV9KXsyLDN9Cist LSBvdXRlciByYW5nZSwgY2hpbGQgcmFuZ2Ugd2l0aCBhIGdhcDogWzgsMTBdIFUgWzEyLDE1XSBt aXNzZXMgMTEKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezQs NX0pezIsM30pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBOZXN0ZWQgdW5ib3VuZGVkOiAo QSopKiAtPiBhKgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEq KSopIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBOZXN0ZWQgdW5ib3VuZGVkOiAoQSspKiAt PiBhKgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJw cl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEErKSopIERF RklORSBBIEFTIHZhbCA+IDApOworCistLSBOZXN0ZWQgdW5ib3VuZGVkOiAoQSspKyAtPiBhKwor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEErKSspIERFRklORSBB IEFTIHZhbCA+IDApOworCistLSBRdWFudGlmaWVyIG11bHRpcGx5IHdpdGggYW4gdW5ib3VuZGVk IGNoaWxkOiBhbiBleGFjdCBvdXRlciBjb3VudCAobSA9PSBuKQorLS0gYWx3YXlzIGZvbGRzIHJl Z2FyZGxlc3Mgb2YgdGhlIGNoaWxkJ3MgbWF4IC0gKEErKXszfSAtPiBhezMsfQorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEErKXszfSkgREVGSU5FIEEgQVMgdmFs ID4gMCk7CisKKy0tIChBezIsfSl7M30gLT4gYXs2LH0gIChtID09IG4sIHVuYm91bmRlZCBjaGls ZCB3aXRoIG1pbiAyKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAo KEF7Mix9KXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIChBKyl7Miw0fSAtPiBhezIs fSAgKG91dGVyIHJhbmdlLCB1bmJvdW5kZWQgY2hpbGQ6IGV2ZXJ5IGludGVydmFsIHJlYWNoZXMg SU5GLAorLS0gc28gdGhleSBhbHdheXMgdG91Y2gpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgICAgICBQQVRURVJOICgoQSspezIsNH0pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSAo QXsyLDN9KXsyLDR9IC0+IGF7NCwxMn0gIChvdXRlciByYW5nZSB4IGNoaWxkIHJhbmdlLCBjb250 aWd1b3VzOgorLS0gWzQsNl0gVSBbNiw5XSBVIFs4LDEyXSA9IFs0LDEyXSkKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezIsM30pezIsNH0pIERFRklORSBBIEFT IHZhbCA+IDApOworCistLSBTa2lwcGFibGUgb3V0ZXIgKG1pbiAwKSBmb2xkcyBvbmx5IHdoZW4g dGhlIHplcm8gY2FzZSBjb25uZWN0cyB0byB0aGUgY2hpbGQKKy0tIHJhbmdlOiAoQXsxLDN9KT8g LT4gYXswLDN9ICAoY2hpbGQgbWluIDw9IDEsIHNvIHswfSBVIFsxLDNdID0gWzAsM10gaXMgY29u dGlndW91cykKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezEs M30pPykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6 IChBezIsM30pPyBzdGF5cyBhcyAoYXsyLDN9KT8KKy0tIG1pbiAwIHdpdGggY2hpbGQgbWluID49 IDI6IHswfSBVIFsyLDNdIGxlYXZlcyAxIHVucmVhY2hhYmxlIChpbnRlcnZhbHMgdG91Y2ggYnV0 CistLSB0aGUgemVybyBjYXNlIGRvZXMgbm90IGNvbm5lY3QpCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBQQVRURVJOICgoQXsyLDN9KT8pIERFRklORSBBIEFTIHZhbCA+IDApOwor CistLSBRdWFudGlmaWVyIE5PIG11bHRpcGx5OiAoQXszLDR9KT8gc3RheXMgYXMgKGF7Myw0fSk/ CistLSBtaW4gMCB3aXRoIGNoaWxkIG1pbiA+PSAyOiB7MH0gVSBbMyw0XSBsZWF2ZXMgMSwyIHVu cmVhY2hhYmxlCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsz LDR9KT8pIERFRklORSBBIEFTIHZhbCA+IDApOworCistLSBVbndyYXAgR1JPVVB7MSwxfTogKEEp IC0+IGEKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBy cHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBKSkgREVG SU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFVud3JhcCBHUk9VUHsxLDF9OiAoQSBCKSAtPiBhIGIK K0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxh bgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpKSBERUZJTkUg QSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBDb21iaW5lZCBvcHRpbWl6YXRp b246IEEgQSAoQiBCKSsgQiBCIEMgQyBDIC0+IGF7Mn0gKGJ7Mn0pezIsfSBjezN9CitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEEgKEIgQikrIEIgQiBDIEMgQykK KyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMjAsIEIgQVMgdmFsID4gMjAgQU5EIHZh bCA8PSA3MCwgQyBBUyB2YWwgPiA3MCk7CisKKy0tIENvbnNlY3V0aXZlIEdST1VQIG1lcmdlIHdp dGggdW5ib3VuZGVkOiAoQSspIChBKykgLT4gYXsyLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIFBBVFRFUk4gKChBKykgKEErKSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0t IENvbnNlY3V0aXZlIEdST1VQIG1lcmdlIGZpbml0ZTogKEF7MTB9KXsyMH0gLT4gYXsyMDB9CitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQXsxMH0pezIwfSkgREVG SU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIERpZmZlcmVudCBHUk9VUCBwcmV2ZW50cyBtZXJnZTog KEEgQil7Mn0gKEMgRCl7M30KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKChBIEIpezJ9IChDIEQpezN9KQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAy NSwgQiBBUyB2YWwgPiAyNSBBTkQgdmFsIDw9IDUwLAorICAgICAgICAgICAgICAgICAgICBDIEFT IHZhbCA+IDUwIEFORCB2YWwgPD0gNzUsIEQgQVMgdmFsID4gNzUpOworCistLSBEaWZmZXJlbnQg Y2hpbGRyZW4gY291bnQgcHJldmVudHMgbWVyZ2U6IChBIEIpKyAoQSBCIEMpKworRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQikrIChBIEIgQykrKQorICAgICAg ICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAzMywgQiBBUyB2YWwgPiAzMyBBTkQgdmFsIDw9IDY2 LCBDIEFTIHZhbCA+IDY2KTsKKworLS0gUFJFRklYIG9ubHkgbWVyZ2U6IEEgQiAoQSBCKSsgLT4g KGEgYil7Mix9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIg KEEgQikrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBTVUZG SVggb25seSBtZXJnZTogKEEgQikrIEEgQiAtPiAoYSBiKXsyLH0KK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpKyBBIEIpIERFRklORSBBIEFTIHZhbCA8PSA1 MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIE11bHRpcGxlIFNVRkZJWCBhYnNvcnB0aW9uIHdpdGgg c2tpcFVudGlsOiAoQSBCKSsgQSBCIEEgQiBDCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBQQVRURVJOICgoQSBCKSsgQSBCIEEgQiBDKQorICAgICAgICAgICAgIERFRklORSBBIEFT IHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCBBTkQgdmFsIDw9IDc1LCBDIEFTIHZhbCA+IDc1KTsK KworLS0gUFJFRklYIG1lcmdlIHdpdGggcmVtYWluaW5nIHByZWZpeDogQSBCIEMgRCAoQyBEKSsg IC0+IEEgQiAoQyBEKSB7Mix9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRU RVJOIChBIEIgQyBEIChDIEQpKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMjUs IEIgQVMgdmFsID4gMjUgQU5EIHZhbCA8PSA1MCwKKyAgICAgICAgICAgICAgICAgICAgQyBBUyB2 YWwgPiA1MCBBTkQgdmFsIDw9IDc1LCBEIEFTIHZhbCA+IDc1KTsKKworLS0gY2Fubm90IG1lcmdl LCBwcmVmaXggaXMgZGlmZmVyZW50CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCitQQVRURVJOIChBIEIg QyBEIEMgKEMgRCkgKykKK0RFRklORSBBIEFTIHZhbCA8PSAyNSwgQiBBUyB2YWwgPiAyNSwKKyAg ICAgICBDIEFTIHZhbCA+IDUwLCBEIEFTIHZhbCA+IDc1KTsKKworLS0gUFJFRklYIG1lcmdlIHdp dGggcXVhbnRpZmllcnM6IEEgQiogKEEgQiopKyAtPiAoYSBiKil7Mix9CitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIqIChBIEIqKSspCisgICAgICAgICAgICAg REVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gUFJFRklYIG1lcmdl IHdpdGggbXVsdGlwbGUgcXVhbnRpZmllcnM6IEErIEIqIEM/IChBKyBCKiBDPykrIC0+IChhKyBi KiBjPyl7Mix9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBKyBC KiBDPyAoQSsgQiogQz8pKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIg QVMgdmFsID4gMzAgQU5EIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisKKy0tIFNVRkZJWCBt ZXJnZSB3aXRoIHF1YW50aWZpZXJzOiAoQSBCKikrIEEgQiogLT4gKGEgYiopezIsfQorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQiopKyBBIEIqKQorICAgICAg ICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIFVud3Jh cCBHUk9VUHsxLDF9OiAoKEEgfCBCIHwgQykpIC0+IChhIHwgYiB8IGMpCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSB8IEIgfCBDKSkgREVGSU5FIEEgQVMgdmFs IDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisKKy0tIERhdGEgZXhlY3V0 aW9uOiBHUk9VUCB1bndyYXAgcHJvZHVjZXMgY29ycmVjdCByZXN1bHRzCitTRUxFQ1QgaWQsIHZh bCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICAgICAgICAg ICBQQVRURVJOICgoQSB8IEIgfCBDKSkgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8 PSA2MCwgQyBBUyB2YWwgPiA2MCk7CisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNz OiBWQVIgbWVyZ2UKKy0tIEErPyBBIHN0YXlzIGFzIGErPyBhIChncmVlZHkgQSsgQSBtZXJnZXMg dG8gYXsyLH0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBKz8g QSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlw YXNzOiBHUk9VUCBtZXJnZQorLS0gKEEgQikrPyAoQSBCKSBzdGF5cyBzZXBhcmF0ZSAoZ3JlZWR5 IG1lcmdlcyB0byAoYSBiKXsyLH0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQ QVRURVJOICgoQSBCKSs/IChBIEIpKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4g NTApOworCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFzczogcXVhbnRpZmllciBtdWx0 aXBseSAob3V0ZXIgcmVsdWN0YW50KQorLS0gKEF7Mn0pezN9PyBzdGF5cyBhcyAoYXsyfSl7M30/ IChncmVlZHkgbWVyZ2VzIHRvIGF7Nn0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBQQVRURVJOICgoQXsyfSl7M30/KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUmVsdWN0 YW50IG9wdGltaXphdGlvbiBieXBhc3M6IHF1YW50aWZpZXIgbXVsdGlwbHkgKGlubmVyIHJlbHVj dGFudCkKKy0tIChBezJ9Pyl7M30gc3RheXMgYXMgKGF7Mn0/KXszfSAoZ3JlZWR5IG1lcmdlcyB0 byBhezZ9KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7Mn0/ KXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24g YnlwYXNzOiBQUkVGSVggbWVyZ2UKKy0tIEEgQiAoQSBCKSs/IHN0YXlzIHNlcGFyYXRlIChncmVl ZHkgbWVyZ2VzIHRvIChhIGIpezIsfSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IFBBVFRFUk4gKEEgQiAoQSBCKSs/KSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4g NTApOworCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFzczogU1VGRklYIG1lcmdlCist LSAoQSBCKSs/IEEgQiBzdGF5cyBzZXBhcmF0ZSAoZ3JlZWR5IG1lcmdlcyB0byAoYSBiKXsyLH0p CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSs/IEEgQikg REVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gR1JPVVAgdW53cmFw IHdpdGggcXVhbnRpZmllciBwcm9wYWdhdGlvbjogKEEpPz8gQiAtPiBhPz8gYgorLS0gU2luZ2xl IFZBUiBjaGlsZCB7MSwxfSByZWNlaXZlcyBHUk9VUCdzIHF1YW50aWZpZXIgYW5kIHJlbHVjdGFu dAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEpPz8gQikgREVG SU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gUmVsdWN0YW50IHByZXNl cnZlZCB0aHJvdWdoIEFMVCBmbGF0dGVuCistLSAoQSB8IChCIHwgQykpKz8gZmxhdHRlbnMgdG8g KGEgfCBiIHwgYykrPyAtIGlubmVyIEFMVCBmbGF0dGVuZWQsIHJlbHVjdGFudCBrZXB0CitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSB8IChCIHwgQykpKz8pIERF RklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjApOworCist LSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFzczogYWJzb3JwdGlvbiBmbGFncworLS0gQSs/ IHdpdGggU0tJUCBQQVNUIExBU1QgUk9XIC0gbm8gYWJzb3JwdGlvbiBtYXJrZXJzIChncmVlZHkg QSsgZ2V0cyBhKyIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSs/KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsK KworLS0gRHVwbGljYXRlIEdST1VQIHJlbW92YWw6ICgoQSB8IEIpKyB8IChBIHwgQikrKSAtPiAo YSB8IGIpKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgfCBC KSsgfCAoQSB8IEIpKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKwor LS0gQ29uc2VjdXRpdmUgVkFSIG1lcmdlIHdpdGggemVyby1taW46IEEqIEErIC0+IGErCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBKiBBKykgREVGSU5FIEEgQVMg dmFsID4gMCk7CisKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZSAoNC1lbGVtZW50KTogQSBBezJ9 IEErIEF7M30gLT4gYXs3LH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKEEgQXsyfSBBKyBBezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUFJFRklYK1NV RkZJWCBtZXJnZSAoNS13YXkpOiBBIEIgQSBCIChBIEIpKyBBIEIgQSBCIC0+IChhIGIpezUsfQor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCIEEgQiAoQSBCKSsg QSBCIEEgQikKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4g NTApOworCistLSBQUkVGSVgrU1VGRklYIG1lcmdlICg1LXdheSk6IEIgQSBCIChBIEIpKyBBIEIg QSBCIC0+IGIgKGEgYil7NCx9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRU RVJOIChCIEEgQiAoQSBCKSsgQSBCIEEgQikKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwg PD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBVbndyYXAgc2luZ2xlLWl0ZW0gQUxUIGFmdGVy IGRlZHVwOiAoQSB8IEEpKyAtPiBhKworLS0gQUxUIGRlZHVwIHJlZHVjZXMgdG8gc2luZ2xlLWl0 ZW0sIHRoZW4gR1JPVVAgdW53cmFwCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQ QVRURVJOICgoQSB8IEEpKykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisKKy0tIEdST1VQezEsMX0g dG8gU0VRIHdpdGggZmxhdHRlbjogKChBIEIpKEMgRCkpIC0+IGEgYiBjIGQKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKCgoQSBCKShDIEQpKSkKKyAgICAgICAgICAg ICBERUZJTkUgQSBBUyB2YWwgPD0gMjUsIEIgQVMgdmFsID4gMjUgQU5EIHZhbCA8PSA1MCwKKyAg ICAgICAgICAgICAgICAgICAgQyBBUyB2YWwgPiA1MCBBTkQgdmFsIDw9IDc1LCBEIEFTIHZhbCA+ IDc1KTsKKworLS0gTmVzdGVkIEFMVCBwYXR0ZXJuOiAoKEEgQikgfCBDKSBEIHwgQSBCIEMKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKCgoQSBCKSB8IEMpIEQgfCBB IEIgQykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMjUsIEIgQVMgdmFsID4gMjUg QU5EIHZhbCA8PSA1MCwKKyAgICAgICAgICAgICAgICAgICAgQyBBUyB2YWwgPiA1MCBBTkQgdmFs IDw9IDc1LCBEIEFTIHZhbCA+IDc1KTsKKworLS0gTmVzdGVkIEFMVCB3aXRoIHVuYm91bmRlZDog KChBKyBCKSB8IEMpIEQgfCBBIEIgQworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoKChBKyBCKSB8IEMpIEQgfCBBIEIgQykKKyAgICAgICAgICAgICBERUZJTkUgQSBB UyB2YWwgPD0gMjUsIEIgQVMgdmFsID4gMjUgQU5EIHZhbCA8PSA1MCwKKyAgICAgICAgICAgICAg ICAgICAgQyBBUyB2YWwgPiA1MCBBTkQgdmFsIDw9IDc1LCBEIEFTIHZhbCA+IDc1KTsKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBBYnNvcnB0aW9uIEZsYWcgRGlzcGxheSBUZXN0cworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBh YnNvcnB0aW9uIG1hcmtlciBkaXNwbGF5IGluIEVYUExBSU4gb3V0cHV0CistLSBNYXJrZXJzOiAn ID0gYnJhbmNoIGVsZW1lbnQsICIgPSBqdWRnbWVudCBwb2ludAorLS0gRmlsZXM6IGV4cGxhaW4u YyAoYXBwZW5kX3Jwcl9xdWFudGlmaWVyLCBkZXBhcnNlX3Jwcl9wYXR0ZXJuKQorCistLSBTaW1w bGUgVkFSOiBBKyAtPiBhKyIgKGp1ZGdtZW50IHBvaW50KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEErKSBE RUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gR1JPVVAgdW5ib3VuZGVkOiAoQSBCKSsgLT4gKGEn IGInKSsiIChicmFuY2ggKyBqdWRnbWVudCkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAg ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQSBCKSspIERFRklO RSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIEFMVCBib3RoIGFic29yYmFi bGU6IEErIHwgQisgLT4gKGErIiB8IGIrIikKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAg ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKyB8IEIrKSBERUZJ TkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBBTFQgb25lIGFic29yYmFi bGU6IEErIHwgQiAtPiAoYSsiIHwgYikKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKyB8IEIpIERFRklORSBB IEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIFNlcXVlbmNlIHdpdGggYWJzb3Ji YWJsZSBzdGFydDogQSsgQiAtPiBhKyIgYgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEErIEIpIERFRklORSBB IEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIENvbXBsZXggbmVzdGVkOiAoKEEr IEIpIHwgQykgRCB8IEEgQiBDIC0gZGVlcGx5IG5lc3RlZCBBTFQKK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgo KEErIEIpIHwgQykgRCB8IEEgQiBDKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAz MCwgQiBBUyB2YWwgPD0gNjAsIEMgQVMgdmFsIDw9IDgwLCBEIEFTIHZhbCA+IDgwKTsKKworLS0g TmVzdGVkIHVuYm91bmRlZDogKEErIHwgQikrIC0+IChhKyIgfCBiKSsgKGZpcnN0IGl0ZXJhdGlv biBhYnNvcmJhYmxlKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBKyB8IEIpKykKKyAgICAgICAgICAgICBE RUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBBTFQgaW5zaWRlIHVu Ym91bmRlZCBHUk9VUDogKEErIEIgfCBBIEIpKiAtPiAoYSsiIGIgfCBhIGIpKiAoZmlyc3QgaXRl cmF0aW9uIGFic29yYmFibGUpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEErIEIgfCBBIEIpKikKKyAgICAg ICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBGaXhl ZC1sZW5ndGggZ3JvdXAgYWJzb3JiYWJsZTogKEF7Mn0gQnszfSkrIC0+IChhezJ9JyBiezN9Jyl7 Mix9IgorLS0gQWxsIGNoaWxkcmVuIGhhdmUgbWluID09IG1heCwgZXF1aXZhbGVudCB0byB1bnJv bGxpbmcgdG8gezEsMX0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQXsyfSBCezN9KSspCisgICAgICAgICAg ICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKworLS0gTmVzdGVkIGZp eGVkLWxlbmd0aCBncm91cDogKEEgKEIgQyl7Mn0gRCkrIC0+IGFic29yYmFibGUKK0VYUExBSU4g KENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQ QVRURVJOICgoQSAoQiBDKXsyfSBEKSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9 IDIwLCBCIEFTIHZhbCA8PSA0MCwgQyBBUyB2YWwgPD0gNjAsIEQgQVMgdmFsID4gNjApOworCist LSBOZXN0ZWQgZml4ZWQtbGVuZ3RoIHdpdGggaW5uZXIgcXVhbnRpZmllcjogKChBezJ9IEJ7M30p ezJ9KSsgLT4gYWJzb3JiYWJsZQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKCgoQXsyfSBCezN9KXsyfSkrKQor ICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0t IE5vbi1hYnNvcmJhYmxlIGZpeGVkLWxlbmd0aDogKEEgQnsyLDV9KSsgLT4gbm8gbWFya2VycyAo bWluICE9IG1heCkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQSBCezIsNX0pKykKKyAgICAgICAgICAgICBE RUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworCistLSBOb24tYWJzb3JiYWJs ZSBmaXhlZC1sZW5ndGg6IChBIEI/KSsgLT4gbm8gbWFya2VycyAobWluICE9IG1heCkKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VyBQQVRURVJOICgoQSBCPykrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwg QiBBUyB2YWwgPiA1MCk7CisKKy0tIE5vbi1hYnNvcmJhYmxlICh1bmJvdW5kZWQgbm90IGF0IHN0 YXJ0KTogQSBCKyAtPiBhIGIrIChubyBtYXJrZXJzKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKEEgQispIERF RklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIE5vbi1hYnNvcmJhYmxl IChubyB1bmJvdW5kZWQgYnJhbmNoKTogKEEgfCBCKXsyLH0gLT4gKGEgfCBiKXsyLH0gKG5vIG1h cmtlcnMpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEEgfCBCKXsyLH0pIERFRklORSBBIEFTIHZhbCA8PSA1 MCwgQiBBUyB2YWwgPiA1MCk7CisKKy0tIE5vbi1hYnNvcmJhYmxlIChTS0lQIFRPIE5FWFQgUk9X KTogQSsgLT4gYSsgKG5vIG1hcmtlcnMpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyB2 YWwgPiAwKTsKKworLS0gTm9uLWFic29yYmFibGUgKGxpbWl0ZWQgZnJhbWUpOiBBKyAtPiBhKyAo bm8gbWFya2VycykKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgMTAgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKworLS0gUmVs dWN0YW50IHsxfT8gcXVhbnRpZmllciBkZXBhcnNlCistLSBBezF9PyBpcyBhIHJlbHVjdGFudCB7 MSwxfSBxdWFudGlmaWVyLiAgVGhlIGRlcGFyc2UgY29kZSBtdXN0CistLSBvdXRwdXQgInsxfSIg ZXhwbGljaXRseSB0byBkaXNhbWJpZ3VhdGUgZnJvbSBhIGJhcmUgIj8iIHF1YW50aWZpZXIKKy0t ICh3aGljaCB3b3VsZCBtZWFuIHswLDF9KS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IHZhbAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEF7MX0/IEIpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2 YWwgPiAwCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIEFic29ycHRpb24gQW5hbHlzaXMgVGVzdHMKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gVGVzdHMgY29udGV4dCBhYnNvcnB0aW9uIG9wdGltaXphdGlvbiAoTyhuXjIpIC0+IE8o bikpCistLSBGaWxlczogcnByLmMgKGNvbXB1dGVBYnNvcmJhYmlsaXR5KQorCistLSBTaW1wbGUg QWJzb3JiYWJsZSBQYXR0ZXJuOiBBKyBCCistLSBQYXR0ZXJuIHN0YXJ0cyB3aXRoIHVuYm91bmRl ZCBWQVIKKworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKworLS0gQWJzb3JiYWJsZSBHUk9V UCBQYXR0ZXJuOiAoQSBCKSsgQworLS0gUGF0dGVybiBzdGFydHMgd2l0aCB1bmJvdW5kZWQgR1JP VVAKKworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKyBDKQorICAgIERFRklORSBBIEFTIHZhbCA8 PSAzMCwgQiBBUyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwCispCitPUkRF UiBCWSBpZDsKKworLS0gTm9uLUFic29yYmFibGU6IFVuYm91bmRlZCBOb3QgYXQgU3RhcnQKKy0t IFBhdHRlcm46IEEgQisgKHVuYm91bmRlZCBub3QgYXQgc3RhcnQpCisKK1NFTEVDVCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MAorKQor T1JERVIgQlkgaWQ7CisKKy0tIEFMVCB3aXRoIEFic29yYmFibGUgQnJhbmNoZXMKKy0tIFBhdHRl cm46IChBKyB8IEIrKSBDIC0gYm90aCBicmFuY2hlcyBhYnNvcmJhYmxlCisKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoQSsgfCBCKykgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFs ID4gMzAgQU5EIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MAorKQorT1JERVIgQlkgaWQ7CisKKy0t IEFMVCB3aXRoIE1peGVkIEJyYW5jaGVzCistLSBQYXR0ZXJuOiAoQSsgfCBCIEMpIC0gb25seSBm aXJzdCBicmFuY2ggYWJzb3JiYWJsZQorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEErIHwgQiBDKSsp CisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAs IEMgQVMgdmFsID4gNjAKKykKK09SREVSIEJZIGlkOworCistLSBOb24tQWJzb3JiYWJsZTogQUxU IEluc2lkZSBHUk9VUAorLS0gUGF0dGVybjogKEEgfCBCKXsyLH0gLSBBTFQgaW5zaWRlIHVuYm91 bmRlZCBHUk9VUAorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKXsyLH0pCisgICAgREVGSU5F IEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKworLS0gTm9u LUFic29yYmFibGU6IE5lc3RlZCBVbmJvdW5kZWQKKy0tIFBhdHRlcm46ICgoQSBCKSsgQykrIC0g bmVzdGVkIEdST1VQIHN0cnVjdHVyZQorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpKyBDKSsp CisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA+IDMwIEFORCB2YWwgPD0gNjAs IEMgQVMgdmFsID4gNjAKKykKK09SREVSIEJZIGlkOworCistLSBOb24tQWJzb3JiYWJsZTogVW5i b3VuZGVkIEVsZW1lbnQgSW5zaWRlIEdST1VQCistLSBQYXR0ZXJuOiAoQSBCKyl7Mix9IC0gdW5i b3VuZGVkIGluc2lkZSBHUk9VUAorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQispezIsfSkKKyAg ICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOwor CistLSBSdW50aW1lIENvbmRpdGlvbnM6IFNLSVAgVE8gTkVYVCBST1cKKy0tIEFic29ycHRpb24g ZGlzYWJsZWQgd2l0aCBTS0lQIFRPIE5FWFQgUk9XCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlk OworCistLSBSdW50aW1lIENvbmRpdGlvbnM6IExpbWl0ZWQgRnJhbWUKKy0tIEFic29ycHRpb24g ZGlzYWJsZWQgd2l0aCBsaW1pdGVkIGZyYW1lIGVuZAorCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCA1IEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBFZGdlIENhc2UgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgYm91bmRhcnkgY29u ZGl0aW9ucyBhbmQgY29tcGxleCBzY2VuYXJpb3MKKworLS0gRW1wdHkgTWF0Y2ggUHJldmVudGlv bgorLS0gUGF0dGVybiB0aGF0IGNvdWxkIG1hdGNoIGVtcHR5OiBBKgorCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSopCisgICAgREVGSU5FIEEgQVMgdmFsID4gMTAw MCAgLS0gTmV2ZXIgbWF0Y2hlcworKQorT1JERVIgQlkgaWQ7CisKKy0tIEFsbCBSb3dzIE1hdGNo CistLSBQYXR0ZXJuIHdoZXJlIGV2ZXJ5IHJvdyBtYXRjaGVzCisKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMCAgLS0g QWx3YXlzIHRydWUKKykKK09SREVSIEJZIGlkOworCistLSBMYXJnZSBRdWFudGlmaWVycworLS0g UGF0dGVybjogQXsxMDB9IChsYXJnZSBleGFjdCBxdWFudGlmaWVyKQorCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsxMDB9KQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKykKK09SREVSIEJZIGlkOworCistLSBQYXR0ZXJuOiBBezEwLDIwfSAobGFyZ2UgcmFuZ2Ug cXVhbnRpZmllcikKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEw LDIwfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gQ29t cGxleCBNdWx0aS1MZXZlbCBOZXN0aW5nCistLSBQYXR0ZXJuOiAoKChBIEIpIHwgQykrIEQpKwor CitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSBCKSB8IEMpKyBE KSspCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDIwLCBCIEFTIHZhbCA+IDIwIEFORCB2YWwgPD0g NDAsCisgICAgICAgICAgIEMgQVMgdmFsID4gNDAgQU5EIHZhbCA8PSA2MCwgRCBBUyB2YWwgPiA2 MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIExvbmcgQWx0ZXJuYXRpb24gQ2hhaW4KKy0tIFBhdHRl cm46IEEgfCBCIHwgQyB8IEQgfCBFICg1LXdheSBBTFQpCisKK1NFTEVDVCBpZCwgdmFsLCBDT1VO VCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBIHwgQiB8IEMgfCBEIHwgRSkKKyAgICBERUZJTkUgQSBBUyB2 YWwgPSAxMCwgQiBBUyB2YWwgPSAzMCwgQyBBUyB2YWwgPSA1MCwKKyAgICAgICAgICAgRCBBUyB2 YWwgPSA3MCwgRSBBUyB2YWwgPSA5MAorKQorT1JERVIgQlkgaWQ7CisKKy0tIExvbmcgU2VxdWVu Y2UKKy0tIFBhdHRlcm46IEEgQiBDIEQgRSBGIEcgSCAoOC1lbGVtZW50IFNFUSkKKworU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBGIEcgSCkKKyAgICBE RUZJTkUgQSBBUyB2YWwgPj0gMTAsIEIgQVMgdmFsID49IDIwLCBDIEFTIHZhbCA+PSAzMCwKKyAg ICAgICAgICAgRCBBUyB2YWwgPj0gNDAsIEUgQVMgdmFsID49IDUwLCBGIEFTIHZhbCA+PSA2MCwK KyAgICAgICAgICAgRyBBUyB2YWwgPj0gNzAsIEggQVMgdmFsID49IDgwCispCitPUkRFUiBCWSBp ZDsKKworLS0gSW50ZXJsZWF2ZWQgUXVhbnRpZmllcnMKKy0tIFBhdHRlcm46IEF7Mn0gQisgQ3sz LDV9IEQqIEV7MSx9CisKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ezJ9IEIrIEN7Myw1fSBEKiBFezEsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZh bCA+IDAsIEMgQVMgdmFsID4gMCwKKyAgICAgICAgICAgRCBBUyB2YWwgPiAwLCBFIEFTIHZhbCA+ IDAKKykKK09SREVSIEJZIGlkOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE9wdGltaXphdGlvbiBGYWxsYmFjayBU ZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBUZXN0cyBmb3Igb3B0aW1pemF0aW9uIGVkZ2UgY2FzZXMgYW5kIGZh bGxiYWNrIGJlaGF2aW9yCisKK0NSRUFURSBUQUJMRSBycHJfZmFsbGJhY2sgKGlkIElOVCwgdmFs IElOVCk7CitJTlNFUlQgSU5UTyBycHJfZmFsbGJhY2sgVkFMVUVTICgxLCAxMCksICgyLCAyMCk7 CisKKy0tIFRlc3Q6IG1pbiBxdWFudGlmaWVyIG92ZXJmbG93IGNhdXNlcyBvcHRpbWl6YXRpb24g ZmFsbGJhY2sgKG1pbiA9PSBtYXggY2FzZSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKChBezIwMDAwMDAwMDB9KXsyfSkKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6IEZhbGxiYWNrIC0gcGF0dGVybiBub3QgbWVyZ2VkIGR1 ZSB0byBtaW4gb3ZlcmZsb3cgKDQwMDAwMDAwMDAgPiBJTlQzMl9NQVgpCisKKy0tIFRlc3Q6IG1h eC1vbmx5IHF1YW50aWZpZXIgb3ZlcmZsb3cgY2F1c2VzIG9wdGltaXphdGlvbiBmYWxsYmFjawor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxs YmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEF7MSwyMDAw MDAwMDAwfSl7Mn0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIEV4cGVjdGVkOiBG YWxsYmFjayAtIG1pbiBPSyAoMioxPTIpLCBidXQgbWF4IG92ZXJmbG93ICgyKjIwMDAwMDAwMDAg PiBJTlQzMl9NQVgpCisKKy0tIFRlc3Q6IG1heCBxdWFudGlmaWVyIGV4Y2VlZHMgdmFsaWQgcmFu Z2UgKDIxNDc0ODM2NDcgPSBJTlRfTUFYLCBsaW1pdCBpcyAyMTQ3NDgzNjQ2KQorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEF7MjAwMDAwMDAwMCwyMTQ3 NDgzNjQ3fSl7Mn0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKworLS0gVGVzdDogbmVz dGVkIHVuYm91bmRlZCB3aXRoIGxhcmdlIG1pbiBjYXVzZXMgb3ZlcmZsb3cgZmFsbGJhY2sKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZmFsbGJh Y2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBezIwMDAwMDAw MDAsfSl7MjAwMDAwMDAwMCx9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CistLSBFeHBl Y3RlZDogRmFsbGJhY2sgLSBtaW4gb3ZlcmZsb3cgKDIwMDAwMDAwMDAgKiAyMDAwMDAwMDAwID4g SU5UMzJfTUFYKQorCistLSBUZXN0OiBwcmVmaXggbWlzbWF0Y2ggY2F1c2VzIG9wdGltaXphdGlv biBmYWxsYmFjaworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSBCIChDIEQpKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+IDUsIEMg QVMgdmFsID4gMTAsIEQgQVMgdmFsID4gMTUKKyk7CistLSBFeHBlY3RlZDogRmFsbGJhY2sgLSBw cmVmaXggZWxlbWVudHMgZG9uJ3QgbWF0Y2ggR1JPVVAgY29udGVudAorCistLSBUZXN0OiBjb25z ZWN1dGl2ZSBWQVIgbWVyZ2Ugd2hvc2UgbWluIHN1bSBpcyBleGFjdGx5IElORiBjYXVzZXMgZmFs bGJhY2suCistLSAxMDczNzQxODI0ICsgMTA3Mzc0MTgyMyA9IDIxNDc0ODM2NDcgPSBJTlQzMl9N QVggPSBSUFJfUVVBTlRJVFlfSU5GLgorLS0gTWVyZ2luZyB3b3VsZCB5aWVsZCBhIFZBUiB3aXRo IG1pbiA9PSBJTkYsIHNvIHRoZSBtZXJnZSBtdXN0IGZhbGwgYmFjayBhbmQKKy0tIGxlYXZlIHRo ZSB0d28gVkFScyB1bm1lcmdlZCAobWlycm9ycyB0aGUgbXVsdGlwbHkgcGF0aCdzID49IElORiBn dWFyZCkuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX2ZhbGxiYWNrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ezEwNzM3NDE4MjQsfSBBezEwNzM3NDE4MjMsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworLS0gRXhwZWN0ZWQ6IEZhbGxiYWNrIC0gVkFScyBub3QgbWVyZ2VkIChtaW4gc3VtIDIxNDc0 ODM2NDcgPT0gSU5GKQorCistLSBUZXN0OiBjb25zZWN1dGl2ZSBHUk9VUCBtZXJnZSB3aG9zZSBt aW4gc3VtIGlzIGV4YWN0bHkgSU5GIGNhdXNlcyBmYWxsYmFjay4KK0VYUExBSU4gKENPU1RTIE9G RikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpezEwNzM3NDE4MjQsfSAoQSBCKXsx MDczNzQxODIzLH0pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiA1CispOwor LS0gRXhwZWN0ZWQ6IEZhbGxiYWNrIC0gR1JPVVBzIG5vdCBtZXJnZWQgKG1pbiBzdW0gMjE0NzQ4 MzY0NyA9PSBJTkYpCisKK0RST1AgVEFCTEUgcnByX2ZhbGxiYWNrOworCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBs YW5uZXIgSW50ZWdyYXRpb24gVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgZnVsbCBwbGFubmluZyBw aXBlbGluZSBhbmQgV2luZG93QWdnIHBsYW4gbm9kZSBjcmVhdGlvbgorLS0gRmlsZXM6IHBsYW5u ZXIuYywgY3JlYXRlcGxhbi5jCisKK0NSRUFURSBUQUJMRSBycHJfcGxhbm5lciAoaWQgSU5ULCBj YXRlZ29yeSBWQVJDSEFSKDEwKSwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfcGxhbm5lciBW QUxVRVMKKyAgICAoMSwgJ0EnLCAxMCksICgyLCAnQScsIDIwKSwgKDMsICdBJywgMzApLAorICAg ICg0LCAnQicsIDQwKSwgKDUsICdCJywgNTApLCAoNiwgJ0InLCA2MCksCisgICAgKDcsICdDJywg NzApLCAoOCwgJ0MnLCA4MCksICg5LCAnQycsIDkwKTsKKworLS0gTXVsdGlwbGUgV2luZG93IEZ1 bmN0aW9ucyBpbiBTYW1lIFF1ZXJ5CitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAg Q09VTlQoKikgT1ZFUiB3MSBhcyBjbnQxLAorICAgICAgIENPVU5UKCopIE9WRVIgdzIgYXMgY250 MgorRlJPTSBycHJfcGxhbm5lcgorV0lORE9XIHcxIEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyksCit3MiBBUyAoCisgICAgUEFS VElUSU9OIEJZIGNhdGVnb3J5CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChCKykKKyAgICBE RUZJTkUgQiBBUyB2YWwgPj0gNDAKKykKK09SREVSIEJZIGlkOworCistLSBXaW5kb3cgRnVuY3Rp b24gd2l0aCBQQVJUSVRJT04gQlkKKworU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAg IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW5uZXIKK1dJTkRPVyB3IEFTICgK KyAgICBQQVJUSVRJT04gQlkgY2F0ZWdvcnkKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGNhdGVnb3J5LCBpZDsKKwor LS0gV2luZG93IEZ1bmN0aW9uIHdpdGggQ29tcGxleCBPUkRFUiBCWQorCitTRUxFQ1QgaWQsIGNh dGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxh bm5lcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGNhdGVnb3J5IERFU0MsIHZhbCBBU0MK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBjYXRl Z29yeSBERVNDLCB2YWwgQVNDOworCistLSBOYW1lZCBXaW5kb3cgUmVmZXJlbmNlCisKK1NFTEVD VCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9N IHJwcl9wbGFubmVyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gSW5saW5l IFdpbmRvdyBEZWZpbml0aW9uCisKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBD T1VOVCgqKSBPVkVSICgKKyAgICAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgIFBB VFRFUk4gKEErKQorICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgICAgKSBhcyBj bnQKK0ZST00gcnByX3BsYW5uZXIKK09SREVSIEJZIGlkOworCistLSBXaW5kb3cgd2l0aCBBZ2dy ZWdhdGUgRnVuY3Rpb25zCitTRUxFQ1QgY2F0ZWdvcnksCisgICAgICAgQ09VTlQoKikgT1ZFUiB3 IGFzIHdpbmRvd19jbnQsCisgICAgICAgQ09VTlQoKikgYXMgYWdnX2NudAorRlJPTSBycHJfcGxh bm5lcgorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjYXRlZ29yeQorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorR1JPVVAg QlkgY2F0ZWdvcnkKK09SREVSIEJZIGNhdGVnb3J5OworLS0gKEdST1VQIEJZIGFmdGVyIFdJTkRP VyBjbGF1c2UgaXMgbm90IHZhbGlkIFNRTCBzeW50YXgpCisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3VicXVlcnkg YW5kIENURSBUZXN0cworLS0gRmlsZXM6IHBsYW5uZXIuYywgcHJlcGpvaW50cmVlLmMKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gVGVzdHMgUlBSIHdpdGggc3VicXVlcmllcyBhbmQgQ1RFcworCistLSBSUFIgaW4gU3Vi cXVlcnkgKEZST00gY2xhdXNlKQorCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIGNh dGVnb3J5LCB2YWwsCisgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9N IHJwcl9wbGFubmVyCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAg ICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICApCisp IHN1YgorV0hFUkUgY250ID4gNQorT1JERVIgQlkgaWQ7CisKKy0tIFJQUiB3aXRoIFN1YnF1ZXJ5 IGluIFdIRVJFCisKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFubmVyCitXSEVSRSB2YWwgPiAoU0VMRUNUIEFWRyh2 YWwpIEZST00gcnByX3BsYW5uZXIpCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7CisK Ky0tIENURSB3aXRoIFJQUgorCitXSVRIIHJwcl9jdGUgQVMgKAorICAgIFNFTEVDVCBpZCwgY2F0 ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00g cnByX3BsYW5uZXIKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykK K1NFTEVDVCAqIEZST00gcnByX2N0ZSBXSEVSRSBjbnQgPiA1IE9SREVSIEJZIGlkOworCistLSBN dWx0aXBsZSBDVEUgUmVmZXJlbmNlcworCitXSVRIIHJwcl9jdGUgQVMgKAorICAgIFNFTEVDVCBp ZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAg IEZST00gcnByX3BsYW5uZXIKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAg ICkKKykKK1NFTEVDVCBjMS5pZCwgYzEuY250LCBjMi5jbnQgYXMgY250MgorRlJPTSBycHJfY3Rl IGMxCitKT0lOIHJwcl9jdGUgYzIgT04gYzEuaWQgPSBjMi5pZAorT1JERVIgQlkgYzEuaWQ7CisK Ky0tIE5lc3RlZCBDVEVzCisKK1dJVEggY3RlMSBBUyAoCisgICAgU0VMRUNUIGlkLCBjYXRlZ29y eSwgdmFsIEZST00gcnByX3BsYW5uZXIgV0hFUkUgdmFsID4gMzAKKyksCitjdGUyIEFTICgKKyAg ICBTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKKyAgICBGUk9NIGN0ZTEKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZ IGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAor ICAgICkKKykKK1NFTEVDVCAqIEZST00gY3RlMiBPUkRFUiBCWSBpZDsKKworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBK T0lOIFRlc3RzCistLSBGaWxlczogcHJlcGpvaW50cmVlLmMsIHNldHJlZnMuYworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSBUZXN0cyBSUFIgd2l0aCBKT0lOcyBhbmQgbXVsdGlwbGUgdGFibGUgcmVmZXJlbmNlcworCitD UkVBVEUgVEFCTEUgcnByX2pvaW4xIChpZCBJTlQsIHZhbDEgSU5UKTsKK0NSRUFURSBUQUJMRSBy cHJfam9pbjIgKGlkIElOVCwgdmFsMiBJTlQpOworCitJTlNFUlQgSU5UTyBycHJfam9pbjEgVkFM VUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCA0MCksICg1LCA1MCk7CitJTlNFUlQg SU5UTyBycHJfam9pbjIgVkFMVUVTICgxLCAxMDApLCAoMiwgMjAwKSwgKDMsIDMwMCksICg0LCA0 MDApLCAoNSwgNTAwKTsKKworLS0gUlBSIEFmdGVyIElOTkVSIEpPSU4KKworU0VMRUNUIHQxLmlk LCB0MS52YWwxLCB0Mi52YWwyLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00g cnByX2pvaW4xIHQxCitJTk5FUiBKT0lOIHJwcl9qb2luMiB0MiBPTiB0MS5pZCA9IHQyLmlkCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdDEuaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJ TkUgQSBBUyB2YWwxICsgdmFsMiA+IDEwMAorKQorT1JERVIgQlkgdDEuaWQ7CisKKy0tIFJQUiBB ZnRlciBMRUZUIEpPSU4KKworU0VMRUNUIHQxLmlkLCB0MS52YWwxLCB0Mi52YWwyLAorICAgICAg IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2pvaW4xIHQxCitMRUZUIEpPSU4gcnBy X2pvaW4yIHQyIE9OIHQxLmlkID0gdDIuaWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0 MS5pZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbDEgPiAwCispCitPUkRFUiBC WSB0MS5pZDsKKworLS0gUlBSIHdpdGggTXVsdGlwbGUgVGFibGVzIGluIERFRklORQorCitTRUxF Q1QgdDEuaWQsIHQxLnZhbDEsIHQyLnZhbDIsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfam9pbjEgdDEKK0lOTkVSIEpPSU4gcnByX2pvaW4yIHQyIE9OIHQxLmlkID0g dDIuaWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5pZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdmFsMSA+IDIwLAorICAgICAgICAgICBCIEFTIHZhbDIgPiAyMDAK KykKK09SREVSIEJZIHQxLmlkOworCistLSBSUFIgQWZ0ZXIgQ3Jvc3MgSm9pbgorCitTRUxFQ1Qg dDEuaWQgYXMgaWQxLCB0Mi5pZCBhcyBpZDIsIHQxLnZhbDEsIHQyLnZhbDIsCisgICAgICAgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfam9pbjEgdDEKK0NST1NTIEpPSU4gcnByX2pv aW4yIHQyCitXSEVSRSB0MS5pZCA8PSAyIEFORCB0Mi5pZCA8PSAyCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgdDEuaWQsIHQyLmlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMg dmFsMSArIHZhbDIgPiAwCispCitPUkRFUiBCWSB0MS5pZCwgdDIuaWQ7CisKKy0tIFNlbGYtSm9p biB3aXRoIFJQUgorCitTRUxFQ1QgaWQsIHZhbDEsIHZhbDFfbmV4dCwKKyAgICAgICBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIChTRUxFQ1QgYS5pZCwgYS52YWwxLCBiLnZhbDEgYXMgdmFs MV9uZXh0CisgICAgICBGUk9NIHJwcl9qb2luMSBhCisgICAgICBJTk5FUiBKT0lOIHJwcl9qb2lu MSBiIE9OIGEuaWQgKyAxID0gYi5pZCkgc3ViCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChYKykKKyAgICBERUZJTkUgWCBBUyB2YWwxIDwgdmFsMV9uZXh0CispCitP UkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfam9pbjEsIHJwcl9qb2luMjsKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBDb21wbGV4IEV4cHJlc3Npb24gVGVzdHMKKy0tIEZpbGVzOiBjcmVhdGVwbGFuLmMsIHNl dHJlZnMuYworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBUZXN0cyBjb21wbGV4IHRhcmdldCBsaXN0IGV4cHJlc3Npb25z CisKK0NSRUFURSBUQUJMRSBycHJfdGFyZ2V0IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElO VE8gcnByX3RhcmdldCBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDQwKSwg KDUsIDUwKTsKKworLS0gRXhwcmVzc2lvbnMgaW4gVGFyZ2V0IExpc3QKKworU0VMRUNUIGlkLAor ICAgICAgIHZhbCAqIDIgYXMgZG91YmxlZCwKKyAgICAgICB2YWwgKyAxMCBhcyBhZGRlZCwKKyAg ICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl90YXJnZXQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKykKK09SREVSIEJZIGlkOworCistLSBDQVNFIEV4cHJlc3Npb24gaW4gVGFyZ2V0IExpc3QK KworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgQ0FTRQorICAgICAgICAgICBXSEVOIHZhbCA8IDMw IFRIRU4gJ2xvdycKKyAgICAgICAgICAgV0hFTiB2YWwgPCA1MCBUSEVOICdtZWRpdW0nCisgICAg ICAgICAgIEVMU0UgJ2hpZ2gnCisgICAgICAgRU5EIGFzIGNhdGVnb3J5LAorICAgICAgIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3RhcmdldAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JE RVIgQlkgaWQ7CisKKy0tIFN1YnF1ZXJ5IGluIFRhcmdldCBMaXN0CisKK1NFTEVDVCBpZCwgdmFs LAorICAgICAgIChTRUxFQ1QgTUFYKHZhbCkgRlJPTSBycHJfdGFyZ2V0KSBhcyBtYXhfdmFsLAor ICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3RhcmdldAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKQorT1JERVIgQlkgaWQ7CisKKy0tIEZ1bmN0aW9uIENhbGxzIGluIFRhcmdldCBMaXN0 CisKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIENPQUxFU0NFKHZhbCwgMCkgYXMgY29hbGVzY2Vk LAorICAgICAgIEFCUyh2YWwgLSAzMCkgYXMgZGlzdGFuY2UsCisgICAgICAgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBp ZDsKKworLS0gQ29sdW1uIEFsaWFzZXMgYW5kIFJlZmVyZW5jZXMKKworU0VMRUNUIGlkIGFzIHJv d19pZCwKKyAgICAgICB2YWwgYXMgdmFsdWUsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSByb3dfaWQ7CisK K0RST1AgVEFCTEUgcnByX3RhcmdldDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTZXQgT3BlcmF0aW9ucyBUZXN0 cworLS0gRmlsZXM6IHBsYW5uZXIuYworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBSUFIgd2l0aCBVTklPTiwg SU5URVJTRUNULCBFWENFUFQKKworQ1JFQVRFIFRBQkxFIHJwcl9zZXQxIChpZCBJTlQsIHZhbCBJ TlQpOworQ1JFQVRFIFRBQkxFIHJwcl9zZXQyIChpZCBJTlQsIHZhbCBJTlQpOworCitJTlNFUlQg SU5UTyBycHJfc2V0MSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKTsKK0lOU0VSVCBJ TlRPIHJwcl9zZXQyIFZBTFVFUyAoMiwgMjApLCAoMywgMzApLCAoNCwgNDApOworCistLSBVTklP TiB3aXRoIFJQUgorCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBG Uk9NIHJwcl9zZXQxCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVS TiAoQSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQorVU5JT04KKyhTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorIEZST00gcnByX3NldDIKKyBXSU5ET1cgdyBB UyAoCisgICAgIE9SREVSIEJZIGlkCisgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICBQQVRURVJOIChBKykKKyAgICAgREVGSU5FIEEgQVMg dmFsID4gMAorICkpCitPUkRFUiBCWSBpZDsKKworLS0gVU5JT04gQUxMIHdpdGggUlBSCisKKyhT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorIEZST00gcnByX3NldDEKKyBX SU5ET1cgdyBBUyAoCisgICAgIE9SREVSIEJZIGlkCisgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICBQQVRURVJOIChBKykKKyAgICAgREVG SU5FIEEgQVMgdmFsID4gMAorICkpCitVTklPTiBBTEwKKyhTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorIEZST00gcnByX3NldDIKKyBXSU5ET1cgdyBBUyAoCisgICAgIE9S REVSIEJZIGlkCisgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICBQQVRURVJOIChBKykKKyAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICkp CitPUkRFUiBCWSBpZCwgdmFsOworCistLSBJTlRFUlNFQ1Qgd2l0aCBSUFIKKworKFNFTEVDVCBp ZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MQorIFdJTkRPVyB3 IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBB UyB2YWwgPiAwCisgKSkKK0lOVEVSU0VDVAorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CisgRlJPTSBycHJfc2V0MgorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkg aWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK09SREVS IEJZIGlkOworCistLSBFWENFUFQgd2l0aCBSUFIKKworKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MQorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JE RVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkK K0VYQ0VQVAorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBy cHJfc2V0MgorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEEr KQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK09SREVSIEJZIGlkOworCitEUk9QIFRB QkxFIHJwcl9zZXQxLCBycHJfc2V0MjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTb3J0aW5nIGFuZCBHcm91cGlu ZyBUZXN0cworLS0gRmlsZXM6IHBsYW5uZXIuYywgY3JlYXRlcGxhbi5jCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRl c3RzIFJQUiBpbnRlcmFjdGlvbiB3aXRoIHNvcnRpbmcgYW5kIGdyb3VwaW5nCisKK0NSRUFURSBU QUJMRSBycHJfc29ydCAoaWQgSU5ULCBjYXRlZ29yeSBWQVJDSEFSKDEwKSwgdmFsIElOVCk7CitJ TlNFUlQgSU5UTyBycHJfc29ydCBWQUxVRVMKKyAgICAoMSwgJ0EnLCAzMCksICgyLCAnQicsIDIw KSwgKDMsICdBJywgMTApLAorICAgICg0LCAnQicsIDQwKSwgKDUsICdBJywgNTApLCAoNiwgJ0In LCA2MCk7CisKKy0tIFJQUiB3aXRoIEdST1VQIEJZIChhZ2dyZWdhdGUgaW4gREVGSU5FIC0+IEVS Uk9SIGJlZm9yZSBHUk9VUCBCWSBpbnRlcmFjdGlvbikKKworU0VMRUNUIGNhdGVnb3J5LAorICAg ICAgIENPVU5UKCopIGFzIGdyb3VwX2NudCwKKyAgICAgICBNQVgodmFsKSBhcyBtYXhfdmFsLAor ICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyB3aW5kb3dfY250CitGUk9NIHJwcl9zb3J0CitHUk9V UCBCWSBjYXRlZ29yeQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGNhdGVnb3J5CisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgQ09VTlQoKikgPiAwCispCitPUkRFUiBCWSBjYXRl Z29yeTsKKworLS0gUlBSIHdpdGggSEFWSU5HIChzYW1lIGFnZ3JlZ2F0ZS1pbi1ERUZJTkUgZXJy b3IpCisKK1NFTEVDVCBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgqKSBhcyBncm91cF9jbnQsCisg ICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIHdpbmRvd19jbnQKK0ZST00gcnByX3NvcnQKK0dST1VQ IEJZIGNhdGVnb3J5CitIQVZJTkcgQ09VTlQoKikgPiAyCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgY2F0ZWdvcnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBDT1VOVCgqKSA+ IDAKKykKK09SREVSIEJZIGNhdGVnb3J5OworCistLSBSUFIgd2l0aCBESVNUSU5DVAorCitTRUxF Q1QgRElTVElOQ1QgY2F0ZWdvcnksCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfc29ydAorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjYXRlZ29yeQorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQor T1JERVIgQlkgY2F0ZWdvcnk7CisKKy0tIFJQUiB3aXRoIE9SREVSIEJZIChkaWZmZXJlbnQgZnJv bSB3aW5kb3cgT1JERVIgQlkpCisKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zb3J0CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitP UkRFUiBCWSB2YWwgREVTQzsKKworLS0gUlBSIHdpdGggTElNSVQgYW5kIE9GRlNFVAorCitTRUxF Q1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfc29ydAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQKK0xJTUlUIDMgT0ZGU0VU IDE7CisKK0RST1AgVEFCTEUgcnByX3NvcnQ7CisKKy0tIFNRTCBmdW5jdGlvbiBpbmxpbmluZzog JDEgaW4gREVGSU5FIG11c3QgYmUgc3Vic3RpdHV0ZWQgYnkKKy0tIHN1YnN0aXR1dGVfYWN0dWFs X3BhcmFtZXRlcnNfaW5fZnJvbSB2aWEgcXVlcnlfdHJlZV9tdXRhdG9yLgorQ1JFQVRFIFRBQkxF IHJwcl9zcmZfdCAodiBpbnQpOworSU5TRVJUIElOVE8gcnByX3NyZl90IFNFTEVDVCBnZW5lcmF0 ZV9zZXJpZXMoMSwgNSk7CisKK0NSRUFURSBGVU5DVElPTiBycHJfc3JmX2YodGhyZXNob2xkIGlu dCkKK1JFVFVSTlMgVEFCTEUgKHYgaW50LCBjbnQgYmlnaW50KQorTEFOR1VBR0Ugc3FsIFNUQUJM RSBBUyAkJAorICAgIFNFTEVDVCB2OjppbnQsIGNvdW50KCopIE9WRVIgdworICAgIEZST00gcnBy X3NyZl90CisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSB2CisgICAgICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQ QVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdiA+ICQxCisgICAgKQorJCQ7CisKK1NF TEVDVCB2LCBjbnQgRlJPTSBycHJfc3JmX2YoMykgT1JERVIgQlkgdjsKKworRFJPUCBUQUJMRSBy cHJfc3JmX3Q7CitEUk9QIEZVTkNUSU9OIHJwcl9zcmZfZihpbnQpOworCitEUk9QIFRBQkxFIHJw cl9wbGFubmVyOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFN0cmVzcyBUZXN0cworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFZGdlIGNh c2VzIGFuZCBzdHJlc3Mgc2NlbmFyaW9zCisKK0NSRUFURSBUQUJMRSBycHJfc3RyZXNzIChpZCBJ TlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3N0cmVzcyBTRUxFQ1QgaSwgaSAqIDEwIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBpOworCistLSBWZXJ5IExvbmcgUXVlcnkgd2l0aCBN YW55IFdpbmRvd3MKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdzEgYXMg Y250MSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcyIGFzIGNudDIsCisgICAgICAgQ09VTlQoKikg T1ZFUiB3MyBhcyBjbnQzCitGUk9NIHJwcl9zdHJlc3MKK1dJTkRPVyB3MSBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispLAordzIg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQispCisgICAgREVGSU5FIEIgQVMgdmFs ID4gNTAKKyksCit3MyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDKykKKyAgICBE RUZJTkUgQyBBUyB2YWwgPiAxMDAKKykKK09SREVSIEJZIGlkOworCistLSBEZWVwbHkgTmVzdGVk IFN1YnF1ZXJpZXMgd2l0aCBSUFIKKworU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUICogRlJP TSAoCisgICAgICAgIFNFTEVDVCAqIEZST00gKAorICAgICAgICAgICAgU0VMRUNUIGlkLCB2YWws CisgICAgICAgICAgICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgICAgICAgICAg RlJPTSBycHJfc3RyZXNzCisgICAgICAgICAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgICAgICAg ICAgT1JERVIgQlkgaWQKKyAgICAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICAgICBQQVRURVJOIChBKykKKyAg ICAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgICAgICAgICApCisgICAgICAg ICkgc3ViMQorICAgICkgc3ViMgorKSBzdWIzCitXSEVSRSBjbnQgPiAxMAorT1JERVIgQlkgaWQ7 CisKKy0tIENvbXBsZXggRXhwcmVzc2lvbiBpbiBERUZJTkUgQ2xhdXNlCisKK1NFTEVDVCBpZCwg dmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3N0cmVzcworV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUg QSBBUyAodmFsICUgMyA9IDAgT1IgdmFsICUgNSA9IDApLAorICAgICAgICAgICBCIEFTICh2YWwg KiAyID4gMTAwIEFORCB2YWwgLyAyIDwgMTAwKQorKQorT1JERVIgQlkgaWQ7CisKKy0tIFdpbmRv dyB3aXRoIE5vIE1hdGNoaW5nIFJvd3MKKworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc3RyZXNzCitXSEVSRSB2YWwgPiAxMDAwICAtLSBO byByb3dzIG1hdGNoCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKworLS0gV2luZG93 IG9uIFNpbmdsZSBSb3cKKworU0VMRUNUIGlkLCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfc3RyZXNzCitXSEVSRSBpZCA9IDEwCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp CitPUkRFUiBCWSBpZDsKKworRFJPUCBUQUJMRSBycHJfc3RyZXNzOworCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVy cm9yIExpbWl0IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIGZvciBlcnJvciBjb25kaXRpb25zIGlu IHJwci5jCisKK0NSRUFURSBUQUJMRSBycHJfZXJyb3JzIChpZCBJTlQsIHZhbCBJTlQpOworSU5T RVJUIElOVE8gcnByX2Vycm9ycyBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKworLS0gVGVzdDog REVGSU5FIHZhcmlhYmxlIG5vdCBpbiBQQVRURVJOIChlcnJvcikKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORQorICAgICAgQiBBUyBUUlVFCispOworLS0g RXhwZWN0ZWQ6IEVycm9yIC0gQiBpcyBub3QgdXNlZCBpbiBQQVRURVJOCisKKy0tIFRlc3Q6IDI0 MCB2YXJpYWJsZXMgaW4gUEFUVEVSTiBhbmQgREVGSU5FIChib3VuZGFyeSAtIHNob3VsZCBzdWNj ZWVkKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKFYxIFYyIFYzIFY0IFY1IFY2IFY3IFY4IFY5 IFYxMCBWMTEgVjEyIFYxMyBWMTQgVjE1IFYxNiBWMTcgVjE4IFYxOSBWMjAgVjIxIFYyMiBWMjMg VjI0IFYyNSBWMjYgVjI3IFYyOCBWMjkgVjMwIFYzMSBWMzIgVjMzIFYzNCBWMzUgVjM2IFYzNyBW MzggVjM5IFY0MCBWNDEgVjQyIFY0MyBWNDQgVjQ1IFY0NiBWNDcgVjQ4IFY0OSBWNTAgVjUxIFY1 MiBWNTMgVjU0IFY1NSBWNTYgVjU3IFY1OCBWNTkgVjYwIFY2MSBWNjIgVjYzIFY2NCBWNjUgVjY2 IFY2NyBWNjggVjY5IFY3MCBWNzEgVjcyIFY3MyBWNzQgVjc1IFY3NiBWNzcgVjc4IFY3OSBWODAg VjgxIFY4MiBWODMgVjg0IFY4NSBWODYgVjg3IFY4OCBWODkgVjkwIFY5MSBWOTIgVjkzIFY5NCBW OTUgVjk2IFY5NyBWOTggVjk5IFYxMDAgVjEwMSBWMTAyIFYxMDMgVjEwNCBWMTA1IFYxMDYgVjEw NyBWMTA4IFYxMDkgVjExMCBWMTExIFYxMTIgVjExMyBWMTE0IFYxMTUgVjExNiBWMTE3IFYxMTgg VjExOSBWMTIwIFYxMjEgVjEyMiBWMTIzIFYxMjQgVjEyNSBWMTI2IFYxMjcgVjEyOCBWMTI5IFYx MzAgVjEzMSBWMTMyIFYxMzMgVjEzNCBWMTM1IFYxMzYgVjEzNyBWMTM4IFYxMzkgVjE0MCBWMTQx IFYxNDIgVjE0MyBWMTQ0IFYxNDUgVjE0NiBWMTQ3IFYxNDggVjE0OSBWMTUwIFYxNTEgVjE1MiBW MTUzIFYxNTQgVjE1NSBWMTU2IFYxNTcgVjE1OCBWMTU5IFYxNjAgVjE2MSBWMTYyIFYxNjMgVjE2 NCBWMTY1IFYxNjYgVjE2NyBWMTY4IFYxNjkgVjE3MCBWMTcxIFYxNzIgVjE3MyBWMTc0IFYxNzUg VjE3NiBWMTc3IFYxNzggVjE3OSBWMTgwIFYxODEgVjE4MiBWMTgzIFYxODQgVjE4NSBWMTg2IFYx ODcgVjE4OCBWMTg5IFYxOTAgVjE5MSBWMTkyIFYxOTMgVjE5NCBWMTk1IFYxOTYgVjE5NyBWMTk4 IFYxOTkgVjIwMCBWMjAxIFYyMDIgVjIwMyBWMjA0IFYyMDUgVjIwNiBWMjA3IFYyMDggVjIwOSBW MjEwIFYyMTEgVjIxMiBWMjEzIFYyMTQgVjIxNSBWMjE2IFYyMTcgVjIxOCBWMjE5IFYyMjAgVjIy MSBWMjIyIFYyMjMgVjIyNCBWMjI1IFYyMjYgVjIyNyBWMjI4IFYyMjkgVjIzMCBWMjMxIFYyMzIg VjIzMyBWMjM0IFYyMzUgVjIzNiBWMjM3IFYyMzggVjIzOSBWMjQwKQorICAgIERFRklORQorICAg IFYxIEFTIHZhbCA+IDAsIFYyIEFTIHZhbCA+IDAsIFYzIEFTIHZhbCA+IDAsIFY0IEFTIHZhbCA+ IDAsIFY1IEFTIHZhbCA+IDAsIFY2IEFTIHZhbCA+IDAsIFY3IEFTIHZhbCA+IDAsIFY4IEFTIHZh bCA+IDAsIFY5IEFTIHZhbCA+IDAsIFYxMCBBUyB2YWwgPiAwLAorICAgIFYxMSBBUyB2YWwgPiAw LCBWMTIgQVMgdmFsID4gMCwgVjEzIEFTIHZhbCA+IDAsIFYxNCBBUyB2YWwgPiAwLCBWMTUgQVMg dmFsID4gMCwgVjE2IEFTIHZhbCA+IDAsIFYxNyBBUyB2YWwgPiAwLCBWMTggQVMgdmFsID4gMCwg VjE5IEFTIHZhbCA+IDAsIFYyMCBBUyB2YWwgPiAwLAorICAgIFYyMSBBUyB2YWwgPiAwLCBWMjIg QVMgdmFsID4gMCwgVjIzIEFTIHZhbCA+IDAsIFYyNCBBUyB2YWwgPiAwLCBWMjUgQVMgdmFsID4g MCwgVjI2IEFTIHZhbCA+IDAsIFYyNyBBUyB2YWwgPiAwLCBWMjggQVMgdmFsID4gMCwgVjI5IEFT IHZhbCA+IDAsIFYzMCBBUyB2YWwgPiAwLAorICAgIFYzMSBBUyB2YWwgPiAwLCBWMzIgQVMgdmFs ID4gMCwgVjMzIEFTIHZhbCA+IDAsIFYzNCBBUyB2YWwgPiAwLCBWMzUgQVMgdmFsID4gMCwgVjM2 IEFTIHZhbCA+IDAsIFYzNyBBUyB2YWwgPiAwLCBWMzggQVMgdmFsID4gMCwgVjM5IEFTIHZhbCA+ IDAsIFY0MCBBUyB2YWwgPiAwLAorICAgIFY0MSBBUyB2YWwgPiAwLCBWNDIgQVMgdmFsID4gMCwg VjQzIEFTIHZhbCA+IDAsIFY0NCBBUyB2YWwgPiAwLCBWNDUgQVMgdmFsID4gMCwgVjQ2IEFTIHZh bCA+IDAsIFY0NyBBUyB2YWwgPiAwLCBWNDggQVMgdmFsID4gMCwgVjQ5IEFTIHZhbCA+IDAsIFY1 MCBBUyB2YWwgPiAwLAorICAgIFY1MSBBUyB2YWwgPiAwLCBWNTIgQVMgdmFsID4gMCwgVjUzIEFT IHZhbCA+IDAsIFY1NCBBUyB2YWwgPiAwLCBWNTUgQVMgdmFsID4gMCwgVjU2IEFTIHZhbCA+IDAs IFY1NyBBUyB2YWwgPiAwLCBWNTggQVMgdmFsID4gMCwgVjU5IEFTIHZhbCA+IDAsIFY2MCBBUyB2 YWwgPiAwLAorICAgIFY2MSBBUyB2YWwgPiAwLCBWNjIgQVMgdmFsID4gMCwgVjYzIEFTIHZhbCA+ IDAsIFY2NCBBUyB2YWwgPiAwLCBWNjUgQVMgdmFsID4gMCwgVjY2IEFTIHZhbCA+IDAsIFY2NyBB UyB2YWwgPiAwLCBWNjggQVMgdmFsID4gMCwgVjY5IEFTIHZhbCA+IDAsIFY3MCBBUyB2YWwgPiAw LAorICAgIFY3MSBBUyB2YWwgPiAwLCBWNzIgQVMgdmFsID4gMCwgVjczIEFTIHZhbCA+IDAsIFY3 NCBBUyB2YWwgPiAwLCBWNzUgQVMgdmFsID4gMCwgVjc2IEFTIHZhbCA+IDAsIFY3NyBBUyB2YWwg PiAwLCBWNzggQVMgdmFsID4gMCwgVjc5IEFTIHZhbCA+IDAsIFY4MCBBUyB2YWwgPiAwLAorICAg IFY4MSBBUyB2YWwgPiAwLCBWODIgQVMgdmFsID4gMCwgVjgzIEFTIHZhbCA+IDAsIFY4NCBBUyB2 YWwgPiAwLCBWODUgQVMgdmFsID4gMCwgVjg2IEFTIHZhbCA+IDAsIFY4NyBBUyB2YWwgPiAwLCBW ODggQVMgdmFsID4gMCwgVjg5IEFTIHZhbCA+IDAsIFY5MCBBUyB2YWwgPiAwLAorICAgIFY5MSBB UyB2YWwgPiAwLCBWOTIgQVMgdmFsID4gMCwgVjkzIEFTIHZhbCA+IDAsIFY5NCBBUyB2YWwgPiAw LCBWOTUgQVMgdmFsID4gMCwgVjk2IEFTIHZhbCA+IDAsIFY5NyBBUyB2YWwgPiAwLCBWOTggQVMg dmFsID4gMCwgVjk5IEFTIHZhbCA+IDAsIFYxMDAgQVMgdmFsID4gMCwKKyAgICBWMTAxIEFTIHZh bCA+IDAsIFYxMDIgQVMgdmFsID4gMCwgVjEwMyBBUyB2YWwgPiAwLCBWMTA0IEFTIHZhbCA+IDAs IFYxMDUgQVMgdmFsID4gMCwgVjEwNiBBUyB2YWwgPiAwLCBWMTA3IEFTIHZhbCA+IDAsIFYxMDgg QVMgdmFsID4gMCwgVjEwOSBBUyB2YWwgPiAwLCBWMTEwIEFTIHZhbCA+IDAsCisgICAgVjExMSBB UyB2YWwgPiAwLCBWMTEyIEFTIHZhbCA+IDAsIFYxMTMgQVMgdmFsID4gMCwgVjExNCBBUyB2YWwg PiAwLCBWMTE1IEFTIHZhbCA+IDAsIFYxMTYgQVMgdmFsID4gMCwgVjExNyBBUyB2YWwgPiAwLCBW MTE4IEFTIHZhbCA+IDAsIFYxMTkgQVMgdmFsID4gMCwgVjEyMCBBUyB2YWwgPiAwLAorICAgIFYx MjEgQVMgdmFsID4gMCwgVjEyMiBBUyB2YWwgPiAwLCBWMTIzIEFTIHZhbCA+IDAsIFYxMjQgQVMg dmFsID4gMCwgVjEyNSBBUyB2YWwgPiAwLCBWMTI2IEFTIHZhbCA+IDAsIFYxMjcgQVMgdmFsID4g MCwgVjEyOCBBUyB2YWwgPiAwLCBWMTI5IEFTIHZhbCA+IDAsIFYxMzAgQVMgdmFsID4gMCwKKyAg ICBWMTMxIEFTIHZhbCA+IDAsIFYxMzIgQVMgdmFsID4gMCwgVjEzMyBBUyB2YWwgPiAwLCBWMTM0 IEFTIHZhbCA+IDAsIFYxMzUgQVMgdmFsID4gMCwgVjEzNiBBUyB2YWwgPiAwLCBWMTM3IEFTIHZh bCA+IDAsIFYxMzggQVMgdmFsID4gMCwgVjEzOSBBUyB2YWwgPiAwLCBWMTQwIEFTIHZhbCA+IDAs CisgICAgVjE0MSBBUyB2YWwgPiAwLCBWMTQyIEFTIHZhbCA+IDAsIFYxNDMgQVMgdmFsID4gMCwg VjE0NCBBUyB2YWwgPiAwLCBWMTQ1IEFTIHZhbCA+IDAsIFYxNDYgQVMgdmFsID4gMCwgVjE0NyBB UyB2YWwgPiAwLCBWMTQ4IEFTIHZhbCA+IDAsIFYxNDkgQVMgdmFsID4gMCwgVjE1MCBBUyB2YWwg PiAwLAorICAgIFYxNTEgQVMgdmFsID4gMCwgVjE1MiBBUyB2YWwgPiAwLCBWMTUzIEFTIHZhbCA+ IDAsIFYxNTQgQVMgdmFsID4gMCwgVjE1NSBBUyB2YWwgPiAwLCBWMTU2IEFTIHZhbCA+IDAsIFYx NTcgQVMgdmFsID4gMCwgVjE1OCBBUyB2YWwgPiAwLCBWMTU5IEFTIHZhbCA+IDAsIFYxNjAgQVMg dmFsID4gMCwKKyAgICBWMTYxIEFTIHZhbCA+IDAsIFYxNjIgQVMgdmFsID4gMCwgVjE2MyBBUyB2 YWwgPiAwLCBWMTY0IEFTIHZhbCA+IDAsIFYxNjUgQVMgdmFsID4gMCwgVjE2NiBBUyB2YWwgPiAw LCBWMTY3IEFTIHZhbCA+IDAsIFYxNjggQVMgdmFsID4gMCwgVjE2OSBBUyB2YWwgPiAwLCBWMTcw IEFTIHZhbCA+IDAsCisgICAgVjE3MSBBUyB2YWwgPiAwLCBWMTcyIEFTIHZhbCA+IDAsIFYxNzMg QVMgdmFsID4gMCwgVjE3NCBBUyB2YWwgPiAwLCBWMTc1IEFTIHZhbCA+IDAsIFYxNzYgQVMgdmFs ID4gMCwgVjE3NyBBUyB2YWwgPiAwLCBWMTc4IEFTIHZhbCA+IDAsIFYxNzkgQVMgdmFsID4gMCwg VjE4MCBBUyB2YWwgPiAwLAorICAgIFYxODEgQVMgdmFsID4gMCwgVjE4MiBBUyB2YWwgPiAwLCBW MTgzIEFTIHZhbCA+IDAsIFYxODQgQVMgdmFsID4gMCwgVjE4NSBBUyB2YWwgPiAwLCBWMTg2IEFT IHZhbCA+IDAsIFYxODcgQVMgdmFsID4gMCwgVjE4OCBBUyB2YWwgPiAwLCBWMTg5IEFTIHZhbCA+ IDAsIFYxOTAgQVMgdmFsID4gMCwKKyAgICBWMTkxIEFTIHZhbCA+IDAsIFYxOTIgQVMgdmFsID4g MCwgVjE5MyBBUyB2YWwgPiAwLCBWMTk0IEFTIHZhbCA+IDAsIFYxOTUgQVMgdmFsID4gMCwgVjE5 NiBBUyB2YWwgPiAwLCBWMTk3IEFTIHZhbCA+IDAsIFYxOTggQVMgdmFsID4gMCwgVjE5OSBBUyB2 YWwgPiAwLCBWMjAwIEFTIHZhbCA+IDAsCisgICAgVjIwMSBBUyB2YWwgPiAwLCBWMjAyIEFTIHZh bCA+IDAsIFYyMDMgQVMgdmFsID4gMCwgVjIwNCBBUyB2YWwgPiAwLCBWMjA1IEFTIHZhbCA+IDAs IFYyMDYgQVMgdmFsID4gMCwgVjIwNyBBUyB2YWwgPiAwLCBWMjA4IEFTIHZhbCA+IDAsIFYyMDkg QVMgdmFsID4gMCwgVjIxMCBBUyB2YWwgPiAwLAorICAgIFYyMTEgQVMgdmFsID4gMCwgVjIxMiBB UyB2YWwgPiAwLCBWMjEzIEFTIHZhbCA+IDAsIFYyMTQgQVMgdmFsID4gMCwgVjIxNSBBUyB2YWwg PiAwLCBWMjE2IEFTIHZhbCA+IDAsIFYyMTcgQVMgdmFsID4gMCwgVjIxOCBBUyB2YWwgPiAwLCBW MjE5IEFTIHZhbCA+IDAsIFYyMjAgQVMgdmFsID4gMCwKKyAgICBWMjIxIEFTIHZhbCA+IDAsIFYy MjIgQVMgdmFsID4gMCwgVjIyMyBBUyB2YWwgPiAwLCBWMjI0IEFTIHZhbCA+IDAsIFYyMjUgQVMg dmFsID4gMCwgVjIyNiBBUyB2YWwgPiAwLCBWMjI3IEFTIHZhbCA+IDAsIFYyMjggQVMgdmFsID4g MCwgVjIyOSBBUyB2YWwgPiAwLCBWMjMwIEFTIHZhbCA+IDAsCisgICAgVjIzMSBBUyB2YWwgPiAw LCBWMjMyIEFTIHZhbCA+IDAsIFYyMzMgQVMgdmFsID4gMCwgVjIzNCBBUyB2YWwgPiAwLCBWMjM1 IEFTIHZhbCA+IDAsIFYyMzYgQVMgdmFsID4gMCwgVjIzNyBBUyB2YWwgPiAwLCBWMjM4IEFTIHZh bCA+IDAsIFYyMzkgQVMgdmFsID4gMCwgVjI0MCBBUyB2YWwgPiAwCispOworLS0gRXhwZWN0ZWQ6 IFN1Y2Nlc3MgLSBleGFjdGx5IGF0IFJQUl9WQVJJRF9NQVggYm91bmRhcnkKKworLS0gRVJST1I6 IDI0MSB2YXJpYWJsZXMgaW4gUEFUVEVSTiwgMjQwIGluIERFRklORSAoZXhjZWVkcyBsaW1pdCB3 aXRoIGltcGxpY2l0IFRSVUUpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2Vycm9y cworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoVjEgVjIgVjMgVjQg VjUgVjYgVjcgVjggVjkgVjEwIFYxMSBWMTIgVjEzIFYxNCBWMTUgVjE2IFYxNyBWMTggVjE5IFYy MCBWMjEgVjIyIFYyMyBWMjQgVjI1IFYyNiBWMjcgVjI4IFYyOSBWMzAgVjMxIFYzMiBWMzMgVjM0 IFYzNSBWMzYgVjM3IFYzOCBWMzkgVjQwIFY0MSBWNDIgVjQzIFY0NCBWNDUgVjQ2IFY0NyBWNDgg VjQ5IFY1MCBWNTEgVjUyIFY1MyBWNTQgVjU1IFY1NiBWNTcgVjU4IFY1OSBWNjAgVjYxIFY2MiBW NjMgVjY0IFY2NSBWNjYgVjY3IFY2OCBWNjkgVjcwIFY3MSBWNzIgVjczIFY3NCBWNzUgVjc2IFY3 NyBWNzggVjc5IFY4MCBWODEgVjgyIFY4MyBWODQgVjg1IFY4NiBWODcgVjg4IFY4OSBWOTAgVjkx IFY5MiBWOTMgVjk0IFY5NSBWOTYgVjk3IFY5OCBWOTkgVjEwMCBWMTAxIFYxMDIgVjEwMyBWMTA0 IFYxMDUgVjEwNiBWMTA3IFYxMDggVjEwOSBWMTEwIFYxMTEgVjExMiBWMTEzIFYxMTQgVjExNSBW MTE2IFYxMTcgVjExOCBWMTE5IFYxMjAgVjEyMSBWMTIyIFYxMjMgVjEyNCBWMTI1IFYxMjYgVjEy NyBWMTI4IFYxMjkgVjEzMCBWMTMxIFYxMzIgVjEzMyBWMTM0IFYxMzUgVjEzNiBWMTM3IFYxMzgg VjEzOSBWMTQwIFYxNDEgVjE0MiBWMTQzIFYxNDQgVjE0NSBWMTQ2IFYxNDcgVjE0OCBWMTQ5IFYx NTAgVjE1MSBWMTUyIFYxNTMgVjE1NCBWMTU1IFYxNTYgVjE1NyBWMTU4IFYxNTkgVjE2MCBWMTYx IFYxNjIgVjE2MyBWMTY0IFYxNjUgVjE2NiBWMTY3IFYxNjggVjE2OSBWMTcwIFYxNzEgVjE3MiBW MTczIFYxNzQgVjE3NSBWMTc2IFYxNzcgVjE3OCBWMTc5IFYxODAgVjE4MSBWMTgyIFYxODMgVjE4 NCBWMTg1IFYxODYgVjE4NyBWMTg4IFYxODkgVjE5MCBWMTkxIFYxOTIgVjE5MyBWMTk0IFYxOTUg VjE5NiBWMTk3IFYxOTggVjE5OSBWMjAwIFYyMDEgVjIwMiBWMjAzIFYyMDQgVjIwNSBWMjA2IFYy MDcgVjIwOCBWMjA5IFYyMTAgVjIxMSBWMjEyIFYyMTMgVjIxNCBWMjE1IFYyMTYgVjIxNyBWMjE4 IFYyMTkgVjIyMCBWMjIxIFYyMjIgVjIyMyBWMjI0IFYyMjUgVjIyNiBWMjI3IFYyMjggVjIyOSBW MjMwIFYyMzEgVjIzMiBWMjMzIFYyMzQgVjIzNSBWMjM2IFYyMzcgVjIzOCBWMjM5IFYyNDAgVjI0 MSkKKyAgICBERUZJTkUKKyAgICBWMSBBUyB2YWwgPiAwLCBWMiBBUyB2YWwgPiAwLCBWMyBBUyB2 YWwgPiAwLCBWNCBBUyB2YWwgPiAwLCBWNSBBUyB2YWwgPiAwLCBWNiBBUyB2YWwgPiAwLCBWNyBB UyB2YWwgPiAwLCBWOCBBUyB2YWwgPiAwLCBWOSBBUyB2YWwgPiAwLCBWMTAgQVMgdmFsID4gMCwK KyAgICBWMTEgQVMgdmFsID4gMCwgVjEyIEFTIHZhbCA+IDAsIFYxMyBBUyB2YWwgPiAwLCBWMTQg QVMgdmFsID4gMCwgVjE1IEFTIHZhbCA+IDAsIFYxNiBBUyB2YWwgPiAwLCBWMTcgQVMgdmFsID4g MCwgVjE4IEFTIHZhbCA+IDAsIFYxOSBBUyB2YWwgPiAwLCBWMjAgQVMgdmFsID4gMCwKKyAgICBW MjEgQVMgdmFsID4gMCwgVjIyIEFTIHZhbCA+IDAsIFYyMyBBUyB2YWwgPiAwLCBWMjQgQVMgdmFs ID4gMCwgVjI1IEFTIHZhbCA+IDAsIFYyNiBBUyB2YWwgPiAwLCBWMjcgQVMgdmFsID4gMCwgVjI4 IEFTIHZhbCA+IDAsIFYyOSBBUyB2YWwgPiAwLCBWMzAgQVMgdmFsID4gMCwKKyAgICBWMzEgQVMg dmFsID4gMCwgVjMyIEFTIHZhbCA+IDAsIFYzMyBBUyB2YWwgPiAwLCBWMzQgQVMgdmFsID4gMCwg VjM1IEFTIHZhbCA+IDAsIFYzNiBBUyB2YWwgPiAwLCBWMzcgQVMgdmFsID4gMCwgVjM4IEFTIHZh bCA+IDAsIFYzOSBBUyB2YWwgPiAwLCBWNDAgQVMgdmFsID4gMCwKKyAgICBWNDEgQVMgdmFsID4g MCwgVjQyIEFTIHZhbCA+IDAsIFY0MyBBUyB2YWwgPiAwLCBWNDQgQVMgdmFsID4gMCwgVjQ1IEFT IHZhbCA+IDAsIFY0NiBBUyB2YWwgPiAwLCBWNDcgQVMgdmFsID4gMCwgVjQ4IEFTIHZhbCA+IDAs IFY0OSBBUyB2YWwgPiAwLCBWNTAgQVMgdmFsID4gMCwKKyAgICBWNTEgQVMgdmFsID4gMCwgVjUy IEFTIHZhbCA+IDAsIFY1MyBBUyB2YWwgPiAwLCBWNTQgQVMgdmFsID4gMCwgVjU1IEFTIHZhbCA+ IDAsIFY1NiBBUyB2YWwgPiAwLCBWNTcgQVMgdmFsID4gMCwgVjU4IEFTIHZhbCA+IDAsIFY1OSBB UyB2YWwgPiAwLCBWNjAgQVMgdmFsID4gMCwKKyAgICBWNjEgQVMgdmFsID4gMCwgVjYyIEFTIHZh bCA+IDAsIFY2MyBBUyB2YWwgPiAwLCBWNjQgQVMgdmFsID4gMCwgVjY1IEFTIHZhbCA+IDAsIFY2 NiBBUyB2YWwgPiAwLCBWNjcgQVMgdmFsID4gMCwgVjY4IEFTIHZhbCA+IDAsIFY2OSBBUyB2YWwg PiAwLCBWNzAgQVMgdmFsID4gMCwKKyAgICBWNzEgQVMgdmFsID4gMCwgVjcyIEFTIHZhbCA+IDAs IFY3MyBBUyB2YWwgPiAwLCBWNzQgQVMgdmFsID4gMCwgVjc1IEFTIHZhbCA+IDAsIFY3NiBBUyB2 YWwgPiAwLCBWNzcgQVMgdmFsID4gMCwgVjc4IEFTIHZhbCA+IDAsIFY3OSBBUyB2YWwgPiAwLCBW ODAgQVMgdmFsID4gMCwKKyAgICBWODEgQVMgdmFsID4gMCwgVjgyIEFTIHZhbCA+IDAsIFY4MyBB UyB2YWwgPiAwLCBWODQgQVMgdmFsID4gMCwgVjg1IEFTIHZhbCA+IDAsIFY4NiBBUyB2YWwgPiAw LCBWODcgQVMgdmFsID4gMCwgVjg4IEFTIHZhbCA+IDAsIFY4OSBBUyB2YWwgPiAwLCBWOTAgQVMg dmFsID4gMCwKKyAgICBWOTEgQVMgdmFsID4gMCwgVjkyIEFTIHZhbCA+IDAsIFY5MyBBUyB2YWwg PiAwLCBWOTQgQVMgdmFsID4gMCwgVjk1IEFTIHZhbCA+IDAsIFY5NiBBUyB2YWwgPiAwLCBWOTcg QVMgdmFsID4gMCwgVjk4IEFTIHZhbCA+IDAsIFY5OSBBUyB2YWwgPiAwLCBWMTAwIEFTIHZhbCA+ IDAsCisgICAgVjEwMSBBUyB2YWwgPiAwLCBWMTAyIEFTIHZhbCA+IDAsIFYxMDMgQVMgdmFsID4g MCwgVjEwNCBBUyB2YWwgPiAwLCBWMTA1IEFTIHZhbCA+IDAsIFYxMDYgQVMgdmFsID4gMCwgVjEw NyBBUyB2YWwgPiAwLCBWMTA4IEFTIHZhbCA+IDAsIFYxMDkgQVMgdmFsID4gMCwgVjExMCBBUyB2 YWwgPiAwLAorICAgIFYxMTEgQVMgdmFsID4gMCwgVjExMiBBUyB2YWwgPiAwLCBWMTEzIEFTIHZh bCA+IDAsIFYxMTQgQVMgdmFsID4gMCwgVjExNSBBUyB2YWwgPiAwLCBWMTE2IEFTIHZhbCA+IDAs IFYxMTcgQVMgdmFsID4gMCwgVjExOCBBUyB2YWwgPiAwLCBWMTE5IEFTIHZhbCA+IDAsIFYxMjAg QVMgdmFsID4gMCwKKyAgICBWMTIxIEFTIHZhbCA+IDAsIFYxMjIgQVMgdmFsID4gMCwgVjEyMyBB UyB2YWwgPiAwLCBWMTI0IEFTIHZhbCA+IDAsIFYxMjUgQVMgdmFsID4gMCwgVjEyNiBBUyB2YWwg PiAwLCBWMTI3IEFTIHZhbCA+IDAsIFYxMjggQVMgdmFsID4gMCwgVjEyOSBBUyB2YWwgPiAwLCBW MTMwIEFTIHZhbCA+IDAsCisgICAgVjEzMSBBUyB2YWwgPiAwLCBWMTMyIEFTIHZhbCA+IDAsIFYx MzMgQVMgdmFsID4gMCwgVjEzNCBBUyB2YWwgPiAwLCBWMTM1IEFTIHZhbCA+IDAsIFYxMzYgQVMg dmFsID4gMCwgVjEzNyBBUyB2YWwgPiAwLCBWMTM4IEFTIHZhbCA+IDAsIFYxMzkgQVMgdmFsID4g MCwgVjE0MCBBUyB2YWwgPiAwLAorICAgIFYxNDEgQVMgdmFsID4gMCwgVjE0MiBBUyB2YWwgPiAw LCBWMTQzIEFTIHZhbCA+IDAsIFYxNDQgQVMgdmFsID4gMCwgVjE0NSBBUyB2YWwgPiAwLCBWMTQ2 IEFTIHZhbCA+IDAsIFYxNDcgQVMgdmFsID4gMCwgVjE0OCBBUyB2YWwgPiAwLCBWMTQ5IEFTIHZh bCA+IDAsIFYxNTAgQVMgdmFsID4gMCwKKyAgICBWMTUxIEFTIHZhbCA+IDAsIFYxNTIgQVMgdmFs ID4gMCwgVjE1MyBBUyB2YWwgPiAwLCBWMTU0IEFTIHZhbCA+IDAsIFYxNTUgQVMgdmFsID4gMCwg VjE1NiBBUyB2YWwgPiAwLCBWMTU3IEFTIHZhbCA+IDAsIFYxNTggQVMgdmFsID4gMCwgVjE1OSBB UyB2YWwgPiAwLCBWMTYwIEFTIHZhbCA+IDAsCisgICAgVjE2MSBBUyB2YWwgPiAwLCBWMTYyIEFT IHZhbCA+IDAsIFYxNjMgQVMgdmFsID4gMCwgVjE2NCBBUyB2YWwgPiAwLCBWMTY1IEFTIHZhbCA+ IDAsIFYxNjYgQVMgdmFsID4gMCwgVjE2NyBBUyB2YWwgPiAwLCBWMTY4IEFTIHZhbCA+IDAsIFYx NjkgQVMgdmFsID4gMCwgVjE3MCBBUyB2YWwgPiAwLAorICAgIFYxNzEgQVMgdmFsID4gMCwgVjE3 MiBBUyB2YWwgPiAwLCBWMTczIEFTIHZhbCA+IDAsIFYxNzQgQVMgdmFsID4gMCwgVjE3NSBBUyB2 YWwgPiAwLCBWMTc2IEFTIHZhbCA+IDAsIFYxNzcgQVMgdmFsID4gMCwgVjE3OCBBUyB2YWwgPiAw LCBWMTc5IEFTIHZhbCA+IDAsIFYxODAgQVMgdmFsID4gMCwKKyAgICBWMTgxIEFTIHZhbCA+IDAs IFYxODIgQVMgdmFsID4gMCwgVjE4MyBBUyB2YWwgPiAwLCBWMTg0IEFTIHZhbCA+IDAsIFYxODUg QVMgdmFsID4gMCwgVjE4NiBBUyB2YWwgPiAwLCBWMTg3IEFTIHZhbCA+IDAsIFYxODggQVMgdmFs ID4gMCwgVjE4OSBBUyB2YWwgPiAwLCBWMTkwIEFTIHZhbCA+IDAsCisgICAgVjE5MSBBUyB2YWwg PiAwLCBWMTkyIEFTIHZhbCA+IDAsIFYxOTMgQVMgdmFsID4gMCwgVjE5NCBBUyB2YWwgPiAwLCBW MTk1IEFTIHZhbCA+IDAsIFYxOTYgQVMgdmFsID4gMCwgVjE5NyBBUyB2YWwgPiAwLCBWMTk4IEFT IHZhbCA+IDAsIFYxOTkgQVMgdmFsID4gMCwgVjIwMCBBUyB2YWwgPiAwLAorICAgIFYyMDEgQVMg dmFsID4gMCwgVjIwMiBBUyB2YWwgPiAwLCBWMjAzIEFTIHZhbCA+IDAsIFYyMDQgQVMgdmFsID4g MCwgVjIwNSBBUyB2YWwgPiAwLCBWMjA2IEFTIHZhbCA+IDAsIFYyMDcgQVMgdmFsID4gMCwgVjIw OCBBUyB2YWwgPiAwLCBWMjA5IEFTIHZhbCA+IDAsIFYyMTAgQVMgdmFsID4gMCwKKyAgICBWMjEx IEFTIHZhbCA+IDAsIFYyMTIgQVMgdmFsID4gMCwgVjIxMyBBUyB2YWwgPiAwLCBWMjE0IEFTIHZh bCA+IDAsIFYyMTUgQVMgdmFsID4gMCwgVjIxNiBBUyB2YWwgPiAwLCBWMjE3IEFTIHZhbCA+IDAs IFYyMTggQVMgdmFsID4gMCwgVjIxOSBBUyB2YWwgPiAwLCBWMjIwIEFTIHZhbCA+IDAsCisgICAg VjIyMSBBUyB2YWwgPiAwLCBWMjIyIEFTIHZhbCA+IDAsIFYyMjMgQVMgdmFsID4gMCwgVjIyNCBB UyB2YWwgPiAwLCBWMjI1IEFTIHZhbCA+IDAsIFYyMjYgQVMgdmFsID4gMCwgVjIyNyBBUyB2YWwg PiAwLCBWMjI4IEFTIHZhbCA+IDAsIFYyMjkgQVMgdmFsID4gMCwgVjIzMCBBUyB2YWwgPiAwLAor ICAgIFYyMzEgQVMgdmFsID4gMCwgVjIzMiBBUyB2YWwgPiAwLCBWMjMzIEFTIHZhbCA+IDAsIFYy MzQgQVMgdmFsID4gMCwgVjIzNSBBUyB2YWwgPiAwLCBWMjM2IEFTIHZhbCA+IDAsIFYyMzcgQVMg dmFsID4gMCwgVjIzOCBBUyB2YWwgPiAwLCBWMjM5IEFTIHZhbCA+IDAsIFYyNDAgQVMgdmFsID4g MAorKTsKKworLS0gVGVzdDogUGF0dGVybiBuZXN0aW5nIGF0IG1heGltdW0gZGVwdGggKGRlcHRo IDI1MykKKy0tIE5vdGU6IDI1MyBuZXN0ZWQgR1JPVVB7Myw3fT8gcXVhbnRpZmllcnM7IHJlbHVj dGFudCBxdWFudGlmaWVycyBhcmUgbm90CistLSBzdWJqZWN0IHRvIHF1YW50aWZpZXIgbXVsdGlw bGljYXRpb24sIHNvIHRoZSBuZXN0aW5nIChhbmQgZGVwdGggMjUzKSBpcworLS0gcHJlc2VydmVk IGFmdGVyIG9wdGltaXphdGlvbi4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKTsKKy0tIEV4cGVjdGVkOiBTaG91bGQgc3VjY2VlZAorCistLSBUZXN0OiBQYXR0ZXJu IG5lc3RpbmcgZGVwdGggZXhjZWVkcyBtYXhpbXVtIChkZXB0aCAyNTQpCistLSBOb3RlOiAyNTQg bmVzdGVkIEdST1VQezMsN30/IHF1YW50aWZpZXJzOyByZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJl IG5vdAorLS0gc3ViamVjdCB0byBxdWFudGlmaWVyIG11bHRpcGxpY2F0aW9uLCBzbyB0aGUgbmVz dGluZyByZWFjaGVzIGRlcHRoIDI1NCBhbmQKKy0tIGV4Y2VlZHMgdGhlIGxpbWl0LgorU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CisKK0RST1AgVEFC TEUgcnByX2Vycm9yczsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCYXNpYyBQYXR0ZXJuIE1hdGNoaW5nCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworLS0gVGVzdDogQT8gKG9wdGlvbmFsLCBncmVlZHkpCitTRUxFQ1QgaWQsIHZhbCwgY291 bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEE/ KQorICAgIERFRklORSBBIEFTIHZhbCA+IDUwCispOworCistLSBUZXN0OiBBezJ9IChleGFjdCBj b3VudCkKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxh bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAK Kyk7CisKKy0tIFRlc3Q6IEF7MSwzfSAoYm91bmRlZCByYW5nZSwgZ3JlZWR5KQorU0VMRUNUIGlk LCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBezEsM30pCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwCispOworCistLSBUZXN0 OiBBIHwgQiAoc2ltcGxlIGFsdGVybmF0aW9uKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9W RVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIHwgQikKKyAg ICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsID4gNzAKKyk7CisKKy0tIFRlc3Q6IEEg fCBCIHwgQyAodGhyZWUtd2F5IGFsdGVybmF0aW9uKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCop IE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIHwgQiB8 IEMpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDIwLCBCIEFTIHZhbCBCRVRXRUVOIDQwIEFORCA2 MCwgQyBBUyB2YWwgPiA4MAorKTsKKworLS0gVGVzdDogQSBCIEMgKGNvbmNhdGVuYXRpb24pCitT RUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2 YWwgQkVUV0VFTiAzMSBBTkQgNjAsIEMgQVMgdmFsID4gNjAKKyk7CisKKy0tIFRlc3Q6IEEgQj8g QyAob3B0aW9uYWwgbWlkZGxlKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBj CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEI/IEMpCisgICAgREVGSU5F IEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCBCRVRXRUVOIDMxIEFORCA2MCwgQyBBUyB2YWwgPiA2 MAorKTsKKworLS0gVGVzdDogKEEgQikrIChncm91cGVkIHF1YW50aWZpZXIpCitTRUxFQ1QgaWQs IHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKChBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAK Kyk7CisKKy0tIFRlc3Q6IChBIHwgQikrIEMgKGFsdGVybmF0aW9uIHdpdGggcXVhbnRpZmllcikK K1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAs IEIgQVMgdmFsIEJFVFdFRU4gMzEgQU5EIDYwLCBDIEFTIHZhbCA+IDgwCispOworCistLSBUZXN0 OiAoQSsgfCAoQSB8IEIpKykqIC0gbmVzdGVkIGFsdGVybmF0aW9uIGluc2lkZSBxdWFudGlmaWVk IGdyb3VwCistLSBQcmV2aW91c2x5IGNhdXNlZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gYWx0ZXJu YXRpb24gaGFuZGxpbmcgd2hlbiB0aGUgaW5uZXIKKy0tIEJFR0lOKCspJ3Mgc2tpcCBqdW1wIHdh cyBmb2xsb3dlZCBhcyBhbiBBTFQgYnJhbmNoIHBvaW50ZXIuCitTRUxFQ1QgaWQsIGZsYWdzLCBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIChWQUxVRVMKKyAgICAoMSwgQVJSQVlbJ0EnLCAnQiddKSwK KyAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgKDMsIEFSUkFZWydDJ10pCispIEFTIHQoaWQsIGZs YWdzKQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEErIHwgKEEgfCBCKSspKikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gUGF0aG9sb2dpY2FsIFBhdHRlcm5zCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFRoZXNlIHBhdHRlcm5zIHByZXZpb3VzbHkgY2F1c2VkIGlzc3Vlcy4gTm93IG9wdGltaXplZCBv ciBoYW5kbGVkIHNhZmVseS4KKworLS0gVGVzdDogKEEqKSogLSBuZXN0ZWQgdW5ib3VuZGVkIChv cHRpbWl6ZWQgdG8gQSopCitTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNF TEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEEqKSopCisg ICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKworLS0gVGVzdDogKEEqKSsgLSBpbm5lciBudWxsYWJs ZSAob3B0aW1pemVkIHRvIEEqKQorU0VMRUNUIHYsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9N IChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKChBKikr KQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7CisKKy0tIFRlc3Q6IChBKykqIC0gb3V0ZXIgbnVs bGFibGUgKG9wdGltaXplZCB0byBBKikKK1NFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcgQVMgYwor RlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1KSB2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIElOSVRJQUwKKyAgICBQQVRURVJOICgo QSspKikKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworCistLSBUZXN0OiAoQSspKyAtIGJvdGgg cmVxdWlyZSBtYXRjaCAob3B0aW1pemVkIHRvIEErKQorU0VMRUNUIHYsIGNvdW50KCopIE9WRVIg dyBBUyBjCitGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAorICAgIFBB VFRFUk4gKChBKykrKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7CisKKy0tIFRlc3Q6ICgoKEEp KikqKSogIC0gdHJpcGxlIG5lc3RlZCAob3B0aW1pemVkIHRvIEEqKQorU0VMRUNUIHYsIGNvdW50 KCopIE9WRVIgdyBBUyBjCitGUk9NIChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElB TAorICAgIFBBVFRFUk4gKCgoKEEpKikqKSopCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKwor LS0gT3B0aW9uYWwgZ3JvdXAgd2l0aCBhbHRlcm5hdGlvbjogQSAoKEIgfCBDKSAoRCB8IEUpKSog Rj8KKy0tIFdoZW4gb25seSBBIG1hdGNoZXMsIHRoZSAqIGdyb3VwIG1hdGNoZXMgMCB0aW1lcyBh bmQgRj8gbWF0Y2hlcyAwIHRpbWVzCitTRUxFQ1QgaWQsIHZhbCwgbWF0Y2hfbGVuCitGUk9NIChT RUxFQ1QgaWQsIHZhbCwKKyAgICAgICAgICAgICBDT1VOVCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVu CisgICAgICBGUk9NIChWQUxVRVMgKDEsIDEpLCAoMiwgOTkpKSBBUyB0KGlkLCB2YWwpCisgICAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgICBQQVRURVJOIChBICgoQiB8IEMp IChEIHwgRSkpKiBGPykKKyAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPSAxLAorICAgICAgICAg ICAgICAgICBCIEFTIHZhbCA9IDIsIEMgQVMgdmFsID0gMywKKyAgICAgICAgICAgICAgICAgRCBB UyB2YWwgPSA0LCBFIEFTIHZhbCA9IDUsCisgICAgICAgICAgICAgICAgIEYgQVMgdmFsID0gNgor ICAgICAgKQorKSBzOworCitEUk9QIFRBQkxFIHJwcl9wbGFuOworUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNx bCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9leHBsYWluLnNxbApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMjk3Y2E3OGQ1NGIKLS0tIC9kZXYvbnVsbAorKysgYi9z cmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfZXhwbGFpbi5zcWwKQEAgLTAsMCArMSwzNDQ0IEBACist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIFJQUiBFWFBMQUlOIFRlc3RzCistLSBUZXN0cyBmb3IgUm93IFBhdHRlcm4gUmVj b2duaXRpb24gRVhQTEFJTiBvdXRwdXQKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0KKy0tIFZpZXdzIGFuZCB0YWJsZXMg aW4gdGhpcyBmaWxlIGFyZSBpbnRlbnRpb25hbGx5IG5vdCBkcm9wcGVkLAorLS0gc28gdGhhdCBw Z191cGdyYWRlL3BnX2R1bXAgY2FuIHRlc3QgUlBSIHN5bnRheCBzZXJpYWxpemF0aW9uLgorLS0K Ky0tIFRoaXMgdGVzdCBzdWl0ZSB2YWxpZGF0ZXMgRVhQTEFJTiBvdXRwdXQgZm9yIFJQUiBxdWVy aWVzLAorLS0gaW5jbHVkaW5nIE5GQSBzdGF0aXN0aWNzIHNob3duIGluIEVYUExBSU4gQU5BTFla RToKKy0tICAgLSBORkEgU3RhdGVzOiBwZWFrLCB0b3RhbCwgbWVyZ2VkCistLSAgIC0gTkZBIENv bnRleHRzOiBwZWFrLCB0b3RhbCwgcHJ1bmVkCistLSAgIC0gTkZBOiBtYXRjaGVkIChsZW4gbWlu L21heC9hdmcpLCBtaXNtYXRjaGVkIChsZW4gbWluL21heC9hdmcpCistLSAgIC0gTkZBOiBhYnNv cmJlZCAobGVuIG1pbi9tYXgvYXZnKSwgc2tpcHBlZCAobGVuIG1pbi9tYXgvYXZnKQorLS0gICAt IFBhdHRlcm4gZGVwYXJzZSBmb3JtYXR0aW5nCistLSAgIC0gTXVsdGlwbGUgb3V0cHV0IGZvcm1h dHMgKHRleHQsIEpTT04sIFhNTCkKKy0tCistLSBUZXN0IENvdmVyYWdlOgorLS0gICBCYXNpYyBO RkEgU3RhdGlzdGljcyBUZXN0cworLS0gICBTdGF0ZSBTdGF0aXN0aWNzIFRlc3RzCistLSAgIENv bnRleHQgU3RhdGlzdGljcyBUZXN0cworLS0gICBNYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0 cworLS0gICBNaXNtYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cworLS0gICBKU09OIEZvcm1h dCBUZXN0cworLS0gICBYTUwgRm9ybWF0IFRlc3RzCistLSAgIE11bHRpcGxlIFBhcnRpdGlvbnMg VGVzdHMKKy0tICAgRWRnZSBDYXNlcworLS0gICBDb21wbGV4IFBhdHRlcm4gVGVzdHMKKy0tICAg UmVhbC13b3JsZCBQYXR0ZXJuIEV4YW1wbGVzCistLSAgIFBlcmZvcm1hbmNlLW9yaWVudGVkIFRl c3RzCistLSAgIElOSVRJQUwgdnMgbm8gSU5JVElBTCBjb21wYXJpc29uCistLSAgIFF1YW50aWZp ZXIgVmFyaWF0aW9ucworLS0gICBSZWdyZXNzaW9uIFRlc3RzIGZvciBTdGF0aXN0aWNzIEFjY3Vy YWN5CistLSAgIEFsdGVybmF0aW9uIFBhdHRlcm4gVGVzdHMKKy0tICAgR3JvdXAgUGF0dGVybiBU ZXN0cworLS0gICBXaW5kb3cgRnVuY3Rpb24gQ29tYmluYXRpb25zCistLSAgIERFRklORSBFeHBy ZXNzaW9uIFZhcmlhdGlvbnMKKy0tICAgTGFyZ2UgU2NhbGUgU3RhdGlzdGljcyBWZXJpZmljYXRp b24KKy0tICAgTmF2IE1hcmsgTG9va2JhY2svTG9va2FoZWFkICh0dXBsZXN0b3JlIHRyaW0pCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworLS0gRmlsdGVyIGZ1bmN0aW9uIHRvIG5vcm1hbGl6ZSBwbGF0Zm9ybS1kZXBlbmRl bnQgbWVtb3J5IHZhbHVlcyAobm90IE5GQSBzdGF0aXN0aWNzKS4KKy0tIE5GQSBzdGF0aXN0aWNz IHNob3VsZCBub3QgY2hhbmdlIGJldHdlZW4gcGxhdGZvcm1zOyBpZiB0aGV5IGRvLCBpdCBjb3Vs ZAorLS0gaW5kaWNhdGUgaXNzdWVzIHN1Y2ggYXMgdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNz LgorLS0gV29ya3MgZm9yIHRleHQsIEpTT04sIGFuZCBYTUwgZm9ybWF0cy4KK2NyZWF0ZSBmdW5j dGlvbiBycHJfZXhwbGFpbl9maWx0ZXIodGV4dCkgcmV0dXJucyBzZXRvZiB0ZXh0CitsYW5ndWFn ZSBwbHBnc3FsIGFzCiskJAorZGVjbGFyZQorICAgIGxuIHRleHQ7CitiZWdpbgorICAgIGZvciBs biBpbiBleGVjdXRlICQxCisgICAgbG9vcAorICAgICAgICAtLSBOb3JtYWxpemUgcGxhdGZvcm0t ZGVwZW5kZW50IG1lbW9yeSB2YWx1ZXMKKyAgICAgICAgLS0gS2VlcCBORkEgc3RhdGlzdGljcyBu dW1iZXJzIHVuY2hhbmdlZCAodGhleSBhcmUgdGVzdCBhc3NlcnRpb25zKQorCisgICAgICAgIC0t IFRleHQgZm9ybWF0OiAiU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IDE4a0IiCisg ICAgICAgIGlmIGxuIH4gJ1N0b3JhZ2U6LipNYXhpbXVtIFN0b3JhZ2U6JyB0aGVuCisgICAgICAg ICAgICBsbiA6PSByZWdleHBfcmVwbGFjZShsbiwgJ1xtXGQra0InLCAnTmtCJywgJ2cnKTsKKyAg ICAgICAgZW5kIGlmOworCisgICAgICAgIC0tIEpTT04gZm9ybWF0OiAiTWF4aW11bSBTdG9yYWdl IjogMTcgKG51bWJlciBpbiBrQiB1bml0cykKKyAgICAgICAgaWYgbG4gfiAnIk1heGltdW0gU3Rv cmFnZSI6JyB0aGVuCisgICAgICAgICAgICBsbiA6PSByZWdleHBfcmVwbGFjZShsbiwgJyJNYXhp bXVtIFN0b3JhZ2UiOiBcZCsnLCAnIk1heGltdW0gU3RvcmFnZSI6IDAnLCAnZycpOworICAgICAg ICBlbmQgaWY7CisKKyAgICAgICAgLS0gWE1MIGZvcm1hdDogPE1heGltdW0tU3RvcmFnZT4xNzwv TWF4aW11bS1TdG9yYWdlPiAobnVtYmVyIGluIGtCIHVuaXRzKQorICAgICAgICBpZiBsbiB+ICc8 TWF4aW11bS1TdG9yYWdlPicgdGhlbgorICAgICAgICAgICAgbG4gOj0gcmVnZXhwX3JlcGxhY2Uo bG4sICc8TWF4aW11bS1TdG9yYWdlPlxkKzwvTWF4aW11bS1TdG9yYWdlPicsICc8TWF4aW11bS1T dG9yYWdlPjA8L01heGltdW0tU3RvcmFnZT4nLCAnZycpOworICAgICAgICBlbmQgaWY7CisKKyAg ICAgICAgLS0gU29ydCBNZXRob2QgbWVtb3J5IGlzIHBsYXRmb3JtLWRlcGVuZGVudCAoMzItYml0 IHZzIDY0LWJpdCkKKyAgICAgICAgaWYgbG4gfiAnU29ydCBNZXRob2Q6LipNZW1vcnk6JyB0aGVu CisgICAgICAgICAgICBsbiA6PSByZWdleHBfcmVwbGFjZShsbiwgJ01lbW9yeTogXGQra0InLCAn TWVtb3J5OiBOa0InKTsKKyAgICAgICAgZW5kIGlmOworCisgICAgICAgIHJldHVybiBuZXh0IGxu OworICAgIGVuZCBsb29wOworZW5kOworJCQ7CisKKy0tIFNldHVwOiBDcmVhdGUgdGVzdCB0YWJs ZXMKK0NSRUFURSBUQUJMRSBycHJfbmZhX3Rlc3QgKAorICAgIGlkIHNlcmlhbCwKKyAgICB2IGlu dCwKKyAgICBjYXQgY2hhcigxKQorKTsKKworLS0gSW5zZXJ0IHRlc3QgZGF0YTogMTAwIHJvd3Mg d2l0aCBwcmVkaWN0YWJsZSBwYXR0ZXJuCitJTlNFUlQgSU5UTyBycHJfbmZhX3Rlc3QgKHYsIGNh dCkKK1NFTEVDVCBpLAorICAgICAgIENBU0UKKyAgICAgICAgICAgV0hFTiBpICUgNSA9IDEgVEhF TiAnQScKKyAgICAgICAgICAgV0hFTiBpICUgNSA9IDIgVEhFTiAnQicKKyAgICAgICAgICAgV0hF TiBpICUgNSA9IDMgVEhFTiAnQycKKyAgICAgICAgICAgV0hFTiBpICUgNSA9IDQgVEhFTiAnRCcK KyAgICAgICAgICAgRUxTRSAnRScKKyAgICAgICBFTkQKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwMCkgaTsKKworLS0gQWRkaXRpb25hbCB0ZXN0IHRhYmxlIHdpdGggbW9yZSBjb21wbGV4IHBh dHRlcm5zCitDUkVBVEUgVEFCTEUgcnByX25mYV9jb21wbGV4ICgKKyAgICBpZCBzZXJpYWwsCisg ICAgcHJpY2UgaW50LAorICAgIHRyZW5kIGNoYXIoMSkgIC0tIFU9dXAsIEQ9ZG93biwgUz1zdGFi bGUKKyk7CisKK0lOU0VSVCBJTlRPIHJwcl9uZmFfY29tcGxleCAocHJpY2UsIHRyZW5kKQorVkFM VUVTCisgICAgKDEwMCwgJ1MnKSwgKDEwNSwgJ1UnKSwgKDExMCwgJ1UnKSwgKDEwOCwgJ0QnKSwg KDExMiwgJ1UnKSwKKyAgICAoMTE1LCAnVScpLCAoMTEzLCAnRCcpLCAoMTExLCAnRCcpLCAoMTA5 LCAnRCcpLCAoMTEwLCAnVScpLAorICAgICgxMjAsICdVJyksICgxMjUsICdVJyksICgxMzAsICdV JyksICgxMjgsICdEJyksICgxMjYsICdEJyksCisgICAgKDEyNCwgJ0QnKSwgKDEyMiwgJ0QnKSwg KDEyMCwgJ0QnKSwgKDExOCwgJ0QnKSwgKDExOSwgJ1UnKSwKKyAgICAoMTIxLCAnVScpLCAoMTIz LCAnVScpLCAoMTI1LCAnVScpLCAoMTI3LCAnVScpLCAoMTI5LCAnVScpLAorICAgICgxMzEsICdV JyksICgxMzMsICdVJyksICgxMzAsICdEJyksICgxMjcsICdEJyksICgxMjQsICdEJyk7CisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gQmFzaWMgTkZBIFN0YXRpc3RpY3MgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBTaW1wbGUg cGF0dGVybiAtIHNob3VsZCBzaG93IGJhc2ljIHN0YXRpc3RpY3MKK0NSRUFURSBWSUVXIHJwcl9l dl9iYXNpY19zaW1wbGUgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90 ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9iYXNpY19zaW1wbGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5F IEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycKKyknKTsKKworLS0gUGF0dGVybiB3 aXRoIG5vIG1hdGNoZXMgLSAwIG1hdGNoZWQKK0NSRUFURSBWSUVXIHJwcl9ldl9iYXNpY19ub21h dGNoIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFgg WSBaKQorICAgIERFRklORSBYIEFTIGNhdCA9ICdYJywgWSBBUyBjYXQgPSAnWScsIFogQVMgY2F0 ID0gJ1onCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfYmFzaWNfbm9tYXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFggWSBaKQor ICAgIERFRklORSBYIEFTIGNhdCA9ICcnWCcnLCBZIEFTIGNhdCA9ICcnWScnLCBaIEFTIGNhdCA9 ICcnWicnCispOycpOworCistLSBQYXR0ZXJuIG1hdGNoaW5nIGV2ZXJ5IHJvdyAtIGhpZ2ggbWF0 Y2ggY291bnQKK0NSRUFURSBWSUVXIHJwcl9ldl9iYXNpY19hbGxyb3dzIEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKFIpCisgICAgREVGSU5FIFIgQVMg VFJVRQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2Jhc2ljX2FsbHJvd3MnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChSKQorICAgIERF RklORSBSIEFTIFRSVUUKKyk7Jyk7CisKKy0tIFJlZ3Jlc3Npb24gdGVzdDogU3BhY2UgYmVmb3Jl IHBhcmVudGhlc2lzIGluIHBhdHRlcm4gZGVwYXJzZQorLS0gVmVyaWZpZXMgdGhhdCAiQSAoQiB8 IEMpIiBjb3JyZWN0bHkgb3V0cHV0cyBhcyAiYSAoYiB8IGMpIiB3aXRoIHNwYWNlCitDUkVBVEUg VklFVyBycHJfZXZfYmFzaWNfZGVwYXJzZV9zcGFjZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBIChCIHwgQykpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAz ID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9iYXNpY19kZXBhcnNlX3NwYWNlJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoQiB8 IEMpKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAl IDMgPSAwCispOycpOworCistLSBSZWdyZXNzaW9uIHRlc3Q6IFNlcXVlbnRpYWwgYWx0ZXJuYXRp b25zIGF0IHNhbWUgZGVwdGgKKy0tIFZlcmlmaWVzIHRoYXQgIigoQiB8IEMpIChEIHwgRSkpIiBj b3JyZWN0bHkgb3V0cHV0cyBhcyAiKGIgfCBjKSAoZCB8IGUpIgorLS0gUHJldmlvdXNseSBmYWls ZWQgZHVlIHRvIG1pc3NpbmcgcGFyZW50aGVzZXMgb24gQUxUIGRlcHRoIGRlY3JlYXNlCitDUkVB VEUgVklFVyBycHJfZXZfYmFzaWNfZGVwYXJzZV9zZXFhbHQgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSAoKEIgfCBDKSAoRCB8IEUpKSopCisgICAgREVGSU5FIEEgQVMgdiAlIDUg PSAxLCBCIEFTIHYgJSA1ID0gMiwgQyBBUyB2ICUgNSA9IDMsIEQgQVMgdiAlIDUgPSA0LCBFIEFT IHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2Jhc2ljX2RlcGFyc2Vfc2VxYWx0JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoKEIgfCBDKSAoRCB8 IEUpKSopCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPSAxLCBCIEFTIHYgJSA1ID0gMiwgQyBBUyB2 ICUgNSA9IDMsIEQgQVMgdiAlIDUgPSA0LCBFIEFTIHYgJSA1ID0gMAorKTsnKTsKKworLS0gUmVn cmVzc2lvbiB0ZXN0OiBRdW90ZWQgaWRlbnRpZmllcnMgaW4gRVhQTEFJTiBwYXR0ZXJuIGRlcGFy c2UKKy0tIE1peGVkIGNhc2UgbmFtZXMgbXVzdCBiZSBxdW90ZWQgdG8gcHJlc2VydmUgcm91bmQt dHJpcCBzYWZldHkKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgiU3RhcnQiICJVcCIrKQorICAgIERF RklORSAiU3RhcnQiIEFTIFRSVUUsICJVcCIgQVMgdiA+IFBSRVYodikKKyk7Jyk7CisKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gU3RhdGUgU3RhdGlzdGljcyBUZXN0cyAocGVhaywgdG90YWwsIG1lcmdlZCkKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorCistLSBTaW1wbGUgcXVhbnRpZmllciBwYXR0ZXJuIC0gQSsgd2l0aCBzaG9ydCBtYXRjaGVz IChubyBtZXJnaW5nKQorQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX3NpbXBsZV9xdWFudCBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9z aW1wbGVfcXVhbnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZG LCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyB2ICUgMiA9IDEKKyk7Jyk7CisKKy0tIEFsdGVybmF0aW9uIHBhdHRlcm4gLSBt dWx0aXBsZSBzdGF0ZSBicmFuY2hlcworQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2FsdCBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBD KSAoRCB8IEUpKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQg PSAnQicsIEMgQVMgY2F0ID0gJ0MnLAorICAgICAgICBEIEFTIGNhdCA9ICdEJywgRSBBUyBjYXQg PSAnRScKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBDKSAo RCB8IEUpKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9 ICcnQicnLCBDIEFTIGNhdCA9ICcnQycnLAorICAgICAgICBEIEFTIGNhdCA9ICcnRCcnLCBFIEFT IGNhdCA9ICcnRScnCispOycpOworCistLSBDb21wbGV4IHBhdHRlcm4gd2l0aCBoaWdoIHN0YXRl IGNvdW50CitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfY29tcGxleCBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsg QiogQyspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdiAlIDMgPSAxLAorICAgICAgICBCIEFT IHYgJSAzID0gMiwKKyAgICAgICAgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9jb21w bGV4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIqIEMrKQorICAgIERF RklORQorICAgICAgICBBIEFTIHYgJSAzID0gMSwKKyAgICAgICAgQiBBUyB2ICUgMyA9IDIsCisg ICAgICAgIEMgQVMgdiAlIDMgPSAwCispOycpOworCistLSBHcm91cGVkIHBhdHRlcm4gd2l0aCBx dWFudGlmaWVyIC0gc3RhdGUgY291bnQgd2l0aCBncm91cGluZworQ1JFQVRFIFZJRVcgcnByX2V2 X3N0YXRlX2dyb3VwX3F1YW50IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2 ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfZ3JvdXBfcXVhbnQnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSspCisgICAgREVGSU5FIEEgQVMg diAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKKworLS0gU3RhdGUgZXhwbG9zaW9uIHBh dHRlcm4gLSBtYW55IGFsdGVybmF0aW9ucworLS0gUGF0dGVybiAoQXxCKShBfEIpKEF8QikoQXxC KSBjYW4gY3JlYXRlIG1hbnkgcGFyYWxsZWwgc3RhdGVzCitDUkVBVEUgVklFVyBycHJfZXZfc3Rh dGVfZXhwbG9zaW9uIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIp IChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikpCisgICAgREVGSU5FIEEgQVMgdiAlIDIg PSAxLCBCIEFTIHYgJSAyID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2V4cGxvc2lvbicpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIp IChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikpCisgICAgREVGSU5FIEEgQVMgdiAlIDIg PSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKKworLS0gQ29uc2VjdXRpdmUgQUxUIG1lcmdlIGZv bGxvd2VkIGJ5IGRpZmZlcmVudCBBTFQKKy0tICgoQSB8IEIpIChBIHwgQikgKEMgfCBEKSkgLT4g KEF8Qil7Mn0gKEN8RCkKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9hbHRfbWVyZ2VfYWx0IEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQyB8IEQpKQorICAgIERFRklORSBBIEFTIHYgJSA0 ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsK K1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZign cnByX2V2X3N0YXRlX2FsdF9tZXJnZV9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSB8IEIpIChBIHwgQikgKEMgfCBEKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAs IEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisK Ky0tIENvbnNlY3V0aXZlIEFMVCBtZXJnZSBmb2xsb3dlZCBieSBub24tQUxUIGVsZW1lbnQKKy0t ICgoQSB8IEIpIChBIHwgQikgQykgLT4gKEF8Qil7Mn0gQworQ1JFQVRFIFZJRVcgcnByX2V2X3N0 YXRlX2FsdF9tZXJnZV9ub25hbHQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIEMpCisgICAg REVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl9zdGF0ZV9hbHRfbWVyZ2Vfbm9uYWx0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBC IEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7Jyk7CisKKy0tIEFMVCBwcmVmaXgvc3Vm Zml4IGFic29yYmVkIGludG8gR1JPVVA6IChBfEIpIChBfEIpKyAoQXxCKSAtPiAoQXxCKXszLH0K K0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9hbHRfYWJzb3JiX2dyb3VwIEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChB IHwgQikgKEEgfCBCKSsgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDAsIEIgQVMg diAlIDIgPSAxCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X2Fic29yYl9ncm91cCcpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSsgKEEgfCBCKSkKKyAgICBERUZJ TkUgQSBBUyB2ICUgMiA9IDAsIEIgQVMgdiAlIDIgPSAxCispOycpOworCistLSBIaWdoIHN0YXRl IGNvdW50IC0gYWx0ZXJuYXRpb24gd2l0aCBwbHVzIHF1YW50aWZpZXIKK0NSRUFURSBWSUVXIHJw cl9ldl9zdGF0ZV9hbHRfcGx1cyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCIHwgQykrIEQpCisgICAgREVG SU5FIEEgQVMgdiAlIDQgPSAxLCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMsIEQgQVMg diAlIDQgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X3BsdXMnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgfCBCIHwgQykrIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAx LCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMsIEQgQVMgdiAlIDQgPSAwCispOycpOwor CistLSBFYXJseSB0ZXJtaW5hdGlvbjogZmlyc3QgQUxUIGJyYW5jaCAoQSkgcmVhY2hlcyBGSU4g aW1tZWRpYXRlbHksCistLSBwcnVuaW5nIHNlY29uZCBicmFuY2ggKEEgQispIGJlZm9yZSBpdCBj YW4gYWNjdW11bGF0ZSBCIHJlcGV0aXRpb25zLgorQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRlX2Fs dF9wcnVuZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2ID0gMSwg QiBBUyB2ID4gMQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2FsdF9wcnVuZScpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSB8IEEgQikrKQorICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFT IHYgPiAxCispOycpOworCistLSBOZXN0ZWQgcXVhbnRpZmllcnMgY2F1c2luZyBzdGF0ZSBncm93 dGgKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9uZXN0ZWRfcXVhbnQgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgo KEEgfCBCKSspKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfc3RhdGVfbmVzdGVkX3F1YW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoKEEgfCBCKSspKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAl IDMgPSAyCispOycpOworCistLSAoQXsyLH0pKiBtdXN0IE5PVCBmbGF0dGVuIHRvIGEqIChILTEp OiBjb3VudHMgezB9IFVOSU9OIFsyLCBJTkYpIGxlYXZlIDEKKy0tIHVucmVhY2hhYmxlLiAgVGhl IHBsYW5uZXIga2VlcHMgaXQgYXMgKGF7Mix9KSosIG5vdCBhKi4KK0NSRUFURSBWSUVXIHJwcl9l dl9uZXN0ZWRfcXVhbnRfbm9fZmxhdHRlbiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBezIsfSkqKQorICAgIERFRklO RSBBIEFTIHYgJSAzIDw+IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9uZXN0ZWRfcXVhbnRfbm9fZmxhdHRlbicpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA2KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEF7Mix9KSopCisgICAgREVGSU5FIEEgQVMg diAlIDMgPD4gMAorKTsnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDb250ZXh0IFN0YXRpc3RpY3MgVGVzdHMg KHBlYWssIHRvdGFsLCBwcnVuZWQgKyBhYnNvcmJlZC9za2lwcGVkKQorLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIENv bnRleHQgYWJzb3JwdGlvbiB3aXRoIHVuYm91bmRlZCBxdWFudGlmaWVyIGF0IHN0YXJ0CitDUkVB VEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl91bmJvdW5kZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAg ICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9h YnNvcmJfdW5ib3VuZGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKKworLS0g Tm8gYWJzb3JwdGlvbiAtIGJvdW5kZWQgcXVhbnRpZmllcgorQ1JFQVRFIFZJRVcgcnByX2V2X2N0 eF9ub19hYnNvcmIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyLDR9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUg PD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfbm9fYWJzb3JiJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyLDR9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUg PD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CisKKy0tIENvbnRleHRzIHNraXBwZWQgYnkgU0tJ UCBQQVNUIExBU1QgUk9XCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X3NraXAgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEEgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA9IDEsIEIgQVMgdiAlIDEwID0gMiwgQyBB UyB2ICUgMTAgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5 KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X3NraXAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwID0gMSwgQiBBUyB2ICUg MTAgPSAyLCBDIEFTIHYgJSAxMCA9IDMKKyk7Jyk7CisKKy0tIEhpZ2ggY29udGV4dCBhYnNvcnB0 aW9uIC0gdW5ib3VuZGVkIGdyb3VwCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9ncm91 cCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFT IHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfYWJzb3JiX2dyb3VwJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKyBDKQorICAgIERFRklORSBB IEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOworCist LSBGaXhlZC1sZW5ndGggZ3JvdXAgYWJzb3JwdGlvbjogKEEgQiBCKSsgQworLS0gQiBCIG1lcmdl ZCB0byBCezJ9OyBhYnNvcmJhYmxlIHdpdGggZml4ZWQtbGVuZ3RoIGNoZWNrCistLSBzdGVwX3Np emU9MyAoQSArIEIgKyBCKTsgdiAlIDcgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zIHBlciBtYXRj aAorQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9hYnNvcmJfZml4ZWR2YXIgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDcwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEg QiBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNyBJTiAoMSwgNCksIEIgQVMgdiAlIDcgSU4g KDIsIDMsIDUsIDYpLCBDIEFTIHYgJSA3ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfZml4ZWR2 YXInKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgNzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCIEIpKyBDKQorICAgIERF RklORSBBIEFTIHYgJSA3IElOICgxLCA0KSwgQiBBUyB2ICUgNyBJTiAoMiwgMywgNSwgNiksIEMg QVMgdiAlIDcgPSAwCispOycpOworCistLSBOZXN0ZWQgZml4ZWQtbGVuZ3RoIGdyb3VwIGFic29y cHRpb246IChBIChCIEMpezJ9IEQpKyBFCistLSBzdGVwX3NpemUgPSAxICsgKDErMSkqMiArIDEg PSA2OyB2ICUgMTMgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zICsgRQorQ1JFQVRFIFZJRVcgcnBy X2V2X2N0eF9hYnNvcmJfbmVzdGVkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA2NSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIChCIEMpezJ9IEQpKyBFKQorICAg IERFRklORSBBIEFTIHYgJSAxMyBJTiAoMSwgNyksIEIgQVMgdiAlIDEzIElOICgyLCA0LCA4LCAx MCksCisgICAgICAgICAgIEMgQVMgdiAlIDEzIElOICgzLCA1LCA5LCAxMSksIEQgQVMgdiAlIDEz IElOICg2LCAxMiksCisgICAgICAgICAgIEUgQVMgdiAlIDEzID0gMAorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9h YnNvcmJfbmVzdGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDY1KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgKEIgQyl7 Mn0gRCkrIEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDEzIElOICgxLCA3KSwgQiBBUyB2ICUgMTMg SU4gKDIsIDQsIDgsIDEwKSwKKyAgICAgICAgICAgQyBBUyB2ICUgMTMgSU4gKDMsIDUsIDksIDEx KSwgRCBBUyB2ICUgMTMgSU4gKDYsIDEyKSwKKyAgICAgICAgICAgRSBBUyB2ICUgMTMgPSAwCisp OycpOworCistLSBEb3VibHkgbmVzdGVkIGZpeGVkLWxlbmd0aCBncm91cCBhYnNvcnB0aW9uOiAo QSAoKEIgQ3szfSl7Mn0gRCl7Mn0gRSkrIEYKKy0tIHN0ZXBfc2l6ZSA9IDEgKyAoKDErMykqMisx KSoyICsgMSA9IDIwOyB2ICUgNDEgY3ljbGUgZ2l2ZXMgMiBpdGVyYXRpb25zICsgRgorQ1JFQVRF IFZJRVcgcnByX2V2X2N0eF9hYnNvcmJfZGVlcCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgODIpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSAoKEIgQyBDIEMpezJ9 IEQpezJ9IEUpKyBGKQorICAgIERFRklORSBBIEFTIHYgJSA0MSBJTiAoMSwgMjEpLAorICAgICAg ICAgICBCIEFTIHYgJSA0MSBJTiAoMiwgNiwgMTEsIDE1LCAyMiwgMjYsIDMxLCAzNSksCisgICAg ICAgICAgIEMgQVMgdiAlIDQxIElOICgzLDQsNSwgNyw4LDksIDEyLDEzLDE0LCAxNiwxNywxOCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLDI0LDI1LCAyNywyOCwyOSwgMzIsMzMsMzQs IDM2LDM3LDM4KSwKKyAgICAgICAgICAgRCBBUyB2ICUgNDEgSU4gKDEwLCAxOSwgMzAsIDM5KSwK KyAgICAgICAgICAgRSBBUyB2ICUgNDEgSU4gKDIwLCA0MCksCisgICAgICAgICAgIEYgQVMgdiAl IDQxID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19n ZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfZGVlcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA4Mikg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKChBICgoQiBDIEMgQyl7Mn0gRCl7Mn0gRSkrIEYpCisgICAgREVGSU5FIEEg QVMgdiAlIDQxIElOICgxLCAyMSksCisgICAgICAgICAgIEIgQVMgdiAlIDQxIElOICgyLCA2LCAx MSwgMTUsIDIyLCAyNiwgMzEsIDM1KSwKKyAgICAgICAgICAgQyBBUyB2ICUgNDEgSU4gKDMsNCw1 LCA3LDgsOSwgMTIsMTMsMTQsIDE2LDE3LDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg MjMsMjQsMjUsIDI3LDI4LDI5LCAzMiwzMywzNCwgMzYsMzcsMzgpLAorICAgICAgICAgICBEIEFT IHYgJSA0MSBJTiAoMTAsIDE5LCAzMCwgMzkpLAorICAgICAgICAgICBFIEFTIHYgJSA0MSBJTiAo MjAsIDQwKSwKKyAgICAgICAgICAgRiBBUyB2ICUgNDEgPSAwCispOycpOworCistLSAzLWxldmVs IEVORCBjaGFpbiBhYnNvcnB0aW9uOiAoKEEgKEIgQyl7Mn0pezJ9KSsKKy0tIHN0ZXBfc2l6ZSA9 ICgxICsgKDErMSkqMikgKiAyID0gMTA7IHYgJSAyMSBjeWNsZSBnaXZlcyAyIGl0ZXJhdGlvbnMK Ky0tIEVORCBjaGFpbjogRU5EKEJDezJ9KSAtPiBFTkQoQS4uezJ9KSAtPiBFTkQoKywgQUJTT1JC QUJMRSkKK0NSRUFURSBWSUVXIHJwcl9ldl9jdHhfYWJzb3JiX2VuZGNoYWluIEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MikgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KCgoQSAoQiBDKXsyfSl7Mn0pKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMjEgSU4gKDEsIDYsIDEx LCAxNiksCisgICAgICAgICAgIEIgQVMgdiAlIDIxIElOICgyLCA0LCA3LCA5LCAxMiwgMTQsIDE3 LCAxOSksCisgICAgICAgICAgIEMgQVMgdiAlIDIxIElOICgzLCA1LCA4LCAxMCwgMTMsIDE1LCAx OCwgMjApCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfY3R4X2Fic29yYl9lbmRjaGFpbicpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0 MikgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKCgoQSAoQiBDKXsyfSl7Mn0pKykKKyAgICBERUZJTkUgQSBBUyB2ICUg MjEgSU4gKDEsIDYsIDExLCAxNiksCisgICAgICAgICAgIEIgQVMgdiAlIDIxIElOICgyLCA0LCA3 LCA5LCAxMiwgMTQsIDE3LCAxOSksCisgICAgICAgICAgIEMgQVMgdiAlIDIxIElOICgzLCA1LCA4 LCAxMCwgMTMsIDE1LCAxOCwgMjApCispOycpOworCistLSBObyBhYnNvcnB0aW9uIHdoZW4gREVG SU5FIHVzZXMgRklSU1QgKG1hdGNoX3N0YXJ0LWRlcGVuZGVudCkKKy0tIFNhbWUgcGF0dGVybiBh cyBycHJfZXZfY3R4X2Fic29yYl91bmJvdW5kZWQgYnV0IHdpdGggRklSU1QgaW4gREVGSU5FLgor LS0gQ29tcGFyZTogYWJzb3JiZWQgY291bnQgc2hvdWxkIGJlIDAgaGVyZSB2cyA+MCBhYm92ZS4K K0NSRUFURSBWSUVXIHJwcl9ldl9jdHhfbm9fYWJzb3JiX2ZpcnN0IEFTCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIp CisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAgQU5EIHYgPiBGSVJT VCh2KQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2N0eF9ub19hYnNvcmJfZmlyc3QnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAl IDUgPSAwIEFORCB2ID4gRklSU1QodikKKyk7Jyk7CisKKy0tIEFic29ycHRpb24gcHJlc2VydmVk IHdoZW4gREVGSU5FIHVzZXMgb25seSBMQVNUIHdpdGhvdXQgb2Zmc2V0CistLSBMQVNUKHYpIGlz IG1hdGNoX3N0YXJ0LWluZGVwZW5kZW50IChhbHdheXMgY3VycmVudHBvcyksIHNvIGFic29ycHRp b24KKy0tIHJlbWFpbnMgYWN0aXZlLiAgQ29tcGFyZTogYWJzb3JiZWQgY291bnQgc2hvdWxkIGJl ID4wLCBsaWtlIHRoZQorLS0gUFJFVi1vbmx5IGNhc2UgYWJvdmUuCitDUkVBVEUgVklFVyBycHJf ZXZfY3R4X2Fic29yYl9sYXN0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAl IDUgPD4gMCwgQiBBUyBMQVNUKHYpICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfYWJzb3JiX2xhc3Qn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFT IHYgJSA1IDw+IDAsIEIgQVMgTEFTVCh2KSAlIDUgPSAwCispOycpOworCistLSBObyBhYnNvcnB0 aW9uIHdpdGggY29tcG91bmQgUFJFVihGSVJTVCgpKSAobWF0Y2hfc3RhcnQtZGVwZW5kZW50KQor Q1JFQVRFIFZJRVcgcnByX2V2X2N0eF9ub19hYnNvcmJfY29tcG91bmQgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsg QikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMCBBTkQgUFJFVihG SVJTVCh2KSwgMSkgSVMgTk9UIE5VTEwKKyk7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIg QVMgdiAlIDUgPSAwIEFORCBQUkVWKEZJUlNUKHYpLCAxKSBJUyBOT1QgTlVMTAorKTsnKTsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBNYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIEZp eGVkIGxlbmd0aCBtYXRjaGVzIC0gYWxsIHNhbWUgbGVuZ3RoCitDUkVBVEUgVklFVyBycHJfZXZf bWxlbl9maXhlZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIgQyBEIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJ0EnLCBCIEFT IGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycsCisgICAgICAgIEQgQVMgY2F0ID0gJ0QnLCBFIEFT IGNhdCA9ICdFJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X21sZW5fZml4ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQyBE IEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydC JycsIEMgQVMgY2F0ID0gJydDJycsCisgICAgICAgIEQgQVMgY2F0ID0gJydEJycsIEUgQVMgY2F0 ID0gJydFJycKKyk7Jyk7CisKKy0tIFZhcmlhYmxlIGxlbmd0aCBtYXRjaGVzIC0gbWluL21heC9h dmcgZGlmZmVyCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl92YXJpYWJsZSBBUworU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAwCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfbWxlbl92YXJpYWJsZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB KyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKKyk7Jyk7 CisKKy0tIFZlcnkgbG9uZyBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl9sb25nIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgPD0gMTk1LCBCIEFTIHYgPiAxOTUK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9tbGVuX2xvbmcnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQikKKyAgICBERUZJTkUgQSBBUyB2IDw9IDE5NSwgQiBBUyB2ID4gMTk1CispOycpOworCist LSBVbmlmb3JtIG1hdGNoIGxlbmd0aCB3aXRoIG1pc21hdGNoZXMgZnJvbSBnYXAgcm93cyAodiUy MCA9IDExLi4xNSkKK0NSRUFURSBWSUVXIHJwcl9ldl9tbGVuX3dpdGhfbWlzbWF0Y2ggQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgKHYgJSAyMCA8PiAwKSBBTkQg KHYgJSAyMCA8PSAxMCBPUiB2ICUgMjAgPiAxNSksCisgICAgICAgIEIgQVMgdiAlIDIwID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X21sZW5fd2l0aF9taXNtYXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICh2ICUgMjAgPD4gMCkgQU5E ICh2ICUgMjAgPD0gMTAgT1IgdiAlIDIwID4gMTUpLAorICAgICAgICBCIEFTIHYgJSAyMCA9IDAK Kyk7Jyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gTWlzbWF0Y2ggTGVuZ3RoIFN0YXRpc3RpY3MgVGVzdHMKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorCistLSBQYXR0ZXJuIHdpdGggY29tcGxldGUgbWF0Y2ggZXZlcnkgY3ljbGU6IDAgbWlz bWF0Y2hlZAorLS0gQSgxLDIsMykgQig0LDUpIEMoNikgcmVwZWF0cyBwZXJmZWN0bHk7IFggcm93 cyBhcmUgcHJ1bmVkLCBub3QgbWlzbWF0Y2hlZAorQ1JFQVRFIFZJRVcgcnByX2V2X21sZW5fbm9f bWlzbWF0Y2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCB2 LAorICAgICAgICAgICBDQVNFIFdIRU4gdiAlIDEwIElOICgxLDIsMykgVEhFTiAnQScKKyAgICAg ICAgICAgICAgICBXSEVOIHYgJSAxMCBJTiAoNCw1KSBUSEVOICdCJworICAgICAgICAgICAgICAg IFdIRU4gdiAlIDEwID0gNiBUSEVOICdDJworICAgICAgICAgICAgICAgIEVMU0UgJ1gnIEVORCBB UyBjYXQKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKKykgdAorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBB UyBjYXQgPSAnQycKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX25vX21pc21hdGNoJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCB2LAor ICAgICAgICAgICBDQVNFIFdIRU4gdiAlIDEwIElOICgxLDIsMykgVEhFTiAnJ0EnJworICAgICAg ICAgICAgICAgIFdIRU4gdiAlIDEwIElOICg0LDUpIFRIRU4gJydCJycKKyAgICAgICAgICAgICAg ICBXSEVOIHYgJSAxMCA9IDYgVEhFTiAnJ0MnJworICAgICAgICAgICAgICAgIEVMU0UgJydYJycg RU5EIEFTIGNhdAorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorKSB0 CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQisgQykKKyAgICBERUZJTkUgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAn J0InJywgQyBBUyBjYXQgPSAnJ0MnJworKTsnKTsKKworLS0gTG9uZyBwYXJ0aWFsIG1hdGNoZXMg dGhhdCBmYWlsCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl9sb25nX3BhcnRpYWwgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBpIEFTIHYsCisgICAgICAgICAg IENBU0UKKyAgICAgICAgICAgICAgIFdIRU4gaSA8PSAyMCBUSEVOICdBJworICAgICAgICAgICAg ICAgV0hFTiBpIDw9IDI1IFRIRU4gJ0InCisgICAgICAgICAgICAgICBXSEVOIGkgPSAyNiBUSEVO ICdYJyAgLS0gYnJlYWtzIHRoZSBwYXR0ZXJuCisgICAgICAgICAgICAgICBXSEVOIGkgPD0gNTAg VEhFTiAnQScKKyAgICAgICAgICAgICAgIFdIRU4gaSA8PSA1NSBUSEVOICdCJworICAgICAgICAg ICAgICAgV0hFTiBpID0gNTYgVEhFTiAnQycgIC0tIGNvbXBsZXRlcyBwYXR0ZXJuCisgICAgICAg ICAgICAgICBFTFNFICdZJworICAgICAgICAgICBFTkQgQVMgY2F0CisgICAgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNjApIGkKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0 ID0gJ0EnLCBCIEFTIGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX2xv bmdfcGFydGlhbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NICgKKyAgICBTRUxFQ1QgaSBBUyB2LAorICAgICAgICAgICBDQVNFCisgICAgICAg ICAgICAgICBXSEVOIGkgPD0gMjAgVEhFTiAnJ0EnJworICAgICAgICAgICAgICAgV0hFTiBpIDw9 IDI1IFRIRU4gJydCJycKKyAgICAgICAgICAgICAgIFdIRU4gaSA9IDI2IFRIRU4gJydYJycgIC0t IGJyZWFrcyB0aGUgcGF0dGVybgorICAgICAgICAgICAgICAgV0hFTiBpIDw9IDUwIFRIRU4gJydB JycKKyAgICAgICAgICAgICAgIFdIRU4gaSA8PSA1NSBUSEVOICcnQicnCisgICAgICAgICAgICAg ICBXSEVOIGkgPSA1NiBUSEVOICcnQycnICAtLSBjb21wbGV0ZXMgcGF0dGVybgorICAgICAgICAg ICAgICAgRUxTRSAnJ1knJworICAgICAgICAgICBFTkQgQVMgY2F0CisgICAgRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNjApIGkKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEgQVMgY2F0 ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycKKyk7Jyk7CisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gSlNPTiBGb3JtYXQgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBKU09OIGZvcm1hdCBvdXRw dXQgd2l0aCBhbGwgc3RhdGlzdGljcworQ1JFQVRFIFZJRVcgcnByX2V2X2pzb25fYmFzaWMgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSsgQispCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0g MgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2V2X2pzb25fYmFzaWMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQg SlNPTikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSsgQispCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYg JSAzID0gMgorKScpOworCistLSBKU09OIGZvcm1hdCB3aXRoIG1hdGNoIGxlbmd0aCBzdGF0aXN0 aWNzCitDUkVBVEUgVklFVyBycHJfZXZfanNvbl9tYXRjaGxlbiBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAwCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf anNvbl9tYXRjaGxlbicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYsIEZPUk1BVCBKU09OKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUgMTAgPSAw CispJyk7CisKKy0tIEpTT04gZm9ybWF0IHdpdGggbWlzbWF0Y2ggc3RhdGlzdGljcworLS0gUGF0 dGVybiBBIEIgQyBleHBlY3RzIDEsMiwzIGJ1dCBnZXRzIDEsMiw0IHR3aWNlIGNhdXNpbmcgbWlz bWF0Y2hlcworQ1JFQVRFIFZJRVcgcnByX2V2X2pzb25fbWlzbWF0Y2ggQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gKFZBTFVFUyAoMSksKDIpLCg0KSwgKDEpLCgyKSwoNCksICgxKSwo MiksKDMpKSBBUyB0KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMg diA9IDIsIEMgQVMgdiA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9qc29uX21pc21hdGNoJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRiwgRk9STUFUIEpTT04pCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIChW QUxVRVMgKDEpLCgyKSwoNCksICgxKSwoMiksKDQpLCAoMSksKDIpLCgzKSkgQVMgdCh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEEgQiBDKQorICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyLCBDIEFTIHYgPSAzCisp Jyk7CisKKy0tIEpTT04gZm9ybWF0IHdpdGggc2tpcHBlZCBjb250ZXh0IHN0YXRpc3RpY3MKKy0t IEFsdGVybmF0aW9uIHBhdHRlcm4gd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cgY2F1c2VzIG1hbnkg Y29udGV4dHMgdG8gYmUgc2tpcHBlZAorQ1JFQVRFIFZJRVcgcnByX2V2X2pzb25fc2tpcCBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikg KEEgfCBCKSAoQSB8IEIpKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9 IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9qc29uX3NraXAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUs IEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQg SlNPTikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEw MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAo QSB8IEIpIChBIHwgQikgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMg diAlIDIgPSAwCispJyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gWE1MIEZvcm1hdCBUZXN0cworLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK Ky0tIFhNTCBmb3JtYXQgb3V0cHV0CitDUkVBVEUgVklFVyBycHJfZXZfeG1sX2Jhc2ljIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfeG1sX2Jhc2ljJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgRk9STUFUIFhNTCkK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAK KyknKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBNdWx0aXBsZSBQYXJ0aXRpb25zIFRlc3RzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gU3RhdGlzdGljcyBhY3Jvc3MgbXVsdGlwbGUgcGFydGl0aW9ucworQ1JFQVRFIFZJRVcgcnBy X2V2X3BhcnRfbXVsdGkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNF TEVDVCBwLCB2CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgcCwKKyAgICAgICAgIGdl bmVyYXRlX3NlcmllcygxLCAzMCkgdgorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9O IEJZIHAKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf cGFydF9tdWx0aScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NICgKKyAgICBTRUxFQ1QgcCwgdgorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDMpIHAsCisgICAgICAgICBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIHYKKykgdAorV0lORE9XIHcg QVMgKAorICAgIFBBUlRJVElPTiBCWSBwCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYg JSA1ID0gMAorKTsnKTsKKworLS0gRGlmZmVyZW50IHBhdHRlcm4gYmVoYXZpb3IgcGVyIHBhcnRp dGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X3BhcnRfZGlmZiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSAoCisgICAgU0VMRUNUCisgICAgICAgIENBU0UgV0hFTiB2IDw9IDI1IFRIRU4g MSBFTFNFIDIgRU5EIEFTIHAsCisgICAgICAgIHYgJSAxMCBBUyB2YWwKKyAgICBGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MCkgdgorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZ IHAKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQor ICAgIERFRklORSBBIEFTIHZhbCA8IDUsIEIgQVMgdmFsID49IDUKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9wYXJ0X2Rp ZmYnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSAoCisgICAgU0VMRUNUCisgICAgICAgIENBU0UgV0hFTiB2IDw9IDI1IFRIRU4gMSBFTFNFIDIg RU5EIEFTIHAsCisgICAgICAgIHYgJSAxMCBBUyB2YWwKKyAgICBGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgdgorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIHAKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklO RSBBIEFTIHZhbCA8IDUsIEIgQVMgdmFsID49IDUKKyk7Jyk7CisKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRWRnZSBD YXNlcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisKKy0tIEVtcHR5IHJlc3VsdCBzZXQKK0NSRUFURSBWSUVXIHJwcl9ldl9l ZGdlX2VtcHR5IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYg PSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPSAyCispOycpOworCistLSBF bXB0eSBtYXRjaGVzIChsZW5ndGggMCk6IG1pcnJvciB0aGUgdGVzdF83MjhfKiBjYXNlcyBpbiBy cHJfbmZhLnNxbC4KKy0tIFdpbmRvdyBhZ2dyZWdhdGVzIG92ZXIgYSBsZW5ndGgtMCBmcmFtZSBy ZXR1cm4gMCAvIE5VTEwsIHNvIHRoZSBTRUxFQ1QKKy0tIHJlc3VsdCBhbG9uZSBjYW5ub3QgZGlz dGluZ3Vpc2ggIm5vIG1hdGNoIiBmcm9tICJlbXB0eSBtYXRjaCI7IHRoZQorLS0gIk5GQTogTiBt YXRjaGVkIChsZW4gMC8wLzAuMCkiIGxpbmUgaW4gRVhQTEFJTiBpcyB0aGUgb25seSBvYnNlcnZh YmxlCistLSBwcm9vZiB0aGF0IHRoZSBlbXB0eSBtYXRjaGVzIHdlcmUgZm91bmQuCisKKy0tIChB Pyl7MCwzfTogbWluPTAsIEEgbmV2ZXIgbWF0Y2hlcyAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NS RUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5X21hdGNoX21pbjAgQVMKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXswLDN9 KQorICAgIERFRklORSBBIEFTIEZBTFNFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4w JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9l eHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXswLDN9KQorICAgIERFRklORSBB IEFTIEZBTFNFCispOycpOworCistLSAoQT8pezEsM306IG1pbj0xLCBvbmUgZW1wdHkgaXRlcmF0 aW9uIHNhdGlzZmllcyBtaW4gLT4gMyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJf ZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4xIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MSwzfSkKKyAgICBERUZJTkUg QSBBUyBGQUxTRQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMScpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhU IFJPVworICAgIFBBVFRFUk4gKChBPyl7MSwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsn KTsKKworLS0gKEE/KXsyLDN9OiBtaW49MiAoSVNPL0lFQyAxOTA3NS01IDcuMi44IFNUUjA2ID0g U1RSRSBTVFJFKSAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdl X2VtcHR5X21hdGNoX21pbjIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIEZB TFNFCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9taW4yJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIEZBTFNFCispOycpOworCist LSAoQT8pezIsM30gbWl4ZWQ6IHJvd3MgMS0yIG1hdGNoIEEgKHJlYWwpLCByb3dzIDMtNCBmYWxs IGJhY2sgdG8gZW1wdHkKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5X21hdGNoX21peGVk IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0KSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyB2IDw9IDIKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9l ZGdlX2VtcHR5X21hdGNoX21peGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQpIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/ KXsyLDN9KQorICAgIERFRklORSBBIEFTIHYgPD0gMgorKTsnKTsKKworLS0gKEE/IEI/KXsyLDN9 OiBwdXJlIGVtcHR5IG11bHRpLWVsZW1lbnQgYm9keSAtPiAzIGxlbmd0aC0wIG1hdGNoZXMKK0NS RUFURSBWSUVXIHJwcl9ldl9lZGdlX2VtcHR5X21hdGNoX211bHRpIEFTCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyBCPyl7 MiwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRSwgQiBBUyBGQUxTRQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2VkZ2Vf ZW1wdHlfbWF0Y2hfbXVsdGknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8gQj8p ezIsM30pCisgICAgREVGSU5FIEEgQVMgRkFMU0UsIEIgQVMgRkFMU0UKKyk7Jyk7CisKKy0tIFNp bmdsZSByb3cKK0NSRUFURSBWSUVXIHJwcl9ldl9lZGdlX3NpbmdsZV9yb3cgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEpIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChB KQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdlX3NpbmdsZV9yb3cnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5f ZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsn KTsKKworLS0gUGF0dGVybiBsb25nZXIgdGhhbiBkYXRhCitDUkVBVEUgVklFVyBycHJfZXZfZWRn ZV9wYXR0ZXJuX2xvbmdlciBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNSkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBGIEcgSCBJIEopCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIsIEMgQVMgdiA9IDMsIEQgQVMgdiA9 IDQsIEUgQVMgdiA9IDUsCisgICAgICAgIEYgQVMgdiA9IDYsIEcgQVMgdiA9IDcsIEggQVMgdiA9 IDgsIEkgQVMgdiA9IDksIEogQVMgdiA9IDEwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZWRnZV9wYXR0ZXJuX2xvbmdl cicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFIEYgRyBIIEkgSikK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMiwgQyBBUyB2ID0gMywg RCBBUyB2ID0gNCwgRSBBUyB2ID0gNSwKKyAgICAgICAgRiBBUyB2ID0gNiwgRyBBUyB2ID0gNywg SCBBUyB2ID0gOCwgSSBBUyB2ID0gOSwgSiBBUyB2ID0gMTAKKyk7Jyk7CisKKy0tIEFsbCByb3dz IG1hdGNoIGFzIHNpbmdsZSBtYXRjaAorQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2Vfc2luZ2xlX21h dGNoIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9lZGdl X3NpbmdsZV9tYXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIFRSVUUKKyk7Jyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQ29tcGxleCBQYXR0ZXJuIFRl c3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworLS0gTmVzdGVkIGdyb3VwcworQ1JFQVRFIFZJRVcgcnByX2V2X2NweF9u ZXN0ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoKChBIEIpIEMpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEs IEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2NweF9uZXN0ZWQnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgQikgQykrKQorICAgIERFRklORSBB IEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOworCist LSBNdWx0aXBsZSBhbHRlcm5hdGlvbnMKK0NSRUFURSBWSUVXIHJwcl9ldl9jcHhfbXVsdGlfYWx0 IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwg QikgKEMgfCBEIHwgRSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJ0EnLCBCIEFT IGNhdCA9ICdCJywgQyBBUyBjYXQgPSAnQycsCisgICAgICAgIEQgQVMgY2F0ID0gJ0QnLCBFIEFT IGNhdCA9ICdFJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2NweF9tdWx0aV9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8 IEIpIChDIHwgRCB8IEUpKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNhdCA9ICcnQScnLCBC IEFTIGNhdCA9ICcnQicnLCBDIEFTIGNhdCA9ICcnQycnLAorICAgICAgICBEIEFTIGNhdCA9ICcn RCcnLCBFIEFTIGNhdCA9ICcnRScnCispOycpOworCistLSBPcHRpb25hbCBlbGVtZW50cworQ1JF QVRFIFZJRVcgcnByX2V2X2NweF9vcHRpb25hbCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEI/IEMpCisgICAgREVG SU5FIEEgQVMgdiAlIDQgPSAxLCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9jcHhfb3B0aW9uYWwnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEI/ IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAxLCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUg NCA9IDMKKyk7Jyk7CisKKy0tIEJvdW5kZWQgcXVhbnRpZmllcnMKK0NSRUFURSBWSUVXIHJwcl9l dl9jcHhfYm91bmRlZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyLDV9IEIpCisgICAgREVGSU5FIEEgQVMgdiAl IDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2NweF9ib3VuZGVkJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Miw1fSBCKQorICAgIERFRklORSBBIEFTIHYg JSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKKyk7Jyk7CisKKy0tIFN0YXIgcXVhbnRpZmllcgor Q1JFQVRFIFZJRVcgcnByX2V2X2NweF9zdGFyIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiogQykKKyAgICBERUZJ TkUgQSBBUyB2ICUgMTAgPSAxLCBCIEFTIHYgJSAxMCBJTiAoMiwzLDQsNSw2LDcsOCksIEMgQVMg diAlIDEwID0gOQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X2NweF9zdGFyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA9IDEsIEIgQVMgdiAlIDEw IElOICgyLDMsNCw1LDYsNyw4KSwgQyBBUyB2ICUgMTAgPSA5CispOycpOworCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFJlYWwtd29ybGQgUGF0dGVybiBFeGFtcGxlcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIFN0b2NrIHByaWNlIHBh dHRlcm4gLSBWLXNoYXBlIChkb3duIHRoZW4gdXApCitDUkVBVEUgVklFVyBycHJfZXZfcmVhbF92 c2hhcGUgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV9jb21wbGV4CitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoRCsgVSspCisgICAgREVGSU5FIEQgQVMgdHJlbmQgPSAnRCcsIFUgQVMgdHJlbmQgPSAnVScK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9yZWFsX3ZzaGFwZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfY29tcGxleAorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEQrIFUrKQorICAgIERF RklORSBEIEFTIHRyZW5kID0gJydEJycsIFUgQVMgdHJlbmQgPSAnJ1UnJworKTsnKTsKKworLS0g U3RvY2sgcHJpY2UgcGF0dGVybiAtIHBlYWsgKHVwLCBzdGFibGUsIGRvd24pCitDUkVBVEUgVklF VyBycHJfZXZfcmVhbF9wZWFrIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9u ZmFfY29tcGxleAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKFUrIFMqIEQrKQorICAgIERFRklORSBVIEFTIHRyZW5kID0gJ1UnLCBT IEFTIHRyZW5kID0gJ1MnLCBEIEFTIHRyZW5kID0gJ0QnCispOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcmVhbF9wZWFrJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnBy X25mYV9jb21wbGV4CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoVSsgUyogRCspCisgICAgREVGSU5FIFUgQVMgdHJlbmQgPSAnJ1Un JywgUyBBUyB0cmVuZCA9ICcnUycnLCBEIEFTIHRyZW5kID0gJydEJycKKyk7Jyk7CisKKy0tIENv bnNlY3V0aXZlIGluY3JlYXNpbmcgdmFsdWVzICh1c2luZyBQUkVWKQorQ1JFQVRFIFZJRVcgcnBy X2V2X3JlYWxfaW5jcmVhc2luZyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezMsfSkKKyAgICBERUZJTkUgQSBBUyB2 ID4gUFJFVih2KSBPUiBQUkVWKHYpIElTIE5VTEwKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWFsX2luY3JlYXNpbmcn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezMsfSkKKyAgICBERUZJTkUgQSBB UyB2ID4gUFJFVih2KSBPUiBQUkVWKHYpIElTIE5VTEwKKyk7Jyk7CisKKy0tID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUGVy Zm9ybWFuY2Utb3JpZW50ZWQgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBMYXJnZSBkYXRhc2V0IHdpdGgg c2ltcGxlIHBhdHRlcm4KK0NSRUFURSBWSUVXIHJwcl9ldl9wZXJmX2xhcmdlX3NpbXBsZSBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAw CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfcGVyZl9sYXJnZV9zaW1wbGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAw CispOycpOworCistLSBMYXJnZSBkYXRhc2V0IHdpdGggYWJzb3JwdGlvbgorQ1JFQVRFIFZJRVcg cnByX2V2X3BlcmZfbGFyZ2VfYWJzb3JiIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUg QSBBUyB2ICUgMTAwIDw+IDAsIEIgQVMgdiAlIDEwMCA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9wZXJmX2xhcmdl X2Fic29yYicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBE RUZJTkUgQSBBUyB2ICUgMTAwIDw+IDAsIEIgQVMgdiAlIDEwMCA9IDAKKyk7Jyk7CisKKy0tIEhp Z2ggc3RhdGUgbWVyZ2UgcmF0aW8KK0NSRUFURSBWSUVXIHJwcl9ldl9wZXJmX2hpZ2hfbWVyZ2Ug QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFT IHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9wZXJmX2hpZ2hfbWVyZ2UnKSwg RSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSsgQykKKyAgICBERUZJTkUg QSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsnKTsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBJTklUSUFMIHZzIG5vIElOSVRJQUwgY29tcGFyaXNvbgorLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0t IFdpdGggSU5JVElBTCBrZXl3b3JkCitDUkVBVEUgVklFVyBycHJfZXZfaW5pdGlhbF93aXRoIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IElOSVRJQUwKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAs IEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfaW5pdGlhbF93aXRoJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAl IDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CisKKy0tIFdpdGhvdXQgSU5JVElBTCBrZXl3 b3JkIChzYW1lIGJlaGF2aW9yIGN1cnJlbnRseSkKK0NSRUFURSBWSUVXIHJwcl9ldl9pbml0aWFs X3dpdGhvdXQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBC IEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2V2X2luaXRpYWxfd2l0aG91dCcpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBB UyB2ICUgNSA9IDAKKyk7Jyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUXVhbnRpZmllciBWYXJpYXRpb25zCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKworLS0gUGx1cyBxdWFudGlmaWVyCitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfcGx1 cyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA8PiAwCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf cXVhbnRfcGx1cycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIHYgJSA0IDw+IDAKKyk7Jyk7CisKKy0tIFN0YXIgcXVhbnRpZmllciAoemVybyBv ciBtb3JlKQorQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X3N0YXIgQVMKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSogQikK KyAgICBERUZJTkUgQSBBUyB2ICUgNCBJTiAoMSwgMiksIEIgQVMgdiAlIDQgPSAzCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXZfcXVhbnRfc3RhcicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEqIEIpCisg ICAgREVGSU5FIEEgQVMgdiAlIDQgSU4gKDEsIDIpLCBCIEFTIHYgJSA0ID0gMworKTsnKTsKKwor LS0gUXVlc3Rpb24gbWFyayAoemVybyBvciBvbmUpCitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRf cXVlc3Rpb24gQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQT8gQiBDKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMSwg QiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcXVhbnRfcXVlc3Rpb24n KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBPyBCIEMpCisgICAgREVGSU5FIEEg QVMgdiAlIDQgPSAxLCBCIEFTIHYgJSA0ID0gMiwgQyBBUyB2ICUgNCA9IDMKKyk7Jyk7CisKKy0t IEV4YWN0IGNvdW50IHtufQorQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X2V4YWN0IEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEF7M30gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X3F1YW50X2V4YWN0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QXszfSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOycp OworCistLSBSYW5nZSB7bixtfQorQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X3JhbmdlIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEF7Miw0fSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUg PSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfcXVhbnRfcmFuZ2UnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBezIsNH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0g MAorKTsnKTsKKworLS0gQXQgbGVhc3Qge24sfQorQ1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X2F0 bGVhc3QgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQXszLH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwg QiBBUyB2ICUgMTAgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcXVhbnRfYXRsZWFzdCcpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEF7Myx9IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwIDw+IDAs IEIgQVMgdiAlIDEwID0gMAorKTsnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSZWdyZXNzaW9uIFRlc3RzIGZv ciBTdGF0aXN0aWNzIEFjY3VyYWN5CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gVmVyaWZ5IHN0YXRlIGNvdW50IGFj Y3VyYWN5CistLSBQYXR0ZXJuIEErIEIgd2l0aCAyMCByb3dzIHNob3VsZCBzaG93IHByZWRpY3Rh YmxlIHN0YXRlIGJlaGF2aW9yCitDUkVBVEUgVklFVyBycHJfZXZfcmVnX3N0YXRlX2NvdW50IEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9 IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9yZWdfc3RhdGVfY291bnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAw CispOycpOworCistLSBWZXJpZnkgY29udGV4dCBjb3VudCB3aXRoIGtub3duIGFic29ycHRpb24K K0NSRUFURSBWSUVXIHJwcl9ldl9yZWdfY3R4X2Fic29yYiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCIEMpCisg ICAgREVGSU5FIEEgQVMgdiAlIDEwIElOICgxLDIsMyw0LDUsNiw3KSwgQiBBUyB2ICUgMTAgPSA4 LCBDIEFTIHYgJSAxMCA9IDkKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWdfY3R4X2Fic29yYicpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgSU4g KDEsMiwzLDQsNSw2LDcpLCBCIEFTIHYgJSAxMCA9IDgsIEMgQVMgdiAlIDEwID0gOQorKTsnKTsK KworLS0gVmVyaWZ5IG1hdGNoIGxlbmd0aCB3aXRoIGZpeGVkLWxlbmd0aCBwYXR0ZXJuCitDUkVB VEUgVklFVyBycHJfZXZfcmVnX21hdGNobGVuIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDKQorICAgIERFRklO RSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXZfcmVnX21hdGNobGVuJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMp CisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9 IDAKKyk7Jyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gQWx0ZXJuYXRpb24gUGF0dGVybiBUZXN0cworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisKKy0tIFNpbXBsZSBhbHRlcm5hdGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9zaW1wbGUg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBC KSBDKQorICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0 ID0gJ0MnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfYWx0X3NpbXBsZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgQykK KyAgICBERUZJTkUgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBjYXQg PSAnJ0MnJworKTsnKTsKKworLS0gTXVsdGlwbGUgaXRlbXMgaW4gYWx0ZXJuYXRpb24KK0NSRUFU RSBWSUVXIHJwcl9ldl9hbHRfbXVsdGlfaXRlbSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBDIHwgRCkgRSkKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0ID0gJ0InLCBDIEFTIGNhdCA9ICdDJywKKyAg ICAgICAgRCBBUyBjYXQgPSAnRCcsIEUgQVMgY2F0ID0gJ0UnCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X211bHRp X2l0ZW0nKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgfCBDIHwgRCkgRSkKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0Mn JywKKyAgICAgICAgRCBBUyBjYXQgPSAnJ0QnJywgRSBBUyBjYXQgPSAnJ0UnJworKTsnKTsKKwor LS0gQWx0ZXJuYXRpb24gd2l0aCBxdWFudGlmaWVycworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF93 aXRoX3F1YW50IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMg PSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfd2l0aF9x dWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAg REVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7 Jyk7CisKKy0tIE11bHRpcGxlIGFsdGVybmF0aXZlcyAoNCspCitDUkVBVEUgVklFVyBycHJfZXZf YWx0X2ZvdXJfcGx1cyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSB8IEIgfCBD IHwgRCB8IEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0gMSwgQyBB UyB2ICUgNSA9IDIsIEQgQVMgdiAlIDUgPSAzLCBFIEFTIHYgJSA1ID0gNAorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Fs dF9mb3VyX3BsdXMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZG LCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSB8IEIgfCBDIHwgRCB8IEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPSAw LCBCIEFTIHYgJSA1ID0gMSwgQyBBUyB2ICUgNSA9IDIsIEQgQVMgdiAlIDUgPSAzLCBFIEFTIHYg JSA1ID0gNAorKTsnKTsKKworLS0gQWx0ZXJuYXRpb24gYXQgc3RhcnQKK0NSRUFURSBWSUVXIHJw cl9ldl9hbHRfYXRfc3RhcnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBC KSBDIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2 ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2F0X3N0YXJ0JyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSBD IEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUg NCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworCistLSBNdWx0aXBsZSBzZXF1ZW50aWFsIGFs dGVybmF0aW9ucworQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9zZXF1ZW50aWFsIEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSB8IEIpIEMgKEQgfCBFKSBGKQorICAgIERFRklORSBB IEFTIHYgJSA2ID0gMCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYgPSAyLCBEIEFTIHYgJSA2 ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMgdiAlIDYgPSA1CispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X3NlcXVl bnRpYWwnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoKEEgfCBCKSBDIChEIHwgRSkgRikKKyAgICBERUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIg QVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYg PSA0LCBGIEFTIHYgJSA2ID0gNQorKTsnKTsKKworLS0gUXVhbnRpZmllZCBhbHRlcm5hdGl2ZXMK K0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfcXVhbnRpZmllZCBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOICgoQSsgfCBCKykgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMg diAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9xdWFudGlmaWVkJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEErIHwg QispIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2 ICUgMyA9IDIKKyk7Jyk7CisKKy0tIEFsdGVybmF0aW9uIGF0IGVuZAorQ1JFQVRFIFZJRVcgcnBy X2V2X2FsdF9hdF9lbmQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCIChDIHwg RCkpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUg NCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2F0X2VuZCcpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiAoQyB8IEQpKQor ICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAy LCBEIEFTIHYgJSA0ID0gMworKTsnKTsKKworLS0gTmVzdGVkIEFMVCBhdCBzdGFydCBvZiBicmFu Y2ggaW5zaWRlIG91dGVyIEFMVAorLS0gUGF0dGVybjogKEEgKChCIHwgQykgRCB8IEUpKSAtIHBy ZWNlZGluZyBWQVIgKyBpbm5lciBBTFQgYXMgZmlyc3QgYnJhbmNoIGVsZW1lbnQKK0NSRUFURSBW SUVXIHJwcl9ldl9hbHRfbmVzdGVkX3N0YXJ0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEEgKChCIHwgQykgRCB8IEUpKQorICAgIERFRklORSBBIEFTIHYgJSA1ID0gMCwgQiBBUyB2 ICUgNSA9IDEsIEMgQVMgdiAlIDUgPSAyLCBEIEFTIHYgJSA1ID0gMywgRSBBUyB2ICUgNSA9IDQK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9hbHRfbmVzdGVkX3N0YXJ0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoKEIgfCBDKSBEIHwgRSkpCisgICAgREVGSU5F IEEgQVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0gMSwgQyBBUyB2ICUgNSA9IDIsIEQgQVMgdiAl IDUgPSAzLCBFIEFTIHYgJSA1ID0gNAorKTsnKTsKKworLS0gTmVzdGVkIEFMVCBhdCBlbmQgb2Yg YnJhbmNoIGluc2lkZSBvdXRlciBBTFQKKy0tIFBhdHRlcm46IChDIChBIHwgQikgfCBEKSAtIGlu bmVyIEFMVCBpcyBsYXN0IGVsZW1lbnQgaW4gb3V0ZXIgYnJhbmNoCitDUkVBVEUgVklFVyBycHJf ZXZfYWx0X25lc3RlZF9lbmQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyAoQSB8 IEIpIHwgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFT IHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfbmVzdGVkX2VuZCcpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEMgKEEg fCBCKSB8IEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBB UyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworCistLSBRdWFudGlmaWVkIGdyb3Vw IGFzIHRoZSBmaXJzdCBhbHRlcm5hdGlvbiBicmFuY2gKKy0tIFBhdHRlcm46ICgoQSBCKSsgfCBD KSAtIGxlYWRpbmcgZ3JvdXAgYnJhbmNoIG11c3Qgb3BlbiB0aGUgZW5jbG9zaW5nIHBhcmVuCitD UkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9maXJzdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOICgoQSBCKSsgfCBDKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUg NCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2dycF9maXJzdCcpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpKyB8IEMp CisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9 IDIKKyk7Jyk7CisKKy0tIFF1YW50aWZpZWQgZ3JvdXAgYXMgdGhlIGxhc3QgYWx0ZXJuYXRpb24g YnJhbmNoCistLSBQYXR0ZXJuOiAoQyB8IChBIEIpKykgLSB0cmFpbGluZyBncm91cCBicmFuY2gs IG5vIHNlcGFyYXRvciBmb2xsb3dzCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9sYXN0IEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEMgfCAoQSBCKSspCisgICAgREVGSU5FIEEg QVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9h bHRfZ3JwX2xhc3QnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitT RUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZG LCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChDIHwgKEEgQikrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2 ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOycpOworCistLSBRdWFudGlmaWVkIGdyb3VwIGFz IHRoZSBtaWRkbGUgYnJhbmNoIG9mIGEgdGhyZWUtd2F5IGFsdGVybmF0aW9uCistLSBQYXR0ZXJu OiAoQyB8IChBIEIpKyB8IEQpIC0gc2VwYXJhdG9yIGJlZm9yZSBEIG11c3Qgc3Vydml2ZSB0aGUg Z3JvdXAgYnJhbmNoCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9taWQgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQyB8IChBIEIpKyB8IEQpCisgICAgREVGSU5FIEEgQVMgdiAl IDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfYWx0X2dycF9taWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChDIHwgKEEgQikrIHwgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUg NCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7 Jyk7CisKKy0tIFF1YW50aWZpZWQgZ3JvdXAgYXMgdGhlIGZpcnN0IGJyYW5jaCBvZiBhIHRocmVl LXdheSBhbHRlcm5hdGlvbgorLS0gUGF0dGVybjogKChBIEIpKyB8IEMgfCBEKSAtIGxlYWRpbmcg Z3JvdXAgYnJhbmNoIHdpdGggdHdvIGZvbGxvd2luZyBicmFuY2hlcworQ1JFQVRFIFZJRVcgcnBy X2V2X2FsdF9ncnBfZmlyc3QzIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIp KyB8IEMgfCBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMg QVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfZmlyc3QzJyks IEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEg QikrIHwgQyB8IEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwg QyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworCistLSBCb3VuZGVkLXF1YW50 aWZpZXIgZ3JvdXAgYXMgdGhlIGZpcnN0IGFsdGVybmF0aW9uIGJyYW5jaAorLS0gUGF0dGVybjog KChBIEIpezJ9IHwgQykgLSBsZWFkaW5nIGdyb3VwIGJyYW5jaCB3aXRoIGEgcmFuZ2UgcXVhbnRp ZmllcgorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfYm91bmRlZCBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOICgoQSBCKXsyfSB8IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAw LCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX2JvdW5k ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO ICgoQSBCKXsyfSB8IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0g MSwgQyBBUyB2ICUgNCA9IDIKKyk7Jyk7CisKKy0tIFR3byBxdWFudGlmaWVkIGdyb3VwcyBpbiBv bmUgYWx0ZXJuYXRpb24KKy0tIFBhdHRlcm46ICgoQSBCKSsgfCAoQyBEKSspIC0gYm90aCBicmFu Y2hlcyBhcmUgZ3JvdXBzCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9ib3RoIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpKyB8IChDIEQpKykKKyAgICBERUZJTkUgQSBB UyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9 IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX2JvdGgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKSsgfCAoQyBEKSspCisgICAgREVGSU5FIEEg QVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQg PSAzCispOycpOworCistLSBMZWFkaW5nIGdyb3VwIGJyYW5jaCBpbiBhbiBhbHRlcm5hdGlvbiBu ZXN0ZWQgaW4gYSBzZXF1ZW5jZQorLS0gUGF0dGVybjogKCgoQSBCKSsgfCBDKSBEKSAtIGlubmVy IGFsdGVybmF0aW9uIG9wZW5zIHdpdGggYSBncm91cCBicmFuY2gKK0NSRUFURSBWSUVXIHJwcl9l dl9hbHRfZ3JwX3NlcV9oZWFkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSBC KSsgfCBDKSBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMg QVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfc2VxX2hlYWQn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo KEEgQikrIHwgQykgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAx LCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisKKy0tIFRyYWlsaW5nIGdy b3VwIGJyYW5jaCBpbiBhbiBhbHRlcm5hdGlvbiBuZXN0ZWQgaW4gYSBzZXF1ZW5jZQorLS0gUGF0 dGVybjogKChDIHwgKEEgQikrKSBEKSAtIGdyb3VwIGFzIGxhc3QgYnJhbmNoLCB0aGVuIGEgc2Vx dWVuY2UgZWxlbWVudAorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfc2VxX3RhaWwgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEMgfCAoQSBCKSspIEQpCisgICAgREVGSU5FIEEg QVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQg PSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfYWx0X2dycF9zZXFfdGFpbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChDIHwgKEEgQikrKSBEKQorICAgIERFRklO RSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYg JSA0ID0gMworKTsnKTsKKworLS0gUXVhbnRpZmllZCBhbHRlcm5hdGlvbiB3aG9zZSBmaXJzdCBi cmFuY2ggaXMgYSBxdWFudGlmaWVkIGdyb3VwCistLSBQYXR0ZXJuOiAoKChBIEIpezJ9IHwgQykr KSAtIHNpbmdsZS1BTFQgZ3JvdXAgd3JhcHMgYSBsZWFkaW5nIGdyb3VwIGJyYW5jaAorQ1JFQVRF IFZJRVcgcnByX2V2X2FsdF9ncnBfcXVhbnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoKChBIEIpezJ9IHwgQykrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUg NCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2dycF9xdWFudCcpLCBFJ1xuJykp IEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSBCKXsyfSB8 IEMpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYg JSA0ID0gMgorKTsnKTsKKworLS0gVW5pdCAoMSwxKSBncm91cCBhcyBhbiBhbHRlcm5hdGlvbiBi cmFuY2ggKGVtaXRzIG5vIEJFR0lOL0VORCkKKy0tIFBhdHRlcm46ICgoQSBCKSB8IEMpIC0gY29u dHJvbDogdGFrZXMgdGhlIHZhcmlhYmxlIHBhdGgsIG5vdCBkZXBhcnNlX3Jwcl9ncm91cAorQ1JF QVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfdW5pdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOICgoQSBCKSB8IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0g MSwgQyBBUyB2ICUgNCA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX3VuaXQnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKSB8IEMpCisgICAg REVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7 Jyk7CisKKy0tIFF1YW50aWZpZWQgdmFyaWFibGUgYXMgdGhlIGZpcnN0IGFsdGVybmF0aW9uIGJy YW5jaAorLS0gUGF0dGVybjogKEErIHwgQykgLSBjb250cm9sOiBkZXBhcnNlX3Jwcl92YXIgYWxy ZWFkeSBvcGVucyB0aGUgbGVhZGluZyBwYXJlbgorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF92YXJf Zmlyc3QgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsgfCBDKQorICAgIERFRklO RSBBIEFTIHYgJSA0ID0gMCwgQyBBUyB2ICUgNCA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfdmFyX2ZpcnN0 JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9l eHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSsgfCBDKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQyBBUyB2ICUgNCA9IDIKKyk7Jyk7 CisKKy0tIFF1YW50aWZpZWQgZ3JvdXAgYXMgdGhlIGxhc3QgYnJhbmNoIG9mIGEgdGhyZWUtd2F5 IGFsdGVybmF0aW9uCistLSBQYXR0ZXJuOiAoQyB8IEQgfCAoQSBCKSspIC0gY29udHJvbDogdHJh aWxpbmcgZ3JvdXAgbmVlZHMgbm8gc2VwYXJhdG9yCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dy cF9sYXN0MyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDIHwgRCB8IChBIEIpKykK KyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0g MiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX2xhc3QzJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyB8IEQgfCAoQSBCKSsp CisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9 IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworCistLSBBbHRlcm5hdGlvbiBuZXN0ZWQgaW4gYSBs ZWFkaW5nIGJyYW5jaCBtdXN0IG5vdCBzd2FsbG93IHRoZSB0cmFpbGluZyBicmFuY2gKKy0tIFBh dHRlcm46IChEIChBIHwgQikgfCBFKSAtIGluaGVyaXRlZCBsaW1pdCBib3VuZHMgdGhlIGlubmVy IGFsdGVybmF0aW9uCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2lubmVyX2JvdW5kZWQgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoRCAoQSB8IEIpIHwgRSkKKyAgICBERUZJTkUgQSBB UyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBEIEFTIHYgJSA1ID0gMiwgRSBBUyB2ICUgNSA9 IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9hbHRfaW5uZXJfYm91bmRlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEQgKEEgfCBCKSB8IEUpCisgICAgREVGSU5F IEEgQVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0gMSwgRCBBUyB2ICUgNSA9IDIsIEUgQVMgdiAl IDUgPSAzCispOycpOworCistLSBHcm91cCBtaWQtYnJhbmNoIGZvbGxvd2VkIGJ5IGEgc2VxdWVu Y2UgZWxlbWVudCBuZWVkcyBubyBzZXBhcmF0b3IgYmVmb3JlIGl0CistLSBQYXR0ZXJuOiAoQyB8 IChBIEIpKyBEKSAtIHJlbGF0aXZlLW5leHQgYmxvY2tzIGEgc3B1cmlvdXMgc2VwYXJhdG9yIGF0 IEQKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX3RoZW5fc2VxIEFTCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEMgfCAoQSBCKSsgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAs IEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9hbHRfZ3JwX3RoZW5fc2VxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQyB8IChBIEIpKyBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0g MCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsK KworLS0gUXVhbnRpZmllZCBncm91cCB3cmFwcGluZyBhIGxvbmUgYWx0ZXJuYXRpb246IHRoZSBB TFQgc3VwcGxpZXMgdGhlIHBhcmVucworLS0gUGF0dGVybjogKChBIHwgQikrKSAtIGxvbmVBbHQg cGF0aCwgc2luZ2xlIHBhaXIgb2YgcGFyZW5zCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX2xvbmVf YWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAy MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIHwgQikrKQorICAgIERFRklO RSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfbG9uZV9hbHQn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo QSB8IEIpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxCispOycp OworCistLSBRdWFudGlmaWVkIGdyb3VwIHdyYXBwaW5nIGEgc2VxdWVuY2Ugd2hvc2UgbGFzdCBl bGVtZW50IGlzIGFuIGFsdGVybmF0aW9uCistLSBQYXR0ZXJuOiAoKEEgKEIgfCBDKSkrKSAtIGdy b3VwIHBhcmVuIHBsdXMgYSBuZXN0ZWQgYWx0ZXJuYXRpb24gcGFyZW4KK0NSRUFURSBWSUVXIHJw cl9ldl9ncnBfc2VxX2FsdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSAoQiB8 IEMpKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2 ICUgNCA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfc2VxX2FsdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIChCIHwgQykpKykKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsnKTsKKwor LS0gUXVhbnRpZmllZCBncm91cCB3cmFwcGluZyBhIHNlcXVlbmNlIHdob3NlIGZpcnN0IGVsZW1l bnQgaXMgYW4gYWx0ZXJuYXRpb24KKy0tIFBhdHRlcm46ICgoKEEgfCBCKSBDKSspIC0gbGVhZGlu ZyBuZXN0ZWQgYWx0ZXJuYXRpb24gaW5zaWRlIGEgZ3JvdXAgc2VxdWVuY2UKK0NSRUFURSBWSUVX IHJwcl9ldl9ncnBfYWx0X3NlcSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEg fCBCKSBDKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBB UyB2ICUgNCA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfYWx0X3NlcScpLCBFJ1xuJykpIEFTIGxpbmUgV0hF UkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSB8IEIpIEMpKykKKyAgICBERUZJ TkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsnKTsK KworLS0gQWx0ZXJuYXRpb24gbm9uLWxhc3QgaW4gYSBub24tbGFzdCBicmFuY2gsIHN0YWNrZWQg dGhyZWUgZGVlcDogZWFjaCBsZXZlbCdzCistLSBpbmhlcml0ZWQgbGltaXQgbXVzdCBib3VuZCB0 aGUgaW5uZXIgYWx0ZXJuYXRpb24gYWdhaW5zdCB0aGUgbmV4dCBicmFuY2gKKy0tIFBhdHRlcm46 ICgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpIC0gdGhyZWUgbmVzdGVkIGluaGVyaXRlZC1saW1pdCBi b3VuZGFyaWVzCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3N0YWNrMyBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOICgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpCisgICAgREVGSU5FIEEgQVMg diAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsCisgICAgICAgICAgIEQg QVMgdiAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9h bHRfc3RhY2szJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VM RUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwg Q09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoKChBIHwgQikgQyB8IEQpIEUgfCBGKQorICAgIERFRklORSBBIEFTIHYgJSA2ID0g MCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYgPSAyLAorICAgICAgICAgICBEIEFTIHYgJSA2 ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMgdiAlIDYgPSA1CispOycpOworCistLSBTYW1lIGlu dGVyYWN0aW9uIHN0YWNrZWQgZm91ciBkZWVwLCB0byBleGVyY2lzZSB0aGUgaW5kdWN0aW9uIG9u ZSBzdGVwIGZ1cnRoZXIKKy0tIFBhdHRlcm46ICgoKChBIHwgQikgQyB8IEQpIEUgfCBGKSBHIHwg SCkgLSBmb3VyIG5lc3RlZCBpbmhlcml0ZWQtbGltaXQgYm91bmRhcmllcworQ1JFQVRFIFZJRVcg cnByX2V2X2FsdF9zdGFjazQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8 IEIpIEMgfCBEKSBFIHwgRikgRyB8IEgpCisgICAgREVGSU5FIEEgQVMgdiAlIDggPSAwLCBCIEFT IHYgJSA4ID0gMSwgQyBBUyB2ICUgOCA9IDIsIEQgQVMgdiAlIDggPSAzLAorICAgICAgICAgICBF IEFTIHYgJSA4ID0gNCwgRiBBUyB2ICUgOCA9IDUsIEcgQVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4 ID0gNworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2FsdF9zdGFjazQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChBIHwgQikgQyB8IEQpIEUgfCBGKSBHIHwgSCkK KyAgICBERUZJTkUgQSBBUyB2ICUgOCA9IDAsIEIgQVMgdiAlIDggPSAxLCBDIEFTIHYgJSA4ID0g MiwgRCBBUyB2ICUgOCA9IDMsCisgICAgICAgICAgIEUgQVMgdiAlIDggPSA0LCBGIEFTIHYgJSA4 ID0gNSwgRyBBUyB2ICUgOCA9IDYsIEggQVMgdiAlIDggPSA3CispOycpOworCistLSBUaHJlZS1k ZWVwIHN0YWNrIHdob3NlIGlubmVybW9zdCBicmFuY2ggaXMgYSBxdWFudGlmaWVkIGdyb3VwOiB0 aGUgZ3JvdXAncworLS0gc2tpcC10YXJnZXQganVtcCBtdXN0IG5vdCBiZSBtaXN0YWtlbiBmb3Ig YSBicmFuY2ggc2VwYXJhdG9yIGF0IGFueSBkZXB0aAorLS0gUGF0dGVybjogKCgoQSB8IEIpKyBD IHwgRCkgRSB8IEYpIC0gaW5oZXJpdGVkIGxpbWl0IHBsdXMgbG9uZUFsdCBhdCB0aGUgYmFzZQor Q1JFQVRFIFZJRVcgcnByX2V2X2FsdF9zdGFjazNfZ3JwIEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKCgoQSB8IEIpKyBDIHwgRCkgRSB8IEYpCisgICAgREVGSU5FIEEgQVMgdiAlIDYg PSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsCisgICAgICAgICAgIEQgQVMgdiAl IDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfc3Rh Y2szX2dycCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKCgoQSB8IEIpKyBDIHwgRCkgRSB8IEYpCisgICAgREVGSU5FIEEgQVMgdiAlIDYgPSAw LCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsCisgICAgICAgICAgIEQgQVMgdiAlIDYg PSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUKKyk7Jyk7CisKKy0tIEFsdGVybmF0 aW9uIHRyYWlsaW5nIGEgcGFyZW4tbGVzcyBzZXF1ZW5jZSAobGFzdCBlbGVtZW50IG9mIGEgbm9u LWxhc3QKKy0tIGJyYW5jaCwgbm8gc2FtZS1kZXB0aCBzaWJsaW5nIHRvIGJvdW5kIGl0KSwgbmVz dGVkIHRocmVlIGRlZXAKKy0tIFBhdHRlcm46IChBIChCIChDIHwgRCkgfCBFKSB8IEYpIC0gZWFj aCBpbm5lciBhbHRlcm5hdGlvbiBpcyBicmFuY2gtdGFpbAorQ1JFQVRFIFZJRVcgcnByX2V2X2Fs dF90YWlsMyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChCIChDIHwgRCkgfCBF KSB8IEYpCisgICAgREVGSU5FIEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2 ICUgNiA9IDIsCisgICAgICAgICAgIEQgQVMgdiAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBB UyB2ICUgNiA9IDUKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfdGFpbDMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChCIChDIHwgRCkgfCBFKSB8IEYpCisg ICAgREVGSU5FIEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIs CisgICAgICAgICAgIEQgQVMgdiAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9 IDUKKyk7Jyk7CisKKy0tIFNhbWUgYnJhbmNoLXRhaWwgYWx0ZXJuYXRpb24gbmVzdGVkIGZvdXIg ZGVlcAorLS0gUGF0dGVybjogKEEgKEIgKEMgKEQgfCBFKSB8IEYpIHwgRykgfCBIKSAtIGJyYW5j aC10YWlsIGFsdGVybmF0aW9uIHg0CitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3RhaWw0IEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKEIgKEMgKEQgfCBFKSB8IEYpIHwgRykgfCBI KQorICAgIERFRklORSBBIEFTIHYgJSA4ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMgdiAlIDgg PSAyLCBEIEFTIHYgJSA4ID0gMywKKyAgICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAl IDggPSA1LCBHIEFTIHYgJSA4ID0gNiwgSCBBUyB2ICUgOCA9IDcKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfdGFp bDQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBIChCIChDIChEIHwgRSkgfCBGKSB8IEcpIHwgSCkKKyAgICBERUZJTkUgQSBBUyB2ICUgOCA9 IDAsIEIgQVMgdiAlIDggPSAxLCBDIEFTIHYgJSA4ID0gMiwgRCBBUyB2ICUgOCA9IDMsCisgICAg ICAgICAgIEUgQVMgdiAlIDggPSA0LCBGIEFTIHYgJSA4ID0gNSwgRyBBUyB2ICUgOCA9IDYsIEgg QVMgdiAlIDggPSA3CispOycpOworCistLSBBIG5lc3RlZCBhbHRlcm5hdGlvbiB0YWlsIG5laWdo Ym91cmluZyBhIG11bHRpLWVsZW1lbnQgc2VxdWVuY2UgYnJhbmNoOiB0aGUKKy0tIGJyYW5jaCBi b3VuZGFyeSBtdXN0IHNwbGl0ICIuLi5icmFuY2gtdGFpbCBBTFQiIGZyb20gYSBwbGFpbiAiRyBB IiBzZXF1ZW5jZQorLS0gUGF0dGVybjogKEEgKEIgKEMgKEQgfCBFKSB8IEYpIHwgRyBBKSB8IEgp IC0gc2VxIGJyYW5jaCBiZXNpZGUgYW4gQUxUIHRhaWwKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRf dGFpbF9zZXFicmFuY2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoQiAoQyAo RCB8IEUpIHwgRikgfCBHIEEpIHwgSCkKKyAgICBERUZJTkUgQSBBUyB2ICUgOCA9IDAsIEIgQVMg diAlIDggPSAxLCBDIEFTIHYgJSA4ID0gMiwgRCBBUyB2ICUgOCA9IDMsCisgICAgICAgICAgIEUg QVMgdiAlIDggPSA0LCBGIEFTIHYgJSA4ID0gNSwgRyBBUyB2ICUgOCA9IDYsIEggQVMgdiAlIDgg PSA3CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfYWx0X3RhaWxfc2VxYnJhbmNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoQiAoQyAoRCB8IEUpIHwgRikgfCBH IEEpIHwgSCkKKyAgICBERUZJTkUgQSBBUyB2ICUgOCA9IDAsIEIgQVMgdiAlIDggPSAxLCBDIEFT IHYgJSA4ID0gMiwgRCBBUyB2ICUgOCA9IDMsCisgICAgICAgICAgIEUgQVMgdiAlIDggPSA0LCBG IEFTIHYgJSA4ID0gNSwgRyBBUyB2ICUgOCA9IDYsIEggQVMgdiAlIDggPSA3CispOycpOworCist LSBBIG5lc3RlZCBhbHRlcm5hdGlvbiB0aGF0IGlzIHNpYmxpbmctYm91bmRlZCBieSBhIHRyYWls aW5nIHNlcXVlbmNlIGVsZW1lbnQKKy0tIGF0IHRoZSBvdXRlciBsZXZlbCAodGhlIEFMVCBpcyBu b3QgdGhlIGJyYW5jaCB0YWlsOyBHIGZvbGxvd3MgaXQgaW4tYnJhbmNoKQorLS0gUGF0dGVybjog KChBIChCIChDIHwgRCkgfCBFKSB8IEYpIEcgfCBIKSAtIEFMVCBib3VuZGVkIGJ5IGEgZm9sbG93 aW5nIGVsZW1lbnQKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfbWlkX3NlcXRhaWwgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgKEIgKEMgfCBEKSB8IEUpIHwgRikgRyB8IEgpCisg ICAgREVGSU5FIEEgQVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUgOCA9IDIs IEQgQVMgdiAlIDggPSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2ICUgOCA9 IDUsIEcgQVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9taWRfc2Vx dGFpbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKChBIChCIChDIHwgRCkgfCBFKSB8IEYpIEcgfCBIKQorICAgIERFRklORSBBIEFTIHYgJSA4 ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMgdiAlIDggPSAyLCBEIEFTIHYgJSA4ID0gMywKKyAg ICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAlIDggPSA1LCBHIEFTIHYgJSA4ID0gNiwg SCBBUyB2ICUgOCA9IDcKKyk7Jyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gR3JvdXAgUGF0dGVybiBUZXN0cwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisKKy0tIFNpbXBsZSBncm91cAorQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9zaW1wbGUg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoKEEgQikrKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUg MiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfc2ltcGxlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoKEEgQikrKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAK Kyk7Jyk7CisKKy0tIEdyb3VwIHdpdGggYm91bmRlZCBxdWFudGlmaWVyCitDUkVBVEUgVklFVyBy cHJfZXZfZ3JwX2JvdW5kZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQil7Miw0fSkKKyAgICBERUZJTkUgQSBB UyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qo c3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX2JvdW5kZWQnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnByX2V4cGxhaW5f ZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKXsyLDR9KQorICAgIERFRklORSBBIEFT IHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7Jyk7CisKKy0tIE5lc3RlZCBncm91cHMKK0NS RUFURSBWSUVXIHJwcl9ldl9ncnBfbmVzdGVkIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSBCKXsyfSkrKQorICAg IERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfbmVz dGVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIEIpezJ9KSspCisgICAg REVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKKworLS0gRGVlcCBu ZXN0aW5nICgzKyBsZXZlbHMpCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX2RlZXAgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8IEIpKykrKSspCisgICAgREVGSU5FIEEgQVMg diAlIDIgPSAwLCBCIEFTIHYgJSAyID0gMQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9kZWVwJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8IEIpKykr KSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAwLCBCIEFTIHYgJSAyID0gMQorKTsnKTsKKwor LS0gQm91bmRlZCBxdWFudGlmaWVyIG9uIGFsdGVybmF0aW9uCitDUkVBVEUgVklFVyBycHJfZXZf Z3JwX2JvdW5kZWRfYWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIHwgQil7 MiwzfSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMg diAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX2JvdW5kZWRfYWx0JyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKXsyLDN9IEMpCisgICAg REVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7 Jyk7CisKKy0tIE5lc3RlZCBncm91cHMgd2l0aCBxdWFudGlmaWVycworQ1JFQVRFIFZJRVcgcnBy X2V2X2dycF9uZXN0ZWRfcXVhbnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChB IEIpKyBDKSopCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBB UyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfbmVzdGVkX3F1YW50JyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIEIpKyBDKSopCisgICAg REVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7 Jyk7CisKKy0tIFBhcnRpYWwgbmVzdGVkIHF1YW50aWZpY2F0aW9uCitDUkVBVEUgVklFVyBycHJf ZXZfZ3JwX3BhcnRpYWxfcXVhbnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEg KEIgQykrKSopCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBB UyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfcGFydGlhbF9xdWFudCcpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIChCIEMpKykqKQorICAg IERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCisp OycpOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFdpbmRvdyBGdW5jdGlvbiBDb21iaW5hdGlvbnMKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor CistLSBjb3VudCgqKSB3aXRoIHBhdHRlcm4KK0NSRUFURSBWSUVXIHJwcl9ldl93Zm5fY291bnQg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1 ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X3dmbl9jb3VudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7 Jyk7CisKKy0tIGZpcnN0X3ZhbHVlIHdpdGggcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX2V2X3dm bl9maXJzdF92YWx1ZSBBUworU0VMRUNUIGZpcnN0X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYg JSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfd2ZuX2ZpcnN0X3ZhbHVlJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBmaXJzdF92YWx1ZSh2KSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBB UyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKKworLS0gbGFzdF92YWx1ZSB3aXRo IHBhdHRlcm4KK0NSRUFURSBWSUVXIHJwcl9ldl93Zm5fbGFzdF92YWx1ZSBBUworU0VMRUNUIGxh c3RfdmFsdWUodikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl93Zm5fbGFzdF92YWx1ZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg bGFzdF92YWx1ZSh2KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAor KTsnKTsKKworLS0gTXVsdGlwbGUgd2luZG93IGZ1bmN0aW9ucworQ1JFQVRFIFZJRVcgcnByX2V2 X3dmbl9tdWx0aSBBUworU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiB3LAorICAgIGZpcnN0X3Zh bHVlKHYpIE9WRVIgdywKKyAgICBsYXN0X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+ IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfd2ZuX211bHRpJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgdywKKyAgICBmaXJzdF92YWx1ZSh2 KSBPVkVSIHcsCisgICAgbGFzdF92YWx1ZSh2KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBC IEFTIHYgJSA1ID0gMAorKTsnKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBERUZJTkUgRXhwcmVzc2lvbiBWYXJp YXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKworLS0gQ29tcGxleCBib29sZWFuIGV4cHJlc3Npb25zCitDUkVBVEUg VklFVyBycHJfZXZfZGVmX2NvbXBsZXhfYm9vbCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklO RQorICAgICAgICBBIEFTICh2ICUgNSA8PiAwKSBBTkQgKHYgJSAzIDw+IDApLAorICAgICAgICBC IEFTICh2ICUgNSA9IDApIE9SICh2ICUgMyA9IDApCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZGVmX2NvbXBsZXhfYm9v bCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJf ZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9G RiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgKHYgJSA1IDw+IDApIEFORCAodiAlIDMgPD4gMCksCisgICAgICAgIEIgQVMg KHYgJSA1ID0gMCkgT1IgKHYgJSAzID0gMCkKKyk7Jyk7CisKKy0tIFVzaW5nIFBSRVYgZnVuY3Rp b24KK0NSRUFURSBWSUVXIHJwcl9ldl9kZWZfcHJldiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChTIFUrIEQrKQorICAg IERFRklORQorICAgICAgICBTIEFTIFRSVUUsCisgICAgICAgIFUgQVMgdiA+IFBSRVYodiksCisg ICAgICAgIEQgQVMgdiA8IFBSRVYodikKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9kZWZfcHJldicpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKFMgVSsgRCspCisgICAgREVGSU5FCisgICAgICAgIFMgQVMg VFJVRSwKKyAgICAgICAgVSBBUyB2ID4gUFJFVih2KSwKKyAgICAgICAgRCBBUyB2IDwgUFJFVih2 KQorKTsnKTsKKworLS0gVXNpbmcgMS1hcmcgUFJFViAoaW1wbGljaXQgb2Zmc2V0IDEpCitDUkVB VEUgVklFVyBycHJfZXZfbmF2X3ByZXYxIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyB2ID4gUFJFVih2KQorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X25h dl9wcmV2MScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERFRklORXxQ UkVWfE5FWFQnOworCistLSBVc2luZyAxLWFyZyBORVhUIChpbXBsaWNpdCBvZmZzZXQgMSkKK0NS RUFURSBWSUVXIHJwcl9ldl9uYXZfbmV4dDEgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPCBORVhUKHYpCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf bmF2X25leHQxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVGSU5F fFBSRVZ8TkVYVCc7CisKKy0tIFVzaW5nIDItYXJnIFBSRVYgKGV4cGxpY2l0IG9mZnNldCkKK0NS RUFURSBWSUVXIHJwcl9ldl9uYXZfcHJldjIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPiBQUkVWKHYsIDIpCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXZfbmF2X3ByZXYyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVG SU5FfFBSRVZ8TkVYVCc7CisKKy0tIFVzaW5nIDItYXJnIE5FWFQgKGV4cGxpY2l0IG9mZnNldCkK K0NSRUFURSBWSUVXIHJwcl9ldl9uYXZfbmV4dDIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPCBORVhUKHYsIDIpCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfbmF2X25leHQyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58 REVGSU5FfFBSRVZ8TkVYVCc7CisKKy0tIFVzaW5nIE5VTEwgY29tcGFyaXNvbnMKK0NSRUFURSBW SUVXIHJwcl9ldl9kZWZfbnVsbCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisg ICAgU0VMRUNUIENBU0UgV0hFTiB2ICUgNSA9IDAgVEhFTiBOVUxMIEVMU0UgdiBFTkQgQVMgdgor ICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERF RklORSBBIEFTIHYgSVMgTk9UIE5VTEwsIEIgQVMgdiBJUyBOVUxMCispOworU0VMRUNUIGxpbmUg RlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZGVmX251 bGwnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSAoCisgICAgU0VMRUNUIENBU0UgV0hFTiB2ICUgNSA9IDAgVEhFTiBOVUxMIEVMU0UgdiBFTkQg QVMgdgorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSB2CispIHQKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQor ICAgIERFRklORSBBIEFTIHYgSVMgTk9UIE5VTEwsIEIgQVMgdiBJUyBOVUxMCispOycpOworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIExhcmdlIFNjYWxlIFN0YXRpc3RpY3MgVmVyaWZpY2F0aW9uCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gNTAwIHJvd3MgLSB2ZXJpZnkgc3RhdGlzdGljcyBzY2FsZSBjb3JyZWN0bHkKK0NSRUFURSBW SUVXIHJwcl9ldl9zY2FsZV81MDByb3dzIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCIEMpCisgICAgREVGSU5F IEEgQVMgdiAlIDEwIDwgNywgQiBBUyB2ICUgMTAgPSA3LCBDIEFTIHYgJSAxMCA9IDgKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9zY2FsZV81MDByb3dzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPCA3LCBCIEFTIHYgJSAxMCA9IDcsIEMgQVMg diAlIDEwID0gOAorKTsnKTsKKworLS0gSGlnaCBtYXRjaCBjb3VudCBzY2VuYXJpbworQ1JFQVRF IFZJRVcgcnByX2V2X3NjYWxlX2hpZ2hfbWF0Y2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJ TkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc2NhbGVfaGlnaF9t YXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5F IEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKKworLS0gSGlnaCBza2lwIGNv dW50IHNjZW5hcmlvCitDUkVBVEUgVklFVyBycHJfZXZfc2NhbGVfaGlnaF9za2lwIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIgQyBEIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdiAlIDEwMCA9IDEsCisg ICAgICAgIEIgQVMgdiAlIDEwMCA9IDIsCisgICAgICAgIEMgQVMgdiAlIDEwMCA9IDMsCisgICAg ICAgIEQgQVMgdiAlIDEwMCA9IDQsCisgICAgICAgIEUgQVMgdiAlIDEwMCA9IDUKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9zY2FsZV9oaWdoX3NraXAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZF UlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBC IEMgRCBFKQorICAgIERFRklORQorICAgICAgICBBIEFTIHYgJSAxMDAgPSAxLAorICAgICAgICBC IEFTIHYgJSAxMDAgPSAyLAorICAgICAgICBDIEFTIHYgJSAxMDAgPSAzLAorICAgICAgICBEIEFT IHYgJSAxMDAgPSA0LAorICAgICAgICBFIEFTIHYgJSAxMDAgPSA1CispOycpOworCistLQorLS0g UGxhbm5lciBvcHRpbWl6YXRpb246IG9wdGltaXplX3dpbmRvd19jbGF1c2VzIG11c3Qgbm90IGFs dGVyIFJQUiBmcmFtZQorLS0KKy0tIG9wdGltaXplX3dpbmRvd19jbGF1c2VzKCkgcmVwbGFjZXMg ZnJhbWUgb3B0aW9ucyB2aWEgcHJvc3VwcG9ydCBmdW5jdGlvbnMuCistLSBBZmZlY3RlZCBmdW5j dGlvbnM6IHJvd19udW1iZXIsIHJhbmssIGRlbnNlX3JhbmssIHBlcmNlbnRfcmFuaywgY3VtZV9k aXN0LAorLS0gbnRpbGUuICBBbGwgd291bGQgY2hhbmdlIHRoZSBmcmFtZSB0byBST1dTIFVOQk9V TkRFRCBQUkVDRURJTkcsIGJyZWFraW5nCistLSBSUFIncyByZXF1aXJlZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcuCistLSBUZXN0IHdpdGggcm93X251 bWJlcigpIGFzIHJlcHJlc2VudGF0aXZlIGNhc2UuCistLQorCistLSBXaXRob3V0IFJQUjogcm93 X251bWJlcigpIGZyYW1lIGlzIG9wdGltaXplZCB0byBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcK K0NSRUFURSBWSUVXIHJwcl9ldl9vcHRfbm9fcnByIEFTCitTRUxFQ1Qgcm93X251bWJlcigpIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSB2CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCispOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gcnBy X2V2X29wdF9ub19ycHI7CisKKy0tIFdpdGggUlBSOiBmcmFtZSBtdXN0IHJlbWFpbiBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKK0NSRUFURSBWSUVXIHJw cl9ldl9vcHRfd2l0aF9ycHIgQVMKK1NFTEVDVCByb3dfbnVtYmVyKCkgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCAxMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IHYKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQor ICAgIERFRklORQorICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCispOworCitFWFBMQUlOIChDT1NU UyBPRkYpIFNFTEVDVCAqIEZST00gcnByX2V2X29wdF93aXRoX3JwcjsKKworLS0KKy0tIFBsYW5u ZXIgb3B0aW1pemF0aW9uOiBub24tUlBSIGFuZCBSUFIgd2luZG93cyB0aGF0IHNoYXJlIHRoZSBz YW1lIGJhc2UgZnJhbWUKKy0tIGFmdGVyIGZyYW1lIG9wdGltaXphdGlvbiBhcmUga2VwdCBhcyBz ZXBhcmF0ZSBXaW5kb3dBZ2cgbm9kZXMuCistLQorQ1JFQVRFIFZJRVcgcnByX2V2X29wdF9taXhl ZCBBUworU0VMRUNUCisgICAgcm93X251bWJlcigpIE9WRVIgd19ub3JtYWwgQVMgcm5fbm9ybWFs LAorICAgIHJvd19udW1iZXIoKSBPVkVSIHdfcnByIEFTIHJuX3JwcgorRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNSkgQVMgcyh2KQorV0lORE9XCisgICAgd19ub3JtYWwgQVMgKE9SREVSIEJZIHYg UkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBDVVJSRU5UIFJPVyksCisgICAg d19ycHIgQVMgKAorICAgICAgICBPUkRFUiBCWSB2CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAg ICAgICAgREVGSU5FIEEgQVMgdiA+IDEKKyAgICApOworCitFWFBMQUlOIChDT1NUUyBPRkYpIFNF TEVDVCAqIEZST00gcnByX2V2X29wdF9taXhlZDsKKworLS0KKy0tIFBsYW5uZXIgb3B0aW1pemF0 aW9uOiBmaW5kX3dpbmRvd19ydW5fY29uZGl0aW9ucyBtdXN0IG5vdCBwdXNoIGRvd24KKy0tIFJQ UiB3aW5kb3cgZnVuY3Rpb24gcmVzdWx0cyBhcyBSdW4gQ29uZGl0aW9ucy4KKy0tCistLSBmaW5k X3dpbmRvd19ydW5fY29uZGl0aW9ucygpIHB1c2hlcyBXSEVSRSBmaWx0ZXJzIG9uIG1vbm90b25p YyB3aW5kb3cKKy0tIGZ1bmN0aW9ucyBpbnRvIFdpbmRvd0FnZyBhcyBSdW4gQ29uZGl0aW9ucyBm b3IgZWFybHkgdGVybWluYXRpb24uCistLSBXaXRoIFJQUidzIHJlcXVpcmVkIGZyYW1lIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRAorLS0gRk9MTE9XSU5HKSwgdGhlIG1v bm90b25pYyBkaXJlY3Rpb24gZGV0ZXJtaW5lcyB3aGljaCBvcGVyYXRvcnMgdHJpZ2dlcgorLS0g UnVuIENvbmRpdGlvbiBwdXNoZG93bjoKKy0tICAgSU5DUkVBU0lORyAoPD0pOiByb3dfbnVtYmVy LCByYW5rLCBkZW5zZV9yYW5rLCBwZXJjZW50X3JhbmssCistLSAgICAgICAgICAgICAgICAgICAg Y3VtZV9kaXN0LCBudGlsZQorLS0gICBERUNSRUFTSU5HICg+KTogIGNvdW50KCopICh2aWEgaW50 OGluYywgRU5EX1VOQk9VTkRFRF9GT0xMT1dJTkcpCistLSBSUFIgd2luZG93IGZ1bmN0aW9uIHJl c3VsdHMgYXJlIG1hdGNoLWRlcGVuZGVudCwgbm90IG1vbm90b25pYy4KKy0tIFRlc3Qgd2l0aCBj b3VudCgqKSA+IDAgYXMgcmVwcmVzZW50YXRpdmUgY2FzZS4KKy0tCisKKy0tIFdpdGhvdXQgUlBS OiBjb3VudCgqKSA+IDAgaXMgcHVzaGVkIGRvd24gYXMgUnVuIENvbmRpdGlvbgorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgQVMgcyh2KQorICAgIFdJTkRP VyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgdgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICApCispIHQgV0hFUkUgY250ID4gMDsK KworLS0gV2l0aCBSUFI6IGNvdW50KCopID4gMCBtdXN0IG5vdCBiZSBwdXNoZWQgZG93biBhcyBS dW4gQ29uZGl0aW9uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBT RUxFQ1QgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDEwKSBBUyBzKHYpCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSB2CisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoQSBC KykKKyAgICAgICAgREVGSU5FCisgICAgICAgICAgICBCIEFTIHYgPiBQUkVWKHYpCisgICAgKQor KSB0IFdIRVJFIGNudCA+IDA7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTmF2IE1hcmsgTG9va2JhY2svTG9va2Fo ZWFkIFRlc3RzCistLSBWZXJpZmllcyBwbGFubmVyLWNvbXB1dGVkIG5hdmlnYXRpb24gb2Zmc2V0 cyBmb3IgdHVwbGVzdG9yZSB0cmltLgorLS0gTG9va2JhY2s6IGhvdyBmYXIgYmFjayBmcm9tIGN1 cnJlbnRwb3MgKFBSRVYsIExBU1QsIGNvbXBvdW5kIFBSRVZfTEFTVC9ORVhUX0xBU1QpLgorLS0g TG9va2FoZWFkOiBob3cgZmFyIGZvcndhcmQgZnJvbSBtYXRjaF9zdGFydCAoRklSU1QsIGNvbXBv dW5kIFBSRVZfRklSU1QvTkVYVF9GSVJTVCkuCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gUHJlcGFyZSBzdGF0ZW1l bnQgZm9yIGhvc3QgdmFyaWFibGUgb2Zmc2V0IHRlc3QgYmVsb3cKK1BSRVBBUkUgcnByX25hdl9v ZmZzZXRfcHJlcChpbnQ4KSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIHYgPiBQUkVWKHYsICQxKQorKTsKKworLS0gTm8gbmF2aWdhdGlvbiBmdW5jdGlv bjogb2Zmc2V0IDAKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHYgPiAwCispOworCistLSBORVhUIG9ubHk6IG5vIGJhY2t3 YXJkIG5hdmlnYXRpb24sIG9mZnNldCAwCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2IDwgTkVYVCh2KQorKTsKKworLS0g UFJFVih2KTogaW1wbGljaXQgb2Zmc2V0IDEKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgPiBQUkVWKHYpCispOworCist LSBQUkVWKHYsIDMpOiBleHBsaWNpdCBjb25zdGFudCBvZmZzZXQgMworRVhQTEFJTiAoQ09TVFMg T0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdiA+IFBS RVYodiwgMykKKyk7CisKKy0tIFR3byBQUkVWIHdpdGggZGlmZmVyZW50IG9mZnNldHM6IG1heCgx LCA1KSA9IDUKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIFBSRVYodiwgMSkgPCB2IEFORCBQUkVWKHYsIDUpIDwgdgorKTsK KworLS0gSG9zdCB2YXJpYWJsZSBvZmZzZXQ6IGN1c3RvbSBwbGFuIHJlc29sdmVzICQxPTIgdG8g Y29uc3RhbnQgMgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHJwcl9uYXZfb2Zmc2V0X3By ZXAoMik7CisKKy0tIEZvcmNlIGdlbmVyaWMgcGxhbjogb2Zmc2V0IGJlY29tZXMgInJ1bnRpbWUi IChQYXJhbSBub2RlKQorU0VUIHBsYW5fY2FjaGVfbW9kZSA9IGZvcmNlX2dlbmVyaWNfcGxhbjsK K0VYUExBSU4gKENPU1RTIE9GRikgRVhFQ1VURSBycHJfbmF2X29mZnNldF9wcmVwKDIpOworUkVT RVQgcGxhbl9jYWNoZV9tb2RlOworREVBTExPQ0FURSBycHJfbmF2X29mZnNldF9wcmVwOworCist LSBGSVJTVCh2KTogcmV0YWluIGFsbCAocmVmZXJlbmNlcyBtYXRjaF9zdGFydCByb3cpCitFWFBM QUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2ID4gRklSU1QodikKKyk7CisKKy0tIExBU1QodiwgMSk6IGJhY2t3YXJkIHJlYWNoIDEs IHNhbWUgYXMgUFJFVih2LCAxKQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTEFTVCh2LCAxKSA+IDAKKyk7CisKKy0tIExB U1Qodikgd2l0aG91dCBvZmZzZXQgKyBQUkVWKHYpOiBubyBtYXRjaF9zdGFydCBkZXBlbmRlbmN5 LCBvZmZzZXQgMQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FIEEgQVMgTEFTVCh2KSA+IFBSRVYodikKKyk7CisKKy0tIENvbXBvdW5k IFBSRVYoRklSU1QodmFsLCAxKSwgMik6IGxvb2tiYWNrIGZyb20gbWF0Y2hfc3RhcnQsIGZpcnN0 T2Zmc2V0ID0gMS0yID0gLTEKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QodiwgMSksIDIpID4gMAorKTsK KworLS0gQ29tcG91bmQgTkVYVChGSVJTVCh2YWwpLCAzKTogZmlyc3RPZmZzZXQgPSAwKzMgPSAz CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyBORVhUKEZJUlNUKHYpLCAzKSA+IDAKKyk7CisKKy0tIENvbXBvdW5kIFBSRVYo TEFTVCh2YWwpLCAyKTogbG9va2JhY2sgPSAwKzIgPSAyCitFWFBMQUlOIChDT1NUUyBPRkYpIFNF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1Qodiks IDIpID4gMAorKTsKKworLS0gQ29tcG91bmQgTkVYVChMQVNUKHZhbCwgMSksIDMpOiBsb29rYmFj ayA9IG1heCgxLTMsIDApID0gMAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVYVChMQVNUKHYsIDEpLCAzKSA+IDAKKyk7 CisKKy0tIENvbXBvdW5kIFBSRVYoTEFTVCh2YWwsIE4pLCBNKTogY29uc3RhbnQgbmVhci1vdmVy ZmxvdyAoTitNIGp1c3QgZml0cyBpbnQ2NCkKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYoTEFTVCh2LCA0NjExNjg2 MDE4NDI3Mzg3OTAzKSwgNDYxMTY4NjAxODQyNzM4NzkwMykgSVMgTk9UIE5VTEwKKyk7CisKKy0t IENvbXBvdW5kIFBSRVYoTEFTVCh2YWwsIE4pLCBNKTogY29uc3RhbnQgb3ZlcmZsb3cgLT4gcmV0 YWluIGFsbAorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHYsIDQ2MTE2ODYwMTg0MjczODc5MDQpLCA0NjEx Njg2MDE4NDI3Mzg3OTA0KSBJUyBOT1QgTlVMTAorKTsKKworLS0gQ29tcG91bmQgTkVYVChGSVJT VCh2YWwsIE4pLCBNKTogY29uc3RhbnQgbG9va2FoZWFkIG92ZXJmbG93IC0+IGluZmluaXRlCist LSBOICsgTSBvdmVyZmxvd3MgaW50NjQ7IGZvcndhcmQgcmVhY2ggaXMgdW5ib3VuZGVkLCBkaXNw bGF5ZWQgYXMgaW5maW5pdGUuCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBORVhUKEZJUlNUKHYsIDQ2MTE2ODYwMTg0Mjcz ODc5MDQpLCA0NjExNjg2MDE4NDI3Mzg3OTA0KSBJUyBOT1QgTlVMTAorKTsKKworLS0gQ29tcG91 bmQgUFJFVihMQVNUKHZhbCwgJDEpLCAkMik6IHBhcmFtZXRlciBsb29rYmFjayBvdmVyZmxvdyAt PiByZXRhaW4gYWxsCistLSBFWFBMQUlOIHNob3dzICJydW50aW1lIiAocGxhbi1sZXZlbCk7IEVY UExBSU4gQU5BTFlaRSBzaG93cyAicmV0YWluIGFsbCIKKy0tIChleGVjdXRvci1yZXNvbHZlZCku CitQUkVQQVJFIHRlc3Rfb3ZlcmZsb3dfbG9va2JhY2soaW50OCwgaW50OCkgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QodiwgJDEpLCAk MikgSVMgTk9UIE5VTEwKKyk7CitTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19w bGFuOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHRlc3Rfb3ZlcmZsb3dfbG9va2JhY2so NDYxMTY4NjAxODQyNzM4NzkwNCwgNDYxMTY4NjAxODQyNzM4NzkwNCk7CitFWFBMQUlOIChDT1NU UyBPRkYsIEFOQUxZWkUsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorICAgIEVYRUNVVEUgdGVz dF9vdmVyZmxvd19sb29rYmFjayg0NjExNjg2MDE4NDI3Mzg3OTA0LCA0NjExNjg2MDE4NDI3Mzg3 OTA0KTsKK1JFU0VUIHBsYW5fY2FjaGVfbW9kZTsKK0RFQUxMT0NBVEUgdGVzdF9vdmVyZmxvd19s b29rYmFjazsKKworLS0gQ29tcG91bmQgTkVYVChGSVJTVCh2YWwsICQxKSwgJDIpOiBwYXJhbWV0 ZXIgbG9va2FoZWFkIG92ZXJmbG93IC0+IGluZmluaXRlCitQUkVQQVJFIHRlc3Rfb3ZlcmZsb3df bG9va2FoZWFkKGludDgsIGludDgpIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgTkVYVChGSVJTVCh2LCAkMSksICQyKSBJUyBOT1QgTlVMTAorKTsKK1NF VCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CitFWFBMQUlOIChDT1NUUyBP RkYsIEFOQUxZWkUsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorICAgIEVYRUNVVEUgdGVzdF9v dmVyZmxvd19sb29rYWhlYWQoNDYxMTY4NjAxODQyNzM4NzkwNCwgNDYxMTY4NjAxODQyNzM4Nzkw NCk7CitSRVNFVCBwbGFuX2NhY2hlX21vZGU7CitERUFMTE9DQVRFIHRlc3Rfb3ZlcmZsb3dfbG9v a2FoZWFkOworCistLSBQUkVWKHYpICsgUFJFVih2LCAkMSk6IE5FRURTX0VWQUwgcGF0aCBtdXN0 IGFjY291bnQgZm9yIGltcGxpY2l0IGxvb2tiYWNrPTEKKy0tIFByZXZpb3VzbHksIGV2YWxfbmF2 X21heF9vZmZzZXRfd2Fsa2VyIHNraXBwZWQgUFJFVih2KSB3aGVuIG9mZnNldF9hcmcgd2FzCist LSBOVUxMLCBjYXVzaW5nIG1heE9mZnNldD0wIHdoZW4gJDE9MCwgd2hpY2ggd291bGQgdHJpbSB0 aGUgcm93IG5lZWRlZCBieQorLS0gUFJFVih2KS4gIFZlcmlmeSB0aGlzIGV4ZWN1dGVzIHdpdGhv dXQgImNhbm5vdCBmZXRjaCByb3cgYmVmb3JlIG1hcmsiIGVycm9yLgorUFJFUEFSRSB0ZXN0X3By ZXZfaW1wbGljaXRfb2Zmc2V0KGludDgpIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgUFJFVih2KSBJUyBOT1QgTlVMTCBBTkQgUFJFVih2LCAkMSkgSVMg Tk9UIE5VTEwKKyk7CitFWEVDVVRFIHRlc3RfcHJldl9pbXBsaWNpdF9vZmZzZXQoMCk7CitERUFM TE9DQVRFIHRlc3RfcHJldl9pbXBsaWNpdF9vZmZzZXQ7CisKKy0tIFJ1bnRpbWUgZXJyb3I6IG5l Z2F0aXZlIG9mZnNldCBhdCBleGVjdXRpb24gdGltZQorUFJFUEFSRSB0ZXN0X3J1bnRpbWVfbmVn X29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIFBSRVYodiwgJDEpIElTIE5PVCBOVUxMCispOworRVhFQ1VURSB0ZXN0X3J1bnRpbWVf bmVnX29mZnNldCgtMSk7CitERUFMTE9DQVRFIHRlc3RfcnVudGltZV9uZWdfb2Zmc2V0OworCist LSBSdW50aW1lIGVycm9yOiBudWxsIG9mZnNldCBhdCBleGVjdXRpb24gdGltZQorUFJFUEFSRSB0 ZXN0X3J1bnRpbWVfbnVsbF9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHYsICQxKSBJUyBOT1QgTlVMTAorKTsKK0VYRUNV VEUgdGVzdF9ydW50aW1lX251bGxfb2Zmc2V0KE5VTEwpOworREVBTExPQ0FURSB0ZXN0X3J1bnRp bWVfbnVsbF9vZmZzZXQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50 ZWdyYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcnByX2ludGVncmF0aW9uLnNxbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uMWQ2MDc1MjY1YmIKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9ycHJfaW50ZWdyYXRpb24uc3FsCkBA IC0wLDAgKzEsOTUwIEBACistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJQUiBJbnRlZ3JhdGlvbiBUZXN0cworLS0gUGxh bm5lciBvcHRpbWl6YXRpb24gaW50ZXJhY3Rpb24gdGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29n bml0aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tCistLSBWZXJpZmllcyB0aGF0IGVhY2ggcGxhbm5lciBvcHRpbWl6 YXRpb24gY29ycmVjdGx5IGhhbmRsZXMgUlBSIHdpbmRvd3MuCistLSBFdmVuIGlmIGluZGl2aWR1 YWwgb3B0aW1pemF0aW9ucyBhcmUgdGVzdGVkIGVsc2V3aGVyZSwgdGhpcyBmaWxlCistLSBwcm92 aWRlcyBhIHNpbmdsZSBjaGVja3BvaW50IGZvciBhbGwgcGxhbm5lci9SUFIgaW50ZXJhY3Rpb25z LgorLS0KKy0tIEEuIFBsYW5uZXIgT3B0aW1pemF0aW9uIFByb3RlY3Rpb24gVGVzdHMKKy0tICAg IEExLiBGcmFtZSBvcHRpbWl6YXRpb24gYnlwYXNzCistLSAgICBBMi4gUnVuIGNvbmRpdGlvbiBw dXNoZG93biBieXBhc3MKKy0tICAgIEEzLiBXaW5kb3cgZGVkdXAgcHJldmVudGlvbiAoUlBSIHZz IG5vbi1SUFIpCistLSAgICBBNC4gV2luZG93IGRlZHVwIHByZXZlbnRpb24gKHNhbWUgUEFUVEVS TiwgZGlmZmVyZW50IERFRklORSkKKy0tICAgIEE1LiBVbnVzZWQgd2luZG93IHJlbW92YWwgcHJl dmVudGlvbgorLS0gICAgQTYuIEludmVyc2UgdHJhbnNpdGlvbiBieXBhc3MKKy0tICAgIEE3LiBD b3N0IGVzdGltYXRpb24gUlBSIGF3YXJlbmVzcworLS0gICAgQTguIFN1YnF1ZXJ5IGZsYXR0ZW5p bmcgcHJldmVudGlvbgorLS0gICAgQTkuIERFRklORSBleHByZXNzaW9uIG5vbi1wcm9wYWdhdGlv bgorLS0gICAgQTEwLiBSUFIgKyBMSU1JVAorLS0KKy0tIEIuIEludGVncmF0aW9uIFNjZW5hcmlv IFRlc3RzCistLSAgICBCMS4gUlBSICsgQ1RFCistLSAgICBCMi4gUlBSICsgSk9JTgorLS0gICAg QjMuIFJQUiArIFNldCBvcGVyYXRpb25zCistLSAgICBCNC4gUlBSICsgUHJlcGFyZWQgc3RhdGVt ZW50cworLS0gICAgQjUuIFJQUiArIFBhcnRpdGlvbmVkIHRhYmxlCistLSAgICBCNi4gUlBSICsg TEFURVJBTAorLS0gICAgQjcuIFJQUiArIFJlY3Vyc2l2ZSBDVEUKKy0tICAgIEI4LiBSUFIgKyBJ bmNyZW1lbnRhbCBzb3J0CistLSAgICBCOS4gUlBSICsgVm9sYXRpbGUgZnVuY3Rpb24gaW4gREVG SU5FCistLSAgICBCMTAuIFJQUiArIENvcnJlbGF0ZWQgc3VicXVlcnkKKy0tCisKK0NSRUFURSBU QUJMRSBycHJfaW50ZWcgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfaW50ZWcg VkFMVUVTCisgICAgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDE1KSwgKDQsIDI1KSwgKDUsIDUpLAor ICAgICg2LCAzMCksICg3LCAzNSksICg4LCAyMCksICg5LCA0MCksICgxMCwgNDUpOworCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEExLiBGcmFtZSBvcHRpbWl6YXRpb24gYnlwYXNzCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0 aGF0IG9wdGltaXplX3dpbmRvd19jbGF1c2VzKCkgZG9lcyBub3QgYXBwbHkgZnJhbWUKKy0tIG9w dGltaXphdGlvbiB0byBSUFIgd2luZG93cy4gIEJvdGggcXVlcmllcyBiZWxvdyB1c2UgdGhlIHNh bWUgaW5wdXQKKy0tIGZyYW1lIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpIHdpdGgKKy0tIHJvd19udW1iZXIoKSwgd2hvc2UgcHJvc3VwcG9ydCBoYW5k bGVzCistLSBTdXBwb3J0UmVxdWVzdE9wdGltaXplV2luZG93Q2xhdXNlIGFuZCB0cmlnZ2VycyBm cmFtZSByZXdyaXRpbmcuCistLSBJbiB0aGUgbm9uLVJQUiBiYXNlbGluZSB0aGUgcGxhbm5lciBy ZXdyaXRlcyB0aGUgZnJhbWUgdG8gUk9XUworLS0gVU5CT1VOREVEIFBSRUNFRElORywgd2hpbGUg aW4gdGhlIFJQUiBjYXNlIHRoZSBndWFyZCBpbgorLS0gb3B0aW1pemVfd2luZG93X2NsYXVzZXMo KSBibG9ja3MgdGhlIHJld3JpdGUgYW5kIHRoZSBmcmFtZSBpcworLS0gcHJlc2VydmVkIGFzIHNw ZWNpZmllZC4KKworLS0gTm9uLVJQUiBiYXNlbGluZTogdGhlIHBsYW5uZXIgcmV3cml0ZXMgdGhl IGZyYW1lIHRvIFJPV1MgVU5CT1VOREVEIFBSRUNFRElORy4KK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCByb3dfbnVtYmVyKCkgT1ZFUiB3IEZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpOworCistLSBSUFIgY2FzZTogdGhlIGZyYW1lIGlzIHByZXNlcnZlZCBhcyBzcGVj aWZpZWQuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgcm93X251bWJlcigpIE9WRVIgdyBG Uk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykK KyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpOworCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEEyLiBSdW4g Y29uZGl0aW9uIHB1c2hkb3duIGJ5cGFzcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBmaW5kX3dp bmRvd19ydW5fY29uZGl0aW9ucygpIGRvZXMgbm90IHB1c2ggYSBtb25vdG9uaWMKKy0tIGZpbHRl ciBkb3duIGFzIGEgUnVuIENvbmRpdGlvbiBvbiBSUFIgd2luZG93cy4gIFJQUiBtYXRjaCBjb3Vu dHMgYXJlCistLSBkZXRlcm1pbmVkIGJ5IHBhdHRlcm4gbWF0Y2hpbmcgcmF0aGVyIHRoYW4gYnkg YSBtb25vdG9uaWMKKy0tIGFjY3VtdWxhdGlvbiBvdmVyIHRoZSBmcmFtZSwgc28gYSBmaWx0ZXIg c3VjaCBhcyAiY250ID4gMCIgY2Fubm90IGJlCistLSB1c2VkIHRvIHN0b3AgZXZhbHVhdGluZyB0 aGUgd2luZG93IGZ1bmN0aW9uIGVhcmx5LgorCistLSBOb24tUlBSIGJhc2VsaW5lOiB0aGUgZmls dGVyIGlzIGV4cGVjdGVkIHRvIGFwcGVhciBhcyBhIFJ1biBDb25kaXRpb24uCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEFT IGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisg ICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykK KykgdCBXSEVSRSBjbnQgPiAwOworCistLSBSUFIgY2FzZTogdGhlIGZpbHRlciBtdXN0IGFwcGVh ciBhcyBhIEZpbHRlciBhYm92ZSB0aGUgV2luZG93QWdnLAorLS0gbm90IGFzIGEgUnVuIENvbmRp dGlvbi4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBj b3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBC IEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdCBXSEVSRSBjbnQgPiAwOworCistLSBWZXJpZnkgdGhh dCB0aGUgUlBSIHF1ZXJ5IHN0aWxsIHJldHVybnMgZXZlcnkgcm93IHdob3NlIG1hdGNoIGNvdW50 IGlzCistLSBncmVhdGVyIHRoYW4gemVybywgY29uZmlybWluZyB0aGUgZmlsdGVyIGlzIGV2YWx1 YXRlZCBhYm92ZSB0aGUKKy0tIFdpbmRvd0FnZyByYXRoZXIgdGhhbiBjdXR0aW5nIG9mZiBwYXR0 ZXJuIG1hdGNoaW5nIHByZW1hdHVyZWx5LgorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGlk LCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAg REVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0IFdIRVJFIGNudCA+IDAKK09SREVSIEJZ IGlkOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIEEzLiBXaW5kb3cgZGVkdXAgcHJldmVudGlvbiAoUlBSIHZzIG5v bi1SUFIpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IFBvc3RncmVTUUwgZG9lcyBub3QgbWVyZ2Ug YW4gUlBSIHdpbmRvdyB3aXRoIGEgbm9uLVJQUgorLS0gd2luZG93IGV2ZW4gd2hlbiBib3RoIHNo YXJlIHRoZSBzYW1lIE9SREVSIEJZIGFuZCBmcmFtZQorLS0gc3BlY2lmaWNhdGlvbi4gIFJQUiBw YXR0ZXJuIG1hdGNoaW5nIHByb2R1Y2VzIHJlc3VsdHMgdGhhdCBhcmUKKy0tIHNlbWFudGljYWxs eSBkaWZmZXJlbnQgZnJvbSBhIHBsYWluIGZyYW1lLWJhc2VkIGFnZ3JlZ2F0ZSwgc28gdGhlCist LSB0d28gd2luZG93cyBtdXN0IHJlbWFpbiBhcyBzZXBhcmF0ZSBXaW5kb3dBZ2cgbm9kZXMuICBJ bmxpbmUgd2luZG93CistLSBzcGVjcyBhcmUgdXNlZCB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiBi ZWNhdXNlIG9ubHkgaW5saW5lIHdpbmRvd3MKKy0tIGFyZSBzdWJqZWN0IHRvIHRoZSBkZWR1cCBw YXRoOyBkaXN0aW5jdCBuYW1lZCB3aW5kb3dzIGFyZSBhbHdheXMKKy0tIGtlcHQgc2VwYXJhdGUg cmVnYXJkbGVzcyBvZiBlcXVpdmFsZW5jZS4KKworLS0gTm9uLVJQUiBiYXNlbGluZTogdHdvIGlu bGluZSB3aW5kb3dzIHdpdGggaWRlbnRpY2FsIHNwZWMgYXJlCistLSBkZWR1cGVkIGJ5IHRoZSBw bGFubmVyIGludG8gYSBzaW5nbGUgV2luZG93QWdnIG5vZGUsIGNvbmZpcm1pbmcKKy0tIHRoYXQg dGhlIGRlZHVwIHBhdGggaXMgYWN0aXZlIGZvciBub24tUlBSIHdpbmRvd3MuCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpIEFTIGNu dCwKKyAgICBzdW0odmFsKSAgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSBBUyB0b3RhbAorRlJPTSBycHJf aW50ZWc7CisKKy0tIEFuIGlubGluZSBSUFIgd2luZG93IGFuZCBhbiBpbmxpbmUgbm9uLVJQUiB3 aW5kb3cgc2hhcmUgdGhlIHNhbWUKKy0tIE9SREVSIEJZIGFuZCBmcmFtZSBidXQgbXVzdCByZW1h aW4gYXMgZGlzdGluY3QgV2luZG93QWdnIG5vZGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUCisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEg QispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkgQVMgcnByX2NudCwKKyAg ICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpIEFTIG5vcm1hbF9jbnQKK0ZST00gcnByX2lu dGVnOworCistLSBWZXJpZnkgdGhhdCB0aGUgdHdvIHdpbmRvd3MgcmV0dXJuIGluZGVwZW5kZW50 IGNvdW50cyBwZXIgcm93LAorLS0gY29uZmlybWluZyB0aGV5IHdlcmUgbm90IG1lcmdlZCBpbnRv IGEgc2luZ2xlIFdpbmRvd0FnZy4KK1NFTEVDVAorICAgIGlkLCB2YWwsCisgICAgY291bnQoKikg T1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklO RSBCIEFTIHZhbCA+IFBSRVYodmFsKSkgQVMgcnByX2NudCwKKyAgICBjb3VudCgqKSBPVkVSIChP UkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpIEFTIG5vcm1hbF9jbnQKK0ZST00gcnByX2ludGVnCitPUkRFUiBCWSBpZDsK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBBNC4gV2luZG93IGRlZHVwIHByZXZlbnRpb24gKHNhbWUgUEFUVEVSTiwg ZGlmZmVyZW50IERFRklORSkKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgaW5saW5lLXdpbmRvdyBk ZWR1cCBkb2VzIG5vdCBtZXJnZSB0d28gUlBSIHdpbmRvd3MKKy0tIHRoYXQgc2hhcmUgdGhlIHNh bWUgUEFUVEVSTiBzdHJ1Y3R1cmUgYnV0IGhhdmUgZGlmZmVyZW50IERFRklORQorLS0gY29uZGl0 aW9ucy4gIEV2ZW4gdGhvdWdoIHRoZSBPUkRFUiBCWSwgZnJhbWUsIGFuZCBQQVRURVJOIGNvaW5j aWRlLAorLS0gdGhlIGRpZmZlcmluZyBERUZJTkUgZXhwcmVzc2lvbnMgY2xhc3NpZnkgcm93cyBk aWZmZXJlbnRseSBhbmQKKy0tIG11c3QgdGhlcmVmb3JlIHlpZWxkIHR3byBzZXBhcmF0ZSBXaW5k b3dBZ2cgbm9kZXMuICBJbmxpbmUgc3BlY3MKKy0tIGFyZSB1c2VkIGhlcmUgYmVjYXVzZSBkZWR1 cCBvbmx5IGFwcGxpZXMgdG8gaW5saW5lIHdpbmRvd3MuCisKKy0tIEJhc2VsaW5lOiB0d28gaW5s aW5lIFJQUiB3aW5kb3dzIHRoYXQgYXJlIHN0cnVjdHVyYWxseSBpZGVudGljYWwKKy0tIChzYW1l IE9SREVSIEJZLCBmcmFtZSwgUEFUVEVSTiwgYW5kIERFRklORSkgYXJlIGRlZHVwZWQgYnkgdGhl CistLSBwYXJzZXIgaW50byBhIHNpbmdsZSBXaW5kb3dBZ2cgbm9kZSwgY29uZmlybWluZyB0aGF0 IHBhcnNlci1sZXZlbAorLS0gZGVkdXAgaXMgYWN0aXZlIGZvciBSUFIgd2luZG93cyB3aG9zZSBE RUZJTkUgbWF0Y2hlcy4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCop IE9WRVIgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJ TkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpIEFTIGNudCwKKyAgICBzdW0odmFsKSAgT1ZFUiAoT1JE RVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZh bCA+IFBSRVYodmFsKSkgQVMgdG90YWwKK0ZST00gcnByX2ludGVnOworCistLSBUd28gaW5saW5l IFJQUiB3aW5kb3dzIHdpdGggdGhlIHNhbWUgUEFUVEVSTiBidXQgb3Bwb3NpdGUgREVGSU5FCist LSBjb25kaXRpb25zIG11c3QgcmVtYWluIGFzIHNlcGFyYXRlIFdpbmRvd0FnZyBub2Rlcy4KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVW KHZhbCkpIEFTIGNudF91cCwKKyAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsIDwgUFJFVih2YWwpKSBB UyBjbnRfZG93bgorRlJPTSBycHJfaW50ZWc7CisKKy0tIFZlcmlmeSB0aGF0IHRoZSB0d28gd2lu ZG93cyByZXR1cm4gZGlmZmVyZW50IGNvdW50cyBwZXIgcm93LAorLS0gY29uZmlybWluZyB0aGUg REVGSU5FIGNvbmRpdGlvbnMgd2VyZSBub3QgY29sbGFwc2VkIGJ5IGRlZHVwLgorU0VMRUNUCisg ICAgaWQsIHZhbCwKKyAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFU VEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKSBBUyBjbnRf dXAsCisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEg QispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA8IFBSRVYodmFsKSkgQVMgY250X2Rvd24KK0ZS T00gcnByX2ludGVnCitPUkRFUiBCWSBpZDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBNS4gVW51c2VkIHdpbmRv dyByZW1vdmFsIHByZXZlbnRpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgcmVtb3ZlX3VudXNl ZF9zdWJxdWVyeV9vdXRwdXRzKCkgZG9lcyBub3QgZHJvcCBhbiBSUFIKKy0tIHdpbmRvdyBmdW5j dGlvbiBldmVuIHdoZW4gdGhlIG91dGVyIHF1ZXJ5IGRvZXMgbm90IHJlZmVyZW5jZSBpdHMKKy0t IHJlc3VsdC4gIFRoZSBSUFIgV2luZG93QWdnIG5vZGUgaXMgcmVzcG9uc2libGUgZm9yIHBlcmZv cm1pbmcgcGF0dGVybgorLS0gbWF0Y2hpbmcsIHNvIHJlbW92aW5nIHRoZSB3aW5kb3cgZnVuY3Rp b24gd291bGQgc2lsZW50bHkgc2tpcCB0aGUKKy0tIHBhdHRlcm4gbWF0Y2ggZXZlbiB0aG91Z2gg dGhlIHN1cnJvdW5kaW5nIHF1ZXJ5IHN0aWxsIGRlcGVuZHMgb24KKy0tIFJQUiBzZW1hbnRpY3Mu CisKKy0tIFRoZSBvdXRlciBxdWVyeSBpZ25vcmVzIHRoZSBwZXItcm93IHdpbmRvdyByZXN1bHQs IHlldCBwYXR0ZXJuCistLSBtYXRjaGluZyBtdXN0IHN0aWxsIGV4ZWN1dGUuICBUaGUgcGxhbiBt dXN0IHN0aWxsIGNvbnRhaW4gYQorLS0gV2luZG93QWdnIG5vZGUgYmVsb3cgdGhlIG91dGVyIEFn Z3JlZ2F0ZTsgaWYgdGhlIHdpbmRvdyB3ZXJlCistLSByZW1vdmVkLCBvbmx5IEFnZ3JlZ2F0ZSAr IFNlcSBTY2FuIHdvdWxkIGFwcGVhci4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2ludGVnCisg ICAgV0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBB IEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdDsKKworU0VMRUNUIGNvdW50KCopIEZST00gKAorICAg IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAo CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gUFJFVih2 YWwpKQorKSB0OworCistLSBUaGUgREVGSU5FIGV4cHJlc3Npb24gcmVmZXJlbmNlcyBQUkVWKHZh bCksIHNvIHRoZSB3aW5kb3cgbXVzdCBiZQorLS0gcHJlc2VydmVkIGV2ZW4gaWYgdGhlIG91dGVy IHF1ZXJ5IG9ubHkgYWdncmVnYXRlcyBvdmVyIHRoZSBjb3VudC4KKy0tIFRoZSBwbGFuIG11c3Qg c3RpbGwgY29udGFpbiBhIFdpbmRvd0FnZyB3aXRoIHRoZSBQQVRURVJOL0RFRklORQorLS0gaW50 YWN0LgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50KCopLCBzdW0oYykgRlJPTSAo CisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBjIEZST00gcnByX2ludGVnCisgICAgV0lO RE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZh bCA+IFBSRVYodmFsKSkKKykgdDsKKworU0VMRUNUIGNvdW50KCopLCBzdW0oYykgRlJPTSAoCisg ICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBjIEZST00gcnByX2ludGVnCisgICAgV0lORE9X IHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+ IFBSRVYodmFsKSkKKykgdDsKKworLS0gVGhlIERFRklORSBleHByZXNzaW9uIGNvbnRhaW5zIG5v IG5hdmlnYXRpb24sIGJ1dCB0aGUgUlBSIHdpbmRvdworLS0gbXVzdCBzdGlsbCBiZSBwcmVzZXJ2 ZWQgYmVjYXVzZSB0aGUgbWF0Y2ggc3RydWN0dXJlIGl0c2VsZiBhZmZlY3RzCistLSB0aGUgY291 bnQuICBUaGUgcGxhbiBtdXN0IHJldGFpbiB0aGUgV2luZG93QWdnLgorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIGNvdW50KCopLCBzdW0oYykgRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCop IE9WRVIgdyBBUyBjIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg UEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIFRSVUUpCispIHQ7CisKK1NFTEVDVCBj b3VudCgqKSwgc3VtKGMpIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgQVMgYyBG Uk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQor ICAgICAgICBERUZJTkUgQSBBUyBUUlVFKQorKSB0OworCistLSBYWFg6ICJ2YWwiIGlzIG5vbi1y ZXNqdW5rIGluIHRoZSBzdWJxdWVyeSBvdXRwdXQgYW5kIGlzIG5vdAorLS0gcmVmZXJlbmNlZCBi eSB0aGUgb3V0ZXIgcXVlcnkuICBXaXRob3V0IGEgZ3VhcmQsCistLSByZW1vdmVfdW51c2VkX3N1 YnF1ZXJ5X291dHB1dHMoKSB3b3VsZCByZXBsYWNlIGl0IHdpdGggTlVMTCBpbgorLS0gdGhlIHN1 YnF1ZXJ5IG91dHB1dCwgYW5kIHRoYXQgcmVwbGFjZW1lbnQgcHJvcGFnYXRlcyB0byB0aGUKKy0t IHNjYW4ncyB0YXJnZXRsaXN0IC0tIERFRklORSB3b3VsZCB0aGVuIGV2YWx1YXRlIHdpdGggTlVM TAorLS0gaW5wdXRzLiAgVGhlIHRhcmdldGxpc3QgaGFzIG5vIHdheSB0byBkaXN0aW5ndWlzaCAi ZXhwb3NlZCB0bworLS0gdGhlIG91dGVyIHF1ZXJ5IiBmcm9tICJyZWZlcmVuY2VkIG9ubHkgYnkg REVGSU5FIiwgc28gdGhlCistLSBvcHRpbWl6YXRpb24gY2Fubm90IGJlIGFwcGxpZWQgc2VsZWN0 aXZlbHkuICBUaGUgY29sdW1uIGd1YXJkCistLSBpbiBhbGxwYXRocy5jIGJsb2NrcyB0aGlzIHJl cGxhY2VtZW50IGZvciBhbnkgY29sdW1uIHJlZmVyZW5jZWQKKy0tIGJ5IGFuIFJQUiBERUZJTkUg Y2xhdXNlLCBrZWVwaW5nIHRoZSBXaW5kb3dBZ2cgd2l0aCBERUZJTkUKKy0tIGFjdGl2ZSBpbiB0 aGUgcGxhbi4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBjb3VudCgqKSBGUk9NICgKKyAg ICBTRUxFQ1QgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklO RSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdDsKKworU0VMRUNUIGNvdW50KCopIEZST00gKAor ICAgIFNFTEVDVCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRP VyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVG SU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0OworCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEE2LiBJbnZlcnNl IHRyYW5zaXRpb24gYnlwYXNzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IFJQUiB3aW5kb3dzIGRv IG5vdCB1c2UgdGhlIG1vdmluZyBhZ2dyZWdhdGUgKGludmVyc2UKKy0tIHRyYW5zaXRpb24pIG9w dGltaXphdGlvbi4gIE1vdmluZyBhZ2dyZWdhdGVzIG1haW50YWluIHN0YXRlIGJ5CistLSBhZGRp bmcgYXJyaXZpbmcgcm93cyBhbmQgc3VidHJhY3RpbmcgbGVhdmluZyByb3dzLCBidXQgYW4gUlBS CistLSByZWR1Y2VkIGZyYW1lIGlzIG5vdCBhIHNsaWRpbmcgd2luZG93OyB0aGUgc2V0IG9mIHJv d3MgaW5jbHVkZWQgaW4KKy0tIHRoZSBmcmFtZSBpcyBkZXRlcm1pbmVkIGJ5IHBhdHRlcm4gbWF0 Y2hpbmcgYW5kIGNhbm5vdCBiZSBkZXJpdmVkCistLSBpbmNyZW1lbnRhbGx5IGZyb20gdGhlIHBy ZXZpb3VzIGZyYW1lLgorCistLSBzdW0oKSB3b3VsZCBub3JtYWxseSBiZSBlbGlnaWJsZSBmb3Ig dGhlIG1vdmluZyBhZ2dyZWdhdGUKKy0tIG9wdGltaXphdGlvbjsgdW5kZXIgUlBSIGl0IG11c3Qg YmUgY29tcHV0ZWQgZnJvbSBzY3JhdGNoIG92ZXIgZWFjaAorLS0gcmVkdWNlZCBmcmFtZSwgYW5k IHRoZSByZXR1cm5lZCB2YWx1ZXMgbXVzdCBtYXRjaCB0aGUgcGF0dGVybi4KKy0tIE5vdGU6IGlu dmVyc2UtdHJhbnNpdGlvbiBzZWxlY3Rpb24gaXMgbm90IGV4cG9zZWQgaW4gdGhlIHBsYW4sIHNv CistLSB0aGVyZSBpcyBubyBkaXJlY3QgRVhQTEFJTiBhc3NlcnRpb24gZm9yIGl0LiAgVGhlIHN0 cnVjdHVyYWwKKy0tIGd1YXJhbnRlZSBpcyB0aGF0IFJQUiB1c2VzIGl0cyBvd24gbmF2aWdhdGlv biBtYXJrLCBkaXN0aW5jdCBmcm9tCistLSB0aGUgbW92aW5nLWFnZ3JlZ2F0ZSBtYXJrLCBzbyB0 aGUgaW52ZXJzZS10cmFuc2l0aW9uIHBhdGggaXMKKy0tIG5ldmVyIHJlYWNoZWQgb24gdGhlIFJQ UiBzaWRlLiAgVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQKKy0tIHNlcGFyYXRpb24gaW5kaXJlY3Rs eTogaWYgaW52ZXJzZSB0cmFuc2l0aW9uIGxlYWtlZCBpbnRvIHRoZSBSUFIKKy0tIHBhdGgsIHN0 YXRlIHdvdWxkIG1peCBhY3Jvc3MgbWF0Y2ggYm91bmRhcmllcyBhbmQgcGF0dGVybl9zdW0KKy0t IHdvdWxkIGRpdmVyZ2UgZnJvbSB0aGUgZXhwZWN0ZWQgb3V0cHV0LCBmYWlsaW5nIHRoZSByZWdy ZXNzaW9uLgorU0VMRUNUIGlkLCB2YWwsCisgICAgc3VtKHZhbCkgT1ZFUiB3IEFTIHBhdHRlcm5f c3VtCitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBBNy4gQ29zdCBlc3RpbWF0aW9uIFJQUiBhd2FyZW5lc3MKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g Y29zdF93aW5kb3dhZ2coKSBtdXN0IGFjY291bnQgZm9yIERFRklORSBleHByZXNzaW9uIGV2YWx1 YXRpb24gY29zdC4KKy0tIFZlcmlmeSBSUFIgV2luZG93QWdnIGNvc3QgPiBub24tUlBSIFdpbmRv d0FnZyBjb3N0LgorCitDUkVBVEUgRlVOQ1RJT04gZ2V0X3dpbmRvd2FnZ19jb3N0KHF1ZXJ5IHRl eHQpIFJFVFVSTlMgbnVtZXJpYyBBUyAkJAorREVDTEFSRQorICAgIHBsYW4ganNvbjsKKyAgICBj b3N0IG51bWVyaWM7CitCRUdJTgorICAgIEVYRUNVVEUgJ0VYUExBSU4gKEZPUk1BVCBKU09OKSAn IHx8IHF1ZXJ5IElOVE8gcGxhbjsKKyAgICBjb3N0IDo9IChwbGFuLT4wLT4nUGxhbictPj4nVG90 YWwgQ29zdCcpOjpudW1lcmljOworICAgIFJFVFVSTiBjb3N0OworRU5EOworJCQgTEFOR1VBR0Ug cGxwZ3NxbDsKKworU0VMRUNUIGdldF93aW5kb3dhZ2dfY29zdCgKKyAgICAnU0VMRUNUIGNvdW50 KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICAgICAgICAgICBQQVRURVJOIChBIEIrIEMrKSBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCks IEMgQVMgdmFsIDwgUFJFVih2YWwpKScpCisgICAgPgorICAgIGdldF93aW5kb3dhZ2dfY29zdCgK KyAgICAnU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgICBXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKScpCisgICAgQVMgcnByX2Nvc3RfaXNfaGlnaGVyOworCitEUk9QIEZVTkNUSU9O IGdldF93aW5kb3dhZ2dfY29zdCh0ZXh0KTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBOC4gU3VicXVlcnkgZmxh dHRlbmluZyBwcmV2ZW50aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IGEgc3VicXVlcnkgY29u dGFpbmluZyBhbiBSUFIgd2luZG93IGlzIG5vdCBmbGF0dGVuZWQKKy0tIGludG8gdGhlIG91dGVy IHF1ZXJ5LiAgaXNfc2ltcGxlX3N1YnF1ZXJ5KCkgYWxyZWFkeSBibG9ja3MgcHVsbHVwCistLSBm b3Igc3VicXVlcmllcyB3aXRoIHdpbmRvdyBmdW5jdGlvbnMgaW4gZ2VuZXJhbDsgdGhpcyB0ZXN0 IGNvbmZpcm1zCistLSB0aGUgcnVsZSBjb250aW51ZXMgdG8gYXBwbHkgdG8gUlBSIHdpbmRvd3Ms IHNvIEVYUExBSU4gbXVzdCBzdGlsbAorLS0gc2hvdyBhIFN1YnF1ZXJ5IFNjYW4gYWJvdmUgdGhl IFJQUiBXaW5kb3dBZ2cuCisKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAor ICAgIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJf aW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEg QispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgc3ViCitXSEVSRSBj bnQgPiAwOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKy0tIEE5LiBERUZJTkUgZXhwcmVzc2lvbiBub24tcHJvcGFnYXRp b24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgREVGSU5FIGV4cHJlc3Npb25zIGFyZSBub3QgcHJv cGFnYXRlZCBpbnRvIHRoZQorLS0gdGFyZ2V0bGlzdCBvZiBhbnkgdXBwZXIgV2luZG93QWdnIG5v ZGUuICBPbmx5IHRoZSBjb2x1bW4gcmVmZXJlbmNlcworLS0gY29uc3VtZWQgYnkgREVGSU5FIHNo b3VsZCBiZSBwYXNzZWQgdXA7IHRoZSBmdWxsIERFRklORSBleHByZXNzaW9uCistLSBpcyBtZWFu aW5nZnVsIG9ubHkgaW5zaWRlIHRoZSBSUFIgV2luZG93QWdnIHRoYXQgb3ducyBpdC4KKy0tIEVY UExBSU4gVkVSQk9TRSBpcyB0aGVyZWZvcmUgZXhwZWN0ZWQgdG8gc2hvdyBhIGNsZWFuIHRhcmdl dGxpc3Qgb24KKy0tIHRoZSBvdXRlciBXaW5kb3dBZ2csIHdpdGggbm8gREVGSU5FLWRlcml2ZWQg ZXhwcmVzc2lvbiBsZWFraW5nIGluLgorLS0gTm90ZTogY29sdW1ucyByZWZlcmVuY2VkIGJ5IERF RklORSAoZS5nLiwgInZhbCIpIG1heSBhcHBlYXIgYXMKKy0tIHJlc2p1bmsgZW50cmllcyBpbiB1 cHBlciBXaW5kb3dBZ2cgdGFyZ2V0bGlzdHMgLS0gdGhhdCBpcyBhCistLSBoYXJtbGVzcyBieXBy b2R1Y3Qgb2YgdGhlIGNvbHVtbiBndWFyZCdzIGJyb2FkIHNjb3BlIGFuZCBkb2VzIG5vdAorLS0g YWZmZWN0IGNsaWVudCBvdXRwdXQuICBUaGUgY2xhaW0gaGVyZSBpcyBsaW1pdGVkIHRvIHRoZSBm dWxsCistLSBERUZJTkUgYm9vbGVhbiBleHByZXNzaW9uLgorCitFWFBMQUlOIChWRVJCT1NFLCBD T1NUUyBPRkYpCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHdfcnByIEFTIHJwcl9jbnQsCisg ICAgY291bnQoKikgT1ZFUiB3X25vcm1hbCBBUyBub3JtYWxfY250CitGUk9NIHJwcl9pbnRlZwor V0lORE9XCisgICAgd19ycHIgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIr KQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpLAorICAgIHdfbm9ybWFsIEFT IChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpOworCistLSBFeGVjdXRpbmcgdGhlIHNhbWUgcXVlcnkgc2hvd3MgdGhl IGNsaWVudCByZXN1bHQgaXMgbGltaXRlZCB0bworLS0gdGhlIHR3byBwcm9qZWN0ZWQgY29sdW1u czsgImlkIiBhbmQgInZhbCIgdGhhdCBhcHBlYXJlZCBpbiB0aGUKKy0tIHVwcGVyIFdpbmRvd0Fn ZyBPdXRwdXQgbGluZSBhcmUgcmVzanVuay1vbmx5IGFuZCBkbyBub3QgcmVhY2gKKy0tIHRoZSBj bGllbnQuCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHdfcnByIEFTIHJwcl9jbnQsCisgICAg Y291bnQoKikgT1ZFUiB3X25vcm1hbCBBUyBub3JtYWxfY250CitGUk9NIHJwcl9pbnRlZworV0lO RE9XCisgICAgd19ycHIgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQor ICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpLAorICAgIHdfbm9ybWFsIEFTIChP UkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCitPUkRFUiBCWSBycHJfY250IERFU0MsIG5vcm1hbF9jbnQgREVTQzsKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBBMTAuIFJQUiArIExJTUlUCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIExJTUlUIG11c3Qgbm90IGlu dGVyZmVyZSB3aXRoIFJQUiBwYXR0ZXJuIG1hdGNoaW5nLiAgVGhlIExpbWl0CistLSBub2RlIG11 c3Qgc2l0IGFib3ZlIHRoZSBXaW5kb3dBZ2cgc28gdGhhdCBwYXR0ZXJuIG1hdGNoaW5nIHJ1bnMK Ky0tIG9uIHRoZSBmdWxsIHBhcnRpdGlvbiBmaXJzdDsgdGhlIHJlc3VsdCBpcyB0aGVuIGEgcHJl Zml4IG9mIHRoZQorLS0gdW4tTElNSVRlZCBvdXRwdXQuICBQdXNoaW5nIExpbWl0IGJlbG93IHRo ZSBXaW5kb3dBZ2cgd291bGQKKy0tIHRydW5jYXRlIGlucHV0IGJlZm9yZSBtYXRjaGluZyBhbmQg c2lsZW50bHkgZHJvcCB2YWxpZCBtYXRjaGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+ IFBSRVYodmFsKSkKK0xJTUlUIDU7CisKKy0tIFJlZmVyZW5jZTogdW4tTElNSVRlZCByZXN1bHQg YWdhaW5zdCB3aGljaCB0aGUgTElNSVQgNSByZXN1bHQgaXMKKy0tIGNvbXBhcmVkLgorU0VMRUNU IGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+ IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOworCistLSBMSU1JVCA1IGNhc2U7IHRoZSBmaXJzdCBm aXZlIHJvd3MgbXVzdCBtYXRjaCB0aGUgcmVmZXJlbmNlIGFib3ZlLgorU0VMRUNUIGlkLCB2YWws IGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFs KSkKK0xJTUlUIDU7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gQjEuIFJQUiArIENURQorLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJp ZnkgdGhhdCBhbiBSUFIgd2luZG93IGVtYmVkZGVkIGluc2lkZSBhIENURSBiZWhhdmVzIHRoZSBz YW1lIGFzCistLSBhIGRpcmVjdCBSUFIgcXVlcnk6CistLSAgICgxKSBBIHNpbmdsZS1yZWZlcmVu Y2UgQ1RFIGlzIGlubGluZWQgYnkgdGhlIHBsYW5uZXIgYW5kIHlpZWxkcworLS0gICAgICAgcGVy LXJvdyByZXN1bHRzIGlkZW50aWNhbCB0byB0aGUgZGlyZWN0IFJQUiBxdWVyeS4KKy0tICAgKDIp IEEgbXVsdGktcmVmZXJlbmNlIENURSBpcyBtYXRlcmlhbGl6ZWQgKENURSBTY2FuIGFwcGVhcnMg aW4KKy0tICAgICAgIHRoZSBwbGFuKSBzbyBwYXR0ZXJuIG1hdGNoaW5nIHJ1bnMgb25jZSwgYW5k IGV2ZXJ5IHJlZmVyZW5jZQorLS0gICAgICAgb2JzZXJ2ZXMgdGhlIHNhbWUgbWF0Y2ggcmVzdWx0 cy4KKworLS0gQmFzZWxpbmU6IGRpcmVjdCBSUFIgcHJvZHVjZXMgdGhlIHBlci1yb3cgcmVmZXJl bmNlIG91dHB1dC4KK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9N IHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAg ICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsKKworLS0gU2luZ2xl LXJlZmVyZW5jZSBDVEU6IHBsYW4gaGFzIG5vICJDVEUgcnByX3Jlc3VsdCIgc2NvcGUsIHNob3dp bmcKKy0tIHRoZSBDVEUgd2FzIGlubGluZWQgaW50byB0aGUgc3Vycm91bmRpbmcgcXVlcnkuCitF WFBMQUlOIChDT1NUUyBPRkYpCitXSVRIIHJwcl9yZXN1bHQgQVMgKAorICAgIFNFTEVDVCBpZCwg dmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERF RklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykKK1NFTEVDVCBpZCwgdmFsLCBjbnQgRlJPTSBy cHJfcmVzdWx0IE9SREVSIEJZIGlkOworCistLSBSZXN1bHQgbXVzdCBtYXRjaCB0aGUgYmFzZWxp bmUgcm93LWZvci1yb3cuCitXSVRIIHJwcl9yZXN1bHQgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFs LCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklO RSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKKykKK1NFTEVDVCBpZCwgdmFsLCBjbnQgRlJPTSBycHJf cmVzdWx0IE9SREVSIEJZIGlkOworCistLSBNdWx0aS1yZWZlcmVuY2UgQ1RFIChzZWxmLWpvaW4p OiBwbGFuIGhhcyBhICJDVEUgcnByX3Jlc3VsdCIgc2NvcGUKKy0tIGFuZCBDVEUgU2NhbiBub2Rl cyBvbiBib3RoIHNpZGVzLCBzaG93aW5nIHRoZSBDVEUgd2FzIG1hdGVyaWFsaXplZAorLS0gYW5k IHBhdHRlcm4gbWF0Y2hpbmcgcmFuIG9ubHkgb25jZS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1dJ VEggcnByX3Jlc3VsdCBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2 YWwpKQorKQorU0VMRUNUIHIxLmlkLCByMS5jbnQKK0ZST00gcnByX3Jlc3VsdCByMQorSk9JTiBy cHJfcmVzdWx0IHIyIE9OIHIxLmlkID0gcjIuaWQgQU5EIHIxLmNudCA9IHIyLmNudAorV0hFUkUg cjEuY250ID4gMAorT1JERVIgQlkgcjEuaWQ7CisKKy0tIFJlc3VsdDogYm90aCByZWZlcmVuY2Vz IHNlZSB0aGUgc2FtZSBtYXRjaCBjb3VudHMsIHNvIHRoZSBzZWxmLWpvaW4KKy0tIHByZXNlcnZl cyBhbGwgbWF0Y2hlZCByb3dzIGZyb20gdGhlIGJhc2VsaW5lLgorV0lUSCBycHJfcmVzdWx0IEFT ICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00g cnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispCitTRUxFQ1Qg cjEuaWQsIHIxLmNudAorRlJPTSBycHJfcmVzdWx0IHIxCitKT0lOIHJwcl9yZXN1bHQgcjIgT04g cjEuaWQgPSByMi5pZCBBTkQgcjEuY250ID0gcjIuY250CitXSEVSRSByMS5jbnQgPiAwCitPUkRF UiBCWSByMS5pZDsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBCMi4gUlBSICsgSk9JTgorLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJp ZnkgdGhhdCBhbiBSUFIgc3VicXVlcnkgY2FuIGJlIGpvaW5lZCB3aXRoIGFub3RoZXIgcmVsYXRp b24uCistLSBUd28gYXNwZWN0cyBhcmUgY2hlY2tlZCBhZ2FpbnN0IGEgbm9uLVJQUiBiYXNlbGlu ZToKKy0tICAgKDEpIEZsYXR0ZW5pbmc6IGEgbm9uLVJQUiBzdWJxdWVyeSBpcyBwdWxsZWQgdXAg YnkgdGhlIHBsYW5uZXIKKy0tICAgICAgIChubyBTdWJxdWVyeSBTY2FuIGluIHRoZSBwbGFuKTsg YW4gUlBSIHN1YnF1ZXJ5IGlzIGtlcHQKKy0tICAgICAgIHVuLWZsYXR0ZW5lZCAoU3VicXVlcnkg U2NhbiBhYm92ZSBXaW5kb3dBZ2cpLgorLS0gICAoMikgSm9pbiBjb3JyZWN0bmVzczogdGhlIGpv aW4gYWxpZ25zIGVhY2ggUlBSIG1hdGNoIHJvdyB3aXRoCistLSAgICAgICB0aGUgZGltZW5zaW9u LXRhYmxlIHJvdyBvbiB0aGUgc2FtZSBrZXkuCisKK0NSRUFURSBUQUJMRSBycHJfaW50ZWcyIChp ZCBJTlQsIGxhYmVsIFRFWFQpOworSU5TRVJUIElOVE8gcnByX2ludGVnMiBWQUxVRVMKKyAgICAo MSwgJ2EnKSwgKDIsICdiJyksICgzLCAnYycpLCAoNCwgJ2QnKSwgKDUsICdlJyksCisgICAgKDYs ICdmJyksICg3LCAnZycpLCAoOCwgJ2gnKSwgKDksICdpJyksICgxMCwgJ2onKTsKKworLS0gQmFz ZWxpbmU6IGEgbm9uLVJQUiBzdWJxdWVyeSBpcyBmbGF0dGVuZWQgYnkgdGhlIHBsYW5uZXIuICBO bworLS0gU3VicXVlcnkgU2NhbiBub2RlIGFwcGVhcnM7IHRoZSBpbm5lciBTRUxFQ1QgaXMgbWVy Z2VkIGludG8gdGhlCistLSBvdXRlciBqb2luLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IHIuaWQsIHIudmFsLCBqLmxhYmVsCitGUk9NIChTRUxFQ1QgaWQsIHZhbCBGUk9NIHJwcl9pbnRl ZykgcgorSk9JTiBycHJfaW50ZWcyIGogT04gci5pZCA9IGouaWQKK09SREVSIEJZIHIuaWQ7CisK Ky0tIFJQUiBzdWJxdWVyeSBKT0lOOiB0aGUgU3VicXVlcnkgU2NhbiBpcyBwcmVzZXJ2ZWQgYWJv dmUgdGhlCistLSBXaW5kb3dBZ2csIGNvbmZpcm1pbmcgdGhlIFJQUiBzdWJxdWVyeSBpcyBub3Qg ZmxhdHRlbmVkLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHIuaWQsIHIuY250LCBqLmxh YmVsCitGUk9NICgKKyAgICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBG Uk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFU VEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSByCitK T0lOIHJwcl9pbnRlZzIgaiBPTiByLmlkID0gai5pZAorV0hFUkUgci5jbnQgPiAwCitPUkRFUiBC WSByLmlkOworCistLSBSZXN1bHQ6IG1hdGNoZWQgUlBSIHJvd3MgYWxpZ24gd2l0aCBkaW1lbnNp b24gcm93cyBvbiBpZCwgc2hvd2luZworLS0gdGhlIGpvaW4gY29ycmVjdGx5IHBhaXJzIHBlci1y b3cgbWF0Y2ggY291bnRzIHdpdGggdGhlaXIgbGFiZWxzLgorU0VMRUNUIHIuaWQsIHIuY250LCBq LmxhYmVsCitGUk9NICgKKyAgICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAg ICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg UEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSBy CitKT0lOIHJwcl9pbnRlZzIgaiBPTiByLmlkID0gai5pZAorV0hFUkUgci5jbnQgPiAwCitPUkRF UiBCWSByLmlkOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIEIzLiBSUFIgKyBTZXQgb3BlcmF0aW9ucworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBWZXJpZnkgdGhhdCBSUFIgcmVzdWx0cyBjb21iaW5lIGNvcnJlY3RseSB3aXRoIG5vbi1S UFIgcmVzdWx0cworLS0gdW5kZXIgYSBVTklPTiBBTEwuICBUaGUgcGxhbiBtdXN0IHNob3cgYW4g QXBwZW5kIG5vZGUgd2l0aCB0d28KKy0tIGluZGVwZW5kZW50IGNoaWxkIHBsYW5zOiB0aGUgUlBS IGJyYW5jaCB3aXRoIFBhdHRlcm4vREVGSU5FIGFjdGl2ZSwKKy0tIGFuZCB0aGUgbm9uLVJQUiBi cmFuY2ggd2l0aCBhIHBsYWluIFdpbmRvd0FnZy4gIEVhY2ggY2hpbGQgc2NhbnMKKy0tIHRoZSBi YXNlIHJlbGF0aW9uIG9uIGl0cyBvd24gYW5kIGNvbnRyaWJ1dGVzIGl0cyByb3dzIHRvIHRoZQor LS0gdW5pb25lZCBvdXRwdXQuCisKKy0tIFBsYW46IEFwcGVuZCB3aXRoIHR3byBpbmRlcGVuZGVu dCBjaGlsZHJlbi4gIFRoZSBSUFIgYnJhbmNoIGhhcyBhCistLSBXaW5kb3dBZ2cgY2Fycnlpbmcg UGF0dGVybi9OYXYgTWFyayBMb29rYmFjazsgdGhlIG5vbi1SUFIgYnJhbmNoCistLSBoYXMgYSBw bGFpbiBXaW5kb3dBZ2cgd2l0aCBubyBwYXR0ZXJuIG1ldGFkYXRhLgorRVhQTEFJTiAoQ09TVFMg T0ZGKQorU0VMRUNUIGlkLCBjbnQsICdycHInIEFTIHNvdXJjZSBGUk9NICgKKyAgICBTRUxFQ1Qg aWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRP VyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVG SU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0IFdIRVJFIGNudCA+IDAKK1VOSU9OIEFMTAor U0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZCkgQVMgY250LCAnbm9ybWFsJyBB UyBzb3VyY2UKK0ZST00gcnByX2ludGVnCitPUkRFUiBCWSBzb3VyY2UsIGlkOworCistLSBSZXN1 bHQ6IHJvd3MgZnJvbSBib3RoIGJyYW5jaGVzIGFyZSBwcmVzZW50IGluIHRoZSB1bmlvbmVkIG91 dHB1dC4KKy0tIFRoZSBSUFIgYnJhbmNoIGVtaXRzIG9ubHkgbWF0Y2hlZCByb3dzIChjbnQgPiAw KSwgd2hpbGUgdGhlCistLSBub24tUlBSIGJyYW5jaCBlbWl0cyBhbGwgcm93cyB3aXRoIGl0cyBv d24gY291bnQgdmFsdWVzLgorU0VMRUNUIGlkLCBjbnQsICdycHInIEFTIHNvdXJjZSBGUk9NICgK KyAgICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRl ZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykK KyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0IFdIRVJFIGNudCA+IDAK K1VOSU9OIEFMTAorU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZCkgQVMgY250 LCAnbm9ybWFsJyBBUyBzb3VyY2UKK0ZST00gcnByX2ludGVnCitPUkRFUiBCWSBzb3VyY2UsIGlk OworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tIEI0LiBSUFIgKyBQcmVwYXJlZCBzdGF0ZW1lbnRzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IFZlcmlmeSB0aGF0IFJQUiBxdWVyaWVzIHN1cnZpdmUgdGhlIHByZXBhcmVkLXN0YXRlbWVudCBw YXRoIGJ5CistLSBleGVyY2lzaW5nIGJvdGggcGxhbmNhY2hlIG1vZGVzIHdpdGggYSBwYXJhbWV0 ZXIgdGhhdCBmZWVkcyBpbnRvCistLSBSUFIncyBuYXZpZ2F0aW9uIG9mZnNldCAoUFJFVih2YWws ICQxKSkuICBUaGUgcGFyYW1ldGVyIHN1cmZhY2VzCistLSB0aGUgUlBSLXNwZWNpZmljIHBsYW5j YWNoZSBkaWZmZXJlbmNlOgorLS0gICAtIGN1c3RvbSBwbGFuOiAiTmF2IE1hcmsgTG9va2JhY2si IGlzIHJlc29sdmVkIHRvIHRoZSBsaXRlcmFsCistLSAgICAgcGFyYW1ldGVyIHZhbHVlIGF0IHBs YW4gdGltZSAoZS5nLiwgIk5hdiBNYXJrIExvb2tiYWNrOiAxIikuCistLSAgIC0gZ2VuZXJpYyBw bGFuOiAiTmF2IE1hcmsgTG9va2JhY2siIGlzIGRlZmVycmVkIHRvIGV4ZWN1dGlvbiBhbmQKKy0t ICAgICBhcHBlYXJzIGFzICJOYXYgTWFyayBMb29rYmFjazogcnVudGltZSIgaW4gdGhlIHBsYW4u CistLSBUaGUgcmVzdWx0IG11c3QgYmUgaWRlbnRpY2FsIHVuZGVyIGJvdGggbW9kZXMuCisKKy0t IFJlZ2lzdGVyIHRoZSBwcmVwYXJlZCBzdGF0ZW1lbnQ7IERFRklORSB1c2VzIFBSRVYodmFsLCAk MSkgc28gdGhlCistLSBwYXJhbWV0ZXIgcmVhY2hlcyBSUFIncyBuYXZpZ2F0aW9uIG1hY2hpbmVy eS4KK1BSRVBBUkUgcnByX3ByZXYoaW50KSBBUworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9W RVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsLCAkMSkpCitPUkRF UiBCWSBpZDsKKworLS0gQ3VzdG9tIHBsYW46IE5hdiBNYXJrIExvb2tiYWNrIHJlc29sdmVkIHRv IHRoZSBsaXRlcmFsIDEuCitTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfY3VzdG9tX3BsYW47 CitFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcnByX3ByZXYoMSk7CitFWEVDVVRFIHJwcl9w cmV2KDEpOworCistLSBHZW5lcmljIHBsYW46IE5hdiBNYXJrIExvb2tiYWNrIGRlZmVycmVkIHRv IGV4ZWN1dGlvbiwgc2hvd24gYXMKKy0tICJydW50aW1lIiBpbiB0aGUgcGxhbi4gIFJlc3VsdCBt dXN0IG1hdGNoIHRoZSBjdXN0b20tcGxhbiByZXN1bHQKKy0tIGV4YWN0bHkuCitTRVQgcGxhbl9j YWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVD VVRFIHJwcl9wcmV2KDEpOworRVhFQ1VURSBycHJfcHJldigxKTsKKworUkVTRVQgcGxhbl9jYWNo ZV9tb2RlOworREVBTExPQ0FURSBycHJfcHJldjsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCNS4gUlBSICsgUGFy dGl0aW9uZWQgdGFibGUKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgUlBSIHBhdHRlcm4gbWF0Y2hp bmcgd29ya3MgY29ycmVjdGx5IHdoZW4gdGhlIHNvdXJjZQorLS0gcmVsYXRpb24gaXMgcGFydGl0 aW9uZWQuICBUaGUgcGxhbm5lciBtdXN0IGdhdGhlciByb3dzIGZyb20gZXZlcnkKKy0tIHBhcnRp dGlvbiBpbnRvIGEgc2luZ2xlIG9yZGVyZWQgc3RyZWFtIGJlZm9yZSBSUFIgY2FuIHNlZSB0aGVt LAorLS0gYmVjYXVzZSBwYXR0ZXJuIG1hdGNoaW5nIGlzIHNlcXVlbnRpYWwgYWNyb3NzIHRoZSBl bnRpcmUKKy0tIHBhcnRpdGlvbi1ieSBncm91cCBhbmQgY2Fubm90IGJlIHBlcmZvcm1lZCBpbmRl cGVuZGVudGx5IG9uIGVhY2gKKy0tIHRhYmxlIHBhcnRpdGlvbi4KKworQ1JFQVRFIFRBQkxFIHJw cl9wYXJ0IChpZCBJTlQsIHZhbCBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQpOworQ1JFQVRF IFRBQkxFIHJwcl9wYXJ0XzEgUEFSVElUSU9OIE9GIHJwcl9wYXJ0IEZPUiBWQUxVRVMgRlJPTSAo MSkgVE8gKDYpOworQ1JFQVRFIFRBQkxFIHJwcl9wYXJ0XzIgUEFSVElUSU9OIE9GIHJwcl9wYXJ0 IEZPUiBWQUxVRVMgRlJPTSAoNikgVE8gKDExKTsKK0lOU0VSVCBJTlRPIHJwcl9wYXJ0IFNFTEVD VCBpZCwgdmFsIEZST00gcnByX2ludGVnOworCistLSBQbGFuOiBwYXJ0aXRpb24gc2NhbnMgYXJl IGNvbWJpbmVkIHdpdGggQXBwZW5kIChvciBNZXJnZSBBcHBlbmQpLAorLS0gc29ydGVkIGludG8g YSBzaW5nbGUgb3JkZXJlZCBzdHJlYW0sIGFuZCBmZWQgaW50byBvbmUgV2luZG93QWdnCistLSB0 aGF0IHBlcmZvcm1zIFJQUiBwYXR0ZXJuIG1hdGNoaW5nIGFjcm9zcyB0aGUgY29tYmluZWQgc3Ry ZWFtLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIg dyBBUyBjbnQKK0ZST00gcnByX3BhcnQKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQ7 CisKKy0tIEJhc2VsaW5lOiB0aGUgc2FtZSBxdWVyeSBhZ2FpbnN0IHRoZSBub24tcGFydGl0aW9u ZWQgcnByX2ludGVnCistLSBwcm9kdWNlcyB0aGUgcGVyLXJvdyByZWZlcmVuY2Ugb3V0cHV0Lgor U0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVnCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFT IHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOworCistLSBSZXN1bHQgYWdhaW5zdCB0aGUg cGFydGl0aW9uZWQgdGFibGUgbXVzdCBtYXRjaCB0aGUgYmFzZWxpbmUKKy0tIHJvdy1mb3Itcm93 LgorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX3BhcnQK K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIg QVMgdmFsID4gUFJFVih2YWwpKQorT1JERVIgQlkgaWQ7CisKK0RST1AgVEFCTEUgcnByX3BhcnQ7 CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gQjYuIFJQUiArIExBVEVSQUwKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIGluc2lkZSBh IExBVEVSQUwgc3VicXVlcnkuICBRdWFsaWZpZWQgY29sdW1uIHJlZmVyZW5jZXMgZnJvbQorLS0g dGhlIG91dGVyIHF1ZXJ5IGFyZSBub3QgeWV0IHN1cHBvcnRlZCBpbiBERUZJTkUsIHNvIHRoaXMg dGVzdHMKKy0tIHRoZSBiYXNpYyBjYXNlIHdoZXJlIExBVEVSQUwgcHJvdmlkZXMgdGhlIGNvcnJl bGF0aW9uIGZpbHRlcgorLS0gKFdIRVJFIGlkIDw9IG8uaWQpIGFuZCBERUZJTkUgdXNlcyBvbmx5 IGxvY2FsIGNvbHVtbnMuICBUaGUgcGxhbgorLS0gbXVzdCBzaG93IGEgTmVzdGVkIExvb3AgZHJp dmluZyB0aGUgb3V0ZXIgcmVsYXRpb24gaW50byB0aGUgaW5uZXIKKy0tIHN1YnF1ZXJ5IHNjYW4s IHdpdGggdGhlIFJQUiBXaW5kb3dBZ2cgcmUtZXhlY3V0ZWQgZm9yIGVhY2ggb3V0ZXIKKy0tIHJv dyBhbmQgdGhlIGNvcnJlbGF0aW9uIHN1cmZhY2luZyBhcyBhIHNjYW4tbGV2ZWwgRmlsdGVyIG9u CistLSAiaWQgPD0gby5pZCIuCisKKy0tIFBsYW46IE5lc3RlZCBMb29wIHdpdGggdGhlIFJQUiBX aW5kb3dBZ2cgaW4gdGhlIGlubmVyIGxlZywgZHJpdmVuCistLSBieSB0aGUgZmlsdGVyZWQgb3V0 ZXIgcm93cyAoby5pZCBJTiAoNSwgMTApKS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBv LmlkIEFTIG91dGVyX2lkLCByLmlkLCByLmNudAorRlJPTSBycHJfaW50ZWcgbywKK0xBVEVSQUwg KAorICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2lu dGVnCisgICAgV0hFUkUgaWQgPD0gby5pZAorICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2 YWwpKQorKSByCitXSEVSRSByLmNudCA+IDAgQU5EIG8uaWQgSU4gKDUsIDEwKQorT1JERVIgQlkg by5pZCwgci5pZDsKKworLS0gUmVzdWx0OiBmb3IgZWFjaCBvZiB0aGUgdHdvIG91dGVyIGlkcyAo NSBhbmQgMTApLCB0aGUgTEFURVJBTAorLS0gc3VicXVlcnkgcHJvZHVjZXMgUlBSIG1hdGNoIGNv dW50cyBvdmVyIHRoZSByZXN0cmljdGVkIGlucHV0LgorU0VMRUNUIG8uaWQgQVMgb3V0ZXJfaWQs IHIuaWQsIHIuY250CitGUk9NIHJwcl9pbnRlZyBvLAorTEFURVJBTCAoCisgICAgU0VMRUNUIGlk LCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSEVSRSBp ZCA8PSBvLmlkCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHIKK1dIRVJF IHIuY250ID4gMCBBTkQgby5pZCBJTiAoNSwgMTApCitPUkRFUiBCWSBvLmlkLCByLmlkOworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEI3LiBSUFIgKyBSZWN1cnNpdmUgQ1RFCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0 IFJQUiBpcyByZWplY3RlZCBpbnNpZGUgYSByZWN1cnNpdmUgcXVlcnkuCistLSBJU08vSUVDIDE5 MDc1LTUgNi4xNy41IChSMDIwKSBhbmQgNC4xOC41IChSMDEwKSBjaXRlIENSRUFURQorLS0gUkVD VVJTSVZFIFZJRVcgZXhhbXBsZXMgYW5kIHN0YXRlIHRoYXQgInJvdyBwYXR0ZXJuIG1hdGNoaW5n CistLSBpcyBwcm9oaWJpdGVkIGluIHJlY3Vyc2l2ZSBxdWVyaWVzIi4gIFRoZSBmb3JtYWwgcnVs ZSBsaXZlcyBpbgorLS0gSVNPL0lFQyA5MDc1LTI6MjAxNiA3LjE3IFN5bnRheCBSdWxlIDMpZik6 IGEgcG90ZW50aWFsbHkKKy0tIHJlY3Vyc2l2ZSA8d2l0aCBsaXN0IGVsZW1lbnQ+IHNoYWxsIG5v dCBjb250YWluIGEgPHJvdyBwYXR0ZXJuCistLSBtZWFzdXJlcz4gb3IgPHJvdyBwYXR0ZXJuIGNv bW1vbiBzeW50YXg+LiAgUGVyIDMpZSksIGV2ZXJ5CistLSA8d2l0aCBsaXN0IGVsZW1lbnQ+IHVu ZGVyIFdJVEggUkVDVVJTSVZFIGlzICJwb3RlbnRpYWxseQorLS0gcmVjdXJzaXZlIiwgc28gdGhl IHJlamVjdGlvbiBjb3ZlcnMgdGhlIGJhc2UgKG5vbi1yZWN1cnNpdmUpCistLSBsZWcgdG9vLCBu b3QganVzdCB0aGUgc2VsZi1yZWZlcmVuY2luZyBsZWcuCisKKy0tIFdJVEggUkVDVVJTSVZFOiBS UFIgaW4gdGhlIGJhc2UgbGVnIGlzIHJlamVjdGVkIGV2ZW4gdGhvdWdoIHRoZQorLS0gYmFzZSBs ZWcgbmV2ZXIgcmVmZXJlbmNlcyB0aGUgcmVjdXJzaXZlIENURSBuYW1lLgorV0lUSCBSRUNVUlNJ VkUgc2VxIEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAor ICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCisg ICAgVU5JT04gQUxMCisgICAgU0VMRUNUIGlkICsgMTAwLCB2YWwsIGNudCBGUk9NIHNlcSBXSEVS RSBpZCA8IDMKKykKK1NFTEVDVCBpZCwgdmFsLCBjbnQgRlJPTSBzZXEgT1JERVIgQlkgaWQ7CisK Ky0tIENSRUFURSBSRUNVUlNJVkUgVklFVzogcmV3cml0dGVuIGJ5IG1ha2VSZWN1cnNpdmVWaWV3 U2VsZWN0KCkKKy0tIGludG8gV0lUSCBSRUNVUlNJVkUsIHNvIHRoZSBzYW1lIHJlamVjdGlvbiBh cHBsaWVzLiAgVGhpcyBpcworLS0gdGhlIGZvcm0gSVNPL0lFQyAxOTA3NS01IDYuMTcuNSBjaXRl cyB2ZXJiYXRpbS4KK0NSRUFURSBSRUNVUlNJVkUgVklFVyBycHJfcmVjdihpZCwgdmFsLCBjbnQp IEFTCisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworICAgIEZST00gcnByX2lu dGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIr KQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpOworCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEI4 LiBSUFIgKyBJbmNyZW1lbnRhbCBzb3J0CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0IFJQUiBwYXR0 ZXJuIG1hdGNoaW5nIHdvcmtzIGNvcnJlY3RseSB3aGVuIHRoZSBpbnB1dAorLS0gdG8gV2luZG93 QWdnIGFycml2ZXMgdmlhIGFuIGluY3JlbWVudGFsIHNvcnQuICBUaGUgaW5kZXggb24gKGlkKQor LS0gcHJvdmlkZXMgcHJlc29ydGVkIGlucHV0IGZvciB0aGUgZmlyc3QgT1JERVIgQlkga2V5LCBz bworLS0gIk9SREVSIEJZIGlkLCB2YWwiIGxldHMgdGhlIHBsYW5uZXIgdXNlIEluY3JlbWVudGFs IFNvcnQgdG8gb3JkZXIKKy0tIG9ubHkgb24gdGhlIHNlY29uZCBrZXkuICBUaGUgcGxhbiBtdXN0 IHNob3cgSW5jcmVtZW50YWwgU29ydAorLS0gYmVsb3cgdGhlIFJQUiBXaW5kb3dBZ2csIGFuZCBS UFIgbXVzdCBwcm9kdWNlIHRoZSBzYW1lIHBlci1yb3cKKy0tIG1hdGNoIGNvdW50cyBhcyBpdCB3 b3VsZCB3aXRoIGEgcGxhaW4gU29ydC4KKworQ1JFQVRFIElOREVYIHJwcl9pbnRlZ19pZF9pZHgg T04gcnByX2ludGVnIChpZCk7CitTRVQgZW5hYmxlX3NlcXNjYW4gPSBvZmY7CisKKy0tIFBsYW46 IFJQUiBXaW5kb3dBZ2cgYWJvdmUgYW4gSW5jcmVtZW50YWwgU29ydCBhYm92ZSBhbiBJbmRleCBT Y2FuLgorLS0gVGhlIEluY3JlbWVudGFsIFNvcnQgZGVjbGFyZXMgIlByZXNvcnRlZCBLZXk6IGlk IiBhbmQgc29ydHMgb25seQorLS0gb24gdmFsIHdpdGhpbiBlYWNoIGlkIGdyb3VwLgorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZS T00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQsIHZhbAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEg QispCisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKTsKKworLS0gUmVzdWx0OiBSUFIg b3ZlciB0aGUgaW5jcmVtZW50YWxseSBzb3J0ZWQgc3RyZWFtIHByb2R1Y2VzIG1hdGNoCistLSBj b3VudHMgcGVyIHJvdy4KK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitG Uk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkLCB2YWwKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB IEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkLCB2YWw7 CisKK1JFU0VUIGVuYWJsZV9zZXFzY2FuOworRFJPUCBJTkRFWCBycHJfaW50ZWdfaWRfaWR4Owor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEI5LiBSUFIgKyBWb2xhdGlsZSBmdW5jdGlvbiBpbiBERUZJTkUKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gVm9sYXRpbGUgZnVuY3Rpb25zIGluIERFRklORSBhcmUgcmVqZWN0ZWQgaW4gdGhlIHBs YW5uZXIuICBVbmRlcgorLS0gUlBSJ3MgTkZBIGVuZ2luZSB0aGUgc2FtZSByb3cncyBERUZJTkUg cHJlZGljYXRlIG1heSBiZSBldmFsdWF0ZWQKKy0tIG11bHRpcGxlIHRpbWVzIChiYWNrdHJhY2tp bmcsIFBSRVYvTkVYVCBuYXZpZ2F0aW9uKSwgc28gYSB2b2xhdGlsZQorLS0gcmVzdWx0IHdvdWxk IG1ha2UgcGF0dGVybiBtYXRjaGluZyBub24tZGV0ZXJtaW5pc3RpYy4gIFNUQUJMRSBhbmQKKy0t IElNTVVUQUJMRSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KKworLS0gQmFzZWxpbmU6IFNUQUJMRSAo dG9fY2hhcikgYW5kIElNTVVUQUJMRSAobGVuZ3RoKSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KK1NF TEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2 YWwgPiBQUkVWKHZhbCkKKyAgICAgICAgICAgICAgICBBTkQgbGVuZ3RoKCd4JykgPSAxCisgICAg ICAgICAgICAgICAgQU5EIHRvX2NoYXIoZGF0ZSAnMjAyNi0wMS0wMScsICdZWVlZJykgPSAnMjAy NicpCitPUkRFUiBCWSBpZDsKKworLS0gVm9sYXRpbGUgKHJhbmRvbSkgaXMgcmVqZWN0ZWQuCitT RUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcKK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMg dmFsID4gUFJFVih2YWwpIEFORCByYW5kb20oKSA+PSAwLjApCitPUkRFUiBCWSBpZDsKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBCMTAuIFJQUiArIENvcnJlbGF0ZWQgc3VicXVlcnkgaW4gV0hFUkUKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gVmVyaWZ5IHRoYXQgYW4gUlBSIHdpbmRvdyBwbGFjZWQgaW5zaWRlIGEgY29ycmVsYXRlZCBz Y2FsYXIKKy0tIHN1YnF1ZXJ5IGlzIGV4ZWN1dGVkIG9uY2UgcGVyIG91dGVyIHJvdy4gIERFRklO RSBzdGlsbCByZWZlcmVuY2VzCistLSBvbmx5IGxvY2FsIGNvbHVtbnMgKHF1YWxpZmllZCByZWZz IGZyb20gdGhlIG91dGVyIHF1ZXJ5IGFyZSBub3QKKy0tIHN1cHBvcnRlZCBpbiBERUZJTkUpOyB0 aGUgY29ycmVsYXRpb24gbGl2ZXMgaW4gdGhlIHN1YnF1ZXJ5J3MKKy0tIFdIRVJFIGNsYXVzZSBh cyAiaS5pZCA8PSBvLmlkIi4gIFRoZSBwbGFuIG11c3Qgc2hvdyBhIFN1YlBsYW4KKy0tIGF0dGFj aGVkIHRvIHRoZSBvdXRlciBzY2FuLCB3aXRoIHRoZSBSUFIgV2luZG93QWdnIGRyaXZlbiBieSBh CistLSBwZXItcm93IHNjYW4gZmlsdGVyIGNhcnJ5aW5nIHRoZSBjb3JyZWxhdGlvbiBwcmVkaWNh dGUuCisKKy0tIFBsYW46IFN1YlBsYW4gYXR0YWNoZWQgdG8gdGhlIG91dGVyIFNlcSBTY2FuOyB0 aGUgaW5uZXIgc2NhbgorLS0gY2FycmllcyAiRmlsdGVyOiAoaWQgPD0gby5pZCkiLCBjb25maXJt aW5nIHRoZSBjb3JyZWxhdGlvbiBpcworLS0gZXZhbHVhdGVkIHBlciBvdXRlciByb3cuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgby5pZCwgby52YWwsCisgICAgKFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKKyAgICAgRlJPTSBycHJfaW50ZWcgaQorICAgICBXSEVSRSBpLmlkIDw9IG8uaWQK KyAgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgIFBBVFRFUk4gKEEgQisp CisgICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCisgICAgIE9SREVSIEJZIGlk CisgICAgIExJTUlUIDEpIEFTIGZpcnN0X2NudAorRlJPTSBycHJfaW50ZWcgbworT1JERVIgQlkg by5pZDsKKworLS0gUmVzdWx0OiBlYWNoIG91dGVyIHJvdyByZWNlaXZlcyB0aGUgZmlyc3RfY250 IGZyb20gaXRzIG93bgorLS0gY29ycmVsYXRlZCBSUFIgc3VicXVlcnkuCitTRUxFQ1Qgby5pZCwg by52YWwsCisgICAgKFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKKyAgICAgRlJPTSBycHJfaW50ZWcg aQorICAgICBXSEVSRSBpLmlkIDw9IG8uaWQKKyAgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk CisgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQ UkVWKHZhbCkpCisgICAgIE9SREVSIEJZIGlkCisgICAgIExJTUlUIDEpIEFTIGZpcnN0X2NudAor RlJPTSBycHJfaW50ZWcgbworT1JERVIgQlkgby5pZDsKKworLS0gQSBjb2x1bW4gcmVmZXJlbmNl ZCBvbmx5IGJ5IERFRklORSBtdXN0IG5vdCBrZWVwIGFuIHVucmVsYXRlZCBjb2x1bW4gdGhhdAor LS0gbWVyZWx5IHNoYXJlcyBpdHMgYXR0cmlidXRlIG51bWJlci4gIERFRklORSByZWZlcmVuY2Vz IGEgKHJwcl9vdmVyMSk7IGMKKy0tIChycHJfb3ZlcjIpIGhhcyB0aGUgc2FtZSBhdHRubyBidXQg aXMgdW51c2VkLCBzbyBpdCBtdXN0IGJlIGRyb3BwZWQuCitDUkVBVEUgVEFCTEUgcnByX292ZXIx IChhIGludCk7CitDUkVBVEUgVEFCTEUgcnByX292ZXIyIChjIGludCk7CitJTlNFUlQgSU5UTyBy cHJfb3ZlcjEgVkFMVUVTICgxKSwoMiksKDMpOworSU5TRVJUIElOVE8gcnByX292ZXIyIFZBTFVF UyAoMSksKDIpLCgzKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBjbnQg RlJPTSAoCisgIFNFTEVDVCBhIEFTIG9hLCBjIEFTIG9jLCBjb3VudCgqKSBPVkVSIHcgQVMgY250 CisgIEZST00gcnByX292ZXIxIENST1NTIEpPSU4gcnByX292ZXIyCisgIFdJTkRPVyB3IEFTIChP UkRFUiBCWSBhIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICAgICAgICAgUEFUVEVSTiAoWCspIERFRklORSBYIEFTIGEgPiAwKQorKSBzOwor RFJPUCBUQUJMRSBycHJfb3ZlcjEsIHJwcl9vdmVyMjsKKworLS0gQ2xlYW51cAorRFJPUCBUQUJM RSBycHJfaW50ZWc7CitEUk9QIFRBQkxFIHJwcl9pbnRlZzI7CmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzL3NxbC9ycHJfbmZhLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEu c3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5jODJiODM0MDk3Nwot LS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Jwcl9uZmEuc3FsCkBAIC0w LDAgKzEsMzYzMyBAQAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBSUFIgTkZBIFRlc3RzCistLSBUZXN0cyBmb3IgUm93 IFBhdHRlcm4gUmVjb2duaXRpb24gTkZBIFJ1bnRpbWUgRXhlY3V0aW9uCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tCist LSBUaGlzIHRlc3Qgc3VpdGUgdmFsaWRhdGVzIHRoZSBORkEgKE5vbi1kZXRlcm1pbmlzdGljIEZp bml0ZQorLS0gQXV0b21hdG9uKSBydW50aW1lIGV4ZWN1dGlvbiBlbmdpbmUgaW4gbm9kZVdpbmRv d0FnZy5jLAorLS0gZm9jdXNpbmcgb24gdXBkYXRlX3JlZHVjZWRfZnJhbWUgYW5kIHJlbGF0ZWQg ZnVuY3Rpb25zLgorLS0KKy0tIFRlc3QgU3RyYXRlZ3k6CistLSAgIERpYWdvbmFsIHBhdHRlcm4g c3R5bGUgdXNpbmcgQVJSQVkgZmxhZ3MgdG8gZXhwbGljaXRseQorLS0gICBjb250cm9sIHdoaWNo IHBhdHRlcm4gdmFyaWFibGVzIG1hdGNoIGF0IGVhY2ggcm93LgorLS0KKy0tIFRlc3QgQ292ZXJh Z2U6CistLSAgIEJhc2ljIE5GQSBGbG93IChtYXRjaC0+YWJzb3JiLT5hZHZhbmNlKQorLS0gICBB YnNvcnB0aW9uIE9wdGltaXphdGlvbgorLS0gICBDb250ZXh0IExpZmVjeWNsZSBNYW5hZ2VtZW50 CistLSAgIEFkdmFuY2UgUGhhc2UgKEVwc2lsb24gVHJhbnNpdGlvbnMpCistLSAgIE1hdGNoIFBo YXNlIChWYXJpYWJsZSBNYXRjaGluZykKKy0tICAgRnJhbWUgQm91bmRhcnkgSGFuZGxpbmcKKy0t ICAgU3RhdGUgTWFuYWdlbWVudCAoRGVkdXBsaWNhdGlvbikKKy0tICAgU3RhdGlzdGljcyBhbmQg RGlhZ25vc3RpY3MKKy0tICAgUXVhbnRpZmllciBSdW50aW1lIEJlaGF2aW9yCistLSAgIFBhdGhv bG9naWNhbCBQYXR0ZXJuIFByb3RlY3Rpb24KKy0tICAgQWx0ZXJuYXRpb24gUnVudGltZSBCZWhh dmlvcgorLS0gICBEZWVwIE5lc3RlZCBHcm91cHMKKy0tICAgU0tJUCBPcHRpb25zIChSdW50aW1l KQorLS0gICBJTklUSUFMIE1vZGUgKFJ1bnRpbWUpCistLSAgIEZyYW1lIEJvdW5kYXJ5IFZhcmlh dGlvbnMKKy0tICAgU3BlY2lhbCBQYXJ0aXRpb24gQ2FzZXMKKy0tICAgREVGSU5FIFNwZWNpYWwg Q2FzZXMKKy0tICAgQWJzb3JwdGlvbiBEeW5hbWljIEZsYWdzCistLSAgIFplcm8tQ29uc3VtcHRp b24gQ3ljbGUgRGV0ZWN0aW9uCistLQorLS0gUmVzcG9uc2liaWxpdHk6CistLSAgIC0gTkZBIHJ1 bnRpbWUgZXhlY3V0aW9uIHBhdGhzCistLSAgIC0gQ29udGV4dC9TdGF0ZSBsaWZlY3ljbGUgbWFu YWdlbWVudAorLS0gICAtIFJ1bnRpbWUgYm91bmRhcnkgY29uZGl0aW9ucyBhbmQgcHJvdGVjdGlv bnMKKy0tCistLSBOT1QgdGVzdGVkIGhlcmUgKGNvdmVyZWQgaW4gb3RoZXIgZmlsZXMpOgorLS0g ICAtIFBhdHRlcm4gcGFyc2luZy9vcHRpbWl6YXRpb24gKHJwcl9iYXNlLnNxbCkKKy0tICAgLSBF WFBMQUlOIG91dHB1dCAocnByX2V4cGxhaW4uc3FsKQorLS0gICAtIFBSRVYvTkVYVCBzZW1hbnRp Y3MgKHJwci5zcWwpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCYXNpYyBORkEgRmxvdworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CisKKy0tIFNpbXBsZSBzZXF1ZW50aWFsIHBhdHRlcm4KK1dJVEggdGVzdF9zZXF1ZW50aWFsIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkgIC0tIE5vIG1hdGNo CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfc2VxdWVudGlhbAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEEgQiBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFO WShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gUXVhbnRp ZmllZCBwYXR0ZXJuIChBKyBCKyBDKykKK1dJVEggdGVzdF9xdWFudGlmaWVkIEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFS UkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSksCisgICAgICAgICg2LCBBUlJBWVsn QyddKSwKKyAgICAgICAgKDcsIEFSUkFZWydDJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ18nXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9xdWFudGlmaWVkCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSsgQisgQyspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFO WShmbGFncykKKyk7CisKKy0tIE9wdGlvbmFsIHBhdHRlcm4gKEEgQj8gQykKK1dJVEggdGVzdF9v cHRpb25hbCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLCAgLS0gQiBza2lwcGVkCisgICAgICAg ICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwg QVJSQVlbJ0MnXSksICAtLSBCIG1hdGNoZWQKKyAgICAgICAgKDYsIEFSUkFZWydfJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3B0aW9uYWwKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB IEI/IEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykK Kyk7CisKKy0tIEFsdGVybmF0aW9uIHBhdHRlcm4gKEEgKEJ8QykgRCkKK1dJVEggdGVzdF9hbHRl cm5hdGlvbiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLCAgLS0gRmlyc3QgYnJhbmNoCisgICAg ICAgICgzLCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAo NSwgQVJSQVlbJ0MnXSksICAtLSBTZWNvbmQgYnJhbmNoCisgICAgICAgICg2LCBBUlJBWVsnRCdd KSwKKyAgICAgICAgKDcsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfYWx0ZXJuYXRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIChCIHwgQykgRCkKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEFic29ycHRpb24gT3B0aW1pemF0aW9u CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKworLS0gQWJzb3JiYWJsZSBwYXR0ZXJuIChBKykKK1dJVEggdGVzdF9hYnNvcmJh YmxlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB J10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJhYmxlCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0g TWl4ZWQgYWJzb3JiYWJsZS9ub24tYWJzb3JiYWJsZSAoKEErKSB8IEIpCitXSVRIIHRlc3RfbWl4 ZWRfYWJzb3JwdGlvbiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydf J10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbWl4ZWRfYWJzb3JwdGlvbgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKChBKykgfCBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9 IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gU3Rh dGUgY292ZXJhZ2UgKHNhbWUgZWxlbUlkeCwgZGlmZmVyZW50IGNvdW50KQorV0lUSCB0ZXN0X3N0 YXRlX2NvdmVyYWdlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs IEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9zdGF0ZV9jb3ZlcmFnZQorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEF7Mix9IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBSZWx1Y3Rh bnQgcGF0dGVybiAoQSs/KSAtIG5vdCBhYnNvcmJhYmxlCistLSBDb21wYXJlIHdpdGggZ3JlZWR5 IEErIGFib3ZlOiByZWx1Y3RhbnQgZXhjbHVkZWQgZnJvbSBhYnNvcnB0aW9uLgorLS0gRWFjaCBj b250ZXh0IHByb2R1Y2VzIG1pbmltdW0gbWF0Y2ggaW5kZXBlbmRlbnRseS4KK1dJVEggdGVzdF9y ZWx1Y3RhbnRfYWJzb3JwdGlvbiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFS UkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisg ICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X2Fic29y cHRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKz8pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg J0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gQWJzb3JwdGlvbiB3aXRoIGZpeGVkIHN1ZmZpeDog QSsgQgorV0lUSCB0ZXN0X2Fic29yYl9zdWZmaXggQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAg ICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX3N1ZmZpeAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBQZXItYnJhbmNo IGFic29ycHRpb24gd2l0aCBBTFQ6IEIrIEMgfCBCKyBECitXSVRIIHRlc3RfYWJzb3JiX2FsdCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAg ICAgICg0LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDUsIEFSUkFZWydYJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9hYnNvcmJfYWx0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQisgQyB8IEIrIEQpCisgICAgREVG SU5FCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBB TlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE5vbi1h YnNvcmJhYmxlOiBBIEIrICh1bmJvdW5kZWQgbm90IGluIGZpcnN0IHBvc2l0aW9uKQorV0lUSCB0 ZXN0X25vX2Fic29yYiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydY J10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9ub19hYnNvcmIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gR1JPVVAgbWVyZ2UgZW5hYmxlcyBhYnNvcnB0aW9u OiAoQSBCKSAoQSBCKSsgb3B0aW1pemVkIHRvIChBIEIpezIsfQorV0lUSCB0ZXN0X2Fic29yYl9n cm91cCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSks CisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnWCddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfYWJzb3JiX2dyb3VwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgQikgKEEgQikrKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKworLS0gVHdvIGNvbnNlY3V0aXZlIHVuYm91bmRlZCBncm91cHM6 IChBIEIpKyAoQyBEKSsKKy0tIFRoZSBsZWFkaW5nIGdyb3VwIChBIEIpKyBpcyBhYnNvcmJhYmxl ICh1bmJvdW5kZWQgbXVsdGktZWxlbWVudCk7IChDIEQpKyBpcworLS0gYSBkaXN0aW5jdCBzaWJs aW5nIGdyb3VwIHRoYXQgZG9lcyBub3QgbWVyZ2Ugd2l0aCBpdC4gIFdoZW4gdGhlIGxlYWRpbmcg Z3JvdXAKKy0tIGV4aXRzIGludG8gdGhlIHNpYmxpbmcsIGl0cyBib2R5IGxlYWYtVkFSIGNvdW50 IG11c3QgYmUgY2xlYXJlZCBzbyBpdCBkb2VzCistLSBub3QgbGVhayBpbnRvIHRoZSBzaWJsaW5n J3Mgc2hhcmVkIGRlcHRoIHNsb3QuCitXSVRIIHRlc3RfYWJzb3JiX3R3b19ncm91cHMgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFS UkFZWydCJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0MnXSksCisgICAgICAgICg4LCBBUlJBWVsn RCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX3R3b19ncm91cHMKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKChBIEIpKyAoQyBEKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9 IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gRml4 ZWQtbGVuZ3RoIGdyb3VwIGFic29ycHRpb246IChBIEJ7Mn0pKyBDCistLSBCezJ9IGhhcyBtaW4g PT0gbWF4LCBlcXVpdmFsZW50IHRvIHVucm9sbGluZyB0byAoQSBCIEIpKyBDCitXSVRIIHRlc3Rf YWJzb3JiX2ZpeGVkbGVuIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMs ICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsICBB UlJBWVsnQiddKSwKKyAgICAgICAgKDYsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsICBBUlJB WVsnQSddKSwKKyAgICAgICAgKDgsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDksICBBUlJBWVsn QiddKSwKKyAgICAgICAgKDEwLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDExLCBBUlJBWVsnWCdd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2ZpeGVkbGVuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgo QSBCezJ9KSsgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZs YWdzKQorKTsKKworLS0gQ29uc2VjdXRpdmUgdmFycyBtZXJnZWQgdG8gZml4ZWQtbGVuZ3RoOiAo QSBCIEIpKyAtPiAoQSBCezJ9KSsKK1dJVEggdGVzdF9hYnNvcmJfY29uc2VjdXRpdmUgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgIEFSUkFZWydBJ10pLAorICAg ICAgICAoMiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgIEFSUkFZWydCJ10pLAorICAgICAg ICAoNCwgIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgIEFSUkFZWydCJ10pLAorICAgICAgICAo NiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNywgIEFSUkFZWydBJ10pLAorICAgICAgICAoOCwg IEFSUkFZWydCJ10pLAorICAgICAgICAoOSwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMTAsIEFS UkFZWydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfY29uc2VjdXRpdmUKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBIEIgQikrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTmVzdGVkIGZp eGVkLWxlbmd0aCBncm91cCBhYnNvcnB0aW9uOiAoQSAoQiBDKXsyfSBEKSsgRQorLS0gSW5uZXIg Z3JvdXAgezJ9IGhhcyBtaW4gPT0gbWF4OyBhYnNvcmJhYmxlIHZpYSByZWN1cnNpdmUgY2hlY2sK Ky0tIHN0ZXBfc2l6ZSA9IDEgKyAoMSsxKSoyICsgMSA9IDYKK1dJVEggdGVzdF9hYnNvcmJfbmVz dGVkX2ZpeGVkbGVuIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs ICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsICBB UlJBWVsnQyddKSwKKyAgICAgICAgKDQsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsICBBUlJB WVsnQyddKSwKKyAgICAgICAgKDYsICBBUlJBWVsnRCddKSwKKyAgICAgICAgKDcsICBBUlJBWVsn QSddKSwKKyAgICAgICAgKDgsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDksICBBUlJBWVsnQydd KSwKKyAgICAgICAgKDEwLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDExLCBBUlJBWVsnQyddKSwK KyAgICAgICAgKDEyLCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDEzLCBBUlJBWVsnRSddKSwKKyAg ICAgICAgKDE0LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX25lc3RlZF9maXhl ZGxlbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgKEIgQyl7Mn0gRCkrIEUpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0Qn ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworCistLSBE b3VibHkgbmVzdGVkIGZpeGVkLWxlbmd0aCBncm91cCBhYnNvcnB0aW9uOiAoQSAoKEIgQ3szfSl7 Mn0gRCl7Mn0gRSkrIEYKKy0tIHN0ZXBfc2l6ZSA9IDEgKyAoKDErMykqMisxKSoyICsgMSA9IDIw OyAyIGl0ZXJhdGlvbnMgKyBGID0gNDEgcm93cworV0lUSCB0ZXN0X2Fic29yYl9kb3VibHlfbmVz dGVkIEFTICgKKyAgICBTRUxFQ1QgdiBBUyBpZCwgQVJSQVlbCisgICAgICAgIENBU0UKKyAgICAg ICAgICAgIFdIRU4gdiAlIDQxIElOICgxLCAyMSkgIFRIRU4gJ0EnCisgICAgICAgICAgICBXSEVO IHYgJSA0MSBJTiAoMiwgNiwgMTEsIDE1LCAyMiwgMjYsIDMxLCAzNSkgVEhFTiAnQicKKyAgICAg ICAgICAgIFdIRU4gdiAlIDQxIElOICgzLDQsNSwgNyw4LDksIDEyLDEzLDE0LCAxNiwxNywxOCwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMywyNCwyNSwgMjcsMjgsMjksIDMyLDMzLDM0 LCAzNiwzNywzOCkgVEhFTiAnQycKKyAgICAgICAgICAgIFdIRU4gdiAlIDQxIElOICgxMCwgMTks IDMwLCAzOSkgVEhFTiAnRCcKKyAgICAgICAgICAgIFdIRU4gdiAlIDQxIElOICgyMCwgNDApIFRI RU4gJ0UnCisgICAgICAgICAgICBXSEVOIHYgJSA0MSA9IDAgVEhFTiAnRicKKyAgICAgICAgICAg IEVMU0UgJ1gnCisgICAgICAgIEVORAorICAgIF0gQVMgZmxhZ3MKKyAgICBGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA4MikgQVMgcyh2KQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X2Fic29yYl9kb3VibHlfbmVzdGVkCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSAoKEIgQyBDIEMpezJ9IEQpezJ9IEUpKyBGKQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyks CisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRiBBUyAnRicgPSBBTlko ZmxhZ3MpCispOworCistLSAzLWxldmVsIEVORCBjaGFpbjogKChBIChCIEMpezJ9KXsyfSkrCist LSBUZXN0cyBFTkQoQkN7Mn0pIC0+IEVORChBLi57Mn0pIC0+IEVORCgrKSBjaGFpbmluZworLS0g MiBpdGVyYXRpb25zIG9mICssIGVhY2ggMTAgcm93czogKEEgQiBDIEIgQykoQSBCIEMgQiBDKQor V0lUSCB0ZXN0X2Fic29yYl8zbGV2ZWxfZW5kIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsICBBUlJBWVsnQSddKSwgIC0tIDFzdCArIGl0ZXIsIDFzdCB7Mn0sIEEK KyAgICAgICAgKDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsICBBUlJBWVsnQyddKSwKKyAg ICAgICAgKDQsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsICBBUlJBWVsnQyddKSwgIC0tIDFz dCAoQkMpezJ9IGRvbmUKKyAgICAgICAgKDYsICBBUlJBWVsnQSddKSwgIC0tIDFzdCArIGl0ZXIs IDJuZCB7Mn0sIEEKKyAgICAgICAgKDcsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDgsICBBUlJB WVsnQyddKSwKKyAgICAgICAgKDksICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDEwLCBBUlJBWVsn QyddKSwgIC0tIDJuZCAoQkMpezJ9IGRvbmUsIDFzdCB7Mn0gZG9uZSwgMXN0ICsgaXRlciBkb25l CisgICAgICAgICgxMSwgQVJSQVlbJ0EnXSksICAtLSAybmQgKyBpdGVyLCAxc3QgezJ9LCBBCisg ICAgICAgICgxMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgxMywgQVJSQVlbJ0MnXSksCisgICAg ICAgICgxNCwgQVJSQVlbJ0InXSksCisgICAgICAgICgxNSwgQVJSQVlbJ0MnXSksCisgICAgICAg ICgxNiwgQVJSQVlbJ0EnXSksICAtLSAybmQgKyBpdGVyLCAybmQgezJ9LCBBCisgICAgICAgICgx NywgQVJSQVlbJ0InXSksCisgICAgICAgICgxOCwgQVJSQVlbJ0MnXSksCisgICAgICAgICgxOSwg QVJSQVlbJ0InXSksCisgICAgICAgICgyMCwgQVJSQVlbJ0MnXSksICAtLSAybmQgKyBpdGVyIGRv bmUKKyAgICAgICAgKDIxLCBBUlJBWVsnWCddKSAgIC0tIG5vIG1hdGNoLCArIGVuZHMKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X2Fic29yYl8zbGV2ZWxfZW5kCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgKEIg Qyl7Mn0pezJ9KSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShm bGFncykKKyk7CisKKy0tIE11bHRpcGxlIHVuYm91bmRlZDogQSsgQisgKGZpcnN0IGVsZW1lbnQg dW5ib3VuZGVkIGVuYWJsZXMgYWJzb3JwdGlvbikKK1dJVEggdGVzdF9tdWx0aV91bmJvdW5kZWQg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfbXVsdGlfdW5ib3VuZGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQispCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIENvbnRleHQgTGlmZWN5Y2xlCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKwor LS0gTXVsdGlwbGUgb3ZlcmxhcHBpbmcgY29udGV4dHMgKFNLSVAgVE8gTkVYVCBST1cpCitXSVRI IHRlc3Rfb3ZlcmxhcHBpbmdfY29udGV4dHMgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAg ICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X292ZXJsYXBw aW5nX2NvbnRleHRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CisKKy0tIEZhaWxlZCBjb250ZXh0IGNsZWFudXAgKGVhcmx5IGZhaWx1cmUpCitXSVRIIHRl c3RfY29udGV4dF9jbGVhbnVwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydfJ10pLCAgLS0gUHJ1bmVkIGF0IGZpcnN0IHJvdworICAgICAgICAoMiwg QVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnXyddKSwgIC0tIE1pc21hdGNoZWQgYWZ0 ZXIgcm93IDIKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0In XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9jb250ZXh0X2NsZWFudXAKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBQYXJ0aXRpb24g ZW5kIChpbmNvbXBsZXRlIGNvbnRleHRzKQorV0lUSCB0ZXN0X3BhcnRpdGlvbl9lbmQgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pCisgICAgICAgIC0t IFBhdHRlcm4gcmVxdWlyZXMgQiwgYnV0IHBhcnRpdGlvbiBlbmRzCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfcGFydGl0aW9uX2VuZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworCistLSBDb21wbGV0ZWQgY29udGV4dCBlbmNvdW50ZXJlZCBk dXJpbmcgcHJvY2Vzc2luZworLS0gUGF0dGVybiAoQSB8IEIgQyBEKTogQ3R4MSB0YWtlcyBsb25n IEItPkMtPkQgcGF0aCwgd2hpbGUgQ3R4MiB0YWtlcworLS0gc2hvcnQgQSBwYXRoIGFuZCBjb21w bGV0ZXMgZmlyc3QuIE5leHQgcm93IHNlZXMgQ3R4MgorLS0gd2l0aCBzdGF0ZXM9TlVMTCBhbmQg c2tpcHMgaXQuCitXSVRIIHRlc3RfY29tcGxldGVkX2N0eCBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQicsICdfJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0MnLCAnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydEJywgJ18nXSksCisgICAgICAgICg0 LCBBUlJBWVsnXycsICdfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfY29tcGxl dGVkX2N0eAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgfCBCIEMgRCkKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlko ZmxhZ3MpCispOworCistLSBSZWx1Y3RhbnQgY29udGV4dCBsaWZlY3ljbGUgKEErPyBCIHdpdGgg U0tJUCBUTyBORVhUIFJPVykKKy0tIEErPyBleGl0cyBlYXJseSBidXQgaWYgQiBub3QgYXZhaWxh YmxlLCBmYWxscyBiYWNrIHRvIGxvb3AuCistLSBDb250ZXh0cyBub3QgYWJzb3JiZWQgKHJlbHVj dGFudCksIHNvIG11bHRpcGxlIHN1cnZpdmUuCitXSVRIIHRlc3RfcmVsdWN0YW50X2NvbnRleHQg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1 Y3RhbnRfY29udGV4dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErPyBCKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBBZHZhbmNlIFBoYXNlIChFcHNpbG9uIFRyYW5zaXRpb25zKQor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CisKKy0tIE5lc3RlZCBncm91cHMgKChBIEIpKykKK1dJVEggdGVzdF9uZXN0ZWRfZ3Jv dXBzIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB J10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICg2LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVkX2dyb3VwcworV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChB IEIpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE11bHRpcGxlIGFsdGVybmF0aW9uIGJy YW5jaGVzIChBIChCfEN8RCkgRSkKK1dJVEggdGVzdF9tdWx0aV9hbHQgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydFJ10pLAorICAgICAgICAoNCwgQVJSQVlb J0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDYsIEFSUkFZWydFJ10p LAorICAgICAgICAoNywgQVJSQVlbJ0EnXSksCisgICAgICAgICg4LCBBUlJBWVsnRCddKSwKKyAg ICAgICAgKDksIEFSUkFZWydFJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwK KyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbXVs dGlfYWx0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSAoQiB8IEMgfCBEKSBFKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9 IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gT3B0 aW9uYWwgVkFSIGF0IHN0YXJ0IChBPyBCIEMpCitXSVRIIHRlc3Rfb3B0aW9uYWxfdmFyIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLCAgLS0g QSBza2lwcGVkCisgICAgICAgICgyLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydB J10pLCAgLS0gQSBtYXRjaGVkCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUs IEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3Ms CisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3B0aW9uYWxfdmFy CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5F WFQgUk9XCisgICAgUEFUVEVSTiAoQT8gQiBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCistLSBOZXN0ZWQgYWx0ZXJuYXRpb24gKChBfEIp IChDfEQpKQorV0lUSCB0ZXN0X25lc3RlZF9hbHQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQyddKSwg IC0tIEEgQworICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnRCdd KSwgIC0tIEEgRAorICAgICAgICAoNSwgQVJSQVlbJ0InXSksCisgICAgICAgICg2LCBBUlJBWVsn QyddKSwgIC0tIEIgQworICAgICAgICAoNywgQVJSQVlbJ0InXSksCisgICAgICAgICg4LCBBUlJB WVsnRCddKSAgIC0tIEIgRAorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25lc3RlZF9h bHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChDIHwgRCkpCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5Z KGZsYWdzKQorKTsKKworLS0gTWl4ZWQgZ3JlZWR5L3JlbHVjdGFudCBzZXF1ZW5jZTogQSs/IEIr IChyZWx1Y3RhbnQgQSwgZ3JlZWR5IEIpCistLSBBIGV4aXRzIGFzIGVhcmx5IGFzIHBvc3NpYmxl LCBCIGNvbnN1bWVzIHRoZSByZXN0IGdyZWVkaWx5CitXSVRIIHRlc3RfbWl4ZWRfcmVsdWN0YW50 IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQScsJ0InXSks CisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydCJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbWl4ZWRfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKz8gQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBPcHRpb25hbCByZWx1 Y3RhbnQgZ3JvdXA6IChBIEIpPz8gQworLS0gUmVsdWN0YW50IGdyb3VwIGVudHJ5IHRyaWVzIHNr aXAgZmlyc3QsIGJ1dCB0aGUgc2tpcCBwYXRoIG5lZWRzIEMKKy0tIGF0IHJvdyAxIHdoaWNoIGlz IEEgLT4gc2tpcCBmYWlscy4gRW50ZXIgcGF0aCBzdWNjZWVkczogQSgxKSBCKDIpIEMoMykuCitX SVRIIHRlc3Rfb3B0aW9uYWxfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisg ICAgICAgICgzLCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X29w dGlvbmFsX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQik/PyBDKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCistLSBOb24t bGVhZGluZyByZWx1Y3RhbnQgb3B0aW9uYWwgVkFSOiAoQiBBPz8gQykKKy0tIFJlbHVjdGFudCBB Pz8gc2hvdWxkIHByZWZlciB0byBza2lwLCBtYXRjaGluZyBCKDEpIEMoMikgd2l0aCBBIGxlZnQK Ky0tIHVubWF0Y2hlZCAobWF0Y2hfZW5kIDIpLiAgVGhlIGxlYWRpbmcvZ3JvdXAgcmVsdWN0YW50 IGNhc2VzIGFib3ZlIGdvIHRocm91Z2gKKy0tIHRoZSBiZWdpbiBwYXRoOyB0aGlzIGV4ZXJjaXNl cyB0aGUgbm9uLWxlYWRpbmcgc2tpcCBwYXRoLAorLS0gd2hpY2ggbXVzdCBob25vciByZWx1Y3Rh bnQgb3JkZXJpbmcgdG9vLgorV0lUSCB0ZXN0X25vbmxlYWRpbmdfcmVsdWN0YW50IEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0EnLCAnQyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfbm9ubGVhZGluZ19yZWx1Y3RhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKEIgQT8/IEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9 IEFOWShmbGFncykKKyk7CisKKy0tIFJlbHVjdGFudCBvdXRlciBxdWFudGlmaWVyIG92ZXIgYSBu dWxsYWJsZSByZWx1Y3RhbnQgYm9keTogU1FML1JQUgorLS0gc2VtYW50aWNzIGNhbGwgZm9yIHRo ZSBzaG9ydGVzdCAoZW1wdHkpIG1hdGNoLiAgSW4gdGhlIGNvdW50PG1pbiBjYXNlCistLSB0aGUg ZW5naW5lIG11c3QgcHJlZmVyIHRoZSBmYXN0LWZvcndhcmQgKGV4aXQpIHBhdGggZm9yIHJlbHVj dGFudAorLS0gZ3JvdXBzIGFuZCBzdXBwcmVzcyBsb25nZXIgbWF0Y2hlcyBvbmNlIGV4aXQgcmVh Y2hlcyBGSU4sIG1pcnJvcmluZyB0aGUKKy0tIHNpYmxpbmcgbWluPD1jb3VudDxtYXggYnJhbmNo LiAgVGhlIDItbGV2ZWwgZ3JlZWR5L3JlbHVjdGFudCBtYXRyaXggcGx1cyBhCistLSBtaW4+PTIg Ym91bmRhcnkgYW5kIHNpbmdsZS1xdWFudGlmaWVyIGNvbnRyb2xzIGxvY2FsaXplIHRoZSBiZWhh dmlvdXI6IG9ubHkKKy0tIHRoZSBhbGwtcmVsdWN0YW50IGNhc2UgKHJyKSBzaG91bGQgZGlmZmVy LgorV0lUSCB0KGlkLCBpc2EpIEFTIChWQUxVRVMgKDEsIHRydWUpLCAoMiwgdHJ1ZSksICgzLCB0 cnVlKSwgKDQsIGZhbHNlKSkKK1NFTEVDVCBpZCwKKyAgICAgICBjb3VudCgqKSBPVkVSIGdnICBB UyBnZywgICAgIC0tIChBPykrICAgICAgZ3JlZWR5IC8gZ3JlZWR5CisgICAgICAgY291bnQoKikg T1ZFUiBnciAgQVMgZ3IsICAgICAtLSAoQT8/KSsgICAgIGdyZWVkeSAvIHJlbHVjdGFudAorICAg ICAgIGNvdW50KCopIE9WRVIgcmcgIEFTIHJnLCAgICAgLS0gKEE/KSs/ICAgICByZWx1Y3RhbnQg LyBncmVlZHkKKyAgICAgICBjb3VudCgqKSBPVkVSIHJyICBBUyByciwgICAgIC0tIChBPz8pKz8g ICAgcmVsdWN0YW50IC8gcmVsdWN0YW50CisgICAgICAgY291bnQoKikgT1ZFUiBycjIgQVMgcnIy LCAgICAtLSAoQT8/KXsyLH0/IHJlbHVjdGFudCwgbWluPj0yIGJvdW5kYXJ5CisgICAgICAgY291 bnQoKikgT1ZFUiBjYSAgQVMgY2EsICAgICAtLSBBPz8gICAgICAgIHNpbmdsZSByZWx1Y3RhbnQg Y29udHJvbAorICAgICAgIGNvdW50KCopIE9WRVIgY3MgIEFTIGNzICAgICAgLS0gQSo/ICAgICAg ICBzaW5nbGUgcmVsdWN0YW50IGNvbnRyb2wKK0ZST00gdAorV0lORE9XIGdnICBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBB VFRFUk4gKChBPykrKSAgICAgIERFRklORSBBIEFTIGlzYSksCisgICAgICAgZ3IgIEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcg UEFUVEVSTiAoKEE/PykrKSAgICAgREVGSU5FIEEgQVMgaXNhKSwKKyAgICAgICByZyAgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyBQQVRURVJOICgoQT8pKz8pICAgICBERUZJTkUgQSBBUyBpc2EpLAorICAgICAgIHJyICBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIFBBVFRFUk4gKChBPz8pKz8pICAgIERFRklORSBBIEFTIGlzYSksCisgICAgICAgcnIyIEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgUEFUVEVSTiAoKEE/Pyl7Mix9PykgREVGSU5FIEEgQVMgaXNhKSwKKyAgICAgICBjYSAg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyBQQVRURVJOIChBPz8pICAgICAgICBERUZJTkUgQSBBUyBpc2EpLAorICAgICAgIGNz ICBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIFBBVFRFUk4gKEEqPykgICAgICAgIERFRklORSBBIEFTIGlzYSkKK09SREVSIEJZ IGlkOworCistLSBOb24tbGVhZGluZyByZWx1Y3RhbnQgb3B0aW9uYWwgR1JPVVAgd2l0aCBhIGZv bGxvd2VyOiAoQiAoQSBYKT8/IEMpCistLSBMaWtlIHRoZSBWQVIgY2FzZSBhYm92ZSBidXQgYSBt dWx0aS1lbGVtZW50IGdyb3VwOyBpdCBnb2VzIHRocm91Z2ggdGhlCistLSBiZWdpbiBwYXRoLCB3 aGljaCBhbHJlYWR5IGhvbm9ycyByZWx1Y3RhbnQgb3JkZXJpbmcuCistLSBSZWx1Y3RhbnQgKEEg WCk/PyBzaG91bGQgc2tpcCwgbWF0Y2hpbmcgQigxKSBDKDIpLCB3aXRoIHRoZSBncm91cCBza2lw cGVkCistLSB0byB0aGUgZm9sbG93aW5nIEMgKG5vdCB0byBGSU4pLgorV0lUSCB0ZXN0X25vbmxl YWRpbmdfcmVsdWN0YW50X2dyb3VwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAg ICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCAnQyddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydYJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0MnXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ub25sZWFkaW5nX3JlbHVjdGFudF9ncm91cAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQiAoQSBYKT8/IEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgWCBBUyAnWCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsK KworLS0gR3JlZWR5L3JlbHVjdGFudCBzZXF1ZW5jZTogQSsgQis/IChncmVlZHkgQSwgcmVsdWN0 YW50IEIgYXQgZW5kKQorLS0gQSBjb25zdW1lcyBncmVlZGlseSwgQis/IGV4aXRzIHRvIEZJTiBh ZnRlciBtaW5pbXVtIG1hdGNoCitXSVRIIHRlc3RfZ3JlZWR5X3RoZW5fcmVsdWN0YW50IEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAg ICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2dyZWVk eV90aGVuX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQis/KQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKQorKTsKKworLS0gUmVsdWN0YW50IG9wdGlvbmFsIGdyb3VwIHNraXAtdG8tRklOCist LSBXaGVuIGEgcmVsdWN0YW50IG9wdGlvbmFsIGdyb3VwJ3Mgc2tpcCBwYXRoIHJlYWNoZXMgRklO LCB0aGUgZ3JvdXAKKy0tIGVudHJ5IHBhdGggaXMgYWJhbmRvbmVkLgorLS0gUGF0dGVybjogQyAo QSBCKT8/IC0tIGFmdGVyIEMgbWF0Y2hlcywgdGhlIHJlbHVjdGFudCBncm91cCAoQSBCKT8/Cist LSBwcmVmZXJzIHRvIHNraXAuICBTa2lwIGdvZXMgdG8gRklOIChncm91cCBpcyBsYXN0IGVsZW1l bnQpLCBzbworLS0gdGhlIG1hdGNoIGNvbXBsZXRlcyB3aXRoIGp1c3QgQy4KK1dJVEggdGVzdF9i ZWdpbl9za2lwX2ZpbiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQycsJ0EnXSksCisgICAgICAgICg1LCBBUlJB WVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAg ICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2JlZ2luX3NraXBfZmluCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoQyAoQSBCKT8/KQorICAgIERFRklORQorICAgICAgICBDIEFTICdD JyA9IEFOWShmbGFncyksCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIE1hdGNoIFBoYXNlCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKworLS0gU2ltcGxlIFZBUiB3aXRoIEVORCBuZXh0IChBIEIgQyBhbGwgbWluPW1heD0xKQor V0lUSCB0ZXN0X3NpbXBsZV92YXIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF9zaW1wbGVfdmFyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0t IFZBUiBtYXggZXhjZWVkZWQgKEF7MiwzfSkKK1dJVEggdGVzdF9tYXhfZXhjZWVkZWQgQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLCAgLS0gTWF4ID0g MworICAgICAgICAoNCwgQVJSQVlbJ0EnXSksICAtLSBFeGNlZWRzIG1heCwgc3RhdGUgcmVtb3Zl ZAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9tYXhfZXhjZWVkZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezIsM30gQikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisKKy0tIE5vbi1tYXRjaGluZyBWQVIgKERFRklORSBmYWxzZSkKK1dJVEggdGVz dF9ub25fbWF0Y2hpbmcgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnXyddKSwgIC0tIEIgbm90IG1hdGNo ZWQgKERFRklORSBmYWxzZSkKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0InXSksICAtLSBCIG1hdGNoZWQKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfbm9uX21hdGNoaW5nCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFn cykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gRnJhbWUgQm91bmRhcnkgSGFuZGxpbmcKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCist LSBMaW1pdGVkIGZyYW1lIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDMgRk9MTE9XSU5H KQorV0lUSCB0ZXN0X2xpbWl0ZWRfZnJhbWUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksICAtLSBXaXRo aW4gMyBGT0xMT1dJTkcKKyAgICAgICAgKDUsIEFSUkFZWydCJ10pLCAgLS0gQmV5b25kIDMgRk9M TE9XSU5HIGZyb20gcm93IDEKKyAgICAgICAgKDYsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfbGltaXRlZF9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAzIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKQorKTsKKworLS0gVW5ib3VuZGVkIGZyYW1lIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCitXSVRIIHRlc3RfdW5ib3VuZGVkX2ZyYW1l IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10p LAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICg2LCBBUlJBWVsnQiddKSAgLS0gRmFyIGZyb20gc3RhcnQsIGJ1dCB1bmJvdW5kZWQKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF91bmJvdW5kZWRfZnJhbWUKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisg ICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTWF0Y2ggZXhjZWVkcyBmcmFt ZSBib3VuZGFyeQorV0lUSCB0ZXN0X2ZyYW1lX2V4Y2VlZGVkIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKQorICAgICAgICAtLSBGcmFtZSBlbmRzIGF0 IHJvdyAzICgyIEZPTExPV0lORyksIEIgbmV2ZXIgYXBwZWFycworICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X2ZyYW1lX2V4Y2VlZGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpCispOworCistLSBGcmFtZSBib3VuZGFyeSBmb3JjZWQgbWlzbWF0Y2gKKy0tIExpbWl0 ZWQgZnJhbWUgd2l0aCBlbm91Z2ggcm93cyBzbyB0aGF0IGEgY29udGV4dCdzIGZyYW1lIGJvdW5k YXJ5CistLSBpcyBleGNlZWRlZCB3aGlsZSBzdGlsbCBwcm9jZXNzaW5nLgorV0lUSCB0ZXN0X2Zy YW1lX2JvdW5kYXJ5IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs IEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0En XSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X2ZyYW1lX2JvdW5kYXJ5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCisp OworCistLSBSZWx1Y3RhbnQgd2l0aCBsaW1pdGVkIGZyYW1lIChBKz8gQiB3aXRoIDIgRk9MTE9X SU5HKQorLS0gUmVsdWN0YW50IGV4aXRzIGVhcmx5LCBCIG11c3QgYmUgd2l0aGluIGZyYW1lIGJv dW5kYXJ5CitXSVRIIHRlc3RfcmVsdWN0YW50X2ZyYW1lIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0En XSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X2ZyYW1lCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEErPyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTdGF0ZSBNYW5hZ2Vt ZW50CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworLS0gRHVwbGljYXRlIHN0YXRlIGNyZWF0aW9uCitXSVRIIHRlc3RfZHVw bGljYXRlX3N0YXRlcyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQScsICdCJ10pLCAgLS0gQm90aCBBIGFuZCBCIG1hdGNoIChjcmVhdGVzIGR1cGxp Y2F0ZSBzdGF0ZXMgdmlhIGRpZmZlcmVudCBwYXRocykKKyAgICAgICAgKDIsIEFSUkFZWydDJywg J18nXSksCisgICAgICAgICgzLCBBUlJBWVsnRCcsICdfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfZHVwbGljYXRlX3N0YXRlcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikg QyBEKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFJlbHVjdGFudCBkdXBsaWNh dGUgc3RhdGUgaGFuZGxpbmcKKy0tIChBKz8gfCBCKz8pIGNyZWF0ZXMgZXhpdCBhbmQgbG9vcCBz dGF0ZXM7IGV4aXQgcGF0aHMgbWF5IGNvbnZlcmdlCitXSVRIIHRlc3RfcmVsdWN0YW50X2RlZHVw IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywn QiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydf J10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X2RlZHVwCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoKEErPyB8IEIrPykpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBM YXJnZSBwYXR0ZXJuIChzdHJlc3MgZnJlZSBsaXN0KQorV0lUSCB0ZXN0X2xhcmdlX3BhdHRlcm4g QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnRSddKSwKKyAgICAgICAg KDYsIEFSUkFZWydGJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0cnXSksCisgICAgICAgICg4LCBB UlJBWVsnSCddKSwKKyAgICAgICAgKDksIEFSUkFZWydJJ10pLAorICAgICAgICAoMTAsIEFSUkFZ WydKJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbGFyZ2VfcGF0dGVybgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSBGIEcgSCBJIEopCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBGIEFTICdGJyA9 IEFOWShmbGFncyksCisgICAgICAgIEcgQVMgJ0cnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgSCBB UyAnSCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBJIEFTICdJJyA9IEFOWShmbGFncyksCisgICAg ICAgIEogQVMgJ0onID0gQU5ZKGZsYWdzKQorKTsKKworLS0gUmVkdWNlZCBmcmFtZSBtYXAgcmVh bGxvY2F0aW9uICg+IDEwMjQgcm93cykKK1dJVEggdGVzdF9tYXBfcmVhbGxvYyBBUyAoCisgICAg U0VMRUNUIGlkLCBDQVNFIFdIRU4gaWQgJSAyID0gMSBUSEVOIEFSUkFZWydBJ10gRUxTRSBBUlJB WVsnQiddIEVORCBBUyBmbGFncworICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDExMDApIEFT IGlkCispCitTRUxFQ1QgY291bnQoKiksIG1pbihtYXRjaF9zdGFydCksIG1heChtYXRjaF9lbmQp CitGUk9NICgKKyAgICBTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCisgICAgRlJPTSB0ZXN0X21hcF9yZWFsbG9jCisgICAgV0lORE9XIHcg QVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICAgICAgICBQQVRURVJOIChBIEIpCisgICAgICAgIERFRklORQorICAgICAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCisgICAgKQorKSBzdWI7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RhdGlzdGljcyBhbmQgRGlhZ25vc3Rp Y3MKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorCistLSBNYXRjaGVkIGNvbnRleHRzCitXSVRIIHRlc3RfbWF0Y2hlZCBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAg ICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X21hdGNoZWQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBQcnVu ZWQgY29udGV4dHMgKGZhaWxlZCBhdCBmaXJzdCByb3cpCitXSVRIIHRlc3RfcHJ1bmVkIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydfJ10pLCAgLS0g UHJ1bmVkCisgICAgICAgICgyLCBBUlJBWVsnXyddKSwgIC0tIFBydW5lZAorICAgICAgICAoMywg QVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X3BydW5lZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisKKy0tIE1pc21hdGNoZWQgY29udGV4dHMgKGZhaWxlZCBhZnRlciBtdWx0aXBs ZSByb3dzKQorV0lUSCB0ZXN0X21pc21hdGNoZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDMsIEFSUkFZWydfJ10pLCAgLS0gTWlzbWF0Y2hlZCBhZnRlciAyIHJvd3MKKyAg ICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9taXNtYXRjaGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsg QikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFJlbHVjdGFudCBub3QgYWJzb3JiZWQgKEEr PyB3aXRoIFNLSVAgVE8gTkVYVCBST1cpCistLSBDb21wYXJlIHdpdGggZ3JlZWR5IEErIGJlbG93 OiByZWx1Y3RhbnQgaXMgbm90IGFic29yYmFibGUsCistLSBzbyBhbGwgY29udGV4dHMgc3Vydml2 ZSBpbmRlcGVuZGVudGx5LgorV0lUSCB0ZXN0X3JlbHVjdGFudF9zdGF0cyBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3RfcmVsdWN0YW50X3N0YXRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSs/KQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEFic29yYmVkIGNv bnRleHRzCitXSVRIIHRlc3RfYWJzb3JiZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAg ICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYmVk CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5F WFQgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKQorKTsKKworLS0gU2tpcHBlZCBjb250ZXh0cyAoU0tJUCBUTyBORVhUIFJPVykK K1dJVEggdGVzdF9za2lwcGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgz LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pICAtLSBDb21wbGV0ZXMgbWF0 Y2ggc3RhcnRpbmcgYXQgcm93IDEKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lw cGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gUXVhbnRpZmllciBSdW50aW1lIEJlaGF2aW9yCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gTGFyZ2Ug Y291bnQgaGFuZGxpbmcgKEF7MTAwfSkKK1dJVEggdGVzdF9sYXJnZV9jb3VudCBBUyAoCisgICAg U0VMRUNUIGkgQVMgaWQsIEFSUkFZWydBJ10gQVMgZmxhZ3MKKyAgICBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDUpIGkKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbGFyZ2VfY291bnQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB ezEwMH0pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKwor LS0gVW5saW1pdGVkIHF1YW50aWZpZXIgKEF7MTAsfSkKK1dJVEggdGVzdF91bmxpbWl0ZWQgQVMg KAorICAgIFNFTEVDVCBpIEFTIGlkLCBBUlJBWVsnQSddIEFTIGZsYWdzCisgICAgRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTUpIGkKKyAgICBVTklPTiBBTEwKKyAgICBTRUxFQ1QgMTYsIEFSUkFZ WydCJ10KKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfdW5saW1pdGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQXsxMCx9IEIpCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworCistLSBNaW4gYm91bmRhcnkgKEF7Myw1fSkKK1dJVEggdGVz dF9taW5fYm91bmRhcnkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFS UkFZWydBJ10pLCAgLS0gTWluPTMgcmVhY2hlZCwgZXhpdCBwYXRoIGF2YWlsYWJsZQorICAgICAg ICAoNCwgQVJSQVlbJ0InXSksICAtLSBNYXRjaCBlbmRzIGF0IG1pbgorICAgICAgICAoNSwgQVJS QVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDcsIEFSUkFZWydB J10pLAorICAgICAgICAoOCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg5LCBBUlJBWVsnQSddKSwg IC0tIENvdW50PTUsIG1heCByZWFjaGVkCisgICAgICAgICgxMCwgQVJSQVlbJ0InXSkgIC0tIE1h dGNoIGVuZHMgYXQgbWF4CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbWluX2JvdW5k YXJ5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQXszLDV9IEIpCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOwor CistLSBNYXggYm91bmRhcnkgZXhjZWVkZWQgKEF7Myw1fSkKK1dJVEggdGVzdF9tYXhfYm91bmRh cnkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En XSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDYsIEFSUkFZWydBJ10pLCAgLS0gQ291bnQ9NiA+IG1heD01LCByb3cgMSBjb250ZXh0IHJl bW92ZWQKKyAgICAgICAgKDcsIEFSUkFZWydCJ10pICAgLS0gUm93IDEgY29udGV4dDogbm8gbWF0 Y2ggKGV4Y2VlZGVkIG1heCkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tYXhfYm91 bmRhcnkKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezMsNX0gQikKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7 CisKKy0tIEdyZWVkeSB2cyByZWx1Y3RhbnQ6IEErIG1hdGNoZXMgYWxsIHJvd3MsIEErPyBtYXRj aGVzIG1pbmltdW0KK1dJVEggdGVzdF9ncmVlZHlfdnNfcmVsdWN0YW50IEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydCJywnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2dy ZWVkeV92c19yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpCispOworCistLSBTYW1lIGRhdGEsIHJlbHVjdGFudCBBKz8gZXhpdHMgYXQgcm93IDMg d2hlcmUgQiBpcyBmaXJzdCBhdmFpbGFibGUKK1dJVEggdGVzdF9ncmVlZHlfdnNfcmVsdWN0YW50 IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywn XyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydB JywnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJywnXyddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X2dyZWVkeV92c19yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr PyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gUmVsdWN0YW50IGdyb3VwOiAoQSBCKSs/ IG1hdGNoZXMgbWluaW11bSAxIGl0ZXJhdGlvbgorV0lUSCB0ZXN0X3JlbHVjdGFudF9ncm91cCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVj dGFudF9ncm91cAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrPykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cykKKyk7CisKKy0tIEErPyBCIChyZWx1Y3RhbnQgcGx1cyk6IGV4aXRzIEEgYXQgZmlyc3QgQiBh dmFpbGFiaWxpdHkKKy0tIChTYW1lIHNjZW5hcmlvIGFzIGdyZWVkeS12cy1yZWx1Y3RhbnQgY29t cGFyaXNvbiBhYm92ZTsgcmV0YWluZWQgZm9yCistLSBzdGFuZGFsb25lIHF1YW50aWZpZXIgY292 ZXJhZ2UgYWxvbmdzaWRlIEF7MSwzfT8gYW5kIEF7MiwzfT8gYmVsb3cpCitXSVRIIHRlc3RfcmVs dWN0YW50X3BsdXMgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwg QVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9yZWx1Y3RhbnRfcGx1cworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/IEIpCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicg PSBBTlkoZmxhZ3MpCispOworCistLSBBezEsM30/IEIgKHJlbHVjdGFudCBib3VuZGVkKTogc2Ft ZSBkYXRhLCBib3VuZGVkIHF1YW50aWZpZXIKK1dJVEggdGVzdF9yZWx1Y3RhbnRfYm91bmRlZCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ18n XSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgzLCBBUlJBWVsnQScs J0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQicsJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVj dGFudF9ib3VuZGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezEsM30/IEIpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpCispOworCistLSBBezMsNX0/IEIgKHJlbHVjdGFudCBib3VuZGVkIG1pZC1iYW5kKTog dGhlIFZBUi1sZXZlbCBjb3VudAorLS0gY3ljbGVzIHRocm91Z2ggMywgNCwgNSB3aXRoaW4gYSBz aW5nbGUgbWF0Y2ggYXR0ZW1wdC4gIEV4ZXJjaXNlcworLS0gYSByZWx1Y3RhbnQgYm91bmRlZCBx dWFudGlmaWVyIHRoYXQgYWJzb3JiYWJpbGl0eSBhbmFseXNpcyBleGNsdWRlcworLS0gKHJlbHVj dGFudCBxdWFudGlmaWVycyBhcmUgbmV2ZXIgYWJzb3JiYWJsZSwgc28gQSBzdGF5cworLS0gbm9u LWFic29yYmFibGUpLgorV0lUSCB0ZXN0X3JlbHVjdGFudF9taWRfYmFuZCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0In XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfbWlkX2JhbmQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEF7Myw1fT8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0t IE5lc3RlZCBxdWFudGlmaWVyIGZsYXR0ZW5pbmcgbXVzdCBub3Qgd2lkZW4gdGhlIG1hdGNoaW5n IGxhbmd1YWdlIChILTEpLgorLS0gKEF7ayx9KSogd2l0aCBrID49IDIgcmVhY2hlcyByZXBldGl0 aW9uIGNvdW50cyB7MH0gVU5JT04gW2ssIElORik7IHRoZSBnYXAKKy0tIDEuLmstMSBpcyB1bnJl YWNoYWJsZSwgc28gaXQgbXVzdCBOT1QgY29sbGFwc2UgdG8gQSouICBBbiBpc29sYXRlZCBzaW5n bGUgQQorLS0gbXVzdCB5aWVsZCBhbiBFTVBUWSBtYXRjaCAoY291bnQgMCksIG5vdCBhIGxlbmd0 aC0xIG1hdGNoLgorV0lUSCB0ZXN0X25lc3RlZF9xdWFudF92YXIgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksICAtLSBpc29sYXRlZCBBOiAo QXsyLH0pKiBtYXRjaGVzIGVtcHR5IGhlcmUsIG5vdCAxCisgICAgICAgICgyLCBBUlJBWVsnXydd KSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksICAt LSBydW4gb2YgMjogbWF0Y2hlZAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQsCisgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2NvdW50CitGUk9NIHRl c3RfbmVzdGVkX3F1YW50X3ZhcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEF7Mix9KSopCisgICAg REVGSU5FIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gU2FtZSBmb3IgYSBHUk9VUCBj aGlsZDogKChBIEIpezIsfSkqIG11c3Qgbm90IGNvbGxhcHNlIHRvIChBIEIpKi4KKy0tIEFuIGlz b2xhdGVkIHNpbmdsZSAoQSBCKSBwYWlyIG11c3QgeWllbGQgYW4gRU1QVFkgbWF0Y2ggKGNvdW50 IDApLgorV0lUSCB0ZXN0X25lc3RlZF9xdWFudF9ncm91cCBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwgIC0tIGlzb2xhdGVkIChBIEIpIHBh aXI6IG1hdGNoZXMgZW1wdHkgaGVyZQorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAg ICgzLCBBUlJBWVsnXyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwg QVJSQVlbJ0InXSksCisgICAgICAgICg2LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDcsIEFSUkFZ WydCJ10pLCAgLS0gcnVuIG9mIDIgcGFpcnM6IG1hdGNoZWQKKyAgICAgICAgKDgsIEFSUkFZWydf J10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kLAorICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBtYXRj aF9jb3VudAorRlJPTSB0ZXN0X25lc3RlZF9xdWFudF9ncm91cAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoKChBIEIpezIsfSkqKQorICAgIERFRklORSBBIEFTICdBJyA9IEFOWShmbGFncyksIEIgQVMg J0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBQYXRob2xvZ2ljYWwgUGF0dGVybiBS dW50aW1lIFByb3RlY3Rpb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorCistLSBDb21wbGV4IG5lc3RlZCBudWxsYWJsZSAo KEEqIEIqKSopIC0gUnVudGltZSBwcm90ZWN0aW9uCitXSVRIIHRlc3RfY29tcGxleF9uZXN0ZWQg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSks CisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQyddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0X2NvbXBsZXhfbmVzdGVkCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo KEEqIEIqKSopCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBOZXN0ZWQgbnVsbGFibGUgd2l0 aCBxdWFudGlmaWVyICgoQXswLDN9KSopCitXSVRIIHRlc3RfbmVzdGVkX3F1YW50aWZpZXIgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9uZXN0ZWRf cXVhbnRpZmllcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBezAsM30pKikKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSBSZWx1Y3RhbnQgbnVsbGFibGU6 IEEqPyAocHJlZmVycyAwIG1hdGNoZXMpCistLSBBKj8gYWx3YXlzIHRha2VzIHNraXAgcGF0aCAo MCBpdGVyYXRpb25zIHByZWZlcnJlZCkKK1dJVEggdGVzdF9yZWx1Y3RhbnRfbnVsbGFibGUgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3Rh bnRfbnVsbGFibGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKj8gQikKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykK Kyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gQWx0ZXJuYXRpb24gUnVudGltZSBCZWhhdmlvcgorLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisK Ky0tIE11bHRpLWJyYW5jaCBhbHRlcm5hdGlvbiAoQSAoQnxDfER8RSkgRikKK1dJVEggdGVzdF9t dWx0aV9icmFuY2ggQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwg QVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZ WydGJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQydd KSwKKyAgICAgICAgKDYsIEFSUkFZWydGJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0EnXSksCisg ICAgICAgICg4LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDksIEFSUkFZWydGJ10pLAorICAgICAg ICAoMTAsIEFSUkFZWydBJ10pLAorICAgICAgICAoMTEsIEFSUkFZWydFJ10pLAorICAgICAgICAo MTIsIEFSUkFZWydGJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbXVsdGlfYnJh bmNoCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSAoQiB8IEMgfCBEIHwgRSkgRikKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcg PSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncyksCisgICAgICAgIEYg QVMgJ0YnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gQWx0ZXJuYXRpb24gd2l0aCBxdWFudGlmaWVy cyAoQSsgfCBCKyB8IEMrKQorV0lUSCB0ZXN0X2FsdF9xdWFudGlmaWVycyBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydCJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0Mn XSksCisgICAgICAgICg3LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDgsIEFSUkFZWydDJ10pLAor ICAgICAgICAoOSwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9h bHRfcXVhbnRpZmllcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyB8IEIrIHwgQyspCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisKKy0tIGFsdFBy aW9yaXR5IHJlcGxhY2VtZW50IChBIEIgQyB8IEQpCistLSBEIGJyYW5jaCAoaGlnaGVyIGFsdFBy aW9yaXR5KSBtYXRjaGVzIGZpcnN0IGF0IHJvdyAxLAorLS0gdGhlbiBBIEIgQyBicmFuY2ggKGxv d2VyIGFsdFByaW9yaXR5KSByZXBsYWNlcyBpdCBhdCByb3cgMy4KK1dJVEggdGVzdF9hbHRfcmVw bGFjZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QScsICdEJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InLCAnXyddKSwKKyAgICAgICAgKDMsIEFS UkFZWydDJywgJ18nXSksCisgICAgICAgICg0LCBBUlJBWVsnXycsICdfJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X3JlcGxhY2UKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIg QyB8IEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyks CisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gQUxUIGxleGljYWwgb3Jk ZXIgdGFrZXMgcHJpb3JpdHkgb3ZlciBncmVlZHkgKGxvbmdlciBtYXRjaCkuCistLSBSb3cgMSBt YXRjaGVzIGJvdGggQSBhbmQgQjsgQSB3aW5zIGJ5IGxleGljYWwgb3JkZXIgKG1hdGNoIDEtMSku CitXSVRIIHRlc3RfYWx0X2xleGljYWxfb3JkZXIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLCAgLS0gQSBhbmQgQiBib3RoIG1hdGNo CisgICAgICAgICgyLCBBUlJBWVsnXycsJ0MnXSkgICAtLSBvbmx5IEMgbWF0Y2hlcyAod291bGQg Y29udGludWUgQiBDKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAg bGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9sZXhpY2Fs X29yZGVyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIgQykrKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCistLSBBTFQgd2l0aCByZWx1 Y3RhbnQ6IChBKz8gfCBCKykgLSBBIGJyYW5jaCBpcyByZWx1Y3RhbnQsIEIgaXMgZ3JlZWR5Lgor LS0gUm93IDEgbWF0Y2hlcyBib3RoIEEgYW5kIEIuIEErPyBleGl0cyBpbW1lZGlhdGVseSAobWF0 Y2ggMS0xKS4KK1dJVEggdGVzdF9hbHRfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydCJywnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJywnXyddKQorICAgICkgQVMgdChpZCwg ZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X2VuZAorRlJPTSB0ZXN0X2FsdF9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBKz8g fCBCKykpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBPcHRpb25hbCBmaXJzdCBicmFuY2gg aW4gQUxUIHdpdGggcXVhbnRpZmllcjogKEE/IHwgQil7MSwyfQorLS0gRmlyc3QgYnJhbmNoIEE/ IGV4aXQgcGF0aCBtYXkgbG9vcCBiYWNrIHRvIEFMVCBhbmQgdHJpZ2dlciBjeWNsZQorLS0gZGV0 ZWN0aW9uIGR1cmluZyBERlMuICBBbGwgYnJhbmNoZXMgbXVzdCByZWNlaXZlIGNvcnJlY3QgY291 bnRzLgorV0lUSCB0ZXN0X2FsdF9vcHRfZmlyc3QgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDMsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf YWx0X29wdF9maXJzdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoQT8gfCBCKXsxLDJ9KSkKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyk7CisKKy0tIE1peGVkIEEvQiByb3dzIGFjcm9zcyBpdGVyYXRpb25zIG9m IChBPyB8IEIpezEsMn0KK1dJVEggdGVzdF9hbHRfb3B0X21peGVkIEFTICgKKyAgICBTRUxFQ1Qg KiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJS QVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQScsJ0InXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9hbHRfb3B0X21peGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKChBPyB8IEIp ezEsMn0pKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gUmVsdWN0YW50IHZhcmlhbnQ6IChB Pz8gfCBCKXsxLDJ9CitXSVRIIHRlc3RfYWx0X29wdF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfYWx0X29wdF9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoKEE/PyB8 IEIpezEsMn0pKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisg ICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gT3ZlcmxhcHBpbmcgbWF0Y2g6 IEEgQiBDIEQgRSB8IEIgQyBEIHwgQyBEIEUgRiAoU0tJUCBQQVNUIExBU1QgUk9XKQorV0lUSCB0 ZXN0X292ZXJsYXAxIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs IEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJB WVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0Un XSksCisgICAgICAgICg2LCBBUlJBWVsnRiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3ZlcmxhcDEKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSB8IEIgQyBEIHwgQyBEIEUgRikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncyksCisgICAgICAg IEYgQVMgJ0YnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gU2FtZSB3aXRoIFNLSVAgVE8gTkVYVCBS T1c6IHRocmVlIG92ZXJsYXBwaW5nIG1hdGNoZXMKK1dJVEggdGVzdF9vdmVybGFwMSBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0 LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDUsIEFSUkFZWydFJ10pLAorICAgICAgICAoNiwgQVJS QVlbJ0YnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X292ZXJsYXAxCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBC IEMgRCBFIHwgQiBDIEQgfCBDIEQgRSBGKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9 IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBB UyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAg ICAgIEUgQVMgJ0UnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRiBBUyAnRicgPSBBTlkoZmxhZ3Mp CispOworCistLSBMb25nZXIgcGF0dGVybiBmYWlscywgc2hvcnRlciBzdXJ2aXZlczogQSsgQiBD IEQgRSB8IEIrIEMKK1dJVEggdGVzdF9vdmVybGFwMWIgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisg ICAgICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3ZlcmxhcDFiCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKyBCIEMgRCBFIHwgQisgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAg ICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisKKy0tIExvbmcgQiBzZXF1ZW5j ZSB3aXRoIGRpZmZlcmVudCBlbmRpbmdzOiBBIEIrIEMgfCBCKyBECitXSVRIIHRlc3Rfb3Zlcmxh cDIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgIEFSUkFZWydB J10pLAorICAgICAgICAoMiwgIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgIEFSUkFZWydCJ10p LAorICAgICAgICAoNCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgIEFSUkFZWydCJ10pLAor ICAgICAgICAoNiwgIEFSUkFZWydDJ10pLAorICAgICAgICAoNywgIEFSUkFZWydCJ10pLAorICAg ICAgICAoOCwgIEFSUkFZWydCJ10pLAorICAgICAgICAoOSwgIEFSUkFZWydCJ10pLAorICAgICAg ICAoMTAsIEFSUkFZWydEJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vdmVybGFwMgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKEEgQisgQyB8IEIrIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdD JyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsKKworLS0g R3JlZWR5IHdpdGggbGF0ZSBmYWlsdXJlICgiYmV0cmF5YWwiKTogQSBCIEMrIEQgfCBBIEIKK1dJ VEggdGVzdF9iZXRyYXlhbCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDUsIEFSUkFZ WydDJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0UnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2JldHJheWFs CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQysgRCB8IEEgQikKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlko ZmxhZ3MpCispOworCistLSBNdWx0aXBsZSBUUlVFIHBlciByb3c6IG92ZXJsYXBwaW5nIHBhdHRl cm4gdmFyaWFibGVzCitXSVRIIHRlc3RfbXVsdGlfdHJ1ZSBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgyLCBBUlJB WVsnQicsJ0MnXSksCisgICAgICAgICgzLCBBUlJBWVsnQycsJ0QnXSksCisgICAgICAgICg0LCBB UlJBWVsnRCcsJ0UnXSksCisgICAgICAgICg1LCBBUlJBWVsnRScsJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X211bHRpX3RydWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSkKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisKKy0t IERpYWdvbmFsIHBhdHRlcm4gd2l0aCBzaGlmdGVkIG11bHRpLVRSVUUgb3ZlcmxhcAorV0lUSCB0 ZXN0X2RpYWdvbmFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs IEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJywnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydDJywnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJywnQyddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydfJywnRCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZGlhZ29uYWwKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOIChBIEIgQyBEKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycg PSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisKKy0tICgo QSB8IEIpIEMpKyAtIGFsdGVybmF0aW9uIGluc2lkZSBncm91cCB3aXRoIG91dGVyIHF1YW50aWZp ZXIKK1dJVEggdGVzdF9hbHRfZ3JvdXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQyddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0MnXSksCisgICAgICAgICg1 LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X2dyb3VwCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoKEEgfCBCKSBDKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9 IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRGVlcCBOZXN0ZWQgR3JvdXBzCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KworLS0gVGhyZWUtbGV2ZWwgbmVzdGluZyAoKCgoQSBCKSspKykrKQorV0lUSCB0ZXN0X2RlZXBf bmVzdGluZyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0En XSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnXyddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2RlZXBfbmVzdGluZworV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KCgoKEEgQikrKSspKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE11bHRpcGxlIGdyb3Vw cyBpbiBuZXN0aW5nICgoKEEgQikgKEMgRCkpKykKK1dJVEggdGVzdF9uZXN0ZWRfc2VxdWVudGlh bCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisg ICAgICAgICg0LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNiwgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDgs IEFSUkFZWydEJ10pLAorICAgICAgICAoOSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9uZXN0ZWRfc2VxdWVudGlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoQSBC KSAoQyBEKSkrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisg ICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxh Z3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE5lc3RlZCBFTkQt PkVORCBtYXggcmVhY2hlZAorLS0gSW5uZXIgZ3JvdXAgKEEgQil7Mn0gcmVhY2hlcyBtYXg9MiAt PiBleGl0cyB0byBvdXRlciBFTkQKK1dJVEggdGVzdF9lbmRfbmVzdGVkX21heCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlb J0InXSksCisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZWydCJ10p LAorICAgICAgICAoOSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9lbmRfbmVzdGVkX21heAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoQSBCKXsyfSkrKQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0g QU5ZKGZsYWdzKQorKTsKKworLS0gTmVzdGVkIEVORC0+RU5EIGJldHdlZW4gbWluL21heAorLS0g SW5uZXIgZ3JvdXAgKEEgQil7MSwzfSBleGl0cyBiZXR3ZWVuIG1pbi9tYXggLT4gb3V0ZXIgRU5E IGNvdW50KysKK1dJVEggdGVzdF9lbmRfbmVzdGVkX21pZCBBUyAoCisgICAgU0VMRUNUICogRlJP TSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydC J10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSksCisgICAg ICAgICg3LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZWydCJ10pLAorICAgICAgICAo OSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9lbmRfbmVzdGVk X21pZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoQSBCKXsxLDN9KSspCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3Mp CispOworCistLSBOZXN0ZWQgcmVsdWN0YW50IGdyb3VwICgoQSBCKSs/KSB3aXRoIGZvbGxvd2lu ZyBlbGVtZW50IEMKKy0tIElubmVyIGdyb3VwIGV4aXRzIGFmdGVyIG1pbmltdW0gMSBpdGVyYXRp b24KK1dJVEggdGVzdF9uZXN0ZWRfcmVsdWN0YW50IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChW QUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSks CisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAg ICAgICAoNSwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9uZXN0 ZWRfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrPyBDKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCistLSAoQSBCKXsyfSAt IGdyb3VwIHdpdGggZXhhY3QgcXVhbnRpZmllcgorV0lUSCB0ZXN0X2dyb3VwX2V4YWN0IEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X2dyb3VwX2V4YWN0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKXsyfSkKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisKKy0tIE5lc3RlZCBFTkQtPkVORCBmYXN0LWZvcndhcmQKKy0tIFdoZW4gYW4g aW5uZXIgZ3JvdXAgaGFzIGEgbnVsbGFibGUgYm9keSBhbmQgY291bnQgPCBtaW4sIHRoZQorLS0g ZmFzdC1mb3J3YXJkIHBhdGggZXhpdHMgdGhyb3VnaCB0aGUgb3V0ZXIgRU5ELCBpbmNyZW1lbnRp bmcKKy0tIHRoZSBvdXRlciBncm91cCdzIGNvdW50LgorLS0gUGF0dGVybjogKChBPyl7MiwzfSl7 MiwzfSAtLSBuZXN0ZWQgZ3JvdXBzLCBuZWl0aGVyIGNvbGxhcHNlcworLS0gYmVjYXVzZSB0aGUg b3B0aW1pemVyIGNhbm5vdCBzYWZlbHkgbXVsdGlwbHkgbm9uLWV4YWN0IHF1YW50aWZpZXJzLgor LS0gRGF0YSBoYXMgbm8gQSByb3dzLCBmb3JjaW5nIGFsbC1lbXB0eSBpdGVyYXRpb25zIHZpYSBm YXN0LWZvcndhcmQuCitXSVRIIHRlc3RfbmVzdGVkX2ZmIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0In XSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X25lc3RlZF9mZgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoQT8pezIsM30pezIsM30pCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBT S0lQIE9wdGlvbnMgKFJ1bnRpbWUpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0gU0tJUCBQQVNUIExBU1QgUk9XIChu b24tb3ZlcmxhcHBpbmcgbWF0Y2hlcykKK1dJVEggdGVzdF9za2lwX3Bhc3QgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJS QVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3Mp CispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3NraXBfcGFzdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gU0tJUCBUTyBORVhUIFJP VyAob3ZlcmxhcHBpbmcgbWF0Y2hlcykKK1dJVEggdGVzdF9za2lwX25leHQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJS QVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3Mp CispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3NraXBfbmV4dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIFNLSVAgZGlmZmVyZW5jZSB2 ZXJpZmljYXRpb24KK1dJVEggdGVzdF9za2lwX2RpZmYgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUICdTS0lQIFBBU1QnIEFTIG1vZGUsIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lwX2Rp ZmYKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKykKK1VOSU9O IEFMTAorU0VMRUNUICdTS0lQIE5FWFQnIEFTIG1vZGUsIGlkLCBmbGFncywKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lwX2RpZmYKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispCitPUkRFUiBCWSBtb2RlLCBpZDsKKworLS0g UmVsdWN0YW50IFNLSVAgY29tcGFyaXNvbjogQSs/IHdpdGggU0tJUCBQQVNUIHZzIFNLSVAgTkVY VAorV0lUSCB0ZXN0X3JlbHVjdGFudF9za2lwIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCAnU0tJUCBQQVNUJyBBUyBtb2RlLCBpZCwgZmxhZ3Ms CisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X3Nr aXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErPykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpCispCitVTklPTiBBTEwKK1NFTEVDVCAnU0tJUCBORVhUJyBBUyBtb2Rl LCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf cmVsdWN0YW50X3NraXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKz8pCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKQorT1JERVIgQlkgbW9kZSwgaWQ7CisKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gSU5JVElBTCBNb2RlIChSdW50aW1lKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIEV4cGxpY2l0IElOSVRJ QUwgKGFmdGVyIEFGVEVSIE1BVENIIFNLSVAsIHBlciB0aGUgZ3JhbW1hcik7IHNhbWUgYXMgdGhl IGRlZmF1bHQKK1dJVEggdGVzdF9pbml0aWFsX21vZGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ18nXSksICAtLSBVbm1hdGNoZWQKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnXyddKSwgIC0tIFVubWF0Y2hlZAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9pbml0aWFsX21vZGUKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBJTklUSUFM CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKQorKTsKKworLS0gRGVmYXVsdCBtb2RlIChpbmNsdWRlIGFsbCByb3dzKQorV0lUSCB0ZXN0 X2RlZmF1bHRfbW9kZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnXyddKSwgIC0tIFVubWF0Y2hlZCwgYnV0IGluY2x1ZGVkCisgICAgICAgICgyLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlb J18nXSksICAtLSBVbm1hdGNoZWQsIGJ1dCBpbmNsdWRlZAorICAgICAgICAoNSwgQVJSQVlbJ0En XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9kZWZhdWx0X21vZGUKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp CispOworCistLSBNb2RlIGVxdWl2YWxlbmNlIHZlcmlmaWNhdGlvbjogZXhwbGljaXQgSU5JVElB TCBlcXVhbHMgdGhlIGRlZmF1bHQgbW9kZQorV0lUSCB0ZXN0X21vZGVfZGlmZiBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnXyddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUICdJTklUSUFMJyBBUyBtb2RlLCBDT1VOVCgqKSBBUyByb3dfY291 bnQKK0ZST00gKAorICAgIFNFTEVDVCBpZCBGUk9NIHRlc3RfbW9kZV9kaWZmCisgICAgV0lORE9X IHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgICAgICBJTklUSUFMCisgICAgICAgIFBBVFRFUk4gKEEpCisgICAgICAg IERFRklORSBBIEFTICdBJyA9IEFOWShmbGFncykKKyAgICApCispIHN1YgorVU5JT04gQUxMCitT RUxFQ1QgJ0RFRkFVTFQnIEFTIG1vZGUsIENPVU5UKCopIEFTIHJvd19jb3VudAorRlJPTSAoCisg ICAgU0VMRUNUIGlkIEZST00gdGVzdF9tb2RlX2RpZmYKKyAgICBXSU5ET1cgdyBBUyAoCisgICAg ICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgICAgIFBBVFRFUk4gKEEpCisgICAgICAgIERFRklORSBBIEFTICdBJyA9IEFOWShmbGFncykK KyAgICApCispIHN1YgorT1JERVIgQlkgbW9kZTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBGcmFtZSBCb3VuZGFy eSBWYXJpYXRpb25zCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKworLS0gVmVyeSBsaW1pdGVkIGZyYW1lICgxIEZPTExPV0lO RykKK1dJVEggdGVzdF9vbmVfZm9sbG93aW5nIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksICAt LSBXaXRoaW4gMSBGT0xMT1dJTkcKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLCAgLS0gQmV5b25k IDEgRk9MTE9XSU5HIGZyb20gcm93IDEKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb25lX2ZvbGxvd2luZworV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisg ICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAn QicgPSBBTlkoZmxhZ3MpCispOworCistLSBNZWRpdW0gZnJhbWUgKDEwIEZPTExPV0lORykKK1dJ VEggdGVzdF90ZW5fZm9sbG93aW5nIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAg ICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwg QVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDcsIEFSUkFZ WydBJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg5LCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDEwLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDExLCBBUlJBWVsnQiddKSwg IC0tIFdpdGhpbiAxMCBGT0xMT1dJTkcgZnJvbSByb3cgMQorICAgICAgICAoMTIsIEFSUkFZWydB J10pLAorICAgICAgICAoMTMsIEFSUkFZWydCJ10pICAgLS0gQmV5b25kIDEwIEZPTExPV0lORyBm cm9tIHJvdyAxCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisg ICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfdGVuX2ZvbGxvd2luZwor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCAxMCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEV4YWN0IGJvdW5k YXJ5IG1hdGNoCitXSVRIIHRlc3RfZXhhY3RfYm91bmRhcnkgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSks CisgICAgICAgICg1LCBBUlJBWVsnQiddKSAgIC0tIEV4YWN0bHkgYXQgNCBGT0xMT1dJTkcgKGZy YW1lIGVuZCkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9leGFjdF9ib3VuZGFyeQor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCA0IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gTiBGT0xMT1dJTkcg KyBTS0lQIFRPIE5FWFQgUk9XOiBvdmVybGFwcGluZyBtYXRjaGVzIGJvdW5kZWQgYnkgZnJhbWUK Ky0tIFJvdyAxOiBmcmFtZSBbMSw0XSwgQSgxLTMpIEIoNCkgLT4gbWF0Y2gKKy0tIFJvdyAyOiBm cmFtZSBbMiw1XSwgQSgyLTMpIEIoNCkgLT4gbWF0Y2gKKy0tIFJvdyAzOiBmcmFtZSBbMyw2XSwg QSgzKSBCKDQpIC0+IG1hdGNoCistLSBSb3cgNTogZnJhbWUgWzUsNl0sIEEoNSkgQig2KSAtPiBt YXRjaAorV0lUSCB0ZXN0X25fc2tpcF9uZXh0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAg ICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X25fc2tpcF9uZXh0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDMgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpCispOworCistLSBGcmFtZSBleGFjdGx5IDEgcm93IHNob3J0IG9mIHBvdGVudGlh bCBtYXRjaAorLS0gRnJvbSByb3cgMTogQSBBIEEgQiBuZWVkcyA0IHJvd3MgYnV0IGZyYW1lIGhv bGRzIDMgLT4gbm8gbWF0Y2gKKy0tIEZyb20gcm93IDI6IEEgQSBCIGZpdHMgaW4gMy1yb3cgZnJh bWUgLT4gbWF0Y2gKK1dJVEggdGVzdF9mcmFtZV9vbmVfc2hvcnQgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0In XSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZnJhbWVfb25lX3Nob3J0CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNwZWNpYWwgUGFydGl0 aW9uIENhc2VzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KKworLS0gRW1wdHkgcGFydGl0aW9uICgwIHJvd3MpCitXSVRIIHRl c3RfZW1wdHlfcGFydGl0aW9uIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgMiwgQVJSQVlbJ18nXSkgIC0tIERp ZmZlcmVudCBwYXJ0aXRpb24KKyAgICApIEFTIHQoaWQsIHBhcnQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBwYXJ0LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9lbXB0eV9wYXJ0aXRpb24KK1dIRVJFIHBhcnQgPSA5OSAgLS0gTm8gcm93cyBtYXRjaAor V0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBwYXJ0CisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSBTaW5nbGUgcm93IHBhcnRp dGlvbgorV0lUSCB0ZXN0X3NpbmdsZV9yb3cgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9zaW5nbGVfcm93CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSBBbGwgcm93cyBmYWlsIG1hdGNoaW5nIChh bGwgREVGSU5FIGZhbHNlKQorV0lUSCB0ZXN0X2FsbF9mYWlsIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSB0ZXN0X2FsbF9mYWlsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgZmFsc2UgIC0tIEFsbCByb3dzIGZhaWwKKyk7CisKKy0tIFBhcnRpdGlvbiBlbmQg d2l0aCBhYnNvcmJhYmxlIHBhdHRlcm4KKy0tIFNLSVAgUEFTVCBMQVNUIFJPVyArIHVuYm91bmRl ZCBmcmFtZSArIGFsbCByb3dzIG1hdGNoIEEKKy0tIFRyaWdnZXJzIGFic29yYiBpbiAhcm93RXhp c3RzIHBhdGggYXQgcGFydGl0aW9uIGJvdW5kYXJ5LgorV0lUSCB0ZXN0X2Fic29yYl9wYXJ0aXRp b25fZW5kIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hYnNvcmJfcGFydGl0aW9uX2VuZAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKQorKTsKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBERUZJTkUgU3BlY2lhbCBDYXNlcworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0t IFVuZGVmaW5lZCB2YXJpYWJsZSBpbiBERUZJTkUKK1dJVEggdGVzdF91bmRlZmluZWRfdmFyIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ1gnXSksICAtLSBCIG5vdCBkZWZpbmVkLCBkZWZhdWx0cyB0byBU UlVFCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNSwgQVJSQVlbJ18nXSksICAtLSBCIGRlZmF1bHRzIHRvIFRSVUUsIGJ1dCBubyBm bGFncworICAgICAgICAoNiwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF91bmRlZmluZWRfdmFyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgLS0gQiBpcyB1bmRlZmlu ZWQsIGRlZmF1bHRzIHRvIFRSVUUKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOwor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEFic29ycHRpb24gRHluYW1pYyBGbGFncworLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy0tIFBhcnRp YWwgYWJzb3JiYWJsZSBwYXR0ZXJuICgoQSspIEIpCitXSVRIIHRlc3RfcGFydGlhbF9hYnNvcmJh YmxlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB J10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9wYXJ0aWFsX2Fic29yYmFibGUKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOICgoQSspIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBEeW5hbWljIGZsYWcg dXBkYXRlICgoQSspIHwgQikKK1dJVEggdGVzdF9keW5hbWljX2ZsYWdzIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZ WydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQidd KQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZp cnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2R5bmFtaWNfZmxhZ3MKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOICgoQSspIHwgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIE5vbi1hYnNv cmJhYmxlIGNvbnRleHQgZHVyaW5nIGFic29ycHRpb24KKy0tIFBhdHRlcm4gKEEgQikrIEM6IEEs QiBpbiBhYnNvcmJhYmxlIGdyb3VwLCBDIGlzIG5vdC4KKy0tIFdoZW4gRU5EIGV4aXRzIHRvIEMs IHRoZSBjbG9uZWQgY29udGV4dCBiZWNvbWVzIG5vbi1hYnNvcmJhYmxlLgorV0lUSCB0ZXN0X25v bl9hYnNvcmJhYmxlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs IEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0Mn XSksCisgICAgICAgICg2LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitT RUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0X25vbl9hYnNvcmJhYmxlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSsgQykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKworLS0gQWJz b3JwdGlvbiBza2lwcGVkIHdoZW4gbm8gYWJzb3JiYWJsZSBzdGF0ZSByZW1haW5zCistLSBQYXR0 ZXJuIChBIEIpKyBDIEQgd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cKKy0tIEFmdGVyIHJlYWNoaW5n IEMgKG5vbi1hYnNvcmJhYmxlKSwgbm8gYWJzb3JiYWJsZSBzdGF0ZSByZW1haW5zLgorLS0gT24g bmV4dCByb3cgKEQpLCB0aGUgZWFybHkgcmV0dXJuIGZpcmVzLgorV0lUSCB0ZXN0X2Fic29ycHRp b25fZWFybHlfcmV0dXJuIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlb J0MnXSksCisgICAgICAgICg2LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDcsIEFSUkFZWydfJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JwdGlvbl9lYXJseV9yZXR1cm4K K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKyBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdz KQorKTsKKworLS0gQ292ZXJhZ2UgZmFpbHVyZTogb2xkZXIgY2FuJ3QgY292ZXIgbmV3ZXIncyBz dGF0ZXMKKy0tIFBhdHRlcm4gQSsgfCBCKyB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVy4KKy0tIFJv dyAxOiBvbmx5IEEgLT4gQ3R4MSB0YWtlcyBBIGJyYW5jaCBvbmx5IChCIGZhaWxzKS4KKy0tIFJv dyAyOiBBIGFuZCBCIC0+IEN0eDIgdGFrZXMgYm90aCBicmFuY2hlcy4KKy0tIEFic29ycHRpb246 IEN0eDEgaGFzIEEgYnV0IG5vIEIgLT4gY2FuJ3QgY292ZXIgQ3R4MidzIEIgc3RhdGUgLT4gZmFp bHMuCitXSVRIIHRlc3RfY292ZXJhZ2VfZmFpbCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsICdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0En LCAnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywgJ18nXSksCisgICAgICAgICg0LCBBUlJB WVsnQScsICdfJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nLCAnXyddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X2NvdmVyYWdlX2ZhaWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IHwgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBBYnNvcmIgc2tpcHMgY29tcGxldGVk IGNvbnRleHQgKG9sZGVyLT5zdGF0ZXM9PU5VTEwpCistLSBQYXR0ZXJuIEErIHwgQisgd2l0aCBT S0lQIFBBU1QgTEFTVCBST1cuCistLSBSb3cgMTogQSBvbmx5IC0+IEN0eDEgdGFrZXMgQSBicmFu Y2guIFJvdyAyOiBCIG9ubHkgLT4gQ3R4MSBBIGZhaWxzIChjb21wbGV0ZWQpLgorLS0gQ3R4MiB0 YWtlcyBCIGJyYW5jaC4gQWJzb3JwdGlvbjogQ3R4MSBzdGF0ZXM9PU5VTEwgLT4gc2tpcC4KK1dJ VEggdGVzdF9vbGRlcl9jb21wbGV0ZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9vbGRlcl9jb21wbGV0ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEErIHwgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSBBYnNvcmIgc2tpcHMgYSBjb250 ZXh0IHdpdGggbm8gYWJzb3JiYWJsZSBzdGF0ZQorLS0gUGF0dGVybiBBKyB8IEIgQyB3aXRoIFNL SVAgUEFTVCBMQVNUIFJPVyAob25seSBBKyBicmFuY2ggYWJzb3JiYWJsZSkuCistLSBSb3cgMTog QiBvbmx5IC0+IEN0eDEgdGFrZXMgQiBicmFuY2ggKG5vbi1hYnNvcmJhYmxlKSwgYWR2YW5jZXMg dG8gQy4KKy0tIFJvdyAyOiBDLEEgLT4gQ3R4MSBDIG1hdGNoZXMgKG5vIGFic29yYmFibGUgc3Rh dGUpLiBDdHgyIHRha2VzIEEgKGFic29yYmFibGUpLgorLS0gQWJzb3JwdGlvbjogQ3R4MSBoYXMg bm8gYWJzb3JiYWJsZSBzdGF0ZSAtPiBza2lwLgorV0lUSCB0ZXN0X29sZGVyX25vbl9hYnNvcmJh YmxlIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydC JywgJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQycsICdBJ10pLAorICAgICAgICAoMywgQVJS QVlbJ18nLCAnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJywgJ18nXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9vbGRlcl9ub25fYWJzb3JiYWJsZQorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgfCBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFO WShmbGFncykKKyk7CisKKy0tIFJlbHVjdGFudCBicmFuY2ggaW4gQUxUIG5vdCBhYnNvcmJhYmxl OiAoQSs/KSB8IEIKKy0tIEErPyBpcyByZWx1Y3RhbnQgc28gbm90IGFic29yYmFibGUuIENvbXBh cmUgd2l0aCBncmVlZHkgKEErKSB8IEIgYWJvdmUuCitXSVRIIHRlc3RfcmVsdWN0YW50X2FsdF9h YnNvcnB0aW9uIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfYWx0X2Fic29ycHRpb24K K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVY VCBST1cKKyAgICBQQVRURVJOICgoQSs/KSB8IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMg J0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIFplcm8tQ29uc3VtcHRpb24gQ3ljbGUgRGV0ZWN0aW9uCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLS0g Q3ljbGUgcHJldmVudGlvbiBhdCBjb3VudCA+IDA6IChBKikqIGlubmVyIHNraXAgY3ljbGVzIGF0 IGNvdW50PTMKK1dJVEggdGVzdF9jeWNsZV9ub256ZXJvIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0En XSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pICAt LSBJbm5lciBBKiBtYXRjaGVzIDAsIGN5Y2xlcyBhdCBjb3VudD0zCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfY3ljbGVfbm9uemVybworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBKikqKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIEN5Y2xl IHdpdGggbWl4ZWQgbnVsbGFibGVzOiAoQSogQiopKiBtdWx0aXBsZSBudWxsYWJsZSBwYXRocwor V0lUSCB0ZXN0X2N5Y2xlX21peGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAg ICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAg ICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfY3ljbGVfbWl4ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSogQiop KikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RhbmRhcmQgQ2xhdXNlIDc6 IEZvcm1hbCBQYXR0ZXJuIE1hdGNoaW5nIFJ1bGVzCistLSBJU08vSUVDIDE5MDc1LTUsIENsYXVz ZSA3CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA3LjIuMiBBbHRlcm5hdGlvbjogZmlyc3QgYWx0ZXJu YXRpdmUgaXMgcHJlZmVycmVkCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLS0gKEEgfCBCKTogQSBwcmVmZXJyZWQgb3Zl ciBCIHdoZW4gYm90aCBjb3VsZCBtYXRjaAorLS0gUm93IDEgaGFzIGJvdGggQSBhbmQgQiBmbGFn czogQSBzaG91bGQgYmUgY2hvc2VuIChmaXJzdCBhbHRlcm5hdGl2ZSkKK1dJVEggdGVzdF9hbHRf cHJlZmVyIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJywnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAg ICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfcHJlZmVyCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoKEEgfCBCKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tIChBezEsMn0g fCBCezIsM30pOiBhbGwgQS1tYXRjaGVzIGJlZm9yZSBhbGwgQi1tYXRjaGVzCistLSBTdGFuZGFy ZCBleGFtcGxlOiBwcmVmZXJtZW50IG9yZGVyIGlzIEFBLCBBLCBCQkIsIEJCCistLSBSb3dzIDEt MiBoYXZlIGJvdGggQSBhbmQgQjogZ3JlZWR5IEF7MSwyfSBzaG91bGQgbWF0Y2ggMS0yCitXSVRI IHRlc3RfYWx0X3F1YW50aWZpZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdCJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X3F1 YW50aWZpZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQXsxLDJ9IHwgQnsyLDN9KSkKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncykKKyk7CisKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gNy4yLjMgQ29uY2F0ZW5hdGlvbjogbGV4aWNvZ3Jh cGhpYyBvcmRlcmluZworLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy0tICgoQSB8IEIpIChDIHwgRCkpOiBwcmVmZXJtZW50 IG9yZGVyIGlzIEFDLCBBRCwgQkMsIEJECistLSBSb3cgMSBtYXRjaGVzIEEgYW5kIEIsIFJvdyAy IG1hdGNoZXMgQyBhbmQgRAorLS0gUHJlZmVycmVkIG1hdGNoOiBBIHRoZW4gQyAoZmlyc3QgYWx0 ZXJuYXRpdmVzIGluIGJvdGggcG9zaXRpb25zKQorV0lUSCB0ZXN0X2NvbmNhdF9sZXggQVMgKAor ICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0MnLCdEJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfY29uY2F0X2xleAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQyB8IEQpKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBE IEFTICdEJyA9IEFOWShmbGFncykKKyk7CisKKy0tICgoQSB8IEIpIEMpOiBmaXJzdCBhbHQgKEEp IGZhaWxzLCBzZWNvbmQgYWx0IChCKSBzdWNjZWVkcworLS0gVGVzdHMgYmFja3RyYWNraW5nOiBy b3cgMSBoYXMgb25seSBCLCByb3cgMiBoYXMgQworV0lUSCB0ZXN0X2NvbmNhdF9iYWNrdHJhY2sg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSks CisgICAgICAgICgyLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9jb25j YXRfYmFja3RyYWNrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSBDKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworCistLSAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcu Mi40IFF1YW50aWZpY2F0aW9uOiBncmVlZHkvcmVsdWN0YW50LCBsZXhpY29ncmFwaGljID4gbGVu Z3RoCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKworLS0gVnsyLDR9IGdyZWVkeTogbG9uZ2VyIG1hdGNoIHByZWZlcnJlZAor V0lUSCB0ZXN0X3F1YW50X2dyZWVkeSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X3F1YW50X2dyZWVkeQorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsy LDR9KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0t IFZ7Miw0fT8gcmVsdWN0YW50OiBzaG9ydGVyIG1hdGNoIHByZWZlcnJlZAorV0lUSCB0ZXN0X3F1 YW50X3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJS QVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3Mp CispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0X3F1YW50X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyLDR9PykK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSAoKEF8 Qil7MSwyfSkgZ3JlZWR5OiBsZXhpY29ncmFwaGljID4gbGVuZ3RoCistLSBTdGFuZGFyZCBleGFt cGxlOiBwcmVmZXJtZW50IEFBLCBBQiwgQSwgQkEsIEJCLCBCCistLSBTaW5nbGUgQSBwcmVmZXJy ZWQgb3ZlciBCLXN0YXJ0aW5nIGxvbmdlciBtYXRjaAorV0lUSCB0ZXN0X3F1YW50X2xleF9ncmVl ZHkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En LCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQor KQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9xdWFudF9sZXhfZ3JlZWR5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKXsx LDJ9KSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisKKy0tICgoQXxCKXsxLDJ9PykgcmVsdWN0YW50 OiBsZXhpY29ncmFwaGljID4gbGVuZ3RoCistLSBTdGFuZGFyZCBleGFtcGxlOiBwcmVmZXJtZW50 IEEsIEFBLCBBQiwgQiwgQkEsIEJCCistLSBTaW5nbGUgQSBwcmVmZXJyZWQgb3ZlciBhbnkgQi1z dGFydGluZyBtYXRjaAorV0lUSCB0ZXN0X3F1YW50X2xleF9yZWx1Y3RhbnQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9xdWFudF9s ZXhfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKXsxLDJ9PykpCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicg PSBBTlkoZmxhZ3MpCispOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuMi42IEFuY2hvcnMgKG5vdCB5ZXQgaW1w bGVtZW50ZWQgLSBzeW50YXggZXJyb3IgZXhwZWN0ZWQpCistLSAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLS0gXiBhbmNob3I6 IG5vdCB5ZXQgc3VwcG9ydGVkCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gKFNFTEVDVCAx IEFTIHYpIHQKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSB2IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKF4gQSkgREVGSU5FIEEgQVMg VFJVRSk7CisKKy0tICQgYW5jaG9yOiBub3QgeWV0IHN1cHBvcnRlZAorU0VMRUNUIGNvdW50KCop IE9WRVIgdyBGUk9NIChTRUxFQ1QgMSBBUyB2KSB0CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgdiBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBICQpIERFRklORSBBIEFTIFRSVUUpOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuMi44IEluZmluaXRl IHJlcGV0aXRpb25zIG9mIGVtcHR5IG1hdGNoZXMKKy0tIChQZXJsIGxvd2VyLWJvdW5kIHN0b3Bw aW5nIHJ1bGUpCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKy0tIFN0YW5kYXJkIGV4YW1wbGVzIGZyb20gNy4yLjg6CistLSAg IChBPyl7MCwzfTogYWxsb3dlZCBzdHJpbmdzIGluY2x1ZGUgU1RSMDA9KCksIFNUUjAxPShBKSwg U1RSMDI9KGVtcHR5KSwKKy0tICAgICAgICAgICAgICBTVFIwMz0oQUEpLCBTVFIwND0oQSxlbXB0 eSksIFNUUjA3PShBQUEpLCBTVFIwOD0oQUEsZW1wdHkpCistLSAgIChBPyl7MSwzfTogc2FtZSBh cyB7MCwzfSBidXQgU1RSMDAgZXhjbHVkZWQgKG1pbj0xIG5vdCBtZXQpCistLSAgIChBPyl7Miwz fTogU1RSMDMtMDYgKGxlbiAyKSBhbmQgU1RSMDcsMDgsMTEsMTIgKGxlbiAzKSBhcmUgdmFsaWQK Ky0tICAgICAgICAgICAgICBTVFIwNj0oU1RSRSxTVFJFKSBJUyB2YWxpZCBiZWNhdXNlIG5vbi1m aW5hbCBTVFJFIGF0CistLSAgICAgICAgICAgICAgcG9zaXRpb24gMSBmaWxscyB0aGUgbG93ZXIg Ym91bmQKKworLS0gKEE/PykqQjogU3RhbmRhcmQgNy4yLjggaW50cm9kdWN0b3J5IGV4YW1wbGUK Ky0tICJtYXRjaGVkIGFnYWluc3QgYSBzZXF1ZW5jZSBvZiByb3dzIGZvciB3aGljaCB0aGUgb25s eSBmZWFzaWJsZQorLS0gIG1hdGNoaW5nIGlzOiBCIgorLS0gQT8/IGlzIHJlbHVjdGFudCwgcHJl ZmVycyBlbXB0eS4gKiBpcyBncmVlZHkgYnV0IFBlcmwgcnVsZSBzdG9wcworLS0gYWZ0ZXIgZW1w dHkgbWF0Y2ggd2l0aCBtaW4oPTApIHNhdGlzZmllZC4KKy0tIEV4cGVjdGVkOiBlYWNoIEIgcm93 IG1hdGNoZXMgYWxvbmUgKEE/PyBlbXB0eSwgKiBzdG9wcywgQiBtYXRjaGVzKQorV0lUSCB0ZXN0 X2VtcHR5X3JlbHVjdGFudF9zdGFyIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAg ICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAg ICgzLCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2VtcHR5X3Jl bHVjdGFudF9zdGFyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/PykqIEIpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCispOworCistLSAoQT8pezAsM306IG1pbj0wLCBudWxsYWJsZSBpbm5lci4KKy0tIEEgbmV2 ZXIgbWF0Y2hlcyBidXQgQT8gbWF0Y2hlcyBlbXB0eSwgc2F0aXNmeWluZyBtaW49MCBpbW1lZGlh dGVseS4KKy0tIE5GQSByZXBvcnRzIDMgbGVuZ3RoLTAgbWF0Y2hlcyAob25lIHBlciByb3cpOyBm aXJzdF92YWx1ZSAvIGxhc3RfdmFsdWUKKy0tIGFyZSBOVUxMIGJlY2F1c2UgdGhlIHdpbmRvdyBm cmFtZSBmb3IgYW4gZW1wdHkgbWF0Y2ggaGFzIG5vIHJvd3MuCitXSVRIIHRlc3RfNzI4X21pbjAg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSks CisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfNzI4X21pbjAKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgo QT8pezAsM30pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsK KworLS0gKEE/KXsxLDN9OiBtaW49MSwgbnVsbGFibGUgaW5uZXIuCistLSBBIG5ldmVyIG1hdGNo ZXM7IG9uZSBlbXB0eSBpdGVyYXRpb24gc2F0aXNmaWVzIG1pbj0xLgorLS0gTkZBIHJlcG9ydHMg MyBsZW5ndGgtMCBtYXRjaGVzOyBmaXJzdC9sYXN0X3ZhbHVlIE5VTEwgb3ZlciBlbXB0eSBmcmFt ZS4KK1dJVEggdGVzdF83MjhfbWluMSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAg ICAoMywgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF83MjhfbWlu MQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MSwzfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpCispOworCistLSAoQT8pezIsM306IG1pbj0yLCBudWxsYWJsZSBp bm5lci4gIFBlciBJU08vSUVDIDE5MDc1LTUgNy4yLjggU1RSMDYgPSAoU1RSRSBTVFJFKQorLS0g aXMgdmFsaWQ6IHR3byBlbXB0eSBpdGVyYXRpb25zIHNhdGlzZnkgbWluPTIuCistLSBORkEgcmVw b3J0cyAzIGxlbmd0aC0wIG1hdGNoZXM7IGZpcnN0L2xhc3RfdmFsdWUgTlVMTCBvdmVyIGVtcHR5 IGZyYW1lLgorV0lUSCB0ZXN0XzcyOF9taW4yIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisg ICAgICAgICgzLCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0Xzcy OF9taW4yCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisKKy0tIChBPyl7MiwzfSBtaXhlZDogc29tZSBy b3dzIG1hdGNoIEEsIHNvbWUgZG9uJ3QKKy0tIFJvd3MgMS0yOiBBIG1hdGNoZXMsIGdyZWVkeSB0 YWtlcyAyIC0+IG1pbiBzYXRpc2ZpZWQgKHJlYWwgbWF0Y2gpCistLSBSb3cgMzogQSBkb2Vzbid0 IG1hdGNoLCB0d28gZW1wdHkgaXRlcmF0aW9ucyBzYXRpc2Z5IG1pbj0yIChsZW5ndGgtMCBtYXRj aCkKKy0tIFJvdyA0OiBBIG1hdGNoZXMgMSByZWFsIGl0ZXIgKyAxIGZmIGVtcHR5IGV4aXQgLT4g bWF0Y2ggNC00CitXSVRIIHRlc3RfNzI4X21pbjJfbWl4ZWQgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF83MjhfbWluMl9taXhlZAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAg IFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpCispOworCistLSAoQT8gQj8pezIsM306IG11bHRpLWVsZW1lbnQgbnVsbGFibGUgYm9k eSB3aXRoIHJlYWwgbWF0Y2hlcworLS0gQm9keSBBPyBCPyBpcyBudWxsYWJsZSAoYm90aCBvcHRp b25hbCksIGJ1dCBBIGFuZCBCIERPIG1hdGNoIHJvd3MuCistLSBSZWFsIChub24tZW1wdHkpIGl0 ZXJhdGlvbnMgbG9vcCBiYWNrIG5vcm1hbGx5OyBmYXN0LWZvcndhcmQgb25seQorLS0gZmlyZXMg YXMgYSBwYXJhbGxlbCBleGl0IHBhdGggKEVYSVQgT05MWSwgbm8gZ3JlZWR5L3JlbHVjdGFudCBs b29wKS4KKy0tIERhdGE6IGFsdGVybmF0aW5nIEEsIEIgcm93cyAoNiByb3dzKQorLS0gR3JlZWR5 OiBlYWNoIHJvdyBnZXRzIHRoZSBsb25nZXN0IG1hdGNoIGZyb20gaXRzIHN0YXJ0aW5nIHBvc2l0 aW9uLgorLS0gUm93IDE6IDMgaXRlcnMgKEFAMSxCQDIpKEFAMyxCQDQpKEFANSxCQDYpIC0+IDEt NgorLS0gUm93IDU6IDEgcmVhbCBpdGVyICsgMSBmZiBlbXB0eSBleGl0IC0+IDUtNgorV0lUSCB0 ZXN0XzcyOF9tdWx0aV9ib2R5IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJS QVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3Mp CispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAor RlJPTSB0ZXN0XzcyOF9tdWx0aV9ib2R5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/IEI/KXsyLDN9 KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIg QVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKworLS0gKEE/IEI/KXsyLDN9OiBwdXJlIGVtcHR5IGJv ZHkgKG5vdGhpbmcgbWF0Y2hlcyBBIG9yIEIpLgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBt YXRjaGVzOyBmaXJzdC9sYXN0X3ZhbHVlIE5VTEwgb3ZlciBlbXB0eSBmcmFtZS4KK1dJVEggdGVz dF83MjhfbXVsdGlfZW1wdHkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0MnXSksCisgICAgICAgICgyLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDMs IEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3Ms CisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfNzI4X211bHRpX2Vt cHR5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/IEI/KXsyLDN9KQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQor KTsKKworLS0gKEE/IEI/KXsyLDN9OiBtaXhlZCByZWFsIGFuZCBlbXB0eSBpdGVyYXRpb25zCist LSBSb3cgMTogaXRlcjEgcmVhbCAoQUAxLEJAMiksIGl0ZXIyIGF0IHJvdyAzIGVtcHR5IC0+IGZm IGV4aXQsIG1hdGNoIDEtMgorLS0gUm93IDM6IEMgZG9lc24ndCBtYXRjaCBBIG9yIEIgLT4gTlVM TAorLS0gUm93IDQ6IGl0ZXIxIHJlYWwgKEFANCxCQDUpLCBpdGVyMiBhdCBlbmQgZW1wdHkgLT4g ZmYgZXhpdCwgbWF0Y2ggNC01CitXSVRIIHRlc3RfNzI4X211bHRpX21peGVkIEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAo MiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFS UkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF83MjhfbXVsdGlfbWl4ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8gQj8pezIs M30pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuMyBQYXR0ZXJuIG1hdGNo aW5nIGluIHRoZW9yeSBhbmQgcHJhY3RpY2UKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCistLSBTdGFuZGFyZCdzIHdvcmtl ZCBleGFtcGxlOiBBPyBCKyB3aXRoIHNwZWNpZmljIGRhdGEKKy0tIFByZWZlcm1lbnQgb3JkZXI6 IChBKShCQkIpLCAoQSkoQkIpLCAoQSkoQiksICgpKEJCQiksICgpKEJCKSwgKCkoQikKKy0tIFJv dyAxOiBBIGNvbmRpdGlvbiAocHJpY2U+MTAwKSBpcyBmYWxzZSAtPiBBIGZhaWxzCistLSBCYWNr dHJhY2s6IGVtcHR5IEE/LCB0aGVuIEIrIGZyb20gcm93IDEKKy0tIEV4cGVjdGVkOiByb3dzIDEt MyBtYXRjaCBhcyBCIChBPyB0YWtlcyBlbXB0eSBtYXRjaCkKK1dJVEggdGVzdF83M19leGFtcGxl IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIDYwKSwKKyAgICAg ICAgKDIsIDcwKSwKKyAgICAgICAgKDMsIDQwKQorICAgICkgQVMgdChpZCwgcHJpY2UpCispCitT RUxFQ1QgaWQsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf c3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0 ZXN0XzczX2V4YW1wbGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEE/IEIrKQorICAgIERFRklORQor ICAgICAgICBBIEFTIHByaWNlID4gMTAwLAorICAgICAgICBCIEFTIFRSVUUKKyk7Ci0tIAoyLjQz LjAKCg== ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0008-Row-pattern-recognition-patch-tests-expected.patch" RnJvbSAxNTdhYTFhMzBmMmY2YzViMWMxMTg2ZjczYmM2Nzg1YzIwNDZiNmRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMxICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg OC85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAodGVzdHM6IGV4cGVjdGVkKS4KCi0t LQogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIub3V0ICAgICAgICAgICAgIHwgMzkwOSAr KysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2Jhc2Uub3V0ICAgICAgICB8 IDcyMzggKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2V4 cGxhaW4ub3V0ICAgICB8IDYwNzUgKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhw ZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dCB8IDE1MjEgKysrKwogc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9ycHJfbmZhLm91dCAgICAgICAgIHwgNDkxNiArKysrKysrKysrKwogNSBmaWxlcyBj aGFuZ2VkLCAyMzY1OSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ycHIub3V0CiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9y ZWdyZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQKCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3Jwci5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwci5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmMwMmM5 ZDc1YTlhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHIu b3V0CkBAIC0wLDAgKzEsMzkwOSBAQAorLS0KKy0tIFRlc3QgZm9yIHJvdyBwYXR0ZXJuIHJlY29n bml0aW9uOiBXSU5ET1cgY2xhdXNlIGludGVncmF0aW9uIGFuZAorLS0gc2NlbmFyaW8gdGVzdHMg dXNpbmcgc3ludGhldGljIHN0b2NrIGRhdGEuCistLQorLS0gUGFyc2VyL3BsYW5uZXIgdGVzdHM6 IHJwcl9iYXNlLnNxbAorLS0gTkZBIGVuZ2luZSB0ZXN0czogcnByX25mYS5zcWwKKy0tIEVYUExB SU4gc3RhdGlzdGljcyB0ZXN0czogcnByX2V4cGxhaW4uc3FsCistLQorXGdldGVudiBhYnNfc3Jj ZGlyIFBHX0FCU19TUkNESVIKKy0tIFN5bnRoZXRpYyBzdG9jayBkYXRhIGZvciBSUFIgcGF0dGVy biBtYXRjaGluZyB0ZXN0cworQ1JFQVRFIFRBQkxFIHJwcl9zdG9jayAoCisgICAgICAgcGFydF9p ZCBpbnRlZ2VyLAorICAgICAgIHJuICAgICAgaW50ZWdlciwKKyAgICAgICBwcmljZSAgIG51bWVy aWMoMTAsMyksCisgICAgICAgdm9sdW1lICBiaWdpbnQsCisgICAgICAgb3BlbiAgICBudW1lcmlj KDEwLDMpLAorICAgICAgIGxvdyAgICAgbnVtZXJpYygxMCwzKSwKKyAgICAgICBoaWdoICAgIG51 bWVyaWMoMTAsMykKKyk7Citcc2V0IGZpbGVuYW1lIDphYnNfc3JjZGlyICcvZGF0YS9zdG9jay5k YXRhJworQ09QWSBycHJfc3RvY2sgRlJPTSA6J2ZpbGVuYW1lJzsKK0FOQUxZWkUgcnByX3N0b2Nr OworQ1JFQVRFIFRFTVAgVEFCTEUgc3RvY2sgKAorICAgICAgIGNvbXBhbnkgVEVYVCwKKyAgICAg ICB0ZGF0ZSBEQVRFLAorICAgICAgIHByaWNlIElOVEVHRVIKKyk7CitJTlNFUlQgSU5UTyBzdG9j ayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTAxJywgMTAwKTsKK0lOU0VSVCBJTlRPIHN0 b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDInLCAyMDApOworSU5TRVJUIElOVE8g c3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wMycsIDE1MCk7CitJTlNFUlQgSU5U TyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA0JywgMTQwKTsKK0lOU0VSVCBJ TlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDUnLCAxNTApOworSU5TRVJU IElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wNicsIDkwKTsKK0lOU0VS VCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMDcnLCAxMTApOworSU5T RVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTEnLCAnMjAyMy0wNy0wOCcsIDEzMCk7CitJ TlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MScsICcyMDIzLTA3LTA5JywgMTIwKTsK K0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkxJywgJzIwMjMtMDctMTAnLCAxMzAp OworSU5TRVJUIElOVE8gc3RvY2sgVkFMVUVTICgnY29tcGFueTInLCAnMjAyMy0wNy0wMScsIDUw KTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDInLCAy MDAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDctMDMn LCAxNTAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMtMDct MDQnLCAxNDAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIwMjMt MDctMDUnLCAxNTAwKTsKK0lOU0VSVCBJTlRPIHN0b2NrIFZBTFVFUyAoJ2NvbXBhbnkyJywgJzIw MjMtMDctMDYnLCA2MCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55MicsICcy MDIzLTA3LTA3JywgMTEwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55Mics ICcyMDIzLTA3LTA4JywgMTMwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21wYW55 MicsICcyMDIzLTA3LTA5JywgMTIwMCk7CitJTlNFUlQgSU5UTyBzdG9jayBWQUxVRVMgKCdjb21w YW55MicsICcyMDIzLTA3LTEwJywgMTMwMCk7CitTRUxFQ1QgKiBGUk9NIHN0b2NrOworIGNvbXBh bnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIz IHwgICAyMDAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MAorIGNvbXBhbnkxIHwgMDct MDQtMjAyMyB8ICAgMTQwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAKKyBjb21wYW55 MSB8IDA3LTA2LTIwMjMgfCAgICA5MAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwCisg Y29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAg IDEyMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwCisgY29tcGFueTIgfCAwNy0wMS0y MDIzIHwgICAgNTAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMAorIGNvbXBhbnkyIHwg MDctMDMtMjAyMyB8ICAxNTAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAKKyBjb21w YW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYw CisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMg fCAgMTMwMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwCisgY29tcGFueTIgfCAwNy0x MC0yMDIzIHwgIDEzMDAKKygyMCByb3dzKQorCistLQorLS0gQmFzaWMgcGF0dGVybiBtYXRjaGlu ZyB3aXRoIFBSRVYvTkVYVAorLS0KKy0tIGJhc2ljIHRlc3QgdXNpbmcgUFJFVgorU0VMRUNUIGNv bXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1 ZShwcmljZSkgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikgT1ZFUiB3IEFTIG50aF9zZWNv bmQKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55Cisg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElB TAorIFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwK KyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJp Y2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBs YXN0X3ZhbHVlIHwgbnRoX3NlY29uZCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0w MS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAgfCAwNy0wMi0yMDIzCisg Y29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAg ICAgIDkwIHwgICAgICAgIDEyMCB8IDA3LTA3LTIwMjMKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMg fCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDgt MjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAw Ny0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55 MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNv bXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNDAwIHwg MDctMDItMjAyMworIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwg ICAgNjAgfCAgICAgICAgICA2MCB8ICAgICAgIDEyMDAgfCAwNy0wNy0yMDIzCisgY29tcGFueTIg fCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21w YW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAor IGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAKKygyMCByb3dzKQorCistLSBiYXNpYyB0ZXN0IHVzaW5nIFBSRVYuIFVQIGFwcGVh cnMgdHdpY2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywKKyBudGhfdmFsdWUodGRhdGUsIDIp IE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJU SVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTisgVVArKQorIERF RklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBE T1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwg cHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBudGhfc2Vjb25kIAorLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAg ICAgIDE1MCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwg ICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA1LTIw MjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDct MDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgOTAgfCAgICAgICAgMTMwIHwgMDctMDctMjAyMwor IGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAg ICAgICA1MCB8ICAgICAgIDE1MDAgfCAwNy0wMi0yMDIzCisgY29tcGFueTIgfCAwNy0wMi0yMDIz IHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAz LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwg MDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFu eTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTMwMCB8 IDA3LTA3LTIwMjMKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorKDIwIHJvd3MpCisKKy0tIGJhc2ljIHRl c3QgdXNpbmcgUFJFVi4gVXNlICcqJworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG50aF92 YWx1ZSh0ZGF0ZSwgMikgT1ZFUiB3IEFTIG50aF9zZWNvbmQKKyBGUk9NIHN0b2NrCisgV0lORE9X IHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQKiBE T1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHBy aWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0 ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgbnRoX3NlY29uZCAK Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAg IDEwMCB8ICAgICAgICAxNDAgfCAwNy0wMi0yMDIzCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwg ICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTAzLTIw MjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDct MDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEg fCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgIDE1MCB8ICAgICAgICAgOTAgfCAwNy0wNi0y MDIzCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEwIHwg ICAgICAgIDEyMCB8IDA3LTA4LTIwMjMKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAg MTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0xMC0yMDIz IHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAx LTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTQwMCB8IDA3LTAyLTIwMjMKKyBj b21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 IAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAxNTAw IHwgICAgICAgICA2MCB8IDA3LTA2LTIwMjMKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2 MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8 ICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAgICAxMjAwIHwgMDctMDgtMjAyMworIGNvbXBhbnky IHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29t cGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAK KyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8IAorKDIwIHJvd3MpCisKKy0tIGJhc2ljIHRlc3QgdXNpbmcgUFJFVi4gVXNlICc/JworU0VM RUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFz dF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikgT1ZFUiB3IEFTIG50 aF9zZWNvbmQKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21w YW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg SU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQPyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMg VFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBS RVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFs dWUgfCBsYXN0X3ZhbHVlIHwgbnRoX3NlY29uZCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEg fCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAgfCAwNy0wMi0y MDIzCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAg ICAgIDE1MCB8ICAgICAgICAgOTAgfCAwNy0wNi0yMDIzCisgY29tcGFueTEgfCAwNy0wNi0yMDIz IHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA3 LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEyMCB8IDA3LTA4LTIwMjMKKyBj b21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 IAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUw IHwgICAgICAgMTQwMCB8IDA3LTAyLTIwMjMKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8 ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNC0y MDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3 LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAxNTAwIHwgICAgICAgICA2MCB8IDA3LTA2LTIwMjMK KyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8IAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAg ICAxMjAwIHwgMDctMDgtMjAyMworIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAg MTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorKDIwIHJvd3MpCisKKy0tIHRlc3Qg dXNpbmcgYWx0ZXJuYXRpb24gKHwpIHdpdGggc2VxdWVuY2UKK1NFTEVDVCBjb21wYW55LCB0ZGF0 ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9W RVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkK KyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklU SUFMCisgUEFUVEVSTiAoU1RBUlQgKFVQIHwgRE9XTikpCisgREVGSU5FCisgIFNUQVJUIEFTIFRS VUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVW KHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVl IHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAg ICAgMTAwIHwgICAgICAgIDIwMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAg ICAgICAgIDE1MCB8ICAgICAgICAxNDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUw IHwgICAgICAgICAxNTAgfCAgICAgICAgIDkwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAg OTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAg IDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEzMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8 ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIz IHwgICAxMjAgfCAgICAgICAgIDEyMCB8ICAgICAgICAxMzAKKyBjb21wYW55MSB8IDA3LTEwLTIw MjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEt MjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAyMDAwCisgY29tcGFueTIgfCAwNy0w Mi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3 LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAxNTAwIHwgICAgICAgMTQwMAorIGNvbXBhbnkyIHwg MDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIg fCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgMTUwMCB8ICAgICAgICAgNjAKKyBjb21wYW55 MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAgICAxMzAwCisgY29t cGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAxMjAwIHwgICAgICAgMTMwMAor IGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisoMjAgcm93cykKKworLS0gdGVzdCB1c2luZyBhbHRlcm5hdGlvbiAofCkgd2l0aCBncm91cCBx dWFudGlmaWVyCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmlj ZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9X IHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIChVUCB8 IERPV04pKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVW KHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwg ICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBh bnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMTMwCisgY29t cGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1 MCB8ICAgICAgIDEzMDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAx MjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwg IDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQorCistLSB0ZXN0IHVz aW5nIG5lc3RlZCBhbHRlcm5hdGlvbgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBz dG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJO IChTVEFSVCAoKFVQIERPV04pIHwgRkxBVCkrKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAor ICBVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmlj ZSksCisgIEZMQVQgQVMgcHJpY2UgPSBQUkVWKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRh dGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0t LS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8 IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDE1MAorIGNvbXBhbnkx IHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFu eTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21w YW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgMTQwIHwgICAgICAgICA5MAorIGNv bXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisg Y29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEy MAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAg ICAgICAxNTAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgIDE0 MDAgfCAgICAgICAgIDYwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAg ICAgIDExMDAgfCAgICAgICAxMjAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAgcm93cykKKworLS0gdGVzdCB1c2luZyBn cm91cCB3aXRoIHF1YW50aWZpZXIKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZST00gc3Rv Y2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVSTiAo KFVQIERPV04pKykKKyBERUZJTkUKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9X TiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHBy aWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAy MyB8ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMi0y MDIzIHwgICAyMDAgfCAgICAgICAgIDIwMCB8ICAgICAgICAxNTAKKyBjb21wYW55MSB8IDA3LTAz LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDct MDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAw Ny0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgIDE1MCB8ICAgICAgICAgOTAKKyBjb21wYW55MSB8 IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkx IHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFu eTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgIDEzMCB8ICAgICAgICAxMjAKKyBjb21w YW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNv bXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisg Y29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAK KyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAwIHwgICAgICAgMTUw MAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAxNTAwIHwgICAg ICAgICA2MAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAxMzAw IHwgICAgICAgMTIwMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQorCistLSB0ZXN0IHVzaW5nIGFic29sdXRlIHRo cmVzaG9sZCB2YWx1ZXMgKG5vdCByZWxhdGl2ZSBQUkVWKQorLS0gSElHSDogcHJpY2UgPiAxNTAs IExPVzogcHJpY2UgPCAxMDAsIE1JRDogbmV1dHJhbCByYW5nZQorU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkg T1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFu eQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElO SVRJQUwKKyBQQVRURVJOIChMT1cgTUlEKiBISUdIKQorIERFRklORQorICBMT1cgQVMgcHJpY2Ug PCAxMDAsCisgIE1JRCBBUyBwcmljZSA+PSAxMDAgQU5EIHByaWNlIDw9IDE1MCwKKyAgSElHSCBB UyBwcmljZSA+IDE1MAorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0 X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAx NTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAg IDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8 ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIz IHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIw MjMgfCAgIDExMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDgt MjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0w OS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3 LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwg MDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAyMDAwCisgY29tcGFueTIg fCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55 MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTEwMAor IGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisoMjAgcm93cykKKworLS0gdGVzdCB0aHJlc2hvbGQtYmFzZWQgcGF0dGVybiB3aXRo IGFsdGVybmF0aW9uCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShw cmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lO RE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKExPVyAoTUlE IHwgSElHSCkrKQorIERFRklORQorICBMT1cgQVMgcHJpY2UgPCAxMDAsCisgIE1JRCBBUyBwcmlj ZSA+PSAxMDAgQU5EIHByaWNlIDw9IDE1MCwKKyAgSElHSCBBUyBwcmljZSA+IDE1MAorKTsKKyBj b21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAK Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICA5 MCB8ICAgICAgICAxMzAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwg ICAgICAgICAgNTAgfCAgICAgICAxNTAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAx NDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwg IDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMg fCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTMwMAorIGNvbXBhbnkyIHwgMDctMDctMjAy MyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOC0y MDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA5 LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDct MTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAgcm93cykKKwor LS0gYmFzaWMgdGVzdCB3aXRoIGZpeGVkLWxlbmd0aCBwYXR0ZXJuIChBIEEgQSA9IGV4YWN0bHkg MykKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworIEZST00g c3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFUVEVS TiAoQSBBIEEpCisgREVGSU5FCisgIEEgQVMgcHJpY2UgPj0gMTQwIEFORCBwcmljZSA8PSAxNTAK Kyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBjb3VudCAKKy0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAg MTAwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDQtMjAy MyB8ICAgMTQwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAw CisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDctMjAyMyB8ICAgMTEwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8 ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAg ICA1MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIw MjMgfCAgMTQwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3 LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAwCisoMjAgcm93cykKKworLS0gdGVzdCB1c2lu ZyB7bn0gcXVhbnRpZmllciAoQSBBIEEgc2hvdWxkIGJlIG9wdGltaXplZCB0byBBezN9KQorU0VM RUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jawor IFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBezN9 KQorIERFRklORQorICBBIEFTIHByaWNlID49IDE0MCBBTkQgcHJpY2UgPD0gMTUwCispOworIGNv bXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDMtMjAyMyB8ICAgMTUwIHwgICAgIDMKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0 MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgMAorIGNvbXBh bnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMg fCAgIDExMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgMAor IGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTEw LTIwMjMgfCAgIDEzMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0 MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNy0yMDIz IHwgIDExMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0x MC0yMDIzIHwgIDEzMDAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIHRlc3QgdXNpbmcge24sfSBx dWFudGlmaWVyICgyIG9yIG1vcmUpCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBjb3Vu dCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBj b21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgSU5JVElBTAorIFBBVFRFUk4gKEF7Mix9KQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAw CispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgY291bnQgCistLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAg IDEwMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgNAorIGNv bXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0LTIw MjMgfCAgIDE0MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTA3LTIwMjMgfCAgIDExMCB8ICAgICA0CisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgIDAKKyBjb21wYW55 MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwg ICAgNTAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgIDQKKyBj b21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0y MDIzIHwgIDE0MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAwCisgY29tcGFueTIgfCAw Ny0wNy0yMDIzIHwgIDExMDAgfCAgICAgNAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAw IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIHRlc3QgdXNp bmcge24sbX0gcXVhbnRpZmllciAoMiB0byA0KQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmlj ZSwgY291bnQoKikgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJ T04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBezIsNH0pCisgREVGSU5FCisgIEEgQVMgcHJp Y2UgPiAxMDAKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBjb3VudCAKKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEt MjAyMyB8ICAgMTAwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAg ICA0CisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDQtMjAyMyB8ICAgMTQwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1 MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgMAorIGNvbXBh bnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgIDQKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMg fCAgIDEzMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgMAor IGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAx LTIwMjMgfCAgICA1MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAg ICAgNAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1 MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICA0CisgY29tcGFueTIgfCAwNy0wOC0yMDIz IHwgIDEzMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAwCisoMjAgcm93cykKKworLS0g dGVzdCBwcmVmaXgvc3VmZml4IG1lcmdlIG9wdGltaXphdGlvbiB3aXRoIGJvdW5kZWQgcXVhbnRp ZmllcgorLS0gUGF0dGVybiBBIEIgKEEgQil7MSwyfSBBIEIgc2hvdWxkIGJlIG9wdGltaXplZCB0 byAoQSBCKXszLDR9CitDUkVBVEUgVEVNUCBUQUJMRSBycHJfdCAoaWQgaW50LCB2YWwgdGV4dCk7 CitJTlNFUlQgSU5UTyBycHJfdCBWQUxVRVMKKyAgKDEsJ0EnKSwoMiwnQicpLAorICAoMywnQScp LCg0LCdCJyksCisgICg1LCdBJyksKDYsJ0InKSwKKyAgKDcsJ0EnKSwoOCwnQicpLAorICAoOSwn WCcpOworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBtYXRjaF9jb3VudAorRlJP TSBycHJfdAorV0lORE9XIHcgQVMgKAorICBPUkRFUiBCWSBpZAorICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICBJTklUSUFMCisgIFBBVFRFUk4gKEEgQiAoQSBCKXsxLDJ9IEEgQikKKyAgREVG SU5FCisgICAgQSBBUyB2YWwgPSAnQScsCisgICAgQiBBUyB2YWwgPSAnQicKKyk7CisgaWQgfCB2 YWwgfCBtYXRjaF9jb3VudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tLQorICAxIHwgQSAgIHwg ICAgICAgICAgIDgKKyAgMiB8IEIgICB8ICAgICAgICAgICAwCisgIDMgfCBBICAgfCAgICAgICAg ICAgNgorICA0IHwgQiAgIHwgICAgICAgICAgIDAKKyAgNSB8IEEgICB8ICAgICAgICAgICAwCisg IDYgfCBCICAgfCAgICAgICAgICAgMAorICA3IHwgQSAgIHwgICAgICAgICAgIDAKKyAgOCB8IEIg ICB8ICAgICAgICAgICAwCisgIDkgfCBYICAgfCAgICAgICAgICAgMAorKDkgcm93cykKKworRFJP UCBUQUJMRSBycHJfdDsKKy0tIGxhc3RfdmFsdWUoKSBzaG91bGQgcmVtYWluIGNvbnNpc3RlbnQK K1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdwor IEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRF UiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworIElOSVRJQUwKKyBQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNU QVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJp Y2UgPCBQUkVWKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGxh c3RfdmFsdWUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLQor IGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgIDE0MAorIGNvbXBhbnkxIHwg MDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8 ICAgMTUwIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAg ICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgIAorIGNv bXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgIDEyMAorIGNvbXBhbnkxIHwgMDct MDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAg MTMwIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgIAorIGNvbXBh bnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgMTQwMAorIGNvbXBhbnkyIHwgMDctMDIt MjAyMyB8ICAyMDAwIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAw IHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAg IAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgIAorIGNvbXBhbnky IHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgMTIwMAorIGNvbXBhbnkyIHwgMDctMDctMjAy MyB8ICAxMTAwIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwg ICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgIAor IGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgIAorKDIwIHJvd3MpCisK Ky0tIG9taXQgIlNUQVJUIiBpbiBERUZJTkUgYnV0IGl0IGlzIG9rIGJlY2F1c2UgIlNUQVJUIEFT IFRSVUUiIGlzCistLSBpbXBsaWNpdGx5IGRlZmluZWQuIHBlciBzcGVjLgorU0VMRUNUIGNvbXBh bnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShw cmljZSkgT1ZFUiB3LAorIG50aF92YWx1ZSh0ZGF0ZSwgMikgT1ZFUiB3IEFTIG50aF9zZWNvbmQK KyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAor IFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAgVVAgQVMgcHJpY2UgPiBQUkVW KHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwg ICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgbnRoX3NlY29u ZCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAg ICAgIDEwMCB8ICAgICAgICAxNDAgfCAwNy0wMi0yMDIzCisgY29tcGFueTEgfCAwNy0wMi0yMDIz IHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTAz LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwg MDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFu eTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBj b21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgIDkwIHwgICAgICAgIDEyMCB8 IDA3LTA3LTIwMjMKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEz MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8 ICAgIDUwIHwgICAgICAgICAgNTAgfCAgICAgICAxNDAwIHwgMDctMDItMjAyMworIGNvbXBhbnky IHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29t cGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAK KyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8IAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICA2MCB8 ICAgICAgIDEyMDAgfCAwNy0wNy0yMDIzCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAg MTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDktMjAy MyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0x MC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKygyMCByb3dzKQor CistLSB0aGUgZmlyc3Qgcm93IHN0YXJ0IHdpdGggbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDEwMAor U0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywg bGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQ QVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChMT1dQUklDRSBVUCsgRE9XTispCisg REVGSU5FCisgIExPV1BSSUNFIEFTIHByaWNlIDw9IDEwMCwKKyAgVVAgQVMgcHJpY2UgPiBQUkVW KHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwg ICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIAorLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBh bnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMTQwCisgY29t cGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgIDkwIHwgICAgICAg IDEyMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1 MCB8ICAgICAgIDE0MDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwg ICAgICAgICAgNjAgfCAgICAgICAxMjAwCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAx MjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwg IDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKygyMCByb3dzKQorCistLSBzZWNvbmQg cm93IHJhaXNlcyAxMjAlCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1 ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisg V0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgSU5JVElBTAorIFBBVFRFUk4gKExPV1BS SUNFIFVQKyBET1dOKykKKyBERUZJTkUKKyAgTE9XUFJJQ0UgQVMgcHJpY2UgPD0gMTAwLAorICBV UCBBUyBwcmljZSA+IFBSRVYocHJpY2UpICogMS4yLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihw cmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8 IGxhc3RfdmFsdWUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAg IDEwMCB8ICAgICAgICAxNDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAx MTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAg IDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8 ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0xMC0yMDIz IHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAxLTIw MjMgfCAgICA1MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTQwMAorIGNvbXBhbnkyIHwgMDctMDIt MjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0w My0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3 LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwg MDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIg fCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55 MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor KDIwIHJvd3MpCisKKy0tIHVzaW5nIE5FWFQKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdworIEZS T00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBJTklUSUFMCisgUEFU VEVSTiAoU1RBUlQgVVBET1dOKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUERPV04g QVMgcHJpY2UgPiBQUkVWKHByaWNlKSBBTkQgcHJpY2UgPiBORVhUKHByaWNlKQorKTsKKyBjb21w YW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSAKKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0K KyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDIw MAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgMTQwIHwgICAg ICAgIDE1MAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEw IHwgICAgICAgIDEzMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAg ICAgICAgNTAgfCAgICAgICAyMDAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAw IHwgICAgICAgIDE0MDAgfCAgICAgICAxNTAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1 MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAg ICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8 ICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAgICAxMzAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIz IHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA5LTIw MjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMTAt MjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisoMjAgcm93cykKKworLS0g dXNpbmcgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVyAoc2FtZSBwYXR0ZXJuIGFzIGFib3Zl OworLS0gbWF0Y2ggbGVuZ3RoIGlzIGFsd2F5cyAyLCBzbyByZXN1bHQgaXMgaWRlbnRpY2FsIHRv IFNLSVAgUEFTVCBMQVNUIFJPVy4KKy0tIFNLSVAgVE8gTkVYVCBST1cncyBkaXN0aW5jdCBlZmZl Y3QgaXMgdGVzdGVkIGluIGJhY2t0cmFja2luZyBzZWN0aW9uLikKK1NFTEVDVCBjb21wYW55LCB0 ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2Up IE9WRVIgdworIEZST00gc3RvY2sKKyBXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBh bnkKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBB RlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIFVQ RE9XTikKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVBET1dOIEFTIHByaWNlID4gUFJF VihwcmljZSkgQU5EIHByaWNlID4gTkVYVChwcmljZSkKKyk7CisgY29tcGFueSAgfCAgIHRkYXRl ICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgCistLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEgfCAw Ny0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAyMDAKKyBjb21wYW55MSB8 IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkx IHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFu eTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgIDE0MCB8ICAgICAgICAxNTAKKyBjb21w YW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNv bXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisg Y29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgIDExMCB8ICAgICAgICAxMzAK KyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg IAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUwIHwgICAg ICAgMjAwMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAxNDAw IHwgICAgICAgMTUwMAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAg ICAxMTAwIHwgICAgICAgMTMwMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgIAorKDIwIHJvd3MpCisKKy0tIFBSRVYgcmV0dXJucyBO VUxMIGF0IHBhcnRpdGlvbidzIGZpcnN0IHJvdyAobnVsbF9zbG90IHBhdGgpCitTRUxFQ1QgY29t cGFueSwgdGRhdGUsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3 IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgUEFUVEVSTiAoQk9VTkRB UlkgUkVTVCspCisgREVGSU5FCisgIEJPVU5EQVJZIEFTIFBSRVYocHJpY2UpIElTIE5VTEwsCisg IFJFU1QgQVMgUFJFVihwcmljZSkgSVMgTk9UIE5VTEwKKyk7CisgY29tcGFueSAgfCAgIHRkYXRl ICAgIHwgcHJpY2UgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0t LS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgMTAKKyBjb21wYW55MSB8 IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAx NTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIz IHwgICAgOTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgIDAK KyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0w OS0yMDIzIHwgICAxMjAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgIDEwCisgY29tcGFueTIg fCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAx NTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAy MyB8ICAgIDYwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAw CisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDktMjAyMyB8ICAxMjAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8 ICAgICAwCisoMjAgcm93cykKKworLS0gTkVYVCByZXR1cm5zIE5VTEwgYXQgcGFydGl0aW9uJ3Mg bGFzdCByb3cgKG51bGxfc2xvdCBwYXRoKQorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwg Y291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZ IGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBB VFRFUk4gKEErIEJPVU5EQVJZKQorIERFRklORQorICBBIEFTIE5FWFQocHJpY2UpIElTIE5PVCBO VUxMLAorICBCT1VOREFSWSBBUyBORVhUKHByaWNlKSBJUyBOVUxMCispOworIGNvbXBhbnkgIHwg ICB0ZGF0ZSAgICB8IHByaWNlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0t LS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgIDEwCisgY29t cGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDMtMjAy MyB8ICAgMTUwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAw CisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDYtMjAyMyB8ICAgIDkwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8 ICAgICAwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAg IDEzMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAxMAorIGNv bXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIw MjMgfCAgMTUwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3 LTA2LTIwMjMgfCAgICA2MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwg IDEzMDAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIERFU0Mgb3JkZXI6IFBSRVYgcmVmZXJzIHRv IHRoZSByb3cgd2l0aCBsYXRlciBkYXRlCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBj b3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkg Y29tcGFueQorIE9SREVSIEJZIHRkYXRlIERFU0MKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyBQQVRURVJOIChTVEFSVCBET1dOKyBVUCspCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisg IERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgVVAgQVMgcHJpY2UgPiBQUkVWKHByaWNl KQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGNvdW50IAorLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwg ICAxMzAgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0y MDIzIHwgICAxMTAgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNC0yMDIzIHwgICAxNDAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUw IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8 ICAxMzAwIHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDct MjAyMyB8ICAxMTAwIHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDQtMjAyMyB8ICAxNDAwIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUw MCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgIDAKKygyMCByb3dzKQorCistLSBNdWx0aXBs ZSBwYXJ0aXRpb25zIHdpdGggdW5lcXVhbCBzaXplcworV0lUSCBtdWx0aV9wYXJ0IEFTICgKKyBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgKCdhJywgMSwgMTApLCAoJ2EnLCAyLCAyMCksICgnYScs IDMsIDE1KSwKKyAgKCdiJywgMSwgNSksCisgICgnYycsIDEsIDEwMCksICgnYycsIDIsIDIwMCks ICgnYycsIDMsIDE1MCksICgnYycsIDQsIDE0MCksICgnYycsIDUsIDMwMCkKKyApIEFTIHQoZ3Jw LCBpZCwgdmFsKQorKQorU0VMRUNUIGdycCwgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9N IG11bHRpX3BhcnQKK1dJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgZ3JwCisgT1JERVIgQlkg aWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChBIEIrKQorIERFRklORQor ICBBIEFTIHZhbCA8PSBORVhUKHZhbCksCisgIEIgQVMgdmFsID4gUFJFVih2YWwpIE9SIHZhbCA8 IFBSRVYodmFsKQorKTsKKyBncnAgfCBpZCB8IHZhbCB8IGNvdW50IAorLS0tLS0rLS0tLSstLS0t LSstLS0tLS0tCisgYSAgIHwgIDEgfCAgMTAgfCAgICAgMworIGEgICB8ICAyIHwgIDIwIHwgICAg IDAKKyBhICAgfCAgMyB8ICAxNSB8ICAgICAwCisgYiAgIHwgIDEgfCAgIDUgfCAgICAgMAorIGMg ICB8ICAxIHwgMTAwIHwgICAgIDUKKyBjICAgfCAgMiB8IDIwMCB8ICAgICAwCisgYyAgIHwgIDMg fCAxNTAgfCAgICAgMAorIGMgICB8ICA0IHwgMTQwIHwgICAgIDAKKyBjICAgfCAgNSB8IDMwMCB8 ICAgICAwCisoOSByb3dzKQorCistLSBGTE9BVC9OVU1FUklDIERFRklORSBjb25kaXRpb25zCitX SVRIIGZsb2F0X2RhdGEgQVMgKAorIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAoMSwgMS4wOjpm bG9hdDgpLCAoMiwgMS41KSwgKDMsIDEuNDk5OSksICg0LCAxLjUwMDAxKSwgKDUsIDAuMSkKKyAp IEFTIHQoaWQsIHZhbCkKKykKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZST00g ZmxvYXRfZGF0YQorV0lORE9XIHcgQVMgKAorIE9SREVSIEJZIGlkCisgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgUEFUVEVSTiAoQSBCKykKKyBERUZJTkUKKyAgQSBBUyBUUlVFLAorICBCIEFT IHZhbCA+IFBSRVYodmFsKSAqIDAuOTkKKyk7CisgaWQgfCAgIHZhbCAgIHwgY291bnQgCistLS0t Ky0tLS0tLS0tLSstLS0tLS0tCisgIDEgfCAgICAgICAxIHwgICAgIDQKKyAgMiB8ICAgICAxLjUg fCAgICAgMAorICAzIHwgIDEuNDk5OSB8ICAgICAwCisgIDQgfCAxLjUwMDAxIHwgICAgIDAKKyAg NSB8ICAgICAwLjEgfCAgICAgMAorKDUgcm93cykKKworLS0KKy0tIEVycm9yIGNhc2VzOiBQUkVW L05FWFQgdXNhZ2UgcmVzdHJpY3Rpb25zCistLQorLS0gUFJFViBvdXRzaWRlIERFRklORSBjbGF1 c2UKK1NFTEVDVCBwcmV2KHByaWNlKSBGUk9NIHN0b2NrOworRVJST1I6ICBjYW5ub3QgdXNlIHBy ZXYgb3V0c2lkZSBhIERFRklORSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIHByZXYocHJpY2UpIEZS T00gc3RvY2s7CisgICAgICAgICAgICAgICBeCistLSBORVhUIG91dHNpZGUgREVGSU5FIGNsYXVz ZQorU0VMRUNUIG5leHQocHJpY2UpIEZST00gc3RvY2s7CitFUlJPUjogIGNhbm5vdCB1c2UgbmV4 dCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgbmV4dChwcmljZSkgRlJP TSBzdG9jazsKKyAgICAgICAgICAgICAgIF4KKy0tIE5lc3RlZCBQUkVWCitTRUxFQ1QgcHJpY2Ug RlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5J VElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKFBSRVYo cHJpY2UpKQorKTsKK0VSUk9SOiAgUFJFViBhbmQgTkVYVCBjYW5ub3QgY29udGFpbiBQUkVWIG9y IE5FWFQKK0xJTkUgNzogICAgIERFRklORSBBIEFTIHByaWNlID4gUFJFVihQUkVWKHByaWNlKSkK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE9ubHkgUFJFVihGSVJT VCgpKSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBv dW5kIGZvcm1zIGFyZSBhbGxvd2VkLgorLS0gTmVzdGVkIE5FWFQKK1NFTEVDVCBwcmljZSBGUk9N IHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFM CisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQoTkVYVChwcmlj ZSkpCispOworRVJST1I6ICBQUkVWIGFuZCBORVhUIGNhbm5vdCBjb250YWluIFBSRVYgb3IgTkVY VAorTElORSA3OiAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKE5FWFQocHJpY2UpKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgT25seSBQUkVWKEZJUlNUKCkp LCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhUKExBU1QoKSkgY29tcG91bmQg Zm9ybXMgYXJlIGFsbG93ZWQuCistLSBQUkVWIG5lc3RlZCBpbnNpZGUgTkVYVAorU0VMRUNUIHBy aWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChQ UkVWKHByaWNlKSkKKyk7CitFUlJPUjogIFBSRVYgYW5kIE5FWFQgY2Fubm90IGNvbnRhaW4gUFJF ViBvciBORVhUCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBwcmljZSA+IE5FWFQoUFJFVihwcmlj ZSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5IFBSRVYo RklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBj b21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4KKy0tIFBSRVYgbmVzdGVkIGluc2lkZSBleHByZXNz aW9uIGluc2lkZSBORVhUCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAg REVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKHByaWNlICogUFJFVihwcmljZSkpCispOworRVJST1I6 ICBQUkVWIGFuZCBORVhUIGNhbm5vdCBjb250YWluIFBSRVYgb3IgTkVYVAorTElORSA3OiAgICAg REVGSU5FIEEgQVMgcHJpY2UgPiBORVhUKHByaWNlICogUFJFVihwcmljZSkpCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYo TEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBh cmUgYWxsb3dlZC4KKy0tIFRyaXBsZSBuZXN0aW5nOiBlcnJvciByZXBvcnRlZCBhdCBvdXRlcm1v c3QgUFJFVgorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJU SVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBB IEFTIHByaWNlID4gUFJFVihQUkVWKFBSRVYocHJpY2UpKSkKKyk7CitFUlJPUjogIFBSRVYgYW5k IE5FWFQgY2Fubm90IGNvbnRhaW4gUFJFViBvciBORVhUCitMSU5FIDc6ICAgICBERUZJTkUgQSBB UyBwcmljZSA+IFBSRVYoUFJFVihQUkVWKHByaWNlKSkpCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5IFBSRVYoRklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVY VChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBjb21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4K Ky0tIE5vIGNvbHVtbiByZWZlcmVuY2UgaW4gUFJFVi9ORVhUIGFyZ3VtZW50CistLSBQUkVWKDEp OiBjb25zdGFudCBvbmx5LCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBz dG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAor ICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgUFJFVigxKSA+IDAKKyk7CitFUlJPUjog IGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVk ZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5jZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMg UFJFVigxKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE5FWFQoMSArIDIpOiBj b25zdGFudCBleHByZXNzaW9uLCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJP TSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElB TAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgTkVYVCgxICsgMikgPiAwCispOwor RVJST1I6ICBhcmd1bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0 IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UKK0xJTkUgNzogICAgIERFRklO RSBBIEFTIE5FWFQoMSArIDIpID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gMi1h cmcgZm9ybTogUFJFVigxLCAxKTogY29uc3RhbnQgZXhwcmVzc2lvbiBhcyBmaXJzdCBhcmcKK1NF TEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNv bXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKDEs IDEpID4gMAorKTsKK0VSUk9SOiAgYXJndW1lbnQgb2Ygcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBv cGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4gcmVmZXJlbmNlCitMSU5F IDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKDEsIDEpID4gMAorICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gQ29tcG91bmQgbmF2aWdhdGlvbiB3aXRob3V0IGEgY29sdW1uIHJlZmVyZW5jZSBt dXN0IGJlIHJlamVjdGVkIHRvbywKKy0tIGNvbnNpc3RlbnQgd2l0aCB0aGUgc2ltcGxlIGZvcm1z IGFib3ZlLgorLS0gUFJFVihGSVJTVCgxKSk6IGNvbXBvdW5kLCBjb25zdGFudCBvbmx5LCBubyBj b2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAg REVGSU5FIEEgQVMgUFJFVihGSVJTVCgxKSkgPiAwCispOworRVJST1I6ICBhcmd1bWVudCBvZiBy b3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25l IGNvbHVtbiByZWZlcmVuY2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QoMSkp ID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gTkVYVChMQVNUKDEgKyAyKSk6IGNv bXBvdW5kLCBjb25zdGFudCBleHByZXNzaW9uLCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1Qg cHJpY2UgRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgTkVYVChMQVNUKDEg KyAyKSkgPiAwCispOworRVJST1I6ICBhcmd1bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9u IG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUgYXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UKK0xJ TkUgNzogICAgIERFRklORSBBIEFTIE5FWFQoTEFTVCgxICsgMikpID4gMAorICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gUFJFVihGSVJTVCgxLCAyKSk6IGNvbXBvdW5kLCB0d28tYXJnIGlu bmVyLCBubyBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jaworV0lORE9X IHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4g KEEpCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCgxLCAyKSkgPiAwCispOworRVJST1I6ICBh cmd1bWVudCBvZiByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGluY2x1ZGUg YXQgbGVhc3Qgb25lIGNvbHVtbiByZWZlcmVuY2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBS RVYoRklSU1QoMSwgMikpID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gUFJFVihG SVJTVCgxKSwgMik6IGNvbXBvdW5kLCBvdXRlciBvZmZzZXQgb25seSwgbm8gY29sdW1uIHJlZmVy ZW5jZQorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFT IFBSRVYoRklSU1QoMSksIDIpID4gMAorKTsKK0VSUk9SOiAgYXJndW1lbnQgb2Ygcm93IHBhdHRl cm4gbmF2aWdhdGlvbiBvcGVyYXRpb24gbXVzdCBpbmNsdWRlIGF0IGxlYXN0IG9uZSBjb2x1bW4g cmVmZXJlbmNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKDEpLCAyKSA+IDAK KyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFBSRVYoRklSU1QoMSwgMiksIDMpOiBjb21w b3VuZCwgaW5uZXIgYW5kIG91dGVyIG9mZnNldHMsIG5vIGNvbHVtbiByZWZlcmVuY2UKK1NFTEVD VCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBh bnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNU KDEsIDIpLCAzKSA+IDAKKyk7CitFUlJPUjogIGFyZ3VtZW50IG9mIHJvdyBwYXR0ZXJuIG5hdmln YXRpb24gb3BlcmF0aW9uIG11c3QgaW5jbHVkZSBhdCBsZWFzdCBvbmUgY29sdW1uIHJlZmVyZW5j ZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCgxLCAyKSwgMykgPiAwCisgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBOb24tY29uc3RhbnQgb2Zmc2V0OiBjb2x1bW4gcmVm ZXJlbmNlIGFzIG9mZnNldAorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgK KyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAg IERFRklORSBBIEFTIFBSRVYocHJpY2UsIHByaWNlKSA+IDAKKyk7CitFUlJPUjogIHJvdyBwYXR0 ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3QgYmUgYSBydW4tdGltZSBjb25zdGFudAorTElORSA3 OiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgcHJpY2UpID4gMAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJl ZmVyZW5jZSBpbiBjb21wb3VuZCBpbm5lciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2Nr CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoQSkKKyAgICBERUZJTkUgQSBBUyBQUkVWKExBU1QocHJpY2UsIHByaWNlKSwgMikg PiAwCispOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEg cnVuLXRpbWUgY29uc3RhbnQKK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoTEFTVChwcmlj ZSwgcHJpY2UpLCAyKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gTm9uLWNvbnN0YW50IG9mZnNldDogY29sdW1uIHJlZmVyZW5jZSBpbiBjb21wb3Vu ZCBvdXRlciBvZmZzZXQKK1NFTEVDVCBwcmljZSBGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisg ICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSkKKyAgICBE RUZJTkUgQSBBUyBQUkVWKExBU1QocHJpY2UsIDEpLCBwcmljZSkgPiAwCispOworRVJST1I6ICBy b3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IGJlIGEgcnVuLXRpbWUgY29uc3RhbnQK K0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYoTEFTVChwcmljZSwgMSksIHByaWNlKSA+IDAK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE5vbi1j b25zdGFudCBvZmZzZXQ6IHZvbGF0aWxlIGZ1bmN0aW9uIGFzIG9mZnNldAorU0VMRUNUIHByaWNl IEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElO SVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIHJhbmRv bSgpOjppbnQpID4gMAorKTsKK0VSUk9SOiAgdm9sYXRpbGUgZnVuY3Rpb25zIGFyZSBub3QgYWxs b3dlZCBpbiBERUZJTkUgY2xhdXNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNl LCByYW5kb20oKTo6aW50KSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIE5vbi1jb25zdGFudCBvZmZzZXQ6IHN1YnF1ZXJ5IGFzIG9mZnNldAorU0VMRUNUIHBy aWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIChT RUxFQ1QgMSkpID4gMAorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBzdWJxdWVyeSBpbiBERUZJTkUg ZXhwcmVzc2lvbgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgKFNFTEVDVCAx KSkgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBGaXJzdCBh cmc6IHN1YnF1ZXJ5IChjYXVnaHQgYnkgREVGSU5FLWxldmVsIHN1YnF1ZXJ5IHJlc3RyaWN0aW9u KQorU0VMRUNUIHByaWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgY29tcGFueQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFBS RVYocHJpY2UgKyAoU0VMRUNUIDEpKSA+IDAKKyk7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3VicXVl cnkgaW4gREVGSU5FIGV4cHJlc3Npb24KK0xJTkUgNzogICAgIERFRklORSBBIEFTIFBSRVYocHJp Y2UgKyAoU0VMRUNUIDEpKSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBeCistLSBWb2xhdGlsZSBmdW5jdGlvbiBpbnNpZGUgbmF2LmFyZyBpcyByZWplY3RlZCBpbiB0 aGUgcGxhbm5lcgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAgICBmaXJzdF92 YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNvdW50KCopIE9W RVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55 IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihwcmlj ZSArIHJhbmRvbSgpICogMCkgPj0gMAorKTsKK0VSUk9SOiAgdm9sYXRpbGUgZnVuY3Rpb25zIGFy ZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlCitMSU5FIDg6ICAgICBERUZJTkUgQSBBUyBQ UkVWKHByaWNlICsgcmFuZG9tKCkgKiAwKSA+PSAwCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgXgorLS0gbmV4dHZhbCBpcyB2b2xhdGlsZSAocGVyIHBnX3Byb2MpLCBzbyBp dCBpcyByZWplY3RlZCB2aWEgdGhlIEZ1bmNFeHByCistLSBwYXRoIHdpdGggdGhlICJ2b2xhdGls ZSBmdW5jdGlvbnMiIG1lc3NhZ2UKK0NSRUFURSBTRVFVRU5DRSBycHJfc2VxOworU0VMRUNUIHBy aWNlIEZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IElOSVRJQUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHByaWNlID4gbmV4dHZh bCgncnByX3NlcScpCispOworRVJST1I6ICB2b2xhdGlsZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxv d2VkIGluIERFRklORSBjbGF1c2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIHByaWNlID4gbmV4 dHZhbCgncnByX3NlcScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RST1Ag U0VRVUVOQ0UgcnByX3NlcTsKKy0tIEEgdm9sYXRpbGUgREVGSU5FIGlzIG5vdyByZWplY3RlZCBp biB0aGUgcGxhbm5lciwgbm90IGF0IHBhcnNlIHRpbWUsIHNvIGEKKy0tIHZpZXcgdGhhdCBoaWRl cyBvbmUgaXMgY3JlYXRlZCBzdWNjZXNzZnVsbHkgYW5kIG9ubHkgZXJyb3JzIHdoZW4gcmVhZC4K K0NSRUFURSBURU1QIFZJRVcgcnByX3ZvbGF0aWxlX3ZpZXcgQVMKK1NFTEVDVCBjb21wYW55LCB0 ZGF0ZSwgcHJpY2UsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAor ICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAorICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4gcmFuZG9tKCkgKiAwCispOworU0VM RUNUICogRlJPTSBycHJfdm9sYXRpbGVfdmlldzsKK0VSUk9SOiAgdm9sYXRpbGUgZnVuY3Rpb25z IGFyZSBub3QgYWxsb3dlZCBpbiBERUZJTkUgY2xhdXNlCitEUk9QIFZJRVcgcnByX3ZvbGF0aWxl X3ZpZXc7CistLSBERUZJTkUgY2Fubm90IHJlZmVyZW5jZSBhbiBvdXRlciBxdWVyeSdzIGNvbHVt bi4gIEEgY29ycmVsYXRlZCBvdXRlcgorLS0gcmVmZXJlbmNlIG11c3QgcHJvZHVjZSBhIGNsZWFu IGVycm9yLCBub3QgdGhlIGludGVybmFsICJVcHBlci1sZXZlbCBWYXIiCistLSBlbG9nIHRoYXQg cHVsbF92YXJfY2xhdXNlIHdvdWxkIG90aGVyd2lzZSByYWlzZS4KKy0tIFF1YWxpZmllZCBvdXRl ciByZWZlcmVuY2UgKG8udGhyZXNob2xkKToKK1NFTEVDVCAqIEZST00gKFZBTFVFUyAoOTUpKSBB UyBvKHRocmVzaG9sZCksCitMQVRFUkFMICgKKyAgICBTRUxFQ1QgcHJpY2UgRlJPTSBzdG9jawor ICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyAgICAgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg IElOSVRJQUwKKyAgICAgICAgUEFUVEVSTiAoQSkKKyAgICAgICAgREVGSU5FIEEgQVMgcHJpY2Ug PiBvLnRocmVzaG9sZAorICAgICkKKykgczsKK0VSUk9SOiAgY2Fubm90IHVzZSBvdXRlciBxdWVy eSBjb2x1bW4gaW4gREVGSU5FIGNsYXVzZQorTElORSA5OiAgICAgICAgIERFRklORSBBIEFTIHBy aWNlID4gby50aHJlc2hvbGQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4K Ky0tIFVucXVhbGlmaWVkIG5hbWUgcmVzb2x2aW5nIHRvIHRoZSBvdXRlciBjb2x1bW4gKHRocmVz aG9sZCk6CitTRUxFQ1QgKiBGUk9NIChWQUxVRVMgKDk1KSkgQVMgbyh0aHJlc2hvbGQpLAorTEFU RVJBTCAoCisgICAgU0VMRUNUIHByaWNlIEZST00gc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisg ICAgICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBJTklUSUFMCisgICAgICAgIFBB VFRFUk4gKEEpCisgICAgICAgIERFRklORSBBIEFTIHByaWNlID4gdGhyZXNob2xkCisgICAgKQor KSBzOworRVJST1I6ICBjYW5ub3QgdXNlIG91dGVyIHF1ZXJ5IGNvbHVtbiBpbiBERUZJTkUgY2xh dXNlCitMSU5FIDk6ICAgICAgICAgREVGSU5FIEEgQVMgcHJpY2UgPiB0aHJlc2hvbGQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIE91dGVyIHJlZmVyZW5jZSBpbnNp ZGUgYSBuYXZpZ2F0aW9uIGFyZ3VtZW50IGlzIHJlamVjdGVkIHRvbzoKK1NFTEVDVCAqIEZST00g KFZBTFVFUyAoOTUpKSBBUyBvKHRocmVzaG9sZCksCitMQVRFUkFMICgKKyAgICBTRUxFQ1QgcHJp Y2UgRlJPTSBzdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIGNv bXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJ TkUgQSBBUyBQUkVWKG8udGhyZXNob2xkLCAxKSA+IDAKKyAgICApCispIHM7CitFUlJPUjogIGNh bm5vdCB1c2Ugb3V0ZXIgcXVlcnkgY29sdW1uIGluIERFRklORSBjbGF1c2UKK0xJTkUgODogICAg ICAgICBERUZJTkUgQSBBUyBQUkVWKG8udGhyZXNob2xkLCAxKSA+IDAKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIERFRklORSByZWplY3RzIGEgc2NoZW1hLXF1YWxpZmll ZCBjb2x1bW4gcmVmZXJlbmNlICh0aHJlZSBvciBtb3JlIG5hbWUKKy0tIHBhcnRzKSBvbmNlIGl0 IHJlc29sdmVzOyB0aGUgcXVhbGlmaWVkIGZvcm0gaXRzZWxmIGlzIG5vdCBhbGxvd2VkLiAgKHN0 b2NrCistLSBpcyBhIHRlbXAgdGFibGUsIHNvIGl0IGlzIHF1YWxpZmllZCB3aXRoIHBnX3RlbXAg aGVyZS4pCistLSAzLXBhcnQgKHNjaGVtYS50YWJsZS5jb2x1bW4pOgorU0VMRUNUIHByaWNlIEZS T00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueQorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIElOSVRJ QUwKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHBnX3RlbXAuc3RvY2sucHJpY2Ug PiAwCispOworRVJST1I6ICBxdWFsaWZpZWQgZXhwcmVzc2lvbiAicGdfdGVtcC5zdG9jay5wcmlj ZSIgaXMgbm90IGFsbG93ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEg QVMgcGdfdGVtcC5zdG9jay5wcmljZSA+IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0t IHdob2xlLXJvdyB2YXJpYW50IChzY2hlbWEudGFibGUuKik6CitTRUxFQ1QgcHJpY2UgRlJPTSBz dG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55CisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgSU5JVElBTAor ICAgIFBBVFRFUk4gKEEpCisgICAgREVGSU5FIEEgQVMgKHBnX3RlbXAuc3RvY2suKikgSVMgTk9U IE5VTEwKKyk7CitFUlJPUjogIHF1YWxpZmllZCBleHByZXNzaW9uICJwZ190ZW1wLnN0b2NrLioi IGlzIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UKK0xJTkUgNzogICAgIERFRklORSBBIEFT IChwZ190ZW1wLnN0b2NrLiopIElTIE5PVCBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0KKy0tIDItYXJnIFBSRVYvTkVYVDogZnVuY3Rpb25hbCB0ZXN0cworLS0KKy0tIFBSRVYo cHJpY2UsIDIpOiBtYXRjaCByb3dzIHdoZXJlIGN1cnJlbnQgcHJpY2UgPiBwcmljZSAyIHJvd3Mg YmFjaworLS0gc3RvY2s6IDEwMCwgOTAsIDgwLCA5NSwgMTEwCistLSBQYXR0ZXJuIChBIEIrKTog QT1hbnksIEIgd2hlcmUgcHJpY2UgPiBQUkVWKHByaWNlLCAyKQorLS0gQXQgcG9zIDIgKDgwKTog QSBtYXRjaGVzLiBwb3MgMyAoOTUpOiA5NSA+IFBSRVYoOTUsMik9OTAgVFJVRS4KKy0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwb3MgNCAoMTEwKTogMTEwID4gUFJFVigxMTAsMik9ODAg VFJVRS4gTWF0Y2ghCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikg T1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBh bnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBB IEFTIFRSVUUsCisgICAgICAgIEIgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAyKQorKTsKKyBjb21w YW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1ZSB8IGNv dW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAw IHwgICAgICAgICAyMDAgfCAgICAgICAgMTUwIHwgICAgIDIKKyBjb21wYW55MSB8IDA3LTAzLTIw MjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAg ICAgIDExMCB8ICAgICAgICAxMjAgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAg MTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA5 LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAyMDAw IHwgICAgICAgMTUwMCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8 ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3 LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAg ICAxMjAwIHwgICAgIDMKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAgMTMwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAy MyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQor CistLSBORVhUKHByaWNlLCAyKTogbWF0Y2ggcm93cyB3aGVyZSBjdXJyZW50IHByaWNlID4gcHJp Y2UgMiByb3dzIGFoZWFkCistLSBwb3MgMCAoMTAwKTogTkVYVCgxMDAsMik9ODAsIDEwMD44MCBU UlVFLiBwb3MgMSAoOTApOiBORVhUKDkwLDIpPTk1LCA5MD45NSBGQUxTRS4gTWF0Y2ggZW5kcy4K K1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2Up IE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00g c3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0 ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHByaWNlID4gTkVYVChwcmljZSwg MikKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxh c3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAg MTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAy LTIwMjMgfCAgIDIwMCB8ICAgICAgICAgMjAwIHwgICAgICAgIDIwMCB8ICAgICAxCisgY29tcGFu eTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAxNDAgfCAgICAgICAg MTUwIHwgICAgIDIKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8 ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAg fCAgICAgICAgMjAwMCB8ICAgICAgIDIwMDAgfCAgICAgMQorIGNvbXBhbnkyIHwgMDctMDMtMjAy MyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAxNDAwIHwgICAgICAgMTUwMCB8ICAgICAyCisg Y29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEz MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDkt MjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisoMjAgcm93cykKKworLS0gRXhwcmVzc2lvbnMgaW5zaWRlIFBSRVYvTkVYVCBhcmc6IGV4cHIg aXMgZXZhbHVhdGVkIG9uIHRhcmdldCByb3cKKy0tIFBSRVYocHJpY2UgLSA1MCwgMSk6IGZldGNo ZXMgKHByaWNlIC0gNTApIGZyb20gMSByb3cgYmFjaworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwKKyAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNl KSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAg IFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlIC0gNTAsIDEpCispOworIGNvbXBhbnkgIHwg ICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCist LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t Ky0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAg ICAgIDIwMCB8ICAgICAgICAyMDAgfCAgICAgMQorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAg MTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0 LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgMTQwIHwgICAgICAgIDE1MCB8ICAgICAyCisgY29tcGFu eTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgMTEw IHwgICAgICAgIDEzMCB8ICAgICA0CisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8 ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3 LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgIDIwMDAgfCAgICAg ICAyMDAwIHwgICAgIDEKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUtMjAy MyB8ICAxNTAwIHwgICAgICAgIDE1MDAgfCAgICAgICAxNTAwIHwgICAgIDEKKyBjb21wYW55MiB8 IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEzMDAg fCAgICAgMgorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEz MDAgfCAgICAgICAgMTMwMCB8ICAgICAgIDEzMDAgfCAgICAgMQorKDIwIHJvd3MpCisKKy0tIE5F WFQocHJpY2UgKiAyLCAxKTogZmV0Y2hlcyAocHJpY2UgKiAyKSBmcm9tIDEgcm93IGFoZWFkCitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBP VkVSIHcsIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0 b2NrCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRh dGUKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBwcmljZSA8IE5FWFQocHJpY2UgKiAy LCAxKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwg bGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29tcGFueTEgfCAwNy0wMS0yMDIzIHwg ICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxMjAgfCAgICAgOQorIGNvbXBhbnkxIHwgMDct MDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MSB8IDA3LTAzLTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAgICA5MCB8 ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNy0yMDIz IHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBj b21wYW55MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAg ICAgNTAgfCAgICAgICAxNDAwIHwgICAgIDQKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMy0y MDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICA2MCB8 ICAgICAgIDEyMDAgfCAgICAgNAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAg ICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA4LTIwMjMgfCAg MTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0w OS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKygyMCByb3dzKQorCistLSBMYXJnZSBvZmZzZXQ6IFBSRVYodmFsLCA5OTkpIG9uIDEwMDAt cm93IHNlcmllcyBtYXRjaGVzIG9ubHkgbGFzdCByb3cKKy0tIE5FWFQodmFsLCA5OTkpIG1hdGNo ZXMgb25seSBmaXJzdCByb3cKK1NFTEVDVCB2YWwsIGZpcnN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBs YXN0X3ZhbHVlKHZhbCkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDEwMDApIEFTIHQodmFsKQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIFBSRVYodmFsLCA5OTkpID0gMQorKQorT1JERVIgQlkgdmFsIERFU0MgTElN SVQgMzsKKyB2YWwgIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIDEwMDAgfCAgICAgICAgMTAwMCB8 ICAgICAgIDEwMDAgfCAgICAgMQorICA5OTkgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorICA5OTggfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorKDMgcm93cykK KworU0VMRUNUIHZhbCwgZmlyc3RfdmFsdWUodmFsKSBPVkVSIHcsIGxhc3RfdmFsdWUodmFsKSBP VkVSIHcsIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMg dCh2YWwpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVY VCh2YWwsIDk5OSkgPSAxMDAwCispCitMSU1JVCAzOworIHZhbCB8IGZpcnN0X3ZhbHVlIHwgbGFz dF92YWx1ZSB8IGNvdW50IAorLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0t LQorICAgMSB8ICAgICAgICAgICAxIHwgICAgICAgICAgMSB8ICAgICAxCisgICAyIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyAgIDMgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorKDMgcm93cykKKworLS0gUFJFVihwcmljZSwgMCk6IG9mZnNldCAwIG1lYW5z IGN1cnJlbnQgcm93LCBhbHdheXMgZXF1YWwgdG8gcHJpY2UKKy0tIEErIG1hdGNoZXMgZW50aXJl IHBhcnRpdGlvbiBhcyBvbmUgZ3JvdXA7IGNvdW50ID0gcGFydGl0aW9uIHNpemUKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywg bGFzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJ TkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIDApID0gcHJpY2UKKyk7Cisg Y29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUg fCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAg ICAgICAxMDAgfCAgICAgICAgMTMwIHwgICAgMTAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAg IDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0w My0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMg fCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUwIHwgICAg ICAgMTMwMCB8ICAgIDEwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIw MjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIg fCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAx MjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEw LTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisoMjAgcm93 cykKKworLS0gMi1hcmcgUFJFVi9ORVhUIG91dHNpZGUgREVGSU5FIGNsYXVzZQorU0VMRUNUIHBy ZXYocHJpY2UsIDIpIEZST00gc3RvY2s7CitFUlJPUjogIGNhbm5vdCB1c2UgcHJldiBvdXRzaWRl IGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1QgcHJldihwcmljZSwgMikgRlJPTSBzdG9j azsKKyAgICAgICAgICAgICAgIF4KK1NFTEVDVCBuZXh0KHByaWNlLCAyKSBGUk9NIHN0b2NrOwor RVJST1I6ICBjYW5ub3QgdXNlIG5leHQgb3V0c2lkZSBhIERFRklORSBjbGF1c2UKK0xJTkUgMTog U0VMRUNUIG5leHQocHJpY2UsIDIpIEZST00gc3RvY2s7CisgICAgICAgICAgICAgICBeCistLSAy LWFyZyBQUkVWL05FWFQ6IG5lZ2F0aXZlIG9mZnNldAorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBw cmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMg KAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSsp CisgICAgREVGSU5FIEEgQVMgUFJFVihwcmljZSwgLTEpIElTIE5PVCBOVUxMCispOworRVJST1I6 ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorLS0g Mi1hcmcgUFJFVi9ORVhUOiBOVUxMIG9mZnNldCAodHlwZWQpCitTRUxFQ1QgY29tcGFueSwgdGRh dGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHByaWNlLCBOVUxMOjppbnQ4KSBJUyBOT1QgTlVM TAorKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUg bnVsbAorLS0gMi1hcmcgUFJFVi9ORVhUOiBOVUxMIG9mZnNldCAodW50eXBlZCkKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3Rv Y2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0 ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYocHJpY2UsIE5VTEwpIElTIE5P VCBOVUxMCispOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5v dCBiZSBudWxsCistLSAyLWFyZyBQUkVWL05FWFQ6IGhvc3QgdmFyaWFibGUgbmVnYXRpdmUgYW5k IE5VTEwKK1BSRVBBUkUgdGVzdF9wcmV2X29mZnNldChpbnQ4KSBBUworU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lO RE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgcHJpY2UgPiBQUkVWKHByaWNlLCAkMSkKKyk7CitF WEVDVVRFIHRlc3RfcHJldl9vZmZzZXQoLTEpOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0 aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorRVhFQ1VURSB0ZXN0X3ByZXZfb2Zmc2V0 KE5VTEwpOworRVJST1I6ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBi ZSBudWxsCitERUFMTE9DQVRFIHRlc3RfcHJldl9vZmZzZXQ7CistLSAyLWFyZyBQUkVWL05FWFQ6 IGhvc3QgdmFyaWFibGUgd2l0aCBleHByZXNzaW9uICgwICsgJDEpCitQUkVQQVJFIHRlc3RfcHJl dl9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGZpcnN0X3Zh bHVlKHByaWNlKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJ T04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIHByaWNlID4gUFJFVihwcmljZSwgMCArICQxKQorKTsKK0VYRUNVVEUgdGVzdF9wcmV2X29m ZnNldCgtMSk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90 IGJlIG5lZ2F0aXZlCitFWEVDVVRFIHRlc3RfcHJldl9vZmZzZXQoTlVMTCk7CitFUlJPUjogIHJv dyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG51bGwKK0RFQUxMT0NBVEUg dGVzdF9wcmV2X29mZnNldDsKKy0tIDItYXJnIFBSRVYvTkVYVDogaG9zdCB2YXJpYWJsZSB3aXRo IHBvc2l0aXZlIHZhbHVlCistLSBFeGVyY2lzZXMgUlBSX05BVl9PRkZTRVRfTkVFRFNfRVZBTCAt PiBldmFsX25hdl9tYXhfb2Zmc2V0KCkgcGF0aAorUFJFUEFSRSB0ZXN0X3ByZXZfb2Zmc2V0KGlu dDgpIEFTCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkg T1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQ QVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBB UyBwcmljZSA+IFBSRVYocHJpY2UsICQxKQorKTsKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldCgx KTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgY291bnQg CistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLQor IGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgMgorIGNv bXBhbnkxIHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAxNDAgfCAgICAgMgorIGNvbXBhbnkxIHwg MDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgOTAgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDct MjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAy MyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8 ICAgMTIwIHwgICAgICAgICAxMjAgfCAgICAgMgorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAg MTMwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUw IHwgICAgICAgICAgNTAgfCAgICAgMgorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwg ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAg IDE0MDAgfCAgICAgMgorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgNjAg fCAgICAgMworIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgIDEyMDAgfCAgICAgMgor IGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgMAorKDIw IHJvd3MpCisKK0VYRUNVVEUgdGVzdF9wcmV2X29mZnNldCgyKTsKKyBjb21wYW55ICB8ICAgdGRh dGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0t LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAy MyB8ICAgMTAwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8 ICAgMjAwIHwgICAgICAgICAyMDAgfCAgICAgMgorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAg MTUwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQw IHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwg ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAg ICAxMTAgfCAgICAgMworIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgIDIwMDAgfCAgICAgMgor IGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnky IHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwg MDctMDctMjAyMyB8ICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAgMworIGNvbXBhbnkyIHwgMDct MDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDkt MjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAy MyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3MpCisKK0RFQUxMT0NBVEUg dGVzdF9wcmV2X29mZnNldDsKKy0tIDItYXJnOiB0d28gUFJFViB3aXRoIGRpZmZlcmVudCBvZmZz ZXRzIGluIHNhbWUgREVGSU5FIGNsYXVzZQorLS0gQjogcHJpY2UgZXhjZWVkcyBib3RoIDEtYmFj ayBhbmQgMi1iYWNrIHZhbHVlcworU0VMRUNUIGNvbXBhbnksIHRkYXRlLCBwcmljZSwKKyAgICAg ICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsIGNv dW50KCopIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBC WSBjb21wYW55IE9SREVSIEJZIHRkYXRlCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBUUlVFLAorICAg ICAgICBCIEFTIHByaWNlID4gUFJFVihwcmljZSwgMSkgQU5EIHByaWNlID4gUFJFVihwcmljZSwg MikKKyk7CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxh c3RfdmFsdWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAg MTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAy LTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8 ICAgMTEwIHwgICAgICAgICAxMTAgfCAgICAgICAgMTMwIHwgICAgIDIKKyBjb21wYW55MSB8IDA3 LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAy MyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAg ICAxMTAwIHwgICAgICAgMTMwMCB8ICAgICAyCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEz MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDkt MjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55 MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAw CisoMjAgcm93cykKKworLS0gMi1hcmc6IFBSRVYgYW5kIE5FWFQgd2l0aCBleHBsaWNpdCBvZmZz ZXRzIGluIHNhbWUgREVGSU5FIGNsYXVzZQorLS0gQTogcHJpY2UgZXhjZWVkcyAxLWJhY2sgYW5k IGlzIGJlbG93IDEtYWhlYWQgKGFzY2VuZGluZyBpbnRlcmlvciBwb2ludCkKK1NFTEVDVCBjb21w YW55LCB0ZGF0ZSwgcHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFz dF92YWx1ZShwcmljZSkgT1ZFUiB3LCBjb3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRP VyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIHByaWNlID4gUFJFVihwcmljZSwgMSkgQU5EIHByaWNlIDwgTkVYVChwcmljZSwgMSkKKyk7 CisgY29tcGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFs dWUgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMg fCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEw IHwgICAgICAgICAxMTAgfCAgICAgICAgMTEwIHwgICAgIDEKKyBjb21wYW55MSB8IDA3LTA4LTIw MjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAx NTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0 LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAxMTAw IHwgICAgICAgMTEwMCB8ICAgICAxCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8 ICAxMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3 LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisoMjAg cm93cykKKworLS0gUGFzcy1ieS1yZWYgdHlwZXM6IHR3byBQUkVWIGNhbGxzIHRhcmdldGluZyBk aWZmZXJlbnQgcG9zaXRpb25zLgorLS0gVmVyaWZpZXMgdGhhdCBkYXR1bUNvcHkgaW4gUkVTVE9S RSBwcmV2ZW50cyBkYW5nbGluZyBwb2ludGVycyB3aGVuCistLSBuYXZfc2xvdCBpcyByZS1mZXRj aGVkIGZvciB0aGUgc2Vjb25kIG5hdmlnYXRpb24uCistLSB0ZGF0ZTo6dGV4dCBnaXZlcyBkaXN0 aW5jdCB0ZXh0IHZhbHVlcyBwZXIgcm93IChlLmcuICcwNy0wMS0yMDIzJykuCistLSBCIG1hdGNo ZXMgd2hlbiAxLWJhY2sgZGF0ZSB0ZXh0ID4gMi1iYWNrIGRhdGUgdGV4dCAoYWx3YXlzIHRydWUg Zm9yCistLSBhc2NlbmRpbmcgZGF0ZXMpLCBzbyBCKyBleHRlbmRzIHRoZSBmdWxsIHBhcnRpdGlv biBhZnRlciBBLgorU0VMRUNUIGNvbXBhbnksIHRkYXRlLCB0ZGF0ZTo6dGV4dCBBUyB0ZGF0ZV90 ZXh0LAorICAgICAgIGZpcnN0X3ZhbHVlKHRkYXRlOjp0ZXh0KSBPVkVSIHcsIGxhc3RfdmFsdWUo dGRhdGU6OnRleHQpIE9WRVIgdywgY291bnQoKikgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cg dyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNvbXBhbnkgT1JERVIgQlkgdGRhdGUKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQor ICAgICAgICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgUFJFVih0ZGF0ZTo6dGV4dCwgMSkgPiBQ UkVWKHRkYXRlOjp0ZXh0LCAyKQorKTsKKyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCB0ZGF0ZV90 ZXh0IHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQor IGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8IDA3LTAxLTIwMjMgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8IDA3LTAyLTIwMjMgfCAwNy0w Mi0yMDIzICB8IDA3LTEwLTIwMjMgfCAgICAgOQorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8IDA3 LTAzLTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwg MDctMDQtMjAyMyB8IDA3LTA0LTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8IDA3LTA1LTIwMjMgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8IDA3LTA2LTIwMjMgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8 IDA3LTA3LTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMDgtMjAyMyB8IDA3LTA4LTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8IDA3LTA5LTIwMjMgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8IDA3LTEwLTIwMjMg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDEtMjAy MyB8IDA3LTAxLTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkyIHwgMDctMDItMjAyMyB8IDA3LTAyLTIwMjMgfCAwNy0wMi0yMDIzICB8IDA3LTEwLTIwMjMg fCAgICAgOQorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8IDA3LTAzLTIwMjMgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8IDA3LTA0LTIw MjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDUt MjAyMyB8IDA3LTA1LTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDYtMjAyMyB8IDA3LTA2LTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8IDA3LTA3LTIwMjMgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8IDA3LTA4 LTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDktMjAyMyB8IDA3LTA5LTIwMjMgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAor IGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8IDA3LTEwLTIwMjMgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgMAorKDIwIHJvd3MpCisKKy0tIG51bWVyaWM6IFBSRVYocHJpY2U6Om51bWVy aWMsIDEpID4gUFJFVihwcmljZTo6bnVtZXJpYywgMikKKy0tIEIgbWF0Y2hlcyB3aGVuIHByaWNl IDEtYmFjayA+IHByaWNlIDItYmFjayAoYXNjZW5kaW5nIHBhaXIpLgorU0VMRUNUIGNvbXBhbnks IHRkYXRlLCBwcmljZTo6bnVtZXJpYyBBUyBucHJpY2UsCisgICAgICAgZmlyc3RfdmFsdWUocHJp Y2U6Om51bWVyaWMpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZTo6bnVtZXJpYykgT1ZFUiB3LCBj b3VudCgqKSBPVkVSIHcKK0ZST00gc3RvY2sKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgY29tcGFueSBPUkRFUiBCWSB0ZGF0ZQorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgVFJVRSwKKyAg ICAgICAgQiBBUyBQUkVWKHByaWNlOjpudW1lcmljLCAxKSA+IFBSRVYocHJpY2U6Om51bWVyaWMs IDIpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IG5wcmljZSB8IGZpcnN0X3ZhbHVlIHwg bGFzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8 ICAgIDEwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wMi0yMDIzIHwgICAgMjAwIHwgICAgICAgICAyMDAgfCAgICAgICAgMTUwIHwgICAgIDIKKyBj b21wYW55MSB8IDA3LTAzLTIwMjMgfCAgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8ICAgIDE0MCB8ICAgICAgICAgICAgIHwg ICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAgMTUwIHwgICAg ICAgICAxNTAgfCAgICAgICAgIDkwIHwgICAgIDIKKyBjb21wYW55MSB8IDA3LTA2LTIwMjMgfCAg ICAgOTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDct MDctMjAyMyB8ICAgIDExMCB8ICAgICAgICAgMTEwIHwgICAgICAgIDEyMCB8ICAgICAzCisgY29t cGFueTEgfCAwNy0wOC0yMDIzIHwgICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MSB8IDA3LTA5LTIwMjMgfCAgICAxMjAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMTAtMjAyMyB8ICAgIDEzMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAg IDUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTAy LTIwMjMgfCAgIDIwMDAgfCAgICAgICAgMjAwMCB8ICAgICAgIDE1MDAgfCAgICAgMgorIGNvbXBh bnkyIHwgMDctMDMtMjAyMyB8ICAgMTUwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgICAxNDAwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgIDE1MDAgfCAgICAgICAg MTUwMCB8ICAgICAgICAgNjAgfCAgICAgMgorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgICA2 MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNy0y MDIzIHwgICAxMTAwIHwgICAgICAgIDExMDAgfCAgICAgICAxMjAwIHwgICAgIDMKKyBjb21wYW55 MiB8IDA3LTA4LTIwMjMgfCAgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg MAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0xMC0yMDIzIHwgICAxMzAwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgIDAKKygyMCByb3dzKQorCistLQorLS0gRklSU1QvTEFTVCBu YXZpZ2F0aW9uCistLQorLS0gVGVzdCBkYXRhIGZvciBGSVJTVC9MQVNUOiB2YWx1ZXMgY3ljbGUg YmFjayBzbyBGSVJTVCh2YWwpID0gTEFTVCh2YWwpCistLSBhdCBzcGVjaWZpYyBwb3NpdGlvbnMu CitDUkVBVEUgVEVNUCBUQUJMRSBycHJfbmF2IChpZCBpbnQsIHZhbCBpbnQpOworSU5TRVJUIElO VE8gcnByX25hdiBWQUxVRVMgKDEsMTApLCgyLDIwKSwoMywzMCksKDQsMTApLCg1LDUwKSwoNiwx MCk7CistLSBGSVJTVCh2YWwpID0gY29uc3RhbnQ6IEIgbWF0Y2hlcyB3aGVuIG1hdGNoX3N0YXJ0 IGhhcyB2YWw9MTAKKy0tIG1hdGNoX3N0YXJ0PTEoMTApOiBBPWlkMSwgQj1pZDIsIEZJUlNUKHZh bCk9MTAgLT4gbWF0Y2ggezEsMn0KKy0tIG1hdGNoX3N0YXJ0PTMoMzApOiBBPWlkMywgQj1pZDQs IEZJUlNUKHZhbCk9MzAhPTEwIC0+IG5vIG1hdGNoCistLSBtYXRjaF9zdGFydD00KDEwKTogQT1p ZDQsIEI9aWQ1LCBGSVJTVCh2YWwpPTEwIC0+IG1hdGNoIHs0LDV9CitTRUxFQ1QgaWQsIHZhbCwg Zmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1s CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFT IFRSVUUsIEIgQVMgRklSU1QodmFsKSA9IDEwCispOworIGlkIHwgdmFsIHwgbWYgfCBtbCAKKy0t LS0rLS0tLS0rLS0tLSstLS0tCisgIDEgfCAgMTAgfCAgMSB8ICAyCisgIDIgfCAgMjAgfCAgICB8 ICAgCisgIDMgfCAgMzAgfCAgICB8ICAgCisgIDQgfCAgMTAgfCAgNCB8ICA1CisgIDUgfCAgNTAg fCAgICB8ICAgCisgIDYgfCAgMTAgfCAgICB8ICAgCisoNiByb3dzKQorCistLSBMQVNUKHZhbCk6 IGFsd2F5cyBlcXVhbHMgY3VycmVudCByb3cncyB2YWwgKG9mZnNldCAwIGRlZmF1bHQpCistLSBF cXVpdmFsZW50IHRvOiBCIEFTIHZhbCA+IDE1CitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtZiwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1sCitGUk9NIHJwcl9u YXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMg TEFTVCh2YWwpID4gMTUKKyk7CisgaWQgfCB2YWwgfCBtZiB8IG1sIAorLS0tLSstLS0tLSstLS0t Ky0tLS0KKyAgMSB8ICAxMCB8ICAxIHwgIDIKKyAgMiB8ICAyMCB8ICAgIHwgICAKKyAgMyB8ICAz MCB8ICAgIHwgICAKKyAgNCB8ICAxMCB8ICA0IHwgIDUKKyAgNSB8ICA1MCB8ICAgIHwgICAKKyAg NiB8ICAxMCB8ICAgIHwgICAKKyg2IHJvd3MpCisKKy0tIFJlbHVjdGFudCBBKz8gd2l0aCBGSVJT VCh2YWwpID0gTEFTVCh2YWwpOiBmaW5kIHNob3J0ZXN0IG1hdGNoIHdoZXJlCistLSBmaXJzdCBh bmQgbGFzdCByb3dzIGhhdmUgdGhlIHNhbWUgdmFsLgorLS0gbWF0Y2hfc3RhcnQ9MSgxMCk6IHJl bHVjdGFudCB0cmllcyBCIGVhcmx5OgorLS0gICBpZDIoMjAhPTEwKSwgaWQzKDMwIT0xMCksIGlk NCgxMD0xMCkgLT4gbWF0Y2ggezEsMiwzLDR9CistLSBtYXRjaF9zdGFydD01KDUwKTogaWQ2KDEw IT01MCkgLT4gbm8gbWF0Y2gKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1mLCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnByX25hdiBXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKz8gQikKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKHZh bCkgPSBMQVNUKHZhbCkKKyk7CisgaWQgfCB2YWwgfCBtZiB8IG1sIAorLS0tLSstLS0tLSstLS0t Ky0tLS0KKyAgMSB8ICAxMCB8ICAxIHwgIDQKKyAgMiB8ICAyMCB8ICAgIHwgICAKKyAgMyB8ICAz MCB8ICAgIHwgICAKKyAgNCB8ICAxMCB8ICAgIHwgICAKKyAgNSB8ICA1MCB8ICAgIHwgICAKKyAg NiB8ICAxMCB8ICAgIHwgICAKKyg2IHJvd3MpCisKKy0tIEdyZWVkeSBBKyB3aXRoIEZJUlNUKHZh bCkgPSBMQVNUKHZhbCk6IGZpbmQgbG9uZ2VzdCBtYXRjaCB3aGVyZQorLS0gZmlyc3QgYW5kIGxh c3Qgcm93cyBoYXZlIHRoZSBzYW1lIHZhbC4KKy0tIG1hdGNoX3N0YXJ0PTEoMTApOiBncmVlZHkg QSBlYXRzIGFsbCwgQiB0cmllcyBsYXN0OgorLS0gICBpZDYoMTA9MTApIC0+IG1hdGNoIHsxLDIs Myw0LDUsNn0KK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWwKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgRklSU1QodmFsKSA9IExBU1Qo dmFsKQorKTsKKyBpZCB8IHZhbCB8IG1mIHwgbWwgCistLS0tKy0tLS0tKy0tLS0rLS0tLQorICAx IHwgIDEwIHwgIDEgfCAgNgorICAyIHwgIDIwIHwgICAgfCAgIAorICAzIHwgIDMwIHwgICAgfCAg IAorICA0IHwgIDEwIHwgICAgfCAgIAorICA1IHwgIDUwIHwgICAgfCAgIAorICA2IHwgIDEwIHwg ICAgfCAgIAorKDYgcm93cykKKworLS0gU0tJUCBUTyBORVhUIFJPVyB3aXRoIEZJUlNUKHZhbCkg PSBMQVNUKHZhbCk6IG92ZXJsYXBwaW5nIG1hdGNoIGF0dGVtcHRzLgorLS0gV2l0aCBPTkUgUk9X IFBFUiBNQVRDSCwgZWFjaCByb3cgc2hvd3Mgb25seSBpdHMgZmlyc3QgbWF0Y2ggcmVzdWx0Lgor U0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtbAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKz8gQikK KyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKHZhbCkgPSBMQVNUKHZhbCkKKyk7Cisg aWQgfCB2YWwgfCBtZiB8IG1sIAorLS0tLSstLS0tLSstLS0tKy0tLS0KKyAgMSB8ICAxMCB8ICAx IHwgIDQKKyAgMiB8ICAyMCB8ICAgIHwgICAKKyAgMyB8ICAzMCB8ICAgIHwgICAKKyAgNCB8ICAx MCB8ICA0IHwgIDYKKyAgNSB8ICA1MCB8ICAgIHwgICAKKyAgNiB8ICAxMCB8ICAgIHwgICAKKyg2 IHJvd3MpCisKKy0tIEZJUlNUL0xBU1QgMi1hcmcgb2Zmc2V0IGZvcm0KKy0tCistLSBGSVJTVCh2 YWwsIDApID0gRklSU1QodmFsKTogbWF0Y2hfc3RhcnQgcm93CitTRUxFQ1QgaWQsIHZhbCwgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBy cHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwg QiBBUyBGSVJTVCh2YWwsIDApID0gMTAKKyk7CisgaWQgfCB2YWwgfCBtZiB8IGNudCAKKy0tLS0r LS0tLS0rLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgIDYKKyAgMiB8ICAyMCB8ICAgIHwg ICAwCisgIDMgfCAgMzAgfCAgICB8ICAgMAorICA0IHwgIDEwIHwgICAgfCAgIDAKKyAgNSB8ICA1 MCB8ICAgIHwgICAwCisgIDYgfCAgMTAgfCAgICB8ICAgMAorKDYgcm93cykKKworLS0gRklSU1Qo dmFsLCAxKTogbWF0Y2hfc3RhcnQgKyAxIHJvdyAoc2Vjb25kIHJvdyBvZiBtYXRjaCkKKy0tIG1h dGNoX3N0YXJ0PTEoMTApOiBGSVJTVCh2YWwsMSk9MjAsIEIgbmVlZHMgdmFsPTIwIC0+IGlkMigy MCkgbWF0Y2gsIGlkMygzMCkgbm8KKy0tIG1hdGNoX3N0YXJ0PTMoMzApOiBGSVJTVCh2YWwsMSk9 MTAsIEIgbmVlZHMgdmFsPTEwIC0+IGlkNCgxMCkgbWF0Y2gKK1NFTEVDVCBpZCwgdmFsLCBmaXJz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJw cl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBC IEFTIHZhbCA9IEZJUlNUKHZhbCwgMSkKKyk7CisgaWQgfCB2YWwgfCBtZiB8IGNudCAKKy0tLS0r LS0tLS0rLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgIDIKKyAgMiB8ICAyMCB8ICAgIHwg ICAwCisgIDMgfCAgMzAgfCAgMyB8ICAgMgorICA0IHwgIDEwIHwgICAgfCAgIDAKKyAgNSB8ICA1 MCB8ICA1IHwgICAyCisgIDYgfCAgMTAgfCAgICB8ICAgMAorKDYgcm93cykKKworLS0gRklSU1Qo dmFsLCA5OSk6IG9mZnNldCBiZXlvbmQgbWF0Y2ggcmFuZ2UgLT4gTlVMTCwgbm8gbWF0Y2gKK1NF TEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKHZh bCwgOTkpIElTIE5PVCBOVUxMCispOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0t LQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0 IHwgIDEwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICAxMCB8ICAgMAorKDYgcm93cykK KworLS0gTEFTVCh2YWwsIDApID0gTEFTVCh2YWwpOiBjdXJyZW50IHJvdworU0VMRUNUIGlkLCB2 YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQK K0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFT IFRSVUUsIEIgQVMgTEFTVCh2YWwsIDApID4gMTUKKyk7CisgaWQgfCB2YWwgfCBtZiB8IGNudCAK Ky0tLS0rLS0tLS0rLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEgfCAgIDMKKyAgMiB8ICAyMCB8 ICAgIHwgICAwCisgIDMgfCAgMzAgfCAgICB8ICAgMAorICA0IHwgIDEwIHwgIDQgfCAgIDIKKyAg NSB8ICA1MCB8ICAgIHwgICAwCisgIDYgfCAgMTAgfCAgICB8ICAgMAorKDYgcm93cykKKworLS0g TEFTVCh2YWwsIDEpOiBvbmUgcm93IGJhY2sgZnJvbSBjdXJyZW50IChwcmV2aW91cyBtYXRjaCBy b3cpCistLSBBdCBCIGV2YWx1YXRpb24gb24gaWQyOiBMQVNUKHZhbCwxKSA9IHZhbCBhdCBpZDEg PSAxMAorLS0gQiBtYXRjaGVzIHdoZW4gcHJldmlvdXMgcm93IHZhbCA8IDMwCitTRUxFQ1QgaWQs IHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBMQVNUKHZhbCwgMSkgPCAzMAorKTsKKyBpZCB8IHZhbCB8IG1mIHwgY250 IAorLS0tLSstLS0tLSstLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgMSB8ICAgMworICAyIHwgIDIw IHwgICAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgIHwgICAwCisgIDQgfCAgMTAgfCAgNCB8ICAgMgor ICA1IHwgIDUwIHwgICAgfCAgIDAKKyAgNiB8ICAxMCB8ICAgIHwgICAwCisoNiByb3dzKQorCist LSBMQVNUKHZhbCwgOTkpOiBvZmZzZXQgYmVmb3JlIG1hdGNoX3N0YXJ0IC0+IE5VTEwKK1NFTEVD VCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIExBU1QodmFsLCA5 OSkgSVMgTk9UIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAg MTAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDEwIHwgICAwCisoNiByb3dzKQorCist LSBFcnJvcjogTlVMTCBvZmZzZXQKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJP TSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQor ICAgIERFRklORSBBIEFTIEZJUlNUKHZhbCwgTlVMTDo6aW50OCkgSVMgTlVMTAorKTsKK0VSUk9S OiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbnVsbAorLS0gRXJy b3I6IG5lZ2F0aXZlIG9mZnNldAorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9N IHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgTEFTVCh2YWwsIC0xKSBJUyBOVUxMCispOworRVJST1I6ICByb3cgcGF0 dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorLS0gRklSU1QvTEFT VCBvdXRzaWRlIERFRklORSBjbGF1c2UgKGVycm9yIGNhc2VzKQorU0VMRUNUIGZpcnN0KHZhbCkg RlJPTSBycHJfbmF2OworRVJST1I6ICBjYW5ub3QgdXNlIGZpcnN0IG91dHNpZGUgYSBERUZJTkUg Y2xhdXNlCitMSU5FIDE6IFNFTEVDVCBmaXJzdCh2YWwpIEZST00gcnByX25hdjsKKyAgICAgICAg ICAgICAgIF4KK1NFTEVDVCBsYXN0KHZhbCkgRlJPTSBycHJfbmF2OworRVJST1I6ICBjYW5ub3Qg dXNlIGxhc3Qgb3V0c2lkZSBhIERFRklORSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIGxhc3QodmFs KSBGUk9NIHJwcl9uYXY7CisgICAgICAgICAgICAgICBeCitTRUxFQ1QgZmlyc3QodmFsLCAxKSBG Uk9NIHJwcl9uYXY7CitFUlJPUjogIGNhbm5vdCB1c2UgZmlyc3Qgb3V0c2lkZSBhIERFRklORSBj bGF1c2UKK0xJTkUgMTogU0VMRUNUIGZpcnN0KHZhbCwgMSkgRlJPTSBycHJfbmF2OworICAgICAg ICAgICAgICAgXgorLS0gRnVuY3Rpb25hbCBub3RhdGlvbjogc2hvdWxkIGFjY2VzcyBjb2x1bW4s IG5vdCBSUFIgbmF2aWdhdGlvbgorQ1JFQVRFIFRFTVAgVEFCTEUgcnByX25hbWVzIChwcmV2IGlu dCwgbmV4dCBpbnQsIGZpcnN0IHRleHQsIGxhc3QgdGV4dCk7CitJTlNFUlQgSU5UTyBycHJfbmFt ZXMgVkFMVUVTICgxLCAyLCAnSm9lJywgJ0Jsb3cnKTsKK1NFTEVDVCBwcmV2KGYpLCBuZXh0KGYp LCBmaXJzdChmKSwgbGFzdChmKSBGUk9NIHJwcl9uYW1lcyBmOworIHByZXYgfCBuZXh0IHwgZmly c3QgfCBsYXN0IAorLS0tLS0tKy0tLS0tLSstLS0tLS0tKy0tLS0tLQorICAgIDEgfCAgICAyIHwg Sm9lICAgfCBCbG93CisoMSByb3cpCisKK0RST1AgVEFCTEUgcnByX25hbWVzOworLS0gQ29tcG91 bmQgbmF2aWdhdGlvbjogUFJFVihGSVJTVCh2YWwpLCBNKQorLS0gcnByX25hdjogKDEsMTApLCgy LDIwKSwoMywzMCksKDQsMTApLCg1LDUwKSwoNiwxMCkKKy0tIFBSRVYoRklSU1QodmFsKSwgMSk6 IHRhcmdldCA9IG1hdGNoX3N0YXJ0ICsgMCAtIDEgPSBtYXRjaF9zdGFydCAtIDEKKy0tIEF0IG1h dGNoX3N0YXJ0PTE6IHRhcmdldD0wIC0+IG91dCBvZiByYW5nZSAtPiBOVUxMCistLSBBdCBtYXRj aF9zdGFydD0zOiB0YXJnZXQ9Mih2YWw9MjApIC0+IDIwID4gMCAtPiB0cnVlCitTRUxFQ1QgaWQs IHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBQUkVWKEZJUlNUKHZhbCksIDEpID4gMAorKTsKKyBpZCB8IHZhbCB8IG1m IHwgY250IAorLS0tLSstLS0tLSstLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgICB8ICAgMAorICAy IHwgIDIwIHwgIDIgfCAgIDUKKyAgMyB8ICAzMCB8ICAgIHwgICAwCisgIDQgfCAgMTAgfCAgICB8 ICAgMAorICA1IHwgIDUwIHwgICAgfCAgIDAKKyAgNiB8ICAxMCB8ICAgIHwgICAwCisoNiByb3dz KQorCistLSBORVhUKEZJUlNUKHZhbCwgMSksIDEpOiB0YXJnZXQgPSBtYXRjaF9zdGFydCArIDEg KyAxID0gbWF0Y2hfc3RhcnQgKyAyCistLSBBdCBtYXRjaF9zdGFydD0xLCBCIG9uIGlkMjogdGFy Z2V0PTErMSsxPTModmFsPTMwKSwgMzA+MCAtPiB0cnVlCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJf bmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBB UyBORVhUKEZJUlNUKHZhbCwgMSksIDEpID4gMAorKTsKKyBpZCB8IHZhbCB8IG1mIHwgY250IAor LS0tLSstLS0tLSstLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgMSB8ICAgNgorICAyIHwgIDIwIHwg ICAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgIHwgICAwCisgIDQgfCAgMTAgfCAgICB8ICAgMAorICA1 IHwgIDUwIHwgICAgfCAgIDAKKyAgNiB8ICAxMCB8ICAgIHwgICAwCisoNiByb3dzKQorCistLSBQ UkVWKExBU1QodmFsKSwgMik6IHRhcmdldCA9IGN1cnJlbnRwb3MgLSAwIC0gMiA9IGN1cnJlbnRw b3MgLSAyCistLSBTYW1lIGJhY2t3YXJkIHJlYWNoIGFzIFBSRVYodmFsLCAyKQorU0VMRUNUIGlk LCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBj bnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBB IEFTIFRSVUUsIEIgQVMgUFJFVihMQVNUKHZhbCksIDIpIElTIE5PVCBOVUxMCispOworIGlkIHwg dmFsIHwgbWYgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgIHwg ICAwCisgIDIgfCAgMjAgfCAgMiB8ICAgNQorICAzIHwgIDMwIHwgICAgfCAgIDAKKyAgNCB8ICAx MCB8ICAgIHwgICAwCisgIDUgfCAgNTAgfCAgICB8ICAgMAorICA2IHwgIDEwIHwgICAgfCAgIDAK Kyg2IHJvd3MpCisKKy0tIE5FWFQoTEFTVCh2YWwsIDEpLCAyKTogdGFyZ2V0ID0gY3VycmVudHBv cyAtIDEgKyAyID0gY3VycmVudHBvcyArIDEKKy0tIExvb2tzIDEgcm93IGFoZWFkOiBzYW1lIGFz IE5FWFQodmFsLCAxKQorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChMQVNUKHZhbCwgMSks IDIpIElTIE5PVCBOVUxMCispOworIGlkIHwgdmFsIHwgbWYgfCBjbnQgCistLS0tKy0tLS0tKy0t LS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxIHwgICA1CisgIDIgfCAgMjAgfCAgICB8ICAgMAorICAz IHwgIDMwIHwgICAgfCAgIDAKKyAgNCB8ICAxMCB8ICAgIHwgICAwCisgIDUgfCAgNTAgfCAgICB8 ICAgMAorICA2IHwgIDEwIHwgICAgfCAgIDAKKyg2IHJvd3MpCisKKy0tIENvbXBvdW5kOiBvdXRl ciBvZmZzZXQgYmV5b25kIHBhcnRpdGlvbiAoUFJFViBmYXIgYmFjaykKK1NFTEVDVCBpZCwgdmFs LCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFT IFBSRVYoRklSU1QodmFsKSwgOTkpIElTIE5PVCBOVUxMCispOworIGlkIHwgdmFsIHwgY250IAor LS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8 ICAzMCB8ICAgMAorICA0IHwgIDEwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICAxMCB8 ICAgMAorKDYgcm93cykKKworLS0gQ29tcG91bmQ6IG91dGVyIG9mZnNldCBiZXlvbmQgcGFydGl0 aW9uIChORVhUIGZhciBmb3J3YXJkKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBB UyBjbnQKK0ZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChGSVJTVCh2YWwpLCA5 OSkgSVMgTk9UIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAg MTAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDEwIHwgICAwCisoNiByb3dzKQorCist LSBDb21wb3VuZDogaW5uZXIgb2Zmc2V0IGJleW9uZCBtYXRjaCByYW5nZSAoRklSU1Qgb2Zmc2V0 IHRvbyBsYXJnZSkKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9N IHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykK KyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodmFsLCA5OSksIDEpIElTIE5P VCBOVUxMCispOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEw IHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDEwIHwgICAw CisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICAxMCB8ICAgMAorKDYgcm93cykKKworLS0gQ29tcG91 bmQ6IGlubmVyIG9mZnNldCBiZXlvbmQgbWF0Y2ggcmFuZ2UgKExBU1Qgb2Zmc2V0IHRvbyBsYXJn ZSkKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYg V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJ TkUgQSBBUyBUUlVFLCBCIEFTIE5FWFQoTEFTVCh2YWwsIDk5KSwgMSkgSVMgTk9UIE5VTEwKKyk7 CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAg MiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgMTAgfCAgIDAKKyAgNSB8ICA1 MCB8ICAgMAorICA2IHwgIDEwIHwgICAwCisoNiByb3dzKQorCistLSBDb21wb3VuZDogTlVMTCBv dXRlciBvZmZzZXQgKHJ1bnRpbWUgZXJyb3IpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZF UiB3IEZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKEZJUlNUKHZhbCksIE5VTEw6OmludDgpIElTIE5V TEwKKyk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJl IG51bGwKKy0tIENvbXBvdW5kOiBuZWdhdGl2ZSBvdXRlciBvZmZzZXQgKHJ1bnRpbWUgZXJyb3Ip CitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEZST00gcnByX25hdiBXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBORVhU KExBU1QodmFsKSwgLTEpIElTIE5VTEwKKyk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRp b24gb2Zmc2V0IG11c3Qgbm90IGJlIG5lZ2F0aXZlCistLSBDb21wb3VuZDogZGVmYXVsdCBvZmZz ZXRzIG9uIGJvdGggc2lkZXMKKy0tIFBSRVYoRklSU1QodmFsKSk6IGlubmVyPTAgKG1hdGNoX3N0 YXJ0KSwgb3V0ZXI9MSAtPiB0YXJnZXQgPSBtYXRjaF9zdGFydCAtIDEKK1NFTEVDVCBpZCwgdmFs LCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1mLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitG Uk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBU UlVFLCBCIEFTIFBSRVYoRklSU1QodmFsKSkgSVMgTk9UIE5VTEwKKyk7CisgaWQgfCB2YWwgfCBt ZiB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAgfCAgIDAKKyAg MiB8ICAyMCB8ICAyIHwgICA1CisgIDMgfCAgMzAgfCAgICB8ICAgMAorICA0IHwgIDEwIHwgICAg fCAgIDAKKyAgNSB8ICA1MCB8ICAgIHwgICAwCisgIDYgfCAgMTAgfCAgICB8ICAgMAorKDYgcm93 cykKKworLS0gTkVYVChMQVNUKHZhbCkpOiBpbm5lcj0wIChjdXJyZW50cG9zKSwgb3V0ZXI9MSAt PiB0YXJnZXQgPSBjdXJyZW50cG9zICsgMQorU0VMRUNUIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX25hdiBXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIFRSVUUsIEIgQVMgTkVYVChM QVNUKHZhbCkpIElTIE5PVCBOVUxMCispOworIGlkIHwgdmFsIHwgbWYgfCBjbnQgCistLS0tKy0t LS0tKy0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxIHwgICA1CisgIDIgfCAgMjAgfCAgICB8ICAg MAorICAzIHwgIDMwIHwgICAgfCAgIDAKKyAgNCB8ICAxMCB8ICAgIHwgICAwCisgIDUgfCAgNTAg fCAgICB8ICAgMAorICA2IHwgIDEwIHwgICAgfCAgIDAKKyg2IHJvd3MpCisKKy0tIENvbXBvdW5k OiBpbm5lciBOVUxMIG9mZnNldCAocnVudGltZSBlcnJvcikKK1NFTEVDVCBpZCwgdmFsLCBjb3Vu dCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QodmFsLCBOVUxMOjppbnQ4 KSwgMSkgSVMgTlVMTAorKTsKK0VSUk9SOiAgcm93IHBhdHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQg bXVzdCBub3QgYmUgbnVsbAorLS0gQ29tcG91bmQ6IGlubmVyIG5lZ2F0aXZlIG9mZnNldCAocnVu dGltZSBlcnJvcikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfbmF2 IFdJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIE5FWFQoTEFTVCh2YWwsIC0xKSwgMSkgSVMgTlVMTAorKTsKK0VSUk9SOiAgcm93IHBh dHRlcm4gbmF2aWdhdGlvbiBvZmZzZXQgbXVzdCBub3QgYmUgbmVnYXRpdmUKKy0tIENvbXBvdW5k ICsgaG9zdCB2YXJpYWJsZSBvZmZzZXRzCitQUkVQQVJFIHRlc3RfY29tcG91bmRfb2Zmc2V0KGlu dDgsIGludDgpIEFTCitTRUxFQ1QgaWQsIHZhbCwgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt ZiwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfbmF2IFdJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBQUkVWKEZJUlNUKHZhbCwgJDEp LCAkMikgSVMgTk9UIE5VTEwKKyk7CitFWEVDVVRFIHRlc3RfY29tcG91bmRfb2Zmc2V0KDAsIDEp OworIGlkIHwgdmFsIHwgbWYgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0rLS0tLS0KKyAgMSB8ICAx MCB8ICAgIHwgICAwCisgIDIgfCAgMjAgfCAgMiB8ICAgNQorICAzIHwgIDMwIHwgICAgfCAgIDAK KyAgNCB8ICAxMCB8ICAgIHwgICAwCisgIDUgfCAgNTAgfCAgICB8ICAgMAorICA2IHwgIDEwIHwg ICAgfCAgIDAKKyg2IHJvd3MpCisKK0VYRUNVVEUgdGVzdF9jb21wb3VuZF9vZmZzZXQoMSwgMSk7 CisgaWQgfCB2YWwgfCBtZiB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLSstLS0tLQorICAxIHwgIDEw IHwgIDEgfCAgIDYKKyAgMiB8ICAyMCB8ICAgIHwgICAwCisgIDMgfCAgMzAgfCAgICB8ICAgMAor ICA0IHwgIDEwIHwgICAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgIHwgICAwCisgIDYgfCAgMTAgfCAg ICB8ICAgMAorKDYgcm93cykKKworREVBTExPQ0FURSB0ZXN0X2NvbXBvdW5kX29mZnNldDsKKy0t IENvbXBvdW5kICsgU0tJUCBUTyBORVhUIFJPVzogb3ZlcmxhcHBpbmcgbWF0Y2hlcyB3aXRoIFBS RVYoRklSU1QoKSkKK1NFTEVDVCBpZCwgdmFsLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1m LCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9uYXYgV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4g KEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBQUkVWKEZJUlNUKHZhbCksIDEpID4g MAorKTsKKyBpZCB8IHZhbCB8IG1mIHwgY250IAorLS0tLSstLS0tLSstLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgICB8ICAgMAorICAyIHwgIDIwIHwgIDIgfCAgIDUKKyAgMyB8ICAzMCB8ICAzIHwg ICA0CisgIDQgfCAgMTAgfCAgNCB8ICAgMworICA1IHwgIDUwIHwgIDUgfCAgIDIKKyAgNiB8ICAx MCB8ICAgIHwgICAwCisoNiByb3dzKQorCistLSBDb21wb3VuZCArIG11bHRpcGxlIHBhcnRpdGlv bnMKK0NSRUFURSBURU1QIFRBQkxFIHJwcl9uYXZfcGFydCAoZ2lkIGludCwgaWQgaW50LCB2YWwg aW50KTsKK0lOU0VSVCBJTlRPIHJwcl9uYXZfcGFydCBWQUxVRVMKKyAgICAoMSwxLDEwKSwoMSwy LDIwKSwoMSwzLDMwKSwKKyAgICAoMiwxLDQwKSwoMiwyLDUwKSwoMiwzLDYwKTsKK1NFTEVDVCBn aWQsIGlkLCB2YWwsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWYsIGNvdW50KCopIE9WRVIg dyBBUyBjbnQKK0ZST00gcnByX25hdl9wYXJ0IFdJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04g QlkgZ2lkIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIE5FWFQoRklSU1QodmFs KSwgMSkgPiAwCispOworIGdpZCB8IGlkIHwgdmFsIHwgbWYgfCBjbnQgCistLS0tLSstLS0tKy0t LS0tKy0tLS0rLS0tLS0KKyAgIDEgfCAgMSB8ICAxMCB8ICAxIHwgICAzCisgICAxIHwgIDIgfCAg MjAgfCAgICB8ICAgMAorICAgMSB8ICAzIHwgIDMwIHwgICAgfCAgIDAKKyAgIDIgfCAgMSB8ICA0 MCB8ICAxIHwgICAzCisgICAyIHwgIDIgfCAgNTAgfCAgICB8ICAgMAorICAgMiB8ICAzIHwgIDYw IHwgICAgfCAgIDAKKyg2IHJvd3MpCisKK0RST1AgVEFCTEUgcnByX25hdl9wYXJ0OworLS0gUmV2 ZXJzZSBuZXN0aW5nOiBGSVJTVCB3cmFwcGluZyBQUkVWIGlzIHByb2hpYml0ZWQKK1NFTEVDVCBp ZCwgdmFsIEZST00gcnByX25hdiBXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVChQUkVWKHZhbCkpID4g MAorKTsKK0VSUk9SOiAgRklSU1QgYW5kIExBU1QgY2Fubm90IGNvbnRhaW4gUFJFViBvciBORVhU CitMSU5FIDU6ICAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIEZJUlNUKFBSRVYodmFsKSkgPiAw CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5IFBSRVYo RklSU1QoKSksIFBSRVYoTEFTVCgpKSwgTkVYVChGSVJTVCgpKSwgYW5kIE5FWFQoTEFTVCgpKSBj b21wb3VuZCBmb3JtcyBhcmUgYWxsb3dlZC4KKy0tIFJldmVyc2UgbmVzdGluZzogTEFTVCB3cmFw cGluZyBORVhUIGlzIHByb2hpYml0ZWQKK1NFTEVDVCBpZCwgdmFsIEZST00gcnByX25hdiBXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBMQVNUKE5FWFQodmFsKSkgPiAwCispOworRVJST1I6ICBGSVJTVCBhbmQg TEFTVCBjYW5ub3QgY29udGFpbiBQUkVWIG9yIE5FWFQKK0xJTkUgNTogICAgIERFRklORSBBIEFT IFRSVUUsIEIgQVMgTEFTVChORVhUKHZhbCkpID4gMAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgT25seSBQUkVWKEZJUlNUKCkpLCBQUkVWKExBU1QoKSksIE5F WFQoRklSU1QoKSksIGFuZCBORVhUKExBU1QoKSkgY29tcG91bmQgZm9ybXMgYXJlIGFsbG93ZWQu CitEUk9QIFRBQkxFIHJwcl9uYXY7CistLQorLS0gU0tJUCBUTyAvIEJhY2t0cmFja2luZyAvIEZy YW1lIGJvdW5kYXJ5CistLQorLS0gbWF0Y2ggZXZlcnl0aGluZworU0VMRUNUIGNvbXBhbnksIHRk YXRlLCBwcmljZSwgZmlyc3RfdmFsdWUocHJpY2UpIE9WRVIgdywgbGFzdF92YWx1ZShwcmljZSkg T1ZFUiB3CisgRlJPTSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFu eQorIE9SREVSIEJZIHRkYXRlCisgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgSU5JVElBTAor IFBBVFRFUk4gKEErKQorIERFRklORQorICBBIEFTIFRSVUUKKyk7CisgY29tcGFueSAgfCAgIHRk YXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgCistLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEg fCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxMzAKKyBjb21wYW55 MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBh bnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29t cGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBj b21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAor IGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAgICAgICAgfCAgICAgICAgICAg CisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgIAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAg ICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUwIHwg ICAgICAgMTMwMAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAg fCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAg ICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAgMTMw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgIAorKDIwIHJvd3MpCisKKy0tIG50aF92YWx1ZSBi ZXlvbmQgcmVkdWNlZCBmcmFtZSAobm8gSUdOT1JFIE5VTExTKQorLS0gVGVzdHMgV2luR2V0U2xv dEluRnJhbWUvV2luR2V0RnVuY0FyZ0luRnJhbWUgb3V0LW9mLWZyYW1lIHdpdGggUlBSCitTRUxF Q1QgY29tcGFueSwgdGRhdGUsIHByaWNlLAorIG50aF92YWx1ZShwcmljZSwgNSkgT1ZFUiB3IEFT IG50aF81CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZIGNvbXBhbnkK KyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKFNU QVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAgVVAgQVMgcHJpY2Ug PiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBh bnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgbnRoXzUgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0t LSstLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAgIDEwMCB8ICAgICAg CisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgIAorIGNvbXBhbnkxIHwgMDct MDMtMjAyMyB8ICAgMTUwIHwgICAgICAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8 ICAgICAgCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAgICAgIAorIGNvbXBhbnkx IHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAg IDExMCB8ICAgICAgCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgIAorIGNv bXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIw MjMgfCAgIDEzMCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAg IAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAKKyBjb21wYW55MiB8IDA3 LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAg fCAgICAgIAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAKKyBjb21wYW55 MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwg IDExMDAgfCAgICAgIAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAKKyBj b21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgCisgY29tcGFueTIgfCAwNy0xMC0y MDIzIHwgIDEzMDAgfCAgICAgIAorKDIwIHJvd3MpCisKKy0tIGJhY2t0cmFja2luZyB3aXRoIHJl Y2xhc3NpZmljYXRpb24gb2Ygcm93cworLS0gdXNpbmcgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZSh0ZGF0ZSkg T1ZFUiB3LCBsYXN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcg QVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyBJTklUSUFMCisgUEFUVEVSTiAoQSsgQispCisgREVGSU5FCisgIEEg QVMgcHJpY2UgPiAxMDAsCisgIEIgQVMgcHJpY2UgPiAxMDAKKyk7CisgY29tcGFueSAgfCAgIHRk YXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgCistLS0tLS0tLS0tKy0t LS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tCisgY29tcGFueTEg fCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDIt MjAyMyB8ICAgMjAwIHwgMDctMDItMjAyMyAgfCAwNy0wNS0yMDIzCisgY29tcGFueTEgfCAwNy0w My0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDQtMjAyMyB8 ICAgMTQwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8 ICAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAg ICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgMDctMDctMjAyMyAgfCAw Ny0xMC0yMDIzCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8 IAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAKKyBjb21w YW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAw Ny0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDItMjAy MyB8ICAyMDAwIHwgMDctMDItMjAyMyAgfCAwNy0wNS0yMDIzCisgY29tcGFueTIgfCAwNy0wMy0y MDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDQtMjAyMyB8ICAx NDAwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAg ICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICAg ICB8IAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAxMTAwIHwgMDctMDctMjAyMyAgfCAwNy0x MC0yMDIzCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8IAor IGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55 MiB8IDA3LTEwLTIwMjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgCisoMjAgcm93cykKKworLS0g YmFja3RyYWNraW5nIHdpdGggcmVjbGFzc2lmaWNhdGlvbiBvZiByb3dzCistLSB1c2luZyBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCitTRUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBm aXJzdF92YWx1ZSh0ZGF0ZSkgT1ZFUiB3LCBsYXN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcKKyBGUk9N IHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIgQlkg dGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgSU5JVElBTAorIFBBVFRFUk4gKEErIEIr KQorIERFRklORQorICBBIEFTIHByaWNlID4gMTAwLAorICBCIEFTIHByaWNlID4gMTAwCispOwor IGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVl IAorLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgICAgICAgICAgICAgfCAKKyBj b21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIwMCB8IDA3LTAyLTIwMjMgIHwgMDctMDUtMjAyMwor IGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgMDctMDMtMjAyMyAgfCAwNy0wNS0yMDIz CisgY29tcGFueTEgfCAwNy0wNC0yMDIzIHwgICAxNDAgfCAwNy0wNC0yMDIzICB8IDA3LTA1LTIw MjMKKyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgCisgY29t cGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwg MDctMDctMjAyMyB8ICAgMTEwIHwgMDctMDctMjAyMyAgfCAwNy0xMC0yMDIzCisgY29tcGFueTEg fCAwNy0wOC0yMDIzIHwgICAxMzAgfCAwNy0wOC0yMDIzICB8IDA3LTEwLTIwMjMKKyBjb21wYW55 MSB8IDA3LTA5LTIwMjMgfCAgIDEyMCB8IDA3LTA5LTIwMjMgIHwgMDctMTAtMjAyMworIGNvbXBh bnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3 LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wMi0yMDIz IHwgIDIwMDAgfCAwNy0wMi0yMDIzICB8IDA3LTA1LTIwMjMKKyBjb21wYW55MiB8IDA3LTAzLTIw MjMgfCAgMTUwMCB8IDA3LTAzLTIwMjMgIHwgMDctMDUtMjAyMworIGNvbXBhbnkyIHwgMDctMDQt MjAyMyB8ICAxNDAwIHwgMDctMDQtMjAyMyAgfCAwNy0wNS0yMDIzCisgY29tcGFueTIgfCAwNy0w NS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8 ICAgIDYwIHwgICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8 IDA3LTA3LTIwMjMgIHwgMDctMTAtMjAyMworIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAw IHwgMDctMDgtMjAyMyAgfCAwNy0xMC0yMDIzCisgY29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEy MDAgfCAwNy0wOS0yMDIzICB8IDA3LTEwLTIwMjMKKyBjb21wYW55MiB8IDA3LTEwLTIwMjMgfCAg MTMwMCB8ICAgICAgICAgICAgIHwgCisoMjAgcm93cykKKworLS0gU0tJUCBUTyBORVhUIFJPVyB3 aXRoIGxpbWl0ZWQgZnJhbWUgKElzaGlpLXNhbidzIHRlc3QgY2FzZSkKKy0tIEVhY2ggcm93IHNo b3VsZCBwcm9kdWNlIGl0cyBvd24gbWF0Y2ggd2l0aGluIGl0cyBmcmFtZQorV0lUSCBkYXRhIEFT ICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgKCdBJywgMSksICgnQScsIDIpLAorICAoJ0In LCAzKSwgKCdCJywgNCkKKyApIEFTIHQoZ2lkLCBpZCkKKykKK1NFTEVDVCBnaWQsIGlkLCBhcnJh eV9hZ2coaWQpIE9WRVIgdworRlJPTSBkYXRhCitXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9OIEJZ IGdpZAorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMiBGT0xMT1dJTkcKKyBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgUEFUVEVSTiAoQSspCisgREVGSU5FIEEgQVMgaWQgPCAx MAorKTsKKyBnaWQgfCBpZCB8IGFycmF5X2FnZyAKKy0tLS0tKy0tLS0rLS0tLS0tLS0tLS0KKyBB ICAgfCAgMSB8IHsxLDJ9CisgQSAgIHwgIDIgfCB7Mn0KKyBCICAgfCAgMyB8IHszLDR9CisgQiAg IHwgIDQgfCB7NH0KKyg0IHJvd3MpCisKKy0tIExpbWl0ZWQgZnJhbWUgd2l0aCBhYnNvcnB0aW9u IHRlc3QKKy0tIFJvdyAwOiBmcmFtZSBbMCwyXSwgY2FuJ3Qgc2VlIEIgYXQgcm93IDMgLT4gbm8g bWF0Y2gKKy0tIFJvdyAxOiBmcmFtZSBbMSwzXSwgY2FuIHNlZSBBIEEgQiAtPiBzaG91bGQgbWF0 Y2ggcm93cyAxLTMKK1dJVEggZnJhbWVfYWJzb3JiX3Rlc3QgQVMgKAorIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAoMCwgJ0EnKSwgKDEsICdBJyksICgyLCAnQScpLCAoMywgJ0InKQorICkgQVMg dChpZCwgZmxhZykKKykKK1NFTEVDVCBpZCwgZmxhZywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSBm cmFtZV9hYnNvcmJfdGVzdAorV0lORE9XIHcgQVMgKAorIE9SREVSIEJZIGlkCisgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworIFBBVFRFUk4gKEErIEIpCisgREVGSU5FCisgIEEgQVMgZmxhZyA9ICdBJywKKyAg QiBBUyBmbGFnID0gJ0InCispOworIGlkIHwgZmxhZyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAwIHwgQSAgICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDEgfCBBICAgIHwgICAgICAgICAgIDEgfCAgICAgICAg IDMKKyAgMiB8IEEgICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwgQiAgICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIG9mZnNldCBGT0xMT1dJTkcKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2Us IGZpcnN0X3ZhbHVlKHRkYXRlKSBPVkVSIHcsIGxhc3RfdmFsdWUodGRhdGUpIE9WRVIgdywKKyBj b3VudCgqKSBPVkVSIHcKKyBGUk9NIHN0b2NrCisgV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBC WSBjb21wYW55CisgT1JERVIgQlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IDIgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgUEFUVEVSTiAo U1RBUlQgVVArIERPV04rKQorIERFRklORQorICBTVEFSVCBBUyBUUlVFLAorICBVUCBBUyBwcmlj ZSA+IFBSRVYocHJpY2UpLAorICBET1dOIEFTIHByaWNlIDwgUFJFVihwcmljZSkKKyk7CisgY29t cGFueSAgfCAgIHRkYXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGxhc3RfdmFsdWUgfCBj b3VudCAKKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0rLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8ICAgMTAwIHwgMDctMDEt MjAyMyAgfCAwNy0wMy0yMDIzIHwgICAgIDMKKyBjb21wYW55MSB8IDA3LTAyLTIwMjMgfCAgIDIw MCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMy0y MDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkx IHwgMDctMDQtMjAyMyB8ICAgMTQwIHwgMDctMDQtMjAyMyAgfCAwNy0wNi0yMDIzIHwgICAgIDMK KyBjb21wYW55MSB8IDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDctMjAyMyB8ICAgMTEwIHwgMDct MDctMjAyMyAgfCAwNy0wOS0yMDIzIHwgICAgIDMKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAg IDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0w OS0yMDIzIHwgICAxMjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBh bnkxIHwgMDctMTAtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAg IDAKKyBjb21wYW55MiB8IDA3LTAxLTIwMjMgfCAgICA1MCB8IDA3LTAxLTIwMjMgIHwgMDctMDMt MjAyMyB8ICAgICAzCisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwg ICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA0LTIwMjMg fCAgMTQwMCB8IDA3LTA0LTIwMjMgIHwgMDctMDYtMjAyMyB8ICAgICAzCisgY29tcGFueTIgfCAw Ny0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTA3LTIwMjMgfCAgMTEwMCB8IDA3LTA3LTIwMjMgIHwgMDct MDktMjAyMyB8ICAgICAzCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMDktMjAyMyB8ICAxMjAw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTEwLTIw MjMgfCAgMTMwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAgICAwCisoMjAgcm93cykK KworLS0KKy0tIEFnZ3JlZ2F0ZXMKKy0tCistLSB1c2luZyBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgZmlyc3RfdmFsdWUocHJp Y2UpIE9WRVIgdywKKyBsYXN0X3ZhbHVlKHByaWNlKSBPVkVSIHcsCisgbWF4KHByaWNlKSBPVkVS IHcsCisgbWluKHByaWNlKSBPVkVSIHcsCisgc3VtKHByaWNlKSBPVkVSIHcsCisgYXZnKHByaWNl KSBPVkVSIHcsCisgY291bnQocHJpY2UpIE9WRVIgdworRlJPTSBzdG9jaworV0lORE9XIHcgQVMg KAorUEFSVElUSU9OIEJZIGNvbXBhbnkKK1JPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCitJTklUSUFM CitQQVRURVJOIChTVEFSVCBVUCsgRE9XTispCitERUZJTkUKK1NUQVJUIEFTIFRSVUUsCitVUCBB UyBwcmljZSA+IFBSRVYocHJpY2UpLAorRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOwor IGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVl IHwgbWF4ICB8IG1pbiB8IHN1bSAgfCAgICAgICAgICBhdmcgICAgICAgICAgfCBjb3VudCAKKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0r LS0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgY29t cGFueTEgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAgIDEwMCB8ICAgICAgICAxNDAgfCAg MjAwIHwgMTAwIHwgIDU5MCB8ICAxNDcuNTAwMDAwMDAwMDAwMDAwMCB8ICAgICA0CisgY29tcGFu eTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg IHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEg fCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwg ICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAw Ny0wNC0yMDIzIHwgICAxNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAg IHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0w NS0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwg ICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0y MDIzIHwgICAgOTAgfCAgICAgICAgICA5MCB8ICAgICAgICAxMjAgfCAgMTMwIHwgIDkwIHwgIDQ1 MCB8ICAxMTIuNTAwMDAwMDAwMDAwMDAwMCB8ICAgICA0CisgY29tcGFueTEgfCAwNy0wNy0yMDIz IHwgICAxMTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8 ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwg ICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAg ICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAx MjAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAgICAg ICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTEgfCAwNy0xMC0yMDIzIHwgICAxMzAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAgICAgICAg ICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAg ICAgICAgICA1MCB8ICAgICAgIDE0MDAgfCAyMDAwIHwgIDUwIHwgNDk1MCB8IDEyMzcuNTAwMDAw MDAwMDAwMDAwMCB8ICAgICA0CisgY29tcGFueTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAg ICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAg ICAgICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMy0yMDIzIHwgIDE1MDAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAg ICAgICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0yMDIzIHwgIDE1MDAgfCAgICAgICAgICAgICB8 ICAgICAgICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8 ICAgICAwCisgY29tcGFueTIgfCAwNy0wNi0yMDIzIHwgICAgNjAgfCAgICAgICAgICA2MCB8ICAg ICAgIDEyMDAgfCAxMzAwIHwgIDYwIHwgMzY2MCB8ICA5MTUuMDAwMDAwMDAwMDAwMDAwMCB8ICAg ICA0CisgY29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgICAgICB8ICAgICAg ICAgICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAw CisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAg ICAgfCAgICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisg Y29tcGFueTIgfCAwNy0wOS0yMDIzIHwgIDEyMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAg fCAgICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29t cGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAg ICAgIHwgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisoMjAgcm93 cykKKworLS0gdXNpbmcgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworU0VMRUNUIGNvbXBh bnksIHRkYXRlLCBwcmljZSwKKyBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3LAorIGxhc3RfdmFs dWUocHJpY2UpIE9WRVIgdywKKyBtYXgocHJpY2UpIE9WRVIgdywKKyBtaW4ocHJpY2UpIE9WRVIg dywKKyBzdW0ocHJpY2UpIE9WRVIgdywKKyBhdmcocHJpY2UpIE9WRVIgdywKKyBjb3VudChwcmlj ZSkgT1ZFUiB3CitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCitQQVJUSVRJT04gQlkgY29tcGFu eQorUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCitBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCitJTklUSUFMCitQQVRURVJOIChTVEFSVCBVUCsgRE9X TispCitERUZJTkUKK1NUQVJUIEFTIFRSVUUsCitVUCBBUyBwcmljZSA+IFBSRVYocHJpY2UpLAor RE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8 IHByaWNlIHwgZmlyc3RfdmFsdWUgfCBsYXN0X3ZhbHVlIHwgbWF4ICB8IG1pbiAgfCBzdW0gIHwg ICAgICAgICAgYXZnICAgICAgICAgIHwgY291bnQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLSstLS0tLS0rLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIwMjMgfCAg IDEwMCB8ICAgICAgICAgMTAwIHwgICAgICAgIDE0MCB8ICAyMDAgfCAgMTAwIHwgIDU5MCB8ICAx NDcuNTAwMDAwMDAwMDAwMDAwMCB8ICAgICA0CisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAy MDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAg ICAgICAgICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUw IHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICAg ICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8 ICAgICAgICAgMTQwIHwgICAgICAgICA5MCB8ICAxNTAgfCAgIDkwIHwgIDM4MCB8ICAxMjYuNjY2 NjY2NjY2NjY2NjY2NyB8ICAgICAzCisgY29tcGFueTEgfCAwNy0wNS0yMDIzIHwgICAxNTAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAg ICAgICAgICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwgICAg ICAgICAgOTAgfCAgICAgICAgMTIwIHwgIDEzMCB8ICAgOTAgfCAgNDUwIHwgIDExMi41MDAwMDAw MDAwMDAwMDAwIHwgICAgIDQKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAg ICAgMTEwIHwgICAgICAgIDEyMCB8ICAxMzAgfCAgMTEwIHwgIDM2MCB8ICAxMjAuMDAwMDAwMDAw MDAwMDAwMCB8ICAgICAzCisgY29tcGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAg ICAgICB8ICAgICAgICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAg ICAgICAgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDktMjAyMyB8ICAgMTIwIHwgICAgICAgICAg ICAgfCAgICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAg ICAgIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgICAg IHwgICAgICAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAg ICB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgICA1MCB8 ICAgICAgIDE0MDAgfCAyMDAwIHwgICA1MCB8IDQ5NTAgfCAxMjM3LjUwMDAwMDAwMDAwMDAwMDAg fCAgICAgNAorIGNvbXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwg ICAgIDAKKyBjb21wYW55MiB8IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgICAgIHwgICAg ICAgICAgICB8ICAgICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAg ICAwCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgMTQwMCB8ICAgICAg ICAgNjAgfCAxNTAwIHwgICA2MCB8IDI5NjAgfCAgOTg2LjY2NjY2NjY2NjY2NjY2NjcgfCAgICAg MworIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgICAg ICAgIHwgICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAK KyBjb21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgIDYwIHwgICAgICAgMTIw MCB8IDEzMDAgfCAgIDYwIHwgMzY2MCB8ICA5MTUuMDAwMDAwMDAwMDAwMDAwMCB8ICAgICA0Cisg Y29tcGFueTIgfCAwNy0wNy0yMDIzIHwgIDExMDAgfCAgICAgICAgMTEwMCB8ICAgICAgIDEyMDAg fCAxMzAwIHwgMTEwMCB8IDM2MDAgfCAxMjAwLjAwMDAwMDAwMDAwMDAwMDAgfCAgICAgMworIGNv bXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg ICAgICB8ICAgICAgfCAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIDAKKyBjb21w YW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8ICAg ICAgfCAgICAgIHwgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAwCisgY29tcGFu eTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgICAg IHwgICAgICB8ICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgMAorKDIwIHJvd3Mp CisKKy0tIHJvd19udW1iZXIoKSB3aXRoaW4gUlBSIHJlZHVjZWQgZnJhbWUKK1NFTEVDVCBjb21w YW55LCB0ZGF0ZSwgcHJpY2UsIHJvd19udW1iZXIoKSBPVkVSIHcsIGNvdW50KCopIE9WRVIgdwor RlJPTSBzdG9jaworV0lORE9XIHcgQVMgKAorIFBBUlRJVElPTiBCWSBjb21wYW55CisgT1JERVIg QlkgdGRhdGUKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChTVEFSVCBVUCsg RE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNlID4gUFJFVihw cmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKyBjb21wYW55ICB8ICAg dGRhdGUgICAgfCBwcmljZSB8IHJvd19udW1iZXIgfCBjb3VudCAKKy0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIw MjMgfCAgIDEwMCB8ICAgICAgICAgIDEgfCAgICAgNAorIGNvbXBhbnkxIHwgMDctMDItMjAyMyB8 ICAgMjAwIHwgICAgICAgICAgMiB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wMy0yMDIzIHwgICAx NTAgfCAgICAgICAgICAzIHwgICAgIDAKKyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8 ICAgICAgICAgIDQgfCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAg ICAgICAgNSB8ICAgICAwCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAg ICA2IHwgICAgIDQKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgIDcg fCAgICAgMAorIGNvbXBhbnkxIHwgMDctMDgtMjAyMyB8ICAgMTMwIHwgICAgICAgICAgOCB8ICAg ICAwCisgY29tcGFueTEgfCAwNy0wOS0yMDIzIHwgICAxMjAgfCAgICAgICAgICA5IHwgICAgIDAK KyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8ICAgICAgICAgMTAgfCAgICAgMAorIGNv bXBhbnkyIHwgMDctMDEtMjAyMyB8ICAgIDUwIHwgICAgICAgICAgMSB8ICAgICA0CisgY29tcGFu eTIgfCAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAgICAyIHwgICAgIDAKKyBjb21wYW55MiB8 IDA3LTAzLTIwMjMgfCAgMTUwMCB8ICAgICAgICAgIDMgfCAgICAgMAorIGNvbXBhbnkyIHwgMDct MDQtMjAyMyB8ICAxNDAwIHwgICAgICAgICAgNCB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wNS0y MDIzIHwgIDE1MDAgfCAgICAgICAgICA1IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA2LTIwMjMg fCAgICA2MCB8ICAgICAgICAgIDYgfCAgICAgNAorIGNvbXBhbnkyIHwgMDctMDctMjAyMyB8ICAx MTAwIHwgICAgICAgICAgNyB8ICAgICAwCisgY29tcGFueTIgfCAwNy0wOC0yMDIzIHwgIDEzMDAg fCAgICAgICAgICA4IHwgICAgIDAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAg ICAgICAgIDkgfCAgICAgMAorIGNvbXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAg ICAxMCB8ICAgICAwCisoMjAgcm93cykKKworLS0KKy0tIFNRTCBJbnRlZ3JhdGlvbjogSk9JTiwg Q1RFLCBMQVRFUkFMCistLQorLS0gSk9JTiBjYXNlCitDUkVBVEUgVEVNUCBUQUJMRSB0MSAoaSBp bnQsIHYxIGludCk7CitDUkVBVEUgVEVNUCBUQUJMRSB0MiAoaiBpbnQsIHYyIGludCk7CitJTlNF UlQgSU5UTyB0MSBWQUxVRVMoMSwxMCk7CitJTlNFUlQgSU5UTyB0MSBWQUxVRVMoMSwxMSk7CitJ TlNFUlQgSU5UTyB0MSBWQUxVRVMoMSwxMik7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwxMCk7 CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwxMSk7CitJTlNFUlQgSU5UTyB0MiBWQUxVRVMoMiwx Mik7CitTRUxFQ1QgKiBGUk9NIHQxLCB0MiBXSEVSRSB0MS52MSA8PSAxMSBBTkQgdDIudjIgPD0g MTE7CisgaSB8IHYxIHwgaiB8IHYyIAorLS0tKy0tLS0rLS0tKy0tLS0KKyAxIHwgMTAgfCAyIHwg MTAKKyAxIHwgMTAgfCAyIHwgMTEKKyAxIHwgMTEgfCAyIHwgMTAKKyAxIHwgMTEgfCAyIHwgMTEK Kyg0IHJvd3MpCisKK1NFTEVDVCAqLCBjb3VudCgqKSBPVkVSIHcgRlJPTSB0MSwgdDIKK1dJTkRP VyB3IEFTICgKKyBQQVJUSVRJT04gQlkgdDEuaQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChBKQorIERFRklORQor IEEgQVMgdjEgPD0gMTEgQU5EIHYyIDw9IDExCispOworIGkgfCB2MSB8IGogfCB2MiB8IGNvdW50 IAorLS0tKy0tLS0rLS0tKy0tLS0rLS0tLS0tLQorIDEgfCAxMCB8IDIgfCAxMCB8ICAgICAxCisg MSB8IDEwIHwgMiB8IDExIHwgICAgIDEKKyAxIHwgMTAgfCAyIHwgMTIgfCAgICAgMAorIDEgfCAx MSB8IDIgfCAxMCB8ICAgICAxCisgMSB8IDExIHwgMiB8IDExIHwgICAgIDEKKyAxIHwgMTEgfCAy IHwgMTIgfCAgICAgMAorIDEgfCAxMiB8IDIgfCAxMCB8ICAgICAwCisgMSB8IDEyIHwgMiB8IDEx IHwgICAgIDAKKyAxIHwgMTIgfCAyIHwgMTIgfCAgICAgMAorKDkgcm93cykKKworLS0gV0lUSCBj YXNlCitXSVRIIHdzdG9jayBBUyAoCisgIFNFTEVDVCAqIEZST00gc3RvY2sgV0hFUkUgdGRhdGUg PCAnMjAyMy0wNy0wOCcKKykKK1NFTEVDVCB0ZGF0ZSwgcHJpY2UsCitmaXJzdF92YWx1ZSh0ZGF0 ZSkgT1ZFUiB3LAorY291bnQoKikgT1ZFUiB3CisgRlJPTSB3c3RvY2sKKyBXSU5ET1cgdyBBUyAo CisgUEFSVElUSU9OIEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRURVJOIChT VEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFTIHByaWNl ID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsKKyAgIHRk YXRlICAgIHwgcHJpY2UgfCBmaXJzdF92YWx1ZSB8IGNvdW50IAorLS0tLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tCisgMDctMDEtMjAyMyB8ICAgMTAwIHwgMDctMDEtMjAy MyAgfCAgICAgNAorIDA3LTAyLTIwMjMgfCAgIDIwMCB8ICAgICAgICAgICAgIHwgICAgIDAKKyAw Ny0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAwCisgMDctMDQtMjAyMyB8ICAg MTQwIHwgICAgICAgICAgICAgfCAgICAgMAorIDA3LTA1LTIwMjMgfCAgIDE1MCB8ICAgICAgICAg ICAgIHwgICAgIDAKKyAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICAgICB8ICAgICAwCisg MDctMDctMjAyMyB8ICAgMTEwIHwgICAgICAgICAgICAgfCAgICAgMAorIDA3LTAxLTIwMjMgfCAg ICA1MCB8IDA3LTAxLTIwMjMgIHwgICAgIDQKKyAwNy0wMi0yMDIzIHwgIDIwMDAgfCAgICAgICAg ICAgICB8ICAgICAwCisgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAgICAgMAor IDA3LTA0LTIwMjMgfCAgMTQwMCB8ICAgICAgICAgICAgIHwgICAgIDAKKyAwNy0wNS0yMDIzIHwg IDE1MDAgfCAgICAgICAgICAgICB8ICAgICAwCisgMDctMDYtMjAyMyB8ICAgIDYwIHwgICAgICAg ICAgICAgfCAgICAgMAorIDA3LTA3LTIwMjMgfCAgMTEwMCB8ICAgICAgICAgICAgIHwgICAgIDAK KygxNCByb3dzKQorCistLSBSZVNjYW4gdGVzdDogTEFURVJBTCBqb2luIGZvcmNlcyBXaW5kb3dB Z2cgcmVzY2FuIHdpdGggUlBSCistLSBUZXN0cyBFeGVjUmVTY2FuV2luZG93QWdnIGNsZWFyaW5n IG5hdl9zbG90CitTRUxFQ1QgZy54LCBzdWIuKgorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMikg Zyh4KSwKK0xBVEVSQUwgKAorICBTRUxFQ1QgaWQsIHByaWNlLCBjb3VudCgqKSBPVkVSIHcgQVMg YworICBGUk9NIChWQUxVRVMgKDEsIDEwMCksICgyLCAyMDApLCAoMywgMTUwKSkgQVMgdChpZCwg cHJpY2UpCisgIFdIRVJFIGlkIDw9IGcueCArIDEKKyAgV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoU1RBUlQgVVArKQorICAgIERFRklORQorICAgICAgU1RBUlQgQVMg VFJVRSwKKyAgICAgIFVQIEFTIHByaWNlID4gUFJFVihwcmljZSkKKyAgKQorKSBzdWIKK09SREVS IEJZIGcueCwgc3ViLmlkOworIHggfCBpZCB8IHByaWNlIHwgYyAKKy0tLSstLS0tKy0tLS0tLS0r LS0tCisgMSB8ICAxIHwgICAxMDAgfCAyCisgMSB8ICAyIHwgICAyMDAgfCAwCisgMiB8ICAxIHwg ICAxMDAgfCAyCisgMiB8ICAyIHwgICAyMDAgfCAwCisgMiB8ICAzIHwgICAxNTAgfCAwCisoNSBy b3dzKQorCistLSBQUkVWIGhhcyBtdWx0aXBsZSBjb2x1bW4gcmVmZXJlbmNlCitDUkVBVEUgVEVN UCBUQUJMRSBycHIxIChpZCBJTlRFR0VSLCBpIFNFUklBTCwgaiBJTlRFR0VSKTsKK0lOU0VSVCBJ TlRPIHJwcjEoaWQsIGopIFNFTEVDVCAxLCBnKjIgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAp IEFTIGc7CitTRUxFQ1QgaWQsIGksIGosIGNvdW50KCopIE9WRVIgdworIEZST00gcnByMQorIFdJ TkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgaWQKKyBPUkRFUiBCWSBpCisgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgSU5JVElBTAorIFBBVFRFUk4gKFNUQVJUIENPTkQrKQorIERFRklORQor ICBTVEFSVCBBUyBUUlVFLAorICBDT05EIEFTIFBSRVYoaSArIGogKyAxKSA8IDEwCispOworIGlk IHwgaSAgfCBqICB8IGNvdW50IAorLS0tLSstLS0tKy0tLS0rLS0tLS0tLQorICAxIHwgIDEgfCAg MiB8ICAgICAzCisgIDEgfCAgMiB8ICA0IHwgICAgIDAKKyAgMSB8ICAzIHwgIDYgfCAgICAgMAor ICAxIHwgIDQgfCAgOCB8ICAgICAwCisgIDEgfCAgNSB8IDEwIHwgICAgIDAKKyAgMSB8ICA2IHwg MTIgfCAgICAgMAorICAxIHwgIDcgfCAxNCB8ICAgICAwCisgIDEgfCAgOCB8IDE2IHwgICAgIDAK KyAgMSB8ICA5IHwgMTggfCAgICAgMAorICAxIHwgMTAgfCAyMCB8ICAgICAwCisoMTAgcm93cykK KworLS0KKy0tIExhcmdlLXNjYWxlIC8gc2NhbGFiaWxpdHkgdGVzdHMKKy0tCistLSBTbW9rZSB0 ZXN0IGZvciBsYXJnZXIgcGFydGl0aW9ucy4KK1dJVEggcyBBUyAoCisgU0VMRUNUIHYsIGNvdW50 KCopIE9WRVIgdyBBUyBjCisgRlJPTSAoU0VMRUNUIGdlbmVyYXRlX3NlcmllcygxLCA1MDAwKSB2 KQorIFdJTkRPVyB3IEFTICgKKyAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICBJTklUSUFM CisgIFBBVFRFUk4gKCByKyApCisgIERFRklORSByIEFTIFRSVUUKKyApCispCistLSBTaG91bGQg YmUgZXhhY3RseSBvbmUgbG9uZyBtYXRjaCBhY3Jvc3MgYWxsIHJvd3MuCitTRUxFQ1QgKiBGUk9N IHMgV0hFUkUgYyA+IDA7CisgdiB8ICBjICAgCistLS0rLS0tLS0tCisgMSB8IDUwMDAKKygxIHJv dykKKworV0lUSCBzIEFTICgKKyBTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKKyBGUk9N IChTRUxFQ1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMDApIHYpCisgV0lORE9XIHcgQVMgKAorICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElOSVRJQUwKKyAgUEFUVEVSTiAoIHIgKQorICBE RUZJTkUgciBBUyBUUlVFCisgKQorKQorLS0gRXZlcnkgcm93IHNob3VsZCBiZSBpdHMgb3duIG1h dGNoLgorU0VMRUNUIGNvdW50KCopIEZST00gcyBXSEVSRSBjID4gMDsKKyBjb3VudCAKKy0tLS0t LS0KKyAgNTAwMAorKDEgcm93KQorCistLSBMYXJnZSBwYXJ0aXRpb24gdGVzdDogMTAwSyByb3dz IHdpdGggQSsgQiogQ3sxMDAwMCx9IHBhdHRlcm4KKy0tIFRlc3RzIHRoYXQgaW50MzIgY291bnQg ZG9lc24ndCBvdmVyZmxvdyB3aXRoIGxhcmdlIHJlcGV0aXRpb25zCitXSVRIIGRhdGEgQVMgKAor IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMCwgMTAwMDAwKSBBUyB2CispLAorcmVzdWx0IEFTICgK KyBTRUxFQ1QgdiwKKyAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIG1hdGNoX2xlbiwKKyAgICAg ICAgZmlyc3RfdmFsdWUodikgT1ZFUiB3IEFTIG1hdGNoX2ZpcnN0LAorICAgICAgICBsYXN0X3Zh bHVlKHYpIE9WRVIgdyBBUyBtYXRjaF9sYXN0CisgRlJPTSBkYXRhCisgV0lORE9XIHcgQVMgKAor ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIElOSVRJQUwKKyAgUEFUVEVSTiAoQSsgQiog Q3sxMDAwMCx9KQorICBERUZJTkUKKyAgIEEgQVMgdiA8IDMzMzMzLAorICAgQiBBUyB2ID49IDMz MzMzIEFORCB2IDwgNjY2NjYsCisgICBDIEFTIHYgPj0gNjY2NjYgQU5EIHYgPCA5OTk5OQorICkK KykKKy0tIFNob3VsZCBtYXRjaDogQSAoMzMzMzMgcm93cykgKyBCICgzMzMzMyByb3dzKSArIEMg KDMzMzMzIHJvd3MpID0gOTk5OTkgcm93cworU0VMRUNUIG1hdGNoX2ZpcnN0LCBtYXRjaF9sYXN0 LCBtYXRjaF9sZW4gRlJPTSByZXN1bHQgV0hFUkUgbWF0Y2hfbGVuID4gMDsKKyBtYXRjaF9maXJz dCB8IG1hdGNoX2xhc3QgfCBtYXRjaF9sZW4gCistLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorICAgICAgICAgICAwIHwgICAgICA5OTk5OCB8ICAgICA5OTk5OQorKDEgcm93 KQorCistLSBKSVQgUFJFVi9ORVhUIG5hdmlnYXRpb24gdGVzdDogMTAwSyByb3dzIHdpdGggUFJF ViBpbiBERUZJTkUuCistLSBFeGVyY2lzZXMgRUVPUF9SUFJfTkFWX1NFVC9SRVNUT1JFIEpJVCBj b2RlIHBhdGhzIChoYXNfcnByX25hdiByZWxvYWQpCistLSBhdCBzY2FsZS4gVi1zaGFwZTogcHJp Y2UgcmlzZXMgdGhlbiBmYWxscywgcmVwZWF0ZWQgYWNyb3NzIHBhcnRpdGlvbi4KK1NFVCBqaXQg PSBvbjsKK1NFVCBqaXRfYWJvdmVfY29zdCA9IDA7CitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCBp LCBhYnMoNTAwMDAgLSBpKSBBUyBwcmljZQorIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDAw MCkgaQorKSwKK3Jlc3VsdCBBUyAoCisgU0VMRUNUIGksIHByaWNlLAorICAgICAgICBjb3VudCgq KSBPVkVSIHcgQVMgbWF0Y2hfbGVuLAorICAgICAgICBmaXJzdF92YWx1ZShwcmljZSkgT1ZFUiB3 IEFTIG1hdGNoX2ZpcnN0CisgRlJPTSBkYXRhCisgV0lORE9XIHcgQVMgKAorICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgIElOSVRJQUwKKyAgUEFUVEVSTiAoRE9XTisgVVArKQorICBERUZJ TkUKKyAgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKSwKKyAgIFVQIEFTIHByaWNlID4gUFJF VihwcmljZSkKKyApCispCitTRUxFQ1QgY291bnQoKikgQVMgbWF0Y2hlZF9yb3dzLCBtYXgobWF0 Y2hfbGVuKSBBUyBsb25nZXN0X21hdGNoCitGUk9NIHJlc3VsdCBXSEVSRSBtYXRjaF9sZW4gPiAw OworIG1hdGNoZWRfcm93cyB8IGxvbmdlc3RfbWF0Y2ggCistLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgIDEgfCAgICAgICAgIDk5OTk5CisoMSByb3cpCisKK1JFU0VU IGppdF9hYm92ZV9jb3N0OworUkVTRVQgaml0OworLS0gSklUIGNvbXBvdW5kIG5hdmlnYXRpb24g dGVzdAorU0VUIGppdCA9IG9uOworU0VUIGppdF9hYm92ZV9jb3N0ID0gMDsKK1NFTEVDVCBjb3Vu dCgqKSBBUyBtYXRjaGVkX3Jvd3MKK0ZST00gKAorIFNFTEVDVCB2LCBjb3VudCgqKSBPVkVSIHcg QVMgbWF0Y2hfbGVuCisgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgdCh2KQorIFdJ TkRPVyB3IEFTICgKKyAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICBQQVRURVJOIChBIEIr KQorICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoRklSU1QodiksIDEpID4gMAorICkKKykg c3ViIFdIRVJFIG1hdGNoX2xlbiA+IDA7CisgbWF0Y2hlZF9yb3dzIAorLS0tLS0tLS0tLS0tLS0K KyAgICAgICAgICAgIDEKKygxIHJvdykKKworUkVTRVQgaml0X2Fib3ZlX2Nvc3Q7CitSRVNFVCBq aXQ7CistLQorLS0gSUdOT1JFIE5VTExTCistLQorLS0gbm8gTlVMTCByb3dzIGNhc2UuIFRoZSBy ZXN1bHQgc2hvdWxkIGJlIGlkZW50aWNhbCB3aXRoICJiYXNpYyB0ZXN0IHVzaW5nIFBSRVYiCitT RUxFQ1QgY29tcGFueSwgdGRhdGUsIHByaWNlLCBmaXJzdF92YWx1ZShwcmljZSkgSUdOT1JFIE5V TExTIE9WRVIgdywKKyBsYXN0X3ZhbHVlKHByaWNlKSBJR05PUkUgTlVMTFMgT1ZFUiB3LAorIG50 aF92YWx1ZSh0ZGF0ZSwgMikgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBudGhfc2Vjb25kCisgRlJP TSBzdG9jaworIFdJTkRPVyB3IEFTICgKKyBQQVJUSVRJT04gQlkgY29tcGFueQorIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIElOSVRJQUwKKyBQQVRU RVJOIChTVEFSVCBVUCsgRE9XTispCisgREVGSU5FCisgIFNUQVJUIEFTIFRSVUUsCisgIFVQIEFT IHByaWNlID4gUFJFVihwcmljZSksCisgIERPV04gQVMgcHJpY2UgPCBQUkVWKHByaWNlKQorKTsK KyBjb21wYW55ICB8ICAgdGRhdGUgICAgfCBwcmljZSB8IGZpcnN0X3ZhbHVlIHwgbGFzdF92YWx1 ZSB8IG50aF9zZWNvbmQgCistLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorIGNvbXBhbnkxIHwgMDctMDEtMjAyMyB8 ICAgMTAwIHwgICAgICAgICAxMDAgfCAgICAgICAgMTQwIHwgMDctMDItMjAyMworIGNvbXBhbnkx IHwgMDctMDItMjAyMyB8ICAgMjAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29t cGFueTEgfCAwNy0wMy0yMDIzIHwgICAxNTAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAK KyBjb21wYW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgICAgIHwgICAgICAgICAg ICB8IAorIGNvbXBhbnkxIHwgMDctMDUtMjAyMyB8ICAgMTUwIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0wNi0yMDIzIHwgICAgOTAgfCAgICAgICAgICA5MCB8 ICAgICAgICAxMjAgfCAwNy0wNy0yMDIzCisgY29tcGFueTEgfCAwNy0wNy0yMDIzIHwgICAxMTAg fCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MSB8IDA3LTA4LTIwMjMgfCAg IDEzMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkxIHwgMDctMDktMjAy MyB8ICAgMTIwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTEgfCAwNy0x MC0yMDIzIHwgICAxMzAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8 IDA3LTAxLTIwMjMgfCAgICA1MCB8ICAgICAgICAgIDUwIHwgICAgICAgMTQwMCB8IDA3LTAyLTIw MjMKKyBjb21wYW55MiB8IDA3LTAyLTIwMjMgfCAgMjAwMCB8ICAgICAgICAgICAgIHwgICAgICAg ICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDMtMjAyMyB8ICAxNTAwIHwgICAgICAgICAgICAgfCAg ICAgICAgICAgIHwgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAgfCAgICAgICAgICAg ICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55MiB8IDA3LTA1LTIwMjMgfCAgMTUwMCB8ICAgICAg ICAgICAgIHwgICAgICAgICAgICB8IAorIGNvbXBhbnkyIHwgMDctMDYtMjAyMyB8ICAgIDYwIHwg ICAgICAgICAgNjAgfCAgICAgICAxMjAwIHwgMDctMDctMjAyMworIGNvbXBhbnkyIHwgMDctMDct MjAyMyB8ICAxMTAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwgCisgY29tcGFueTIgfCAw Ny0wOC0yMDIzIHwgIDEzMDAgfCAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAKKyBjb21wYW55 MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgICAgIHwgICAgICAgICAgICB8IAorIGNv bXBhbnkyIHwgMDctMTAtMjAyMyB8ICAxMzAwIHwgICAgICAgICAgICAgfCAgICAgICAgICAgIHwg CisoMjAgcm93cykKKworLS0gbnRoX3ZhbHVlIHdpdGggSUdOT1JFIE5VTExTIG9wdGlvbiB3YW50 cyB0byBmaW5kIHRoZSBzZWNvbmQgcm93IGJ1dAorLS0gZHVlIHRvIGEgTlVMTCBpbiB0aGUgbWlk ZGxlLCBpdCByZXR1cm5zIHRoZSB0aGlyZCByb3cuCitXSVRIIGRhdGEgQVMgKAorIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAoMTAsIDEpLCAoMTEsIE5VTEwpLCAoMTIsIDMpLCAoMTMsIDQpCisg ICkgQVMgdChnaWQsIGlkKSkKKyAgU0VMRUNUIGdpZCwgaWQsIG50aF92YWx1ZShpZCwgMikgSUdO T1JFIE5VTExTIE9WRVIgdyBBUyBzZWNvbmRfdmFsLAorICBhcnJheV9hZ2coaWQpIE9WRVIgdwor ICBGUk9NIGRhdGEKKyAgV0lORE9XIHcgQVMgKAorICAgT1JERVIgQlkgZ2lkCisgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgUEFUVEVSTiAoQSspCisgICBERUZJTkUgQSBBUyBnaWQg PCAxMworICApOworIGdpZCB8IGlkIHwgc2Vjb25kX3ZhbCB8IGFycmF5X2FnZyAgCistLS0tLSst LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgMTAgfCAgMSB8ICAgICAgICAgIDMgfCB7 MSxOVUxMLDN9CisgIDExIHwgICAgfCAgICAgICAgICAgIHwgCisgIDEyIHwgIDMgfCAgICAgICAg ICAgIHwgCisgIDEzIHwgIDQgfCAgICAgICAgICAgIHwgCisoNCByb3dzKQorCistLSBudGhfdmFs dWUgd2l0aCBJR05PUkUgTlVMTFMgb3B0aW9uIHdhbnRzIHRvIGZpbmQgdGhlIHRoaXJkIHJvdyBi dXQKKy0tIGR1ZSB0byBhIE5VTEwgaW4gdGhlIG1pZGRsZSwgaXQgcmVhY2hlcyB0aGUgZW5kIG9m IHJlZHVjZWQgZnJhbWUgYW5kCistLSByZXR1cm5zIE5VTEwKK1dJVEggZGF0YSBBUyAoCisgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICgxMCwgMSksICgxMSwgTlVMTCksICgxMiwgMyksICgxMywg NCkKKyAgKSBBUyB0KGdpZCwgaWQpKQorICBTRUxFQ1QgZ2lkLCBpZCwgbnRoX3ZhbHVlKGlkLCAz KSBJR05PUkUgTlVMTFMgT1ZFUiB3IEFTIHRocmlkX3ZhbCwKKyAgYXJyYXlfYWdnKGlkKSBPVkVS IHcKKyAgRlJPTSBkYXRhCisgIFdJTkRPVyB3IEFTICgKKyAgIE9SREVSIEJZIGdpZAorICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgIFBBVFRFUk4gKEErKQorICAgREVGSU5FIEEgQVMg Z2lkIDwgMTMKKyAgKTsKKyBnaWQgfCBpZCB8IHRocmlkX3ZhbCB8IGFycmF5X2FnZyAgCistLS0t LSstLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLQorICAxMCB8ICAxIHwgICAgICAgICAgIHwg ezEsTlVMTCwzfQorICAxMSB8ICAgIHwgICAgICAgICAgIHwgCisgIDEyIHwgIDMgfCAgICAgICAg ICAgfCAKKyAgMTMgfCAgNCB8ICAgICAgICAgICB8IAorKDQgcm93cykKKworLS0gbnRoX3ZhbHVl IGJleW9uZCByZWR1Y2VkIGZyYW1lIHdpdGggSUdOT1JFIE5VTExTCistLSBUZXN0cyBpZ25vcmVu dWxsc19nZXRmdW5jYXJnaW5mcmFtZSBlYXJseSBvdXQtb2YtZnJhbWUgY2hlY2sKK1NFTEVDVCBj b21wYW55LCB0ZGF0ZSwgcHJpY2UsCisgbnRoX3ZhbHVlKHByaWNlLCA1KSBJR05PUkUgTlVMTFMg T1ZFUiB3IEFTIG50aF81X2luCitGUk9NIHN0b2NrCitXSU5ET1cgdyBBUyAoCisgUEFSVElUSU9O IEJZIGNvbXBhbnkKKyBPUkRFUiBCWSB0ZGF0ZQorIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor IFBBVFRFUk4gKFNUQVJUIFVQKyBET1dOKykKKyBERUZJTkUKKyAgU1RBUlQgQVMgVFJVRSwKKyAg VVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSwKKyAgRE9XTiBBUyBwcmljZSA8IFBSRVYocHJpY2Up CispOworIGNvbXBhbnkgIHwgICB0ZGF0ZSAgICB8IHByaWNlIHwgbnRoXzVfaW4gCistLS0tLS0t LS0tKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0KKyBjb21wYW55MSB8IDA3LTAxLTIw MjMgfCAgIDEwMCB8ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wMi0yMDIzIHwgICAyMDAgfCAg ICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDMtMjAyMyB8ICAgMTUwIHwgICAgICAgICAKKyBjb21w YW55MSB8IDA3LTA0LTIwMjMgfCAgIDE0MCB8ICAgICAgICAgCisgY29tcGFueTEgfCAwNy0wNS0y MDIzIHwgICAxNTAgfCAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDYtMjAyMyB8ICAgIDkwIHwg ICAgICAgICAKKyBjb21wYW55MSB8IDA3LTA3LTIwMjMgfCAgIDExMCB8ICAgICAgICAgCisgY29t cGFueTEgfCAwNy0wOC0yMDIzIHwgICAxMzAgfCAgICAgICAgIAorIGNvbXBhbnkxIHwgMDctMDkt MjAyMyB8ICAgMTIwIHwgICAgICAgICAKKyBjb21wYW55MSB8IDA3LTEwLTIwMjMgfCAgIDEzMCB8 ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wMS0yMDIzIHwgICAgNTAgfCAgICAgICAgIAorIGNv bXBhbnkyIHwgMDctMDItMjAyMyB8ICAyMDAwIHwgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTAz LTIwMjMgfCAgMTUwMCB8ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0wNC0yMDIzIHwgIDE0MDAg fCAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDUtMjAyMyB8ICAxNTAwIHwgICAgICAgICAKKyBj b21wYW55MiB8IDA3LTA2LTIwMjMgfCAgICA2MCB8ICAgICAgICAgCisgY29tcGFueTIgfCAwNy0w Ny0yMDIzIHwgIDExMDAgfCAgICAgICAgIAorIGNvbXBhbnkyIHwgMDctMDgtMjAyMyB8ICAxMzAw IHwgICAgICAgICAKKyBjb21wYW55MiB8IDA3LTA5LTIwMjMgfCAgMTIwMCB8ICAgICAgICAgCisg Y29tcGFueTIgfCAwNy0xMC0yMDIzIHwgIDEzMDAgfCAgICAgICAgIAorKDIwIHJvd3MpCisKKy0t IElHTk9SRSBOVUxMUyArIGZpcnN0X3ZhbHVlIHdoZXJlIGZpcnN0IHZhbHVlIGluIHJlZHVjZWQg ZnJhbWUgaXMgTlVMTAorV0lUSCBkYXRhIEFTICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAg KDEsIE5VTEwpLCAoMiwgTlVMTCksICgzLCAzMCksICg0LCA0MCkKKyApIEFTIHQoaWQsIHZhbCkp CitTRUxFQ1QgaWQsIHZhbCwKKyBmaXJzdF92YWx1ZSh2YWwpIElHTk9SRSBOVUxMUyBPVkVSIHcg QVMgZnZfaWdudWxsLAorIGNvdW50KCopIE9WRVIgdworRlJPTSBkYXRhCitXSU5ET1cgdyBBUyAo CisgT1JERVIgQlkgaWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJOIChBKykK KyBERUZJTkUgQSBBUyBUUlVFCispOworIGlkIHwgdmFsIHwgZnZfaWdudWxsIHwgY291bnQgCist LS0tKy0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0KKyAgMSB8ICAgICB8ICAgICAgICAzMCB8ICAg ICA0CisgIDIgfCAgICAgfCAgICAgICAgICAgfCAgICAgMAorICAzIHwgIDMwIHwgICAgICAgICAg IHwgICAgIDAKKyAgNCB8ICA0MCB8ICAgICAgICAgICB8ICAgICAwCisoNCByb3dzKQorCistLSBJ R05PUkUgTlVMTFMgKyBhbGwgdmFsdWVzIE5VTEwgaW4gcmVkdWNlZCBmcmFtZQorV0lUSCBkYXRh IEFTICgKKyBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgKDEsIE5VTEwpLCAoMiwgTlVMTCksICgz LCBOVUxMKQorICkgQVMgdChpZCwgdmFsKSkKK1NFTEVDVCBpZCwgdmFsLAorIGZpcnN0X3ZhbHVl KHZhbCkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBmdl9pZ251bGwsCisgbGFzdF92YWx1ZSh2YWwp IElHTk9SRSBOVUxMUyBPVkVSIHcgQVMgbHZfaWdudWxsLAorIGNvdW50KCopIE9WRVIgdworRlJP TSBkYXRhCitXSU5ET1cgdyBBUyAoCisgT1JERVIgQlkgaWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyBQQVRURVJOIChBKykKKyBERUZJTkUgQSBBUyBUUlVFCispOworIGlkIHwgdmFsIHwg ZnZfaWdudWxsIHwgbHZfaWdudWxsIHwgY291bnQgCistLS0tKy0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0KKyAgMSB8ICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICB8ICAg ICAzCisgIDIgfCAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgMAorICAzIHwgICAg IHwgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgIDAKKygzIHJvd3MpCisKKy0tCistLSBsYXN0 X3ZhbHVlIElHTk9SRSBOVUxMUyB3aXRoIHJlZHVjZWQgZnJhbWUgY29udGFpbmluZyBhbGwgTlVM THMKKy0tIEV4ZXJjaXNlcyBpZ25vcmVudWxsc19nZXRmdW5jYXJnaW5mcmFtZSBTRUVLX1RBSUwg b3V0LW9mLWZyYW1lIHBhdGgKKy0tIHdoZW4gbm90bnVsbF9yZWxwb3MgPj0gbnVtX3JlZHVjZWRf ZnJhbWUuCistLQorQ1JFQVRFIFRFTVAgVEFCTEUgcnByX251bGx2YWwgKGlkIElOVCwgdmFsIElO VCk7CitJTlNFUlQgSU5UTyBycHJfbnVsbHZhbCBWQUxVRVMgKDEsIDEwKSwgKDIsIE5VTEwpLCAo MywgTlVMTCksICg0LCAyMCk7CitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBsYXN0X3ZhbHVlKHZh bCkgSUdOT1JFIE5VTExTIE9WRVIgdyBBUyBsdl9pZ251bGwsCisgICAgICAgY291bnQoKikgT1ZF UiB3IEFTIGNudAorRlJPTSBycHJfbnVsbHZhbAorV0lORE9XIHcgQVMgKAorICBPUkRFUiBCWSBp ZAorICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgIFBBVFRFUk4gKEEgQispCisgIERFRklO RQorICAgIEEgQVMgdmFsIElTIE5PVCBOVUxMLAorICAgIEIgQVMgdmFsIElTIE5VTEwKKyk7Cisg aWQgfCB2YWwgfCBsdl9pZ251bGwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tLS0tLS0tKy0tLS0t CisgIDEgfCAgMTAgfCAgICAgICAgMTAgfCAgIDMKKyAgMiB8ICAgICB8ICAgICAgICAgICB8ICAg MAorICAzIHwgICAgIHwgICAgICAgICAgIHwgICAwCisgIDQgfCAgMjAgfCAgICAgICAgICAgfCAg IDAKKyg0IHJvd3MpCisKKy0tCistLSBOVUxMIGhhbmRsaW5nCistLQorQ1JFQVRFIFRFTVAgVEFC TEUgc3RvY2tfbnVsbCAoY29tcGFueSBURVhULCB0ZGF0ZSBEQVRFLCBwcmljZSBJTlRFR0VSKTsK K0lOU0VSVCBJTlRPIHN0b2NrX251bGwgVkFMVUVTICgnYzEnLCAnMjAyMy0wNy0wMScsIDEwMCk7 CitJTlNFUlQgSU5UTyBzdG9ja19udWxsIFZBTFVFUyAoJ2MxJywgJzIwMjMtMDctMDInLCBOVUxM KTsgIC0tIE5VTEwgaW4gbWlkZGxlCitJTlNFUlQgSU5UTyBzdG9ja19udWxsIFZBTFVFUyAoJ2Mx JywgJzIwMjMtMDctMDMnLCAyMDApOworSU5TRVJUIElOVE8gc3RvY2tfbnVsbCBWQUxVRVMgKCdj MScsICcyMDIzLTA3LTA0JywgMTUwKTsKK1NFTEVDVCBjb21wYW55LCB0ZGF0ZSwgcHJpY2UsIGNv dW50KCopIE9WRVIgdyBBUyBtYXRjaF9jb3VudAorRlJPTSBzdG9ja19udWxsCitXSU5ET1cgdyBB UyAoCisgIFBBUlRJVElPTiBCWSBjb21wYW55CisgIE9SREVSIEJZIHRkYXRlCisgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICBQQVRURVJOIChTVEFS VCBVUCBET1dOKQorICBERUZJTkUgU1RBUlQgQVMgVFJVRSwgVVAgQVMgcHJpY2UgPiBQUkVWKHBy aWNlKSwgRE9XTiBBUyBwcmljZSA8CitQUkVWKHByaWNlKQorKTsKKyBjb21wYW55IHwgICB0ZGF0 ZSAgICB8IHByaWNlIHwgbWF0Y2hfY291bnQgCistLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLQorIGMxICAgICAgfCAwNy0wMS0yMDIzIHwgICAxMDAgfCAgICAgICAg ICAgMAorIGMxICAgICAgfCAwNy0wMi0yMDIzIHwgICAgICAgfCAgICAgICAgICAgMAorIGMxICAg ICAgfCAwNy0wMy0yMDIzIHwgICAyMDAgfCAgICAgICAgICAgMAorIGMxICAgICAgfCAwNy0wNC0y MDIzIHwgICAxNTAgfCAgICAgICAgICAgMAorKDQgcm93cykKKworLS0gQ29uc2VjdXRpdmUgTlVM THM6IFBSRVYgbmF2aWdhdGVzIHRocm91Z2ggTlVMTCB2YWx1ZXMKK0NSRUFURSBURU1QIFRBQkxF IHJwcl9jb25zZWNfbnVsbCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9jb25z ZWNfbnVsbCBWQUxVRVMKKyAoMSwgMTAwKSwgKDIsIE5VTEwpLCAoMywgTlVMTCksICg0LCBOVUxM KSwgKDUsIDIwMCksICg2LCAzMDApOworLS0gUFJFVih2YWwpIElTIE5VTEwgc3VjY2VlZHMgZm9y IGJvdGggbnVsbF9zbG90IChmaXJzdCByb3cpIGFuZCBhY3R1YWwgTlVMTAorU0VMRUNUIGlkLCB2 YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2NvbnNlY19udWxsCitXSU5ET1cg dyBBUyAoCisgT1JERVIgQlkgaWQKKyBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyBQQVRURVJO IChBIEIrIEMpCisgREVGSU5FCisgIEEgQVMgdmFsIElTIE5VTEwsCisgIEIgQVMgdmFsIElTIE5V TEwgQU5EIFBSRVYodmFsKSBJUyBOVUxMLAorICBDIEFTIHZhbCBJUyBOT1QgTlVMTAorKTsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8IDEwMCB8ICAgMAorICAyIHwg ICAgIHwgICA0CisgIDMgfCAgICAgfCAgIDAKKyAgNCB8ICAgICB8ICAgMAorICA1IHwgMjAwIHwg ICAwCisgIDYgfCAzMDAgfCAgIDAKKyg2IHJvd3MpCisKKy0tIE5FWFQodmFsKSB0aHJvdWdoIGNv bnNlY3V0aXZlIE5VTExzCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAor RlJPTSBycHJfY29uc2VjX251bGwKK1dJTkRPVyB3IEFTICgKKyBPUkRFUiBCWSBpZAorIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworIFBBVFRFUk4gKEEgQisgQykKKyBERUZJTkUKKyAgQSBBUyB2 YWwgSVMgTk9UIE5VTEwsCisgIEIgQVMgdmFsIElTIE5VTEwgQU5EIE5FWFQodmFsKSBJUyBOVUxM LAorICBDIEFTIHZhbCBJUyBOVUxMIEFORCBORVhUKHZhbCkgSVMgTk9UIE5VTEwKKyk7CisgaWQg fCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAxMDAgfCAgIDQKKyAgMiB8ICAg ICB8ICAgMAorICAzIHwgICAgIHwgICAwCisgIDQgfCAgICAgfCAgIDAKKyAgNSB8IDIwMCB8ICAg MAorICA2IHwgMzAwIHwgICAwCisoNiByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9jb25zZWNfbnVs bDsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gU3RvY2sgU2NlbmFyaW8gVGVzdHMgKDE2MzIgcm93cywgcGFydGl0aW9u ZWQgcmVnaW9ucykKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gQ29uc2VjdXRpdmUgcmlzaW5nIGRheXM6IGZpbmQgc3Ry ZWFrcyBvZiA3KyBkYXlzCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUo cm4pIE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3 IEFTIGVuZF9ybiwKKyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9N IHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRf aWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgICAgICBQQVRURVJOIChVUHs3LH0pCisgICAgICAgIERFRklORSBVUCBBUyBw cmljZSA+IFBSRVYocHJpY2UpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZIHN0 YXJ0X3JuOworIHN0YXJ0X3JuIHwgZW5kX3JuIHwgZGF5cyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tCisgICAgICAgMjkgfCAgICAgMzUgfCAgICA3CisgICAgICAgMzggfCAgICAgNDQgfCAg ICA3CisgICAgICAgOTYgfCAgICAxMDIgfCAgICA3CisgICAgICAxMTggfCAgICAxMjUgfCAgICA4 CisgICAgICAzMDggfCAgICAzMTcgfCAgIDEwCisgICAgICAzMjggfCAgICAzMzQgfCAgICA3Cisg ICAgICA0NzUgfCAgICA0ODEgfCAgICA3CisgICAgICA0OTEgfCAgICA0OTcgfCAgICA3CisgICAg ICA1MDkgfCAgICA1MTcgfCAgICA5CisgICAgICA1MzYgfCAgICA1NDIgfCAgICA3CisgICAgICA1 ODYgfCAgICA1OTIgfCAgICA3CisgICAgICA2NDMgfCAgICA2NTAgfCAgICA4CisgICAgICA3NDAg fCAgICA3NDYgfCAgICA3CisgICAgICA3NTMgfCAgICA3NjAgfCAgICA4CisgICAgICA5MDQgfCAg ICA5MTAgfCAgICA3CisgICAgICA5NTYgfCAgICA5NjUgfCAgIDEwCisgICAgICA5ODUgfCAgICA5 OTEgfCAgICA3CisgICAgIDEwOTUgfCAgIDExMDEgfCAgICA3CisgICAgIDExMDQgfCAgIDExMTAg fCAgICA3CisgICAgIDExODEgfCAgIDExODcgfCAgICA3CisgICAgIDEyMjEgfCAgIDEyMjggfCAg ICA4CisgICAgIDEyNjIgfCAgIDEyNjggfCAgICA3CisgICAgIDEyNzIgfCAgIDEyNzggfCAgICA3 CisgICAgIDEzNzMgfCAgIDEzODAgfCAgICA4CisgICAgIDE0MzQgfCAgIDE0NDAgfCAgICA3Cisg ICAgIDE0ODUgfCAgIDE0OTEgfCAgICA3CisgICAgIDE1NTMgfCAgIDE1NTkgfCAgICA3CisgICAg IDE1NzYgfCAgIDE1ODIgfCAgICA3CisgICAgIDE2MjQgfCAgIDE2MzEgfCAgICA4CisoMjkgcm93 cykKKworLS0gVi1zaGFwZSByZWNvdmVyeTogNCsgZGF5cyBkZWNsaW5lIGZvbGxvd2VkIGJ5IDQr IGRheXMgcmlzZQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBP VkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBl bmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJp Y2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisg ICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9S REVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAg ICAgUEFUVEVSTiAoREVDTElORXs0LH0gUklTRXs0LH0pCisgICAgICAgIERFRklORQorICAgICAg ICAgICAgREVDTElORSBBUyBwcmljZSA8IFBSRVYocHJpY2UpLAorICAgICAgICAgICAgUklTRSBB UyBwcmljZSA+IFBSRVYocHJpY2UpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZ IHN0YXJ0X3JuOworIHN0YXJ0X3JuIHwgZW5kX3JuIHwgc3RhcnRfcHJpY2UgfCBlbmRfcHJpY2Ug fCBkYXlzIAorLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLQorICAgICAgIDg0IHwgICAgIDkzIHwgICAgIDMwMS4wMDAgfCAgIDMwOS43NTAgfCAgIDEw CisgICAgICAxMTQgfCAgICAxMjUgfCAgICAgMzk0LjUwMCB8ICAgNDE4Ljc1MCB8ICAgMTIKKyAg ICAgIDE3MyB8ICAgIDE4MyB8ICAgICAyNjAuMDAwIHwgICAyODIuMDAwIHwgICAxMQorICAgICAg MjA0IHwgICAgMjE0IHwgICAgIDE3OS4wMDAgfCAgIDE3MS41MDAgfCAgIDExCisgICAgICAyNjIg fCAgICAyNzEgfCAgICAgMjc3LjYyNSB8ICAgMjc1LjUwMCB8ICAgMTAKKyAgICAgIDMzNyB8ICAg IDM0NCB8ICAgICAzMDguMjUwIHwgICAzMDguMTI1IHwgICAgOAorICAgICAgNDM2IHwgICAgNDQ0 IHwgICAgICA1Ni42MzAgfCAgICA2MC4yNTAgfCAgICA5CisgICAgICA1NjcgfCAgICA1NzUgfCAg ICAgMTI2LjUwMCB8ICAgMTI3LjUwMCB8ICAgIDkKKyAgICAgIDU5OCB8ICAgIDYwNyB8ICAgICAx MTIuMjUwIHwgICAxMTYuNTAwIHwgICAxMAorICAgICAgNjUzIHwgICAgNjYwIHwgICAgIDEyOS4z NzUgfCAgIDEyOC4xMjUgfCAgICA4CisgICAgICA2NjMgfCAgICA2NzEgfCAgICAgMTI1LjYzMCB8 ICAgMTMwLjI1MCB8ICAgIDkKKyAgICAgIDY4NSB8ICAgIDY5MyB8ICAgICAxMjAuMTMwIHwgICAx MjQuMDAwIHwgICAgOQorICAgICAgNzEwIHwgICAgNzE5IHwgICAgIDE0MS4xMjUgfCAgIDE0NC4x MzAgfCAgIDEwCisgICAgICA4MzMgfCAgICA4NDEgfCAgICAgMTA2LjUwMCB8ICAgMTExLjEyNSB8 ICAgIDkKKyAgICAgIDg1MyB8ICAgIDg2MiB8ICAgICAxMDUuMzc1IHwgICAxMDcuNzUwIHwgICAx MAorICAgICAgOTMwIHwgICAgOTM3IHwgICAgICA5Mi4zODAgfCAgICA5Ni4zNzUgfCAgICA4Cisg ICAgIDExODggfCAgIDExOTcgfCAgICAgMTA1LjI1MCB8ICAgMTA4LjM4MCB8ICAgMTAKKyAgICAg MTE5OCB8ICAgMTIwNiB8ICAgICAxMDAuMTI1IHwgICAxMDAuNTYyIHwgICAgOQorICAgICAxMjUw IHwgICAxMjU5IHwgICAgIDEzMS40MzcgfCAgIDEzMC44NzUgfCAgIDEwCisgICAgIDEyODUgfCAg IDEyOTUgfCAgICAgMTc2Ljk0MCB8ICAgMTgyLjE5MCB8ICAgMTEKKyAgICAgMTI5OCB8ICAgMTMw NyB8ICAgICAxODEuMDAwIHwgICAxNzguNTYyIHwgICAxMAorICAgICAxMzEwIHwgICAxMzIyIHwg ICAgIDE4Ni4zMTAgfCAgIDIxMi4wMDAgfCAgIDEzCisgICAgIDE0MDUgfCAgIDE0MTIgfCAgICAg MTE3LjgwMCB8ICAgMTE3LjUwMCB8ICAgIDgKKyAgICAgMTQ2NyB8ICAgMTQ3NCB8ICAgICAgNzAu NDAwIHwgICAgNzEuODMwIHwgICAgOAorICAgICAxNDk0IHwgICAxNTAyIHwgICAgICA3OS43NjAg fCAgICA4Ni4wMDAgfCAgICA5CisgICAgIDE2MDAgfCAgIDE2MTggfCAgICAgIDkwLjQ0MCB8ICAg IDc3LjA1MCB8ICAgMTkKKygyNiByb3dzKQorCistLSBXLWJvdHRvbTogZGVjbGluZSwgYm91bmNl LCByZS1kZWNsaW5lLCByZWNvdmVyeQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0 X3ZhbHVlKHJuKSBPVkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4p IE9WRVIgdyBBUyBlbmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcg QVMgc3RhcnRfcHJpY2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBl bmRfcHJpY2UsCisgICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBy cHJfc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lk CisgICAgICAgIE9SREVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICAgICAgUEFUVEVSTiAoREVDTElORXszLH0gQk9VTkNFezMsfSBESVB7Myx9IFJF Q09WRVJ7Myx9KQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIERFQ0xJTkUgQVMgcHJpY2Ug PCBQUkVWKHByaWNlKSwKKyAgICAgICAgICAgIEJPVU5DRSBBUyBwcmljZSA+IFBSRVYocHJpY2Up LAorICAgICAgICAgICAgRElQIEFTIHByaWNlIDwgUFJFVihwcmljZSksCisgICAgICAgICAgICBS RUNPVkVSIEFTIHByaWNlID4gUFJFVihwcmljZSkKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAg T1JERVIgQlkgc3RhcnRfcm47Cisgc3RhcnRfcm4gfCBlbmRfcm4gfCBzdGFydF9wcmljZSB8IGVu ZF9wcmljZSB8IGRheXMgCistLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0rLS0tLS0tCisgICAgICAxMzYgfCAgICAxNTMgfCAgICAgNDQ0LjAwMCB8ICAgNDM0LjI1 MCB8ICAgMTgKKyAgICAgIDQ1NiB8ICAgIDQ2OSB8ICAgICAgNjQuNTAwIHwgICAgNjUuMTI1IHwg ICAxNAorICAgICAgNTIwIHwgICAgNTM0IHwgICAgIDExNS4yNTAgfCAgIDExNS43NTAgfCAgIDE1 CisgICAgICA2MTAgfCAgICA2MjMgfCAgICAgMTA3LjEyNSB8ICAgMTA5LjAwMCB8ICAgMTQKKyAg ICAgIDc5MSB8ICAgIDgwMiB8ICAgICAxMTMuNTAwIHwgICAxMTguMjUwIHwgICAxMgorICAgICAg OTQyIHwgICAgOTUzIHwgICAgICA5MS4yNTAgfCAgICA4OS44NzUgfCAgIDEyCisgICAgIDExODgg fCAgIDEyMDYgfCAgICAgMTA1LjI1MCB8ICAgMTAwLjU2MiB8ICAgMTkKKyAgICAgMTU2MCB8ICAg MTU3NCB8ICAgICAgODcuNDIwIHwgICAgOTAuMDAwIHwgICAxNQorKDggcm93cykKKworLS0gVm9s dW1lIHN1cmdlIHN0cmVhazogNisgY29uc2VjdXRpdmUgZGF5cyBvZiBpbmNyZWFzaW5nIHZvbHVt ZQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMg c3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBlbmRfcm4sCisg ICAgICAgICAgIGZpcnN0X3ZhbHVlKHZvbHVtZSkgT1ZFUiB3IEFTIHN0YXJ0X3ZvbCwKKyAgICAg ICAgICAgbGFzdF92YWx1ZSh2b2x1bWUpIE9WRVIgdyBBUyBlbmRfdm9sLAorICAgICAgICAgICBj b3VudCgqKSBPVkVSIHcgQVMgZGF5cworICAgIEZST00gcnByX3N0b2NrCisgICAgV0lORE9XIHcg QVMgKAorICAgICAgICBQQVJUSVRJT04gQlkgcGFydF9pZAorICAgICAgICBPUkRFUiBCWSBybgor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICAgIFBBVFRFUk4g KElOSVQgU1VSR0V7NSx9KQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIFNVUkdFIEFTIHZv bHVtZSA+IFBSRVYodm9sdW1lKQorICAgICkKKykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBz dGFydF9ybjsKKyBzdGFydF9ybiB8IGVuZF9ybiB8IHN0YXJ0X3ZvbCB8IGVuZF92b2wgIHwgZGF5 cyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0KKyAg ICAgIDE4NiB8ICAgIDE5MSB8ICAgICAyNTEwMCB8ICAgIDM1MzAwIHwgICAgNgorICAgICAgMjkx IHwgICAgMjk2IHwgICAgIDUyMjAwIHwgICAxODgzMDAgfCAgICA2CisgICAgICA0MDggfCAgICA0 MTMgfCAgICAxNjMzMDAgfCAgIDYxMDMwMCB8ICAgIDYKKyAgICAgIDQzOSB8ICAgIDQ0NCB8ICAg IDQzODQwMCB8ICAxMDg5MjAwIHwgICAgNgorICAgICAgNTAwIHwgICAgNTA2IHwgICAgMzczNzAw IHwgIDExMTQyMDAgfCAgICA3CisgICAgICA1NTEgfCAgICA1NTggfCAgICA2OTExMDAgfCAgMjA5 NzUwMCB8ICAgIDgKKyAgICAgIDYzNSB8ICAgIDY0MCB8ICAgIDQxODMwMCB8ICAxMzg4MTAwIHwg ICAgNgorICAgICAgNzgzIHwgICAgNzg4IHwgICAgNzY5MDAwIHwgIDE1NjQ5MDAgfCAgICA2Cisg ICAgICA4MjQgfCAgICA4MzAgfCAgICA2ODIyMDAgfCAgMjQxODcwMCB8ICAgIDcKKyAgICAgIDk2 OCB8ICAgIDk3NCB8ICAgIDk5MzEwMCB8ICAyMzQxMjAwIHwgICAgNworICAgICAxMDcyIHwgICAx MDc3IHwgICAxMjU3MjAwIHwgIDIzMjc3MDAgfCAgICA2CisgICAgIDEwNzggfCAgIDEwODQgfCAg IDE3NDgzMDAgfCAgNTUxNDMwMCB8ICAgIDcKKyAgICAgMTA5MyB8ICAgMTA5OCB8ICAgMjY2NDQw MCB8IDEzMTQ1OTAwIHwgICAgNgorICAgICAxMzM0IHwgICAxMzM5IHwgICAzMjIwOTAwIHwgMTA1 NTI2MDAgfCAgICA2CisgICAgIDE1MjQgfCAgIDE1MzAgfCAgIDM1NjI0MDAgfCAgNzAxMjEwMCB8 ICAgIDcKKyAgICAgMTUzMyB8ICAgMTUzOCB8ICAgMzU0ODUwMCB8ICA4NTYwODAwIHwgICAgNgor ICAgICAxNTc1IHwgICAxNTgwIHwgICA0MjI2NTAwIHwgIDY5NTIxMDAgfCAgICA2CisoMTcgcm93 cykKKworLS0gVm9sYXRpbGl0eSBzcXVlZXplOiBjb25zZWN1dGl2ZSBuYXJyb3dpbmcgb2YgZGFp bHkgcHJpY2UgcmFuZ2UKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBmaXJzdF92YWx1ZShy bikgT1ZFUiB3IEFTIHN0YXJ0X3JuLAorICAgICAgICAgICBsYXN0X3ZhbHVlKHJuKSBPVkVSIHcg QVMgZW5kX3JuLAorICAgICAgICAgICBmaXJzdF92YWx1ZShoaWdoIC0gbG93KSBPVkVSIHcgQVMg c3RhcnRfcmFuZ2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUoaGlnaCAtIGxvdykgT1ZFUiB3IEFT IGVuZF9yYW5nZSwKKyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFTIGRheXMKKyAgICBGUk9N IHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBhcnRf aWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgICAgICBQQVRURVJOIChJTklUIE5BUlJPV3s1LH0pCisgICAgICAgIERFRklO RQorICAgICAgICAgICAgTkFSUk9XIEFTIChoaWdoIC0gbG93KSA8IFBSRVYoaGlnaCkgLSBQUkVW KGxvdykKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIgQlkgc3RhcnRfcm47Cisgc3Rh cnRfcm4gfCBlbmRfcm4gfCBzdGFydF9yYW5nZSB8IGVuZF9yYW5nZSB8IGRheXMgCistLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tCisgICAgICAxMjgg fCAgICAxMzMgfCAgICAgIDExLjAwMCB8ICAgICAzLjAwMCB8ICAgIDYKKyAgICAgIDE3MCB8ICAg IDE3NSB8ICAgICAgMTAuMjUwIHwgICAgIDIuNzUwIHwgICAgNgorICAgICAgMTk0IHwgICAgMjAx IHwgICAgICAxMC4wMDAgfCAgICAgMS42MjUgfCAgICA4CisgICAgICAyODMgfCAgICAyODggfCAg ICAgICA3LjAwMCB8ICAgICAyLjM3NSB8ICAgIDYKKyAgICAgIDMyMCB8ICAgIDMyNSB8ICAgICAg IDQuNzUwIHwgICAgIDIuNTAwIHwgICAgNgorICAgICAgNTc4IHwgICAgNTgzIHwgICAgICAgMi43 NTAgfCAgICAgMS4xMjUgfCAgICA2CisgICAgICA3MjUgfCAgICA3MzEgfCAgICAgICAzLjM3MCB8 ICAgICAxLjEyNSB8ICAgIDcKKyAgICAgIDc3NSB8ICAgIDc4MCB8ICAgICAgIDQuNTAwIHwgICAg IDAuODc1IHwgICAgNgorICAgICAgOTEzIHwgICAgOTE4IHwgICAgICAgMi44NzAgfCAgICAgMS4y NTAgfCAgICA2CisgICAgIDExMzAgfCAgIDExMzUgfCAgICAgICAzLjAwMCB8ICAgICAxLjEyNSB8 ICAgIDYKKyAgICAgMTM0OCB8ICAgMTM1MyB8ICAgICAgIDYuNjIwIHwgICAgIDEuNTYyIHwgICAg NgorKDExIHJvd3MpCisKKy0tIEdhcCB1cDogb3BlbiBzaWduaWZpY2FudGx5IGhpZ2hlciB0aGFu IHByZXZpb3VzIGNsb3NlICg1JSspCitTRUxFQ1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgZmlyc3Rf dmFsdWUocm4pIE9WRVIgdyBBUyBnYXBfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNl KSBPVkVSIHcgQVMgcHJldl9jbG9zZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShvcGVuKSBPVkVS IHcgQVMgZ2FwX29wZW4sCisgICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBG Uk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFSVElUSU9OIEJZIHBh cnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChQUkVWX0RBWSBHQVBfVVApCisgICAgICAgIERF RklORQorICAgICAgICAgICAgR0FQX1VQIEFTIG9wZW4gPiBQUkVWKHByaWNlKSAqIDEuMDUKKyAg ICApCispIHQgV0hFUkUgY250ID4gMCBPUkRFUiBCWSBnYXBfcm47CisgZ2FwX3JuIHwgcHJldl9j bG9zZSB8IGdhcF9vcGVuIHwgY250IAorLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0r LS0tLS0KKyAgICA5ODYgfCAgICAgNDguODc1IHwgICA1Mi44NzUgfCAgIDIKKyAgICA5OTQgfCAg ICAgNDIuMzc1IHwgICA0NC44ODAgfCAgIDIKKyAgIDEwMjkgfCAgICAgNTIuMjUwIHwgICA1NS4w MDAgfCAgIDIKKyAgIDEwMzkgfCAgICAgNTUuODgwIHwgICA1OS4wMDAgfCAgIDIKKyAgIDExNzcg fCAgICAxNDIuMzgwIHwgIDE1MC41MDAgfCAgIDIKKyAgIDEyMzggfCAgICAxMjIuMDAwIHwgIDEy OC4yNTAgfCAgIDIKKyAgIDEzMTggfCAgICAxNzEuODc1IHwgIDE5Ny4yNTAgfCAgIDIKKyAgIDEz ODMgfCAgICAxMDMuNTAwIHwgIDExMi4wMDAgfCAgIDIKKyAgIDEzOTIgfCAgICAgOTYuNjg3IHwg IDEwNC4zNzUgfCAgIDIKKyAgIDE0MDEgfCAgICAxMDYuNTAwIHwgIDExMi4wMDAgfCAgIDIKKyAg IDE0NjQgfCAgICAgNjYuNDAwIHwgICA3MC4zNzAgfCAgIDIKKyAgIDE0NzcgfCAgICAgNTcuNTgw IHwgICA2Mi4wMDAgfCAgIDIKKyAgIDE0NzkgfCAgICAgNjMuNDIwIHwgICA2Ny43NTAgfCAgIDIK KyAgIDE0ODEgfCAgICAgNjQuOTAwIHwgICA3Mi44MDAgfCAgIDIKKyAgIDE1MTcgfCAgICAgOTAu MzEwIHwgICA5NS4wNzAgfCAgIDIKKygxNSByb3dzKQorCistLSBQcmljZS12b2x1bWUgZGl2ZXJn ZW5jZTogcHJpY2UgcmlzaW5nIHdoaWxlIHZvbHVtZSBkZWNsaW5pbmcgKGJlYXJpc2ggc2lnbmFs KQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMg c3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBlbmRfcm4sCisg ICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJpY2UsCisgICAg ICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisgICAgICAgICAg IGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAgICBXSU5ET1cg dyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9SREVSIEJZIHJu CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVS TiAoSU5JVCBESVZFUkdFezMsfSkKKyAgICAgICAgREVGSU5FCisgICAgICAgICAgICBESVZFUkdF IEFTIHByaWNlID4gUFJFVihwcmljZSkgQU5EIHZvbHVtZSA8IFBSRVYodm9sdW1lKQorICAgICkK KykgdCBXSEVSRSBkYXlzID4gMCBPUkRFUiBCWSBzdGFydF9ybjsKKyBzdGFydF9ybiB8IGVuZF9y biB8IHN0YXJ0X3ByaWNlIHwgZW5kX3ByaWNlIHwgZGF5cyAKKy0tLS0tLS0tLS0rLS0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0KKyAgICAgICAxMCB8ICAgICAxMyB8ICAg ICAzMzguNTAwIHwgICAzNDkuNzUwIHwgICAgNAorICAgICAgIDQ3IHwgICAgIDUwIHwgICAgIDM1 Mi4wMDAgfCAgIDM1OC4wMDAgfCAgICA0CisgICAgICAgNTMgfCAgICAgNTYgfCAgICAgMzE0LjAw MCB8ICAgMzE5LjAwMCB8ICAgIDQKKyAgICAgICA2MyB8ICAgICA2NiB8ICAgICAyOTQuNTAwIHwg ICAzMDEuNzUwIHwgICAgNAorICAgICAgIDk5IHwgICAgMTAyIHwgICAgIDQwMS4wMDAgfCAgIDQw NC4wMDAgfCAgICA0CisgICAgICAxNzcgfCAgICAxODAgfCAgICAgMjQ4LjUwMCB8ICAgMjYxLjc1 MCB8ICAgIDQKKyAgICAgIDIwOSB8ICAgIDIxMiB8ICAgICAxNTIuMDAwIHwgICAxNjYuNTAwIHwg ICAgNAorICAgICAgMjM3IHwgICAgMjQwIHwgICAgIDIwNy41MDAgfCAgIDIxNS41MDAgfCAgICA0 CisgICAgICAyNzQgfCAgICAyNzcgfCAgICAgMjU5LjUwMCB8ICAgMjY0LjUwMCB8ICAgIDQKKyAg ICAgIDM0NyB8ICAgIDM1MCB8ICAgICAzMDYuNzUwIHwgICAzMTIuMDAwIHwgICAgNAorICAgICAg NTMxIHwgICAgNTM0IHwgICAgIDExMS44NzUgfCAgIDExNS43NTAgfCAgICA0CisgICAgICA1NDUg fCAgICA1NDggfCAgICAgMTE4LjAwMCB8ICAgMTIxLjAwMCB8ICAgIDQKKyAgICAgIDU2MSB8ICAg IDU2NCB8ICAgICAxMzEuMTMwIHwgICAxMzQuMjUwIHwgICAgNAorICAgICAgNTg2IHwgICAgNTg5 IHwgICAgIDExMC4yNTAgfCAgIDExMi4wMDAgfCAgICA0CisgICAgICA2NDUgfCAgICA2NDggfCAg ICAgMTI5LjYzMCB8ICAgMTMzLjI1MCB8ICAgIDQKKyAgICAgIDY1NiB8ICAgIDY2MCB8ICAgICAx MjQuNTAwIHwgICAxMjguMTI1IHwgICAgNQorICAgICAgNjc5IHwgICAgNjgyIHwgICAgIDEyOC4w MDAgfCAgIDEyOS43NTAgfCAgICA0CisgICAgICA3MzQgfCAgICA3MzcgfCAgICAgMTIxLjM4MCB8 ICAgMTIzLjc1MCB8ICAgIDQKKyAgICAgIDc2MyB8ICAgIDc2NiB8ICAgICAxNTAuNzUwIHwgICAx NTYuNTAwIHwgICAgNAorICAgICAgODQ0IHwgICAgODQ3IHwgICAgIDEwNS41MDAgfCAgIDEwNy44 ODAgfCAgICA0CisgICAgICA5MjEgfCAgICA5MjQgfCAgICAgIDk3LjI1MCB8ICAgMTAxLjI1MCB8 ICAgIDQKKyAgICAgIDk1NiB8ICAgIDk1OSB8ICAgICAgODQuODc1IHwgICAgODcuNTAwIHwgICAg NAorICAgICAgOTYwIHwgICAgOTYzIHwgICAgICA4OC4yNTAgfCAgICA4OS41MDAgfCAgICA0Cisg ICAgICA5ODcgfCAgICA5OTAgfCAgICAgIDQ5LjAwMCB8ICAgIDUxLjUwMCB8ICAgIDQKKyAgICAg MTAyMyB8ICAgMTAyNiB8ICAgICAgNTMuMjUwIHwgICAgNTQuNjI1IHwgICAgNAorICAgICAxMDMz IHwgICAxMDM2IHwgICAgICA1Ny4xMjUgfCAgICA1OC4zODAgfCAgICA0CisgICAgIDEwNjAgfCAg IDEwNjMgfCAgICAgIDg5LjAwMCB8ICAgIDkzLjYyNSB8ICAgIDQKKyAgICAgMTA2NiB8ICAgMTA2 OSB8ICAgICAgODkuMTMwIHwgICAgOTMuMDAwIHwgICAgNAorICAgICAxMDg3IHwgICAxMDkwIHwg ICAgICA4OS4zNzUgfCAgICA5MS43NTAgfCAgICA0CisgICAgIDExNjUgfCAgIDExNjggfCAgICAg MTM3LjYyNSB8ICAgMTQ2Ljg3NSB8ICAgIDQKKyAgICAgMTIwMiB8ICAgMTIwNSB8ICAgICAgOTYu NTAwIHwgICAgOTguNzUwIHwgICAgNAorICAgICAxMjA5IHwgICAxMjEyIHwgICAgICA5Ni4xMjUg fCAgIDEwMC4yNTAgfCAgICA0CisgICAgIDEyMjAgfCAgIDEyMjMgfCAgICAgMTA2LjEzMCB8ICAg MTEyLjAwMCB8ICAgIDQKKyAgICAgMTIzMSB8ICAgMTIzNCB8ICAgICAxMTcuMDYyIHwgICAxMTku NjI1IHwgICAgNAorICAgICAxMjQ0IHwgICAxMjQ3IHwgICAgIDEyMi41MDAgfCAgIDEzMC4wMDAg fCAgICA0CisgICAgIDEzMDQgfCAgIDEzMDcgfCAgICAgMTY5LjUwMCB8ICAgMTc4LjU2MiB8ICAg IDQKKyAgICAgMTM0MiB8ICAgMTM0NSB8ICAgICAxMjIuMDAwIHwgICAxMjQuMDAwIHwgICAgNAor ICAgICAxNDE3IHwgICAxNDIwIHwgICAgIDEwMS45NjAgfCAgIDEwOC41MzAgfCAgICA0CisgICAg IDE0MzMgfCAgIDE0MzYgfCAgICAgIDkwLjAwMCB8ICAgIDkzLjc3MCB8ICAgIDQKKyAgICAgMTQz NyB8ICAgMTQ0MCB8ICAgICAgOTYuOTUwIHwgICAgOTguNTAwIHwgICAgNAorICAgICAxNDQzIHwg ICAxNDQ2IHwgICAgIDEyMC4yNTAgfCAgIDEyMi4yMDAgfCAgICA0CisgICAgIDE0NDkgfCAgIDE0 NTIgfCAgICAgIDc0LjY1MCB8ICAgIDc3LjE0MCB8ICAgIDQKKyAgICAgMTQ1NSB8ICAgMTQ1OCB8 ICAgICAgNjcuNjAwIHwgICAgNzMuNTAwIHwgICAgNAorICAgICAxNDk3IHwgICAxNTAwIHwgICAg ICA3Ni4yNTAgfCAgICA4MS42NTAgfCAgICA0CisgICAgIDE1MDUgfCAgIDE1MDggfCAgICAgIDc1 Ljg2MCB8ICAgIDc5LjUxMCB8ICAgIDQKKyAgICAgMTUxMSB8ICAgMTUxNCB8ICAgICAgNzkuNzUw IHwgICAgODEuMDIwIHwgICAgNAorICAgICAxNTE4IHwgICAxNTIxIHwgICAgICA5NC4wMjAgfCAg ICA5Ny43MDAgfCAgICA0CisgICAgIDE1NDEgfCAgIDE1NDQgfCAgICAgIDgzLjY1MCB8ICAgIDg1 LjI1MCB8ICAgIDQKKyAgICAgMTU0NyB8ICAgMTU1MCB8ICAgICAgODIuMjEwIHwgICAgODQuMDQw IHwgICAgNAorICAgICAxNTg1IHwgICAxNTg4IHwgICAgICA5Mi43MDAgfCAgICA5My41NzAgfCAg ICA0CisgICAgIDE1OTQgfCAgIDE1OTcgfCAgICAgIDkxLjYwMCB8ICAgIDkyLjQxMCB8ICAgIDQK KyAgICAgMTYxMyB8ICAgMTYxNiB8ICAgICAgNzIuMDEwIHwgICAgNzQuNjEwIHwgICAgNAorKDUy IHJvd3MpCisKKy0tIENvbnNvbGlkYXRpb24gdGhlbiBicmVha291dDogc2lkZXdheXMgbW92ZW1l bnQgZm9sbG93ZWQgYnkgc2hhcnAgcmlzZQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGZp cnN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAgIGxhc3RfdmFsdWUo cm4pIE9WRVIgdyBBUyBlbmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVlKHByaWNlKSBPVkVS IHcgQVMgc3RhcnRfcHJpY2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUocHJpY2UpIE9WRVIgdyBB UyBlbmRfcHJpY2UsCisgICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBkYXlzCisgICAgRlJP TSBycHJfc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJVElPTiBCWSBwYXJ0 X2lkCisgICAgICAgIE9SREVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoRkxBVHs1LH0gQlJFQUtPVVQpCisgICAgICAgIERF RklORQorICAgICAgICAgICAgRkxBVCBBUyBwcmljZSBCRVRXRUVOIFBSRVYocHJpY2UpICogMC45 OCBBTkQgUFJFVihwcmljZSkgKiAxLjAyLAorICAgICAgICAgICAgQlJFQUtPVVQgQVMgcHJpY2Ug PiBQUkVWKHByaWNlKSAqIDEuMDUKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIgQlkg c3RhcnRfcm47Cisgc3RhcnRfcm4gfCBlbmRfcm4gfCBzdGFydF9wcmljZSB8IGVuZF9wcmljZSB8 IGRheXMgCistLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0t LS0tCisgICAgICAgNjkgfCAgICAgODEgfCAgICAgMjk2Ljc1MCB8ICAgMzE0LjAwMCB8ICAgMTMK KyAgICAgIDIxNCB8ICAgIDIyNSB8ICAgICAxNzEuNTAwIHwgICAxNjQuMTI1IHwgICAxMgorICAg ICAgMzcxIHwgICAgMzk1IHwgICAgICA3MS42MzAgfCAgICA3MS4yNTAgfCAgIDI1CisgICAgICA0 MTYgfCAgICA0MjQgfCAgICAgIDU0LjI1MCB8ICAgIDUzLjg3NSB8ICAgIDkKKyAgICAgIDQ4NCB8 ICAgIDQ5NCB8ICAgICAgNzUuNTAwIHwgICAgNzkuMDAwIHwgICAxMQorICAgICAgODY1IHwgICAg ODkyIHwgICAgIDExMi41MDAgfCAgIDExNS43NTAgfCAgIDI4CisgICAgIDEwMDcgfCAgIDEwMjAg fCAgICAgIDU5LjUwMCB8ICAgIDU4LjYzMCB8ICAgMTQKKyAgICAgMTExMyB8ICAgMTExOCB8ICAg ICAxMTAuNzUwIHwgICAxMTcuNjI1IHwgICAgNgorICAgICAxMTQ2IHwgICAxMTUyIHwgICAgIDEz My43NTAgfCAgIDE0NS4wMDAgfCAgICA3CisgICAgIDExNzEgfCAgIDExNzggfCAgICAgMTM3Ljg4 MCB8ICAgMTUzLjYyNSB8ICAgIDgKKyAgICAgMTM1MCB8ICAgMTM1NyB8ICAgICAxMDYuMTI1IHwg ICAxMTIuMDAwIHwgICAgOAorICAgICAxMzYwIHwgICAxMzcwIHwgICAgIDEwOS4xMjUgfCAgIDEx NS42MjUgfCAgIDExCisoMTIgcm93cykKKworLS0gRGVhZCBjYXQgYm91bmNlOiBkZWNsaW5lIGZv bGxvd2VkIGJ5IHdlYWsgcmVjb3ZlcnkgKDwxJSBwZXIgZGF5KQorU0VMRUNUICogRlJPTSAoCisg ICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgc3RhcnRfcm4sCisgICAgICAgICAg IGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBlbmRfcm4sCisgICAgICAgICAgIGZpcnN0X3ZhbHVl KHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJpY2UsCisgICAgICAgICAgIGxhc3RfdmFsdWUocHJp Y2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisgICAgICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBk YXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFBBUlRJ VElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9SREVSIEJZIHJuCisgICAgICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoREVDTElORXs0LH0gQk9VTkNF ezMsfSkKKyAgICAgICAgREVGSU5FCisgICAgICAgICAgICBERUNMSU5FIEFTIHByaWNlIDwgUFJF VihwcmljZSksCisgICAgICAgICAgICBCT1VOQ0UgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSBBTkQg cHJpY2UgPCBQUkVWKHByaWNlKSAqIDEuMDEKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JE RVIgQlkgc3RhcnRfcm47Cisgc3RhcnRfcm4gfCBlbmRfcm4gfCBzdGFydF9wcmljZSB8IGVuZF9w cmljZSB8IGRheXMgCistLS0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0rLS0tLS0tCisgICAgICAgNTkgfCAgICAgNjYgfCAgICAgMzE1LjAwMCB8ICAgMzAxLjc1MCB8 ICAgIDgKKyAgICAgIDI2MiB8ICAgIDI3MSB8ICAgICAyNzcuNjI1IHwgICAyNzUuNTAwIHwgICAx MAorICAgICAgMjgwIHwgICAgMjg3IHwgICAgIDI3Mi4wMDAgfCAgIDI2MS4yNTAgfCAgICA4Cisg ICAgICAzNjEgfCAgICAzNjggfCAgICAgIDc1LjM3NSB8ICAgIDc0LjEzMCB8ICAgIDgKKyAgICAg IDQyNyB8ICAgIDQzMyB8ICAgICAgNjUuMTMwIHwgICAgNjUuNTAwIHwgICAgNworICAgICAgNDQ3 IHwgICAgNDUzIHwgICAgICA1NS41MDAgfCAgICA1NC42MjUgfCAgICA3CisgICAgICA2NTMgfCAg ICA2NTkgfCAgICAgMTI5LjM3NSB8ICAgMTI2LjYyNSB8ICAgIDcKKyAgICAgIDY3NCB8ICAgIDY4 MiB8ICAgICAxMzIuMzc1IHwgICAxMjkuNzUwIHwgICAgOQorICAgICAgODMzIHwgICAgODM5IHwg ICAgIDEwNi41MDAgfCAgIDEwNy4xMjUgfCAgICA3CisgICAgIDE0MjMgfCAgIDE0MzAgfCAgICAg MTA4LjE4MCB8ICAgMTA2LjIwMCB8ICAgIDgKKyAgICAgMTU5MSB8ICAgMTU5NyB8ICAgICAgOTIu OTIwIHwgICAgOTIuNDEwIHwgICAgNworKDExIHJvd3MpCisKKy0tIFVwdHJlbmQ6IDcrIGNvbnNl Y3V0aXZlIGRheXMgb2YgaGlnaGVyIGhpZ2hzIEFORCBoaWdoZXIgbG93cworU0VMRUNUICogRlJP TSAoCisgICAgU0VMRUNUIGZpcnN0X3ZhbHVlKHJuKSBPVkVSIHcgQVMgc3RhcnRfcm4sCisgICAg ICAgICAgIGxhc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBlbmRfcm4sCisgICAgICAgICAgIGZpcnN0 X3ZhbHVlKHByaWNlKSBPVkVSIHcgQVMgc3RhcnRfcHJpY2UsCisgICAgICAgICAgIGxhc3RfdmFs dWUocHJpY2UpIE9WRVIgdyBBUyBlbmRfcHJpY2UsCisgICAgICAgICAgIGNvdW50KCopIE9WRVIg dyBBUyBkYXlzCisgICAgRlJPTSBycHJfc3RvY2sKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAg IFBBUlRJVElPTiBCWSBwYXJ0X2lkCisgICAgICAgIE9SREVSIEJZIHJuCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICAgICAgUEFUVEVSTiAoVVBUUkVORHs3LH0p CisgICAgICAgIERFRklORQorICAgICAgICAgICAgVVBUUkVORCBBUyBoaWdoID4gUFJFVihoaWdo KSBBTkQgbG93ID4gUFJFVihsb3cpCisgICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZ IHN0YXJ0X3JuOworIHN0YXJ0X3JuIHwgZW5kX3JuIHwgc3RhcnRfcHJpY2UgfCBlbmRfcHJpY2Ug fCBkYXlzIAorLS0tLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLQorICAgICAgMTU2IHwgICAgMTYyIHwgICAgIDMxNy4wMDAgfCAgIDMyOS41MDAgfCAgICA3 CisgICAgICAyOTkgfCAgICAzMDUgfCAgICAgMjY2LjAwMCB8ICAgMjczLjUwMCB8ICAgIDcKKyAg ICAgIDY5NiB8ICAgIDcwMiB8ICAgICAxNDQuNjMwIHwgICAxNTIuNTAwIHwgICAgNworICAgICAg NzQxIHwgICAgNzQ3IHwgICAgIDE1NS4yNTAgfCAgIDE2Ni43NTAgfCAgICA3CisgICAgICA4OTUg fCAgICA5MDEgfCAgICAgMTE5LjI1MCB8ICAgMTI2Ljc1MCB8ICAgIDcKKyAgICAgMTEyMSB8ICAg MTEyNyB8ICAgICAxMDMuNjMwIHwgICAxMDguODc1IHwgICAgNworICAgICAxMjExIHwgICAxMjE3 IHwgICAgICA5OS4xMzAgfCAgIDEwMi44NzUgfCAgICA3CisgICAgIDEyNzEgfCAgIDEyNzggfCAg ICAgMTY0LjM3NSB8ICAgMTg5LjI1MCB8ICAgIDgKKyAgICAgMTYyMSB8ICAgMTYyOCB8ICAgICAg ODQuMDAwIHwgICAgODkuODIwIHwgICAgOAorKDkgcm93cykKKworLS0gUGFuaWMgYW5kIHNuYXAt YmFjazogMyUrIGRhaWx5IGRyb3BzIGZvbGxvd2VkIGJ5IDIlKyByZWJvdW5kCitTRUxFQ1QgKiBG Uk9NICgKKyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFydF9ybiwKKyAg ICAgICAgICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAgICAgICAgZmly c3RfdmFsdWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAgICAgbGFzdF92 YWx1ZShwcmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAgICAgICAgICAgY291bnQoKikgT1ZF UiB3IEFTIGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAg ICAgUEFSVElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChQQU5JQ3syLH0g U05BUCkKKyAgICAgICAgREVGSU5FCisgICAgICAgICAgICBQQU5JQyBBUyBwcmljZSA8IFBSRVYo cHJpY2UpICogMC45NywKKyAgICAgICAgICAgIFNOQVAgQVMgcHJpY2UgPiBQUkVWKHByaWNlKSAq IDEuMDIKKyAgICApCispIHQgV0hFUkUgZGF5cyA+IDAgT1JERVIgQlkgc3RhcnRfcm47Cisgc3Rh cnRfcm4gfCBlbmRfcm4gfCBzdGFydF9wcmljZSB8IGVuZF9wcmljZSB8IGRheXMgCistLS0tLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tCisgICAgICAgMjQg fCAgICAgMjYgfCAgICAgMjMwLjYyNSB8ICAgMjI5Ljg3NSB8ICAgIDMKKyAgICAgIDE2NSB8ICAg IDE2NyB8ICAgICAyNzIuMDAwIHwgICAyNzAuNzUwIHwgICAgMworICAgICAgMTY5IHwgICAgMTcx IHwgICAgIDI2MC4wMDAgfCAgIDI1OS41MDAgfCAgICAzCisgICAgICA3NjkgfCAgICA3NzIgfCAg ICAgMTQwLjEyNSB8ICAgMTE1LjAwMCB8ICAgIDQKKyAgICAgIDk3NyB8ICAgIDk3OSB8ICAgICAg NTYuMTMwIHwgICAgNTMuMDAwIHwgICAgMworICAgICAgOTgwIHwgICAgOTgyIHwgICAgICA1MS4z NzUgfCAgICA1MS43NTAgfCAgICAzCisgICAgIDEzODcgfCAgIDEzODkgfCAgICAgIDg2LjAwMCB8 ICAgIDg5LjAwMCB8ICAgIDMKKyAgICAgMTM5NiB8ICAgMTM5OCB8ICAgICAgOTkuMjkwIHwgICAg OTguMzkwIHwgICAgMworKDggcm93cykKKworLS0gVm9sdW1lIGNsaW1heCByZXZlcnNhbDogdXB0 cmVuZCwgdm9sdW1lIHNwaWtlICgxLjV4KSwgdGhlbiBkZWNsaW5lCitTRUxFQ1QgKiBGUk9NICgK KyAgICBTRUxFQ1QgZmlyc3RfdmFsdWUocm4pIE9WRVIgdyBBUyBzdGFydF9ybiwKKyAgICAgICAg ICAgbGFzdF92YWx1ZShybikgT1ZFUiB3IEFTIGVuZF9ybiwKKyAgICAgICAgICAgZmlyc3RfdmFs dWUocHJpY2UpIE9WRVIgdyBBUyBzdGFydF9wcmljZSwKKyAgICAgICAgICAgbGFzdF92YWx1ZShw cmljZSkgT1ZFUiB3IEFTIGVuZF9wcmljZSwKKyAgICAgICAgICAgY291bnQoKikgT1ZFUiB3IEFT IGRheXMKKyAgICBGUk9NIHJwcl9zdG9jaworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUEFS VElUSU9OIEJZIHBhcnRfaWQKKyAgICAgICAgT1JERVIgQlkgcm4KKyAgICAgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChSQUxMWXszLH0gQ0xJTUFY IFNFTExPRkZ7Mix9KQorICAgICAgICBERUZJTkUKKyAgICAgICAgICAgIFJBTExZIEFTIHByaWNl ID4gUFJFVihwcmljZSksCisgICAgICAgICAgICBDTElNQVggQVMgdm9sdW1lID4gUFJFVih2b2x1 bWUpICogMS41LAorICAgICAgICAgICAgU0VMTE9GRiBBUyBwcmljZSA8IFBSRVYocHJpY2UpCisg ICAgKQorKSB0IFdIRVJFIGRheXMgPiAwIE9SREVSIEJZIHN0YXJ0X3JuOworIHN0YXJ0X3JuIHwg ZW5kX3JuIHwgc3RhcnRfcHJpY2UgfCBlbmRfcHJpY2UgfCBkYXlzIAorLS0tLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLQorICAgICAgICAyIHwgICAgICA3 IHwgICAgIDM2OC4yNTAgfCAgIDM2Ny43NTAgfCAgICA2CisgICAgICAgMTYgfCAgICAgMjEgfCAg ICAgMzQ5LjI1MCB8ICAgMzQ0LjUwMCB8ICAgIDYKKyAgICAgIDEwNSB8ICAgIDExMSB8ICAgICAz ODguNTAwIHwgICAzOTQuNTAwIHwgICAgNworICAgICAgMjI4IHwgICAgMjM0IHwgICAgIDE2NC4y NTAgfCAgIDE2My4yNTAgfCAgICA3CisgICAgICAyNDMgfCAgICAyNDggfCAgICAgMjIzLjI1MCB8 ICAgMjI4LjUwMCB8ICAgIDYKKyAgICAgIDI1MSB8ICAgIDI1OSB8ICAgICAyNTEuMDAwIHwgICAy NTMuNTAwIHwgICAgOQorICAgICAgMzUyIHwgICAgMzU4IHwgICAgIDMxMC41MDAgfCAgIDMwOS4w MDAgfCAgICA3CisgICAgICAzOTggfCAgICA0MDUgfCAgICAgIDY1LjM4MCB8ICAgIDY1LjAwMCB8 ICAgIDgKKyAgICAgIDQ2NiB8ICAgIDQ3MiB8ICAgICAgNjQuMjUwIHwgICAgNjMuODc1IHwgICAg NworICAgICAgNTg2IHwgICAgNTk1IHwgICAgIDExMC4yNTAgfCAgIDExMi4yNTAgfCAgIDEwCisg ICAgICA2MjYgfCAgICA2MzIgfCAgICAgMTI1Ljc1MCB8ICAgMTIzLjI1MCB8ICAgIDcKKyAgICAg IDcwMCB8ICAgIDcwNyB8ICAgICAxNTAuMjUwIHwgICAxNTIuNzUwIHwgICAgOAorICAgICAgNzE0 IHwgICAgNzIyIHwgICAgIDEzNi4xMjUgfCAgIDEzNy4wMDAgfCAgICA5CisgICAgICA3NDAgfCAg ICA3NTAgfCAgICAgMTU0LjI1MCB8ICAgMTYzLjAwMCB8ICAgMTEKKyAgICAgIDgwNSB8ICAgIDgx MSB8ICAgICAxMTYuODc1IHwgICAxMTYuMDAwIHwgICAgNworICAgICAgODE0IHwgICAgODIxIHwg ICAgICA5OS41MDAgfCAgICA5Ny4xMzAgfCAgICA4CisgICAgICA4NTAgfCAgICA4NTcgfCAgICAg MTA3Ljg4MCB8ICAgIDk5LjI1MCB8ICAgIDgKKyAgICAgIDkyMiB8ICAgIDkyNyB8ICAgICAgOTku NzUwIHwgICAgOTkuODc1IHwgICAgNgorICAgICAgOTM0IHwgICAgOTM5IHwgICAgICA5Mi4zNzUg fCAgICA5Mi44ODAgfCAgICA2CisgICAgICA5OTggfCAgIDEwMDQgfCAgICAgIDUyLjAwMCB8ICAg IDUzLjEzMCB8ICAgIDcKKyAgICAgMTA0MyB8ICAgMTA0OSB8ICAgICAgNzMuMTI1IHwgICAgNzMu MDAwIHwgICAgNworICAgICAxMDUyIHwgICAxMDU3IHwgICAgICA3Mi4xMzAgfCAgICA3NC4yNTAg fCAgICA2CisgICAgIDExMzggfCAgIDExNDMgfCAgICAgMTI3Ljc1MCB8ICAgMTI1LjYyNSB8ICAg IDYKKyAgICAgMTE1NSB8ICAgMTE2MiB8ICAgICAxNTguMDAwIHwgICAxNTUuNjI1IHwgICAgOAor ICAgICAxMTgxIHwgICAxMTkxIHwgICAgICA5OS4xMzAgfCAgIDEwMC4wNjIgfCAgIDExCisgICAg IDExOTIgfCAgIDEyMDIgfCAgICAgMTAwLjEzMCB8ICAgIDk2LjUwMCB8ICAgMTEKKyAgICAgMTIz NiB8ICAgMTI0MSB8ICAgICAxMTguMzgwIHwgICAxMjMuODgwIHwgICAgNgorICAgICAxMjcyIHwg ICAxMjgyIHwgICAgIDE2Ni4wNjIgfCAgIDE4My4wMDAgfCAgIDExCisgICAgIDEzMjUgfCAgIDEz MzEgfCAgICAgMjE3LjI1MCB8ICAgMjM3LjUwMCB8ICAgIDcKKyAgICAgMTQwOSB8ICAgMTQxNCB8 ICAgICAxMTIuODkwIHwgICAxMTYuMTAwIHwgICAgNgorICAgICAxNDU2IHwgICAxNDYxIHwgICAg ICA2OC41ODAgfCAgICA2OC43NjAgfCAgICA2CisoMzEgcm93cykKKwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfYmFzZS5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4 cGVjdGVkL3Jwcl9iYXNlLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNDE1NDE4OThmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVj dGVkL3Jwcl9iYXNlLm91dApAQCAtMCwwICsxLDcyMzggQEAKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUlBSIEJhc2Ug VGVzdHMKKy0tIFRlc3RzIGZvciBSb3cgUGF0dGVybiBSZWNvZ25pdGlvbiAoSVNPL0lFQyAxOTA3 NS01KQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLQorLS0gUGFyc2VyIExheWVyOgorLS0gICBLZXl3b3JkIFVzYWdlIFRl c3RzCistLSAgIERFRklORSBDbGF1c2UgVGVzdHMKKy0tICAgRlJBTUUgT3B0aW9ucyBUZXN0cwor LS0gICBQQVJUSVRJT04gQlkgKyBGUkFNRSBUZXN0cworLS0gICBQQVRURVJOIFN5bnRheCBUZXN0 cworLS0gICBRdWFudGlmaWVycyBUZXN0cworLS0gICBOYXZpZ2F0aW9uIEZ1bmN0aW9ucyBUZXN0 cworLS0gICBTS0lQIFRPIC8gSU5JVElBTCBUZXN0cworLS0gICBTZXJpYWxpemF0aW9uL0Rlc2Vy aWFsaXphdGlvbiBUZXN0cworLS0gICBHbHVlZCBRdWFudGlmaWVyIC8gQWx0ZXJuYXRpb24gVGVz dHMKKy0tICAgRXJyb3IgQ2FzZXMgVGVzdHMKKy0tICAgV2luZG93IERlZHVwbGljYXRpb24gVGVz dHMKKy0tCistLSBQbGFubmVyIExheWVyOgorLS0gICBQYXR0ZXJuIE9wdGltaXphdGlvbiBUZXN0 cworLS0gICBBYnNvcnB0aW9uIEZsYWcgRGlzcGxheSBUZXN0cworLS0gICBBYnNvcnB0aW9uIEFu YWx5c2lzIFRlc3RzCistLSAgIEVkZ2UgQ2FzZSBUZXN0cworLS0gICBPcHRpbWl6YXRpb24gRmFs bGJhY2sgVGVzdHMKKy0tICAgUGxhbm5lciBJbnRlZ3JhdGlvbiBUZXN0cworLS0gICBTdWJxdWVy eSBhbmQgQ1RFIFRlc3RzCistLSAgIEpPSU4gVGVzdHMKKy0tICAgQ29tcGxleCBFeHByZXNzaW9u IFRlc3RzCistLSAgIFNldCBPcGVyYXRpb25zIFRlc3RzCistLSAgIFNvcnRpbmcgYW5kIEdyb3Vw aW5nIFRlc3RzCistLSAgIFNRTCBGdW5jdGlvbiBJbmxpbmluZyBUZXN0cworLS0gICBTdHJlc3Mg VGVzdHMKKy0tICAgRXJyb3IgTGltaXQgVGVzdHMKKy0tCistLSBDb250cmlidXRlZCBUZXN0czoK Ky0tICAgQmFzaWMgUGF0dGVybiBNYXRjaGluZworLS0gICBQYXRob2xvZ2ljYWwgUGF0dGVybnMK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBXQVJOSU5HOworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBL ZXl3b3JkIFVzYWdlIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJQUiBrZXl3b3JkcyBhcyBjb2x1bW4gbmFt ZXMKKy0tIEtleXdvcmRzOiBkZWZpbmUsIGluaXRpYWwsIHBhc3QsIHBhdHRlcm4sIHNlZWsKK0NS RUFURSBUQUJMRSBycHJfa2V5d29yZHMgKAorICAgIGlkIElOVCwKKyAgICBkZWZpbmUgSU5ULCAg ICAgIC0tIERFRklORSBrZXl3b3JkCisgICAgaW5pdGlhbCBJTlQsICAgICAtLSBJTklUSUFMIGtl eXdvcmQKKyAgICBwYXN0IElOVCwgICAgICAgIC0tIFBBU1Qga2V5d29yZAorICAgIHBhdHRlcm4g SU5ULCAgICAgLS0gUEFUVEVSTiBrZXl3b3JkCisgICAgc2VlayBJTlQsICAgICAgICAtLSBTRUVL IGtleXdvcmQKKy0tIEVSUk9SOiBTRUVLIGlzIG5vdCBzdXBwb3J0ZWQKKyAgICBza2lwIElOVCAg ICAgICAgIC0tIFNLSVAga2V5d29yZCAocHJlLWV4aXN0aW5nKQorKTsKK0lOU0VSVCBJTlRPIHJw cl9rZXl3b3JkcyBWQUxVRVMgKDEsIDEwLCAyMCwgMzAsIDQwLCA1MCwgNjApOworU0VMRUNUIGlk LCBkZWZpbmUsIGluaXRpYWwsIHBhc3QsIHBhdHRlcm4sIHNlZWssIHNraXAKK0ZST00gcnByX2tl eXdvcmRzCitPUkRFUiBCWSBpZDsKKyBpZCB8IGRlZmluZSB8IGluaXRpYWwgfCBwYXN0IHwgcGF0 dGVybiB8IHNlZWsgfCBza2lwIAorLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0rLS0tLS0tCisgIDEgfCAgICAgMTAgfCAgICAgIDIwIHwgICAzMCB8ICAgICAg NDAgfCAgIDUwIHwgICA2MAorKDEgcm93KQorCitEUk9QIFRBQkxFIHJwcl9rZXl3b3JkczsKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gREVGSU5FIENsYXVzZSBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTaW1wbGUgY29sdW1uIHJl ZmVyZW5jZXMKK0NSRUFURSBUQUJMRSBzdG9ja19wcmljZSAoCisgICAgZHQgREFURSwKKyAgICBz eW1ib2wgVEVYVCwKKyAgICBwcmljZSBOVU1FUklDLAorICAgIHZvbHVtZSBJTlQKKyk7CitJTlNF UlQgSU5UTyBzdG9ja19wcmljZSBWQUxVRVMKKyAgICAoJzIwMjQtMDEtMDEnLCAnQUFQTCcsIDE1 MCwgMTAwMCksCisgICAgKCcyMDI0LTAxLTAyJywgJ0FBUEwnLCAxNTUsIDEyMDApLAorICAgICgn MjAyNC0wMS0wMycsICdBQVBMJywgMTUyLCA5MDApLAorICAgICgnMjAyNC0wMS0wNCcsICdBQVBM JywgMTYwLCAxNTAwKSwKKyAgICAoJzIwMjQtMDEtMDUnLCAnQUFQTCcsIDE1OCwgMTEwMCk7Cist LSBTaW1wbGUgY29sdW1uIHJlZmVyZW5jZQorU0VMRUNUIGR0LCBwcmljZSwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBzdG9ja19wcmljZQorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElP TiBCWSBzeW1ib2wKKyAgICBPUkRFUiBCWSBkdAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKFVQKykKKyAgICBERUZJTkUg VVAgQVMgcHJpY2UgPiAxNTAKKykKK09SREVSIEJZIGR0OworICAgICBkdCAgICAgfCBwcmljZSB8 IGNudCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgMDEtMDEtMjAyNCB8ICAgMTUwIHwg ICAwCisgMDEtMDItMjAyNCB8ICAgMTU1IHwgICA0CisgMDEtMDMtMjAyNCB8ICAgMTUyIHwgICAw CisgMDEtMDQtMjAyNCB8ICAgMTYwIHwgICAwCisgMDEtMDUtMjAyNCB8ICAgMTU4IHwgICAwCiso NSByb3dzKQorCistLSBNdWx0aXBsZSBjb2x1bW4gcmVmZXJlbmNlcworU0VMRUNUIGR0LCBwcmlj ZSwgdm9sdW1lLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHN0b2NrX3ByaWNlCitXSU5E T1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIHN5bWJvbAorICAgIE9SREVSIEJZIGR0CisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoR09PRCspCisgICAgREVGSU5FIEdPT0QgQVMgcHJpY2UgPiAxNTAgQU5EIHZvbHVtZSA+ IDEwMDAKKykKK09SREVSIEJZIGR0OworICAgICBkdCAgICAgfCBwcmljZSB8IHZvbHVtZSB8IGNu dCAKKy0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0tCisgMDEtMDEtMjAyNCB8ICAg MTUwIHwgICAxMDAwIHwgICAwCisgMDEtMDItMjAyNCB8ICAgMTU1IHwgICAxMjAwIHwgICAxCisg MDEtMDMtMjAyNCB8ICAgMTUyIHwgICAgOTAwIHwgICAwCisgMDEtMDQtMjAyNCB8ICAgMTYwIHwg ICAxNTAwIHwgICAyCisgMDEtMDUtMjAyNCB8ICAgMTU4IHwgICAxMTAwIHwgICAwCisoNSByb3dz KQorCistLSBFeHByZXNzaW9uIGluIERFRklORQorU0VMRUNUIGR0LCBwcmljZSwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBzdG9ja19wcmljZQorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJ VElPTiBCWSBzeW1ib2wKKyAgICBPUkRFUiBCWSBkdAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEhJR0grKQorICAgIERF RklORSBISUdIIEFTIHByaWNlICogMS4xID4gMTY1CispCitPUkRFUiBCWSBkdDsKKyAgICAgZHQg ICAgIHwgcHJpY2UgfCBjbnQgCistLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLQorIDAxLTAxLTIw MjQgfCAgIDE1MCB8ICAgMAorIDAxLTAyLTIwMjQgfCAgIDE1NSB8ICAgNAorIDAxLTAzLTIwMjQg fCAgIDE1MiB8ICAgMAorIDAxLTA0LTIwMjQgfCAgIDE2MCB8ICAgMAorIDAxLTA1LTIwMjQgfCAg IDE1OCB8ICAgMAorKDUgcm93cykKKworLS0gQXJpdGhtZXRpYyBhbmQgZnVuY3Rpb25zCitTRUxF Q1QgZHQsIHByaWNlLCB2b2x1bWUsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gc3RvY2tf cHJpY2UKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgc3ltYm9sCisgICAgT1JERVIg QlkgZHQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChDQUxDKykKKyAgICBERUZJTkUgQ0FMQyBBUyAocHJpY2UgKyB2b2x1 bWUgLyAxMDApID4gMTYwCispCitPUkRFUiBCWSBkdDsKKyAgICAgZHQgICAgIHwgcHJpY2UgfCB2 b2x1bWUgfCBjbnQgCistLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0tLQorIDAxLTAx LTIwMjQgfCAgIDE1MCB8ICAgMTAwMCB8ICAgMAorIDAxLTAyLTIwMjQgfCAgIDE1NSB8ICAgMTIw MCB8ICAgNAorIDAxLTAzLTIwMjQgfCAgIDE1MiB8ICAgIDkwMCB8ICAgMAorIDAxLTA0LTIwMjQg fCAgIDE2MCB8ICAgMTUwMCB8ICAgMAorIDAxLTA1LTIwMjQgfCAgIDE1OCB8ICAgMTEwMCB8ICAg MAorKDUgcm93cykKKworRFJPUCBUQUJMRSBzdG9ja19wcmljZTsKKy0tIEF1dG8tZ2VuZXJhdGVk IERFRklORQorQ1JFQVRFIFRBQkxFIHJwcl9hdXRvIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJU IElOVE8gcnByX2F1dG8gVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCksICg0LCAxNSk7 CistLSBPbmUgdmFyaWFibGUgdW5kZWZpbmVkIChCIGF1dG8tZ2VuZXJhdGVkIGFzICJCIElTIFRS VUUiKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2F1 dG8KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIEIqKQorICAg IERFRklORSBBIEFTIHZhbCA+IDE1CispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAK Ky0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAzCisgIDMg fCAgMzAgfCAgIDAKKyAgNCB8ICAxNSB8ICAgMAorKDQgcm93cykKKworLS0gTXVsdGlwbGUgdW5k ZWZpbmVkIHZhcmlhYmxlcworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX2F1dG8KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEEgQiBDKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICAtLSBCIGFuZCBDIGF1dG8tZ2Vu ZXJhdGVkIGFzICJCIElTIFRSVUUiLCAiQyBJUyBUUlVFIgorKQorT1JERVIgQlkgaWQ7CisgaWQg fCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAy MCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgMTUgfCAgIDAKKyg0IHJvd3MpCisKKy0t IEFsbCB2YXJpYWJsZXMgZGVmaW5lZCBleHBsaWNpdGx5CitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfYXV0bworV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoWCBZIFopCisgICAgREVGSU5FCisgICAgICAgIFggQVMgdmFsID4g MTAsCisgICAgICAgIFkgQVMgdmFsID4gMjAsCisgICAgICAgIFogQVMgdmFsIDwgMjAKKykKK09S REVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEw IHwgICAwCisgIDIgfCAgMjAgfCAgIDMKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDE1IHwgICAw CisoNCByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9hdXRvOworLS0gRHVwbGljYXRlIHZhcmlhYmxl IG5hbWVzCitDUkVBVEUgVEFCTEUgcnByX2R1cCAoaWQgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9k dXAgVkFMVUVTICgxKSwgKDIpOworLS0gRHVwbGljYXRlIERFRklORSB2YXJpYWJsZSBuYW1lIGlz IG5vdCBhbGxvd2VkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9kdXAKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IGlkID4gMCwgQSBBUyBpZCA8IDEwCispOworRVJST1I6ICBERUZJTkUgdmFyaWFibGUgImEiIGFw cGVhcnMgbW9yZSB0aGFuIG9uY2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIGlkID4gMCwgQSBB UyBpZCA8IDEwCisgICAgICAgICAgICAgICAgICAgXgorRFJPUCBUQUJMRSBycHJfZHVwOworLS0g Qm9vbGVhbiBjb2VyY2lvbgorQ1JFQVRFIFRBQkxFIHJwcl9ib29sIChpZCBJTlQsIGZsYWcgQk9P TEVBTik7CitJTlNFUlQgSU5UTyBycHJfYm9vbCBWQUxVRVMgKDEsIHRydWUpLCAoMiwgZmFsc2Up OworLS0gREVGSU5FIGNsYXVzZSBtdXN0IGJlIGEgYm9vbGVhbiBleHByZXNzaW9uCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib29sCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBpZAorKTsKK0VSUk9SOiAgYXJn dW1lbnQgb2YgREVGSU5FIG11c3QgYmUgdHlwZSBib29sZWFuLCBub3QgdHlwZSBpbnRlZ2VyCitM SU5FIDc6ICAgICBERUZJTkUgQSBBUyBpZAorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g Qm9vbGVhbiBjb2x1bW4gcmVmZXJlbmNlCitTRUxFQ1QgaWQsIGZsYWcsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX2Jvb2wKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKFQrKQorICAgIERFRklORSBUIEFTIGZsYWcKKykKK09SREVSIEJZIGlkOworIGlk IHwgZmxhZyB8IGNudCAKKy0tLS0rLS0tLS0tKy0tLS0tCisgIDEgfCB0ICAgIHwgICAxCisgIDIg fCBmICAgIHwgICAwCisoMiByb3dzKQorCistLSBOVUxMOjpib29sZWFuCitTRUxFQ1QgaWQsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2Jvb2wKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKE4rKQorICAgIERFRklORSBOIEFTIE5VTEw6OmJvb2xlYW4K KykKK09SREVSIEJZIGlkOworIGlkIHwgY250IAorLS0tLSstLS0tLQorICAxIHwgICAwCisgIDIg fCAgIDAKKygyIHJvd3MpCisKKy0tIEltcGxpY2l0IGNhc3QgdG8gYm9vbGVhbiB2aWEgY3VzdG9t IHR5cGUKK0NSRUFURSBUWVBFIHRydXRoeWludCBBUyAodiBpbnQpOworQ1JFQVRFIEZVTkNUSU9O IHRydXRoeWludF90b19ib29sKHRydXRoeWludCkgUkVUVVJOUyBib29sZWFuIEFTICQkCisgIFNF TEVDVCAoJDEpLnYgPD4gMDsKKyQkIExBTkdVQUdFIFNRTCBJTU1VVEFCTEUgU1RSSUNUOworQ1JF QVRFIENBU1QgKHRydXRoeWludCBBUyBib29sZWFuKQorICBXSVRIIEZVTkNUSU9OIHRydXRoeWlu dF90b19ib29sKHRydXRoeWludCkKKyAgQVMgQVNTSUdOTUVOVDsKK0NSRUFURSBUQUJMRSBycHJf Y29lcmNlIChpZCBpbnQsIHZhbCB0cnV0aHlpbnQpOworSU5TRVJUIElOVE8gcnByX2NvZXJjZSBW QUxVRVMgKDEsIFJPVygxKSksICgyLCBST1coMCkpLCAoMywgUk9XKDUpKSwgKDQsIFJPVygwKSk7 CitTRUxFQ1QgaWQsIHZhbCwgY250CitGUk9NIChTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICAgICAg ICBDT1VOVCgqKSBPVkVSIHcgQVMgY250CisgICAgICBGUk9NIHJwcl9jb2VyY2UKKyAgICAgIFdJ TkRPVyB3IEFTICgKKyAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgIFBBVFRFUk4g KEErKQorICAgICAgICAgIERFRklORSBBIEFTIHZhbAorICAgICAgKQorKSBzIE9SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgKDEpIHwgICAxCisg IDIgfCAoMCkgfCAgIDAKKyAgMyB8ICg1KSB8ICAgMQorICA0IHwgKDApIHwgICAwCisoNCByb3dz KQorCitEUk9QIFRBQkxFIHJwcl9jb2VyY2U7CitEUk9QIENBU1QgKHRydXRoeWludCBBUyBib29s ZWFuKTsKK0RST1AgRlVOQ1RJT04gdHJ1dGh5aW50X3RvX2Jvb2wodHJ1dGh5aW50KTsKK0RST1Ag VFlQRSB0cnV0aHlpbnQ7CitEUk9QIFRBQkxFIHJwcl9ib29sOworLS0gQ29tcGxleCBleHByZXNz aW9ucworQ1JFQVRFIFRBQkxFIHJwcl9jb21wbGV4IChpZCBJTlQsIHZhbDEgSU5ULCB2YWwyIElO VCk7CitJTlNFUlQgSU5UTyBycHJfY29tcGxleCBWQUxVRVMgKDEsIDEwLCAyMCksICgyLCAxNSwg MjUpLCAoMywgMjAsIDMwKTsKKy0tIENBU0UgZXhwcmVzc2lvbgorU0VMRUNUIGlkLCB2YWwxLCB2 YWwyLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9jb21wbGV4CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDKykKKyAgICBERUZJTkUgQyBBUyBDQVNF IFdIRU4gdmFsMSA+IDEwIFRIRU4gdmFsMiA+IDIwIEVMU0UgZmFsc2UgRU5ECispCitPUkRFUiBC WSBpZDsKKyBpZCB8IHZhbDEgfCB2YWwyIHwgY250IAorLS0tLSstLS0tLS0rLS0tLS0tKy0tLS0t CisgIDEgfCAgIDEwIHwgICAyMCB8ICAgMAorICAyIHwgICAxNSB8ICAgMjUgfCAgIDIKKyAgMyB8 ICAgMjAgfCAgIDMwIHwgICAwCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9jb21wbGV4Owor LS0gUGF0dGVybiB2YXJpYWJsZSBub3QgaW4gUEFUVEVSTiAoc2hvdWxkIGJlIGlnbm9yZWQpCitD UkVBVEUgVEFCTEUgcnByX3VudXNlZCAoaWQgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl91bnVzZWQg VkFMVUVTICgxKSwgKDIpOworLS0gRXh0cmEgREVGSU5FIHZhcmlhYmxlCitTRUxFQ1QgaWQsIENP VU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3VudXNlZAorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgaWQgPiAwLCBCIEFT IGlkID4gNSAgLS0gQiBub3QgaW4gcGF0dGVybgorKQorT1JERVIgQlkgaWQ7CitFUlJPUjogIERF RklORSB2YXJpYWJsZSAiYiIgaXMgbm90IHVzZWQgaW4gUEFUVEVSTgorTElORSA3OiAgICAgREVG SU5FIEEgQVMgaWQgPiAwLCBCIEFTIGlkID4gNSAgLS0gQiBub3QgaW4gcGF0dGVybgorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitEUk9QIFRBQkxFIHJwcl91bnVzZWQ7CistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEZSQU1FIE9wdGlvbnMgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHJwcl9mcmFt ZSAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9mcmFtZSBWQUxVRVMKKyAgICAo MSwgMTApLCAoMiwgMTApLCAoMywgMTApLCAgLS0gU2FtZSB2YWw6IDEwCisgICAgKDQsIDIwKSwg KDUsIDIwKSwgICAgICAgICAgIC0tIFNhbWUgdmFsOiAyMAorICAgICg2LCAzMCk7CistLSBWYWxp ZCBmcmFtZSBvcHRpb25zCistLSBST1dTOiBjb3VudHMgcGh5c2ljYWwgcm93cyAoMSBGT0xMT1dJ TkcgPSBuZXh0IDEgcGh5c2ljYWwgcm93KQorLS0gRXhwZWN0ZWQgcmVzdWx0OiBFYWNoIHJvdyBj YW4gc2VlIDEgcGh5c2ljYWwgcm93IGFoZWFkCistLSBpZD0xLDIsMyAodmFsPTEwKTogY2FuIHNl ZSBuZXh0IHJvdyAtPiBjbnQ9MgorLS0gaWQ9NCw1ICh2YWw9MjApOiBjYW4gc2VlIG5leHQgcm93 IC0+IGNudD0yCistLSBpZD02ICh2YWw9MzApOiBubyBuZXh0IHJvdyAtPiBjbnQ9MQorLS0gUmVz dWx0OiBbMiwyLDIsMiwyLDFdCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB2YWwKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQj8pCisgICAgREVGSU5FIEEgQVMgdmFs ID49IDAsIEIgQVMgdmFsID49IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAor LS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMTAgfCAgIDIKKyAgMyB8 ICAxMCB8ICAgMgorICA0IHwgIDIwIHwgICAyCisgIDUgfCAgMjAgfCAgIDIKKyAgNiB8ICAzMCB8 ICAgMQorKDYgcm93cykKKworLS0gRVJST1I6IGZyYW1lIG11c3Qgc3RhcnQgYXQgY3VycmVudCBy b3cgd2hlbiByb3cgcGF0dGVybiByZWNvZ25pdGlvbiBpcyB1c2VkCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIFVOQk9VTkRFRCBQUkVDRURJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6 ICBGUkFNRSBtdXN0IHN0YXJ0IGF0IENVUlJFTlQgUk9XIHdoZW4gdXNpbmcgcm93IHBhdHRlcm4g cmVjb2duaXRpb24KK0xJTkUgNTogICAgIFJPV1MgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5H IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICBeCitERVRBSUw6ICBDdXJyZW50 IGZyYW1lIHN0YXJ0cyB3aXRoIFVOQk9VTkRFRCBQUkVDRURJTkcuCitISU5UOiAgVXNlOiBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIC4uLgorLS0gRVhDTFVERSBvcHRpb25zCistLSBFWENM VURFIG5vdCBwZXJtaXR0ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1l CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBFWENMVURFIENVUlJFTlQgUk9XCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgY2Fu bm90IHVzZSBFWENMVURFIG9wdGlvbnMgd2l0aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbgorTElO RSA2OiAgICAgRVhDTFVERSBDVVJSRU5UIFJPVworICAgICAgICAgICAgXgorREVUQUlMOiAgRnJh bWUgZGVmaW5pdGlvbiBpbmNsdWRlcyBFWENMVURFIENVUlJFTlQgUk9XLgorSElOVDogIFJlbW92 ZSB0aGUgRVhDTFVERSBjbGF1c2UgZnJvbSB0aGUgd2luZG93IGRlZmluaXRpb24uCistLSBFWENM VURFIEdST1VQIG5vdCBwZXJtaXR0ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnBy X2ZyYW1lCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBFWENMVURFIEdST1VQCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgY2Fu bm90IHVzZSBFWENMVURFIG9wdGlvbnMgd2l0aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbgorTElO RSA2OiAgICAgRVhDTFVERSBHUk9VUAorICAgICAgICAgICAgXgorREVUQUlMOiAgRnJhbWUgZGVm aW5pdGlvbiBpbmNsdWRlcyBFWENMVURFIEdST1VQLgorSElOVDogIFJlbW92ZSB0aGUgRVhDTFVE RSBjbGF1c2UgZnJvbSB0aGUgd2luZG93IGRlZmluaXRpb24uCistLSBFWENMVURFIFRJRVMgbm90 IHBlcm1pdHRlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZnJhbWUKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEVYQ0xVREUgVElFUworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIGNhbm5vdCB1c2UgRVhDTFVE RSBvcHRpb25zIHdpdGggcm93IHBhdHRlcm4gcmVjb2duaXRpb24KK0xJTkUgNjogICAgIEVYQ0xV REUgVElFUworICAgICAgICAgICAgXgorREVUQUlMOiAgRnJhbWUgZGVmaW5pdGlvbiBpbmNsdWRl cyBFWENMVURFIFRJRVMuCitISU5UOiAgUmVtb3ZlIHRoZSBFWENMVURFIGNsYXVzZSBmcm9tIHRo ZSB3aW5kb3cgZGVmaW5pdGlvbi4KKy0tIHJhbmdlIGZyYW1lIGlzIG5vdCBhbGxvd2VkIHdpdGgg UlBSCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUkFOR0UgQkVUV0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5H IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgdmFsID4gMAorKTsKK0VSUk9SOiAgY2Fubm90IHVzZSBGUkFNRSBvcHRpb24gUkFOR0Ugd2l0 aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbgorTElORSA1OiAgICAgUkFOR0UgQkVUV0VFTiBVTkJP VU5ERUQgUFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU4uLi4KKyAgICAgICAgICAgIF4K K0hJTlQ6ICBVc2UgUk9XUyBpbnN0ZWFkLgorLS0gR1JPVVBTIGZyYW1lIGlzIG5vdCBhbGxvd2Vk IHdpdGggUlBSCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgR1JPVVBTIEJFVFdFRU4gVU5CT1VOREVEIFBS RUNFRElORyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIGNhbm5vdCB1c2UgRlJBTUUgb3B0aW9uIEdS T1VQUyB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uCitMSU5FIDU6ICAgICBHUk9VUFMgQkVU V0VFTiBVTkJPVU5ERUQgUFJFQ0VESU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSS4uLgorICAgICAg ICAgICAgXgorSElOVDogIFVzZSBST1dTIGluc3RlYWQuCistLSBFUlJPUjogZnJhbWUgbXVzdCBz dGFydCBhdCBjdXJyZW50IHJvdyB3aGVuIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGlzIHVzZWQK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2ZyYW1lCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gMSBQUkVDRURJTkcgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworRVJST1I6ICBGUkFNRSBtdXN0IHN0YXJ0IGF0IENVUlJFTlQgUk9XIHdoZW4gdXNpbmcgcm93 IHBhdHRlcm4gcmVjb2duaXRpb24KK0xJTkUgNTogICAgIFJPV1MgQkVUV0VFTiAxIFBSRUNFRElO RyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgXgorREVUQUlMOiAgQ3VycmVu dCBmcmFtZSBzdGFydHMgd2l0aCBvZmZzZXQgUFJFQ0VESU5HLgorSElOVDogIFVzZTogUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCAuLi4KKy0tIEVSUk9SOiBmcmFtZSBtdXN0IHN0YXJ0IGF0 IGN1cnJlbnQgcm93IHdpdGggUlBSCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9m cmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIDEg Rk9MTE9XSU5HIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgRlJBTUUgbXVzdCBzdGFydCBhdCBDVVJS RU5UIFJPVyB3aGVuIHVzaW5nIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uCitMSU5FIDU6ICAgICBS T1dTIEJFVFdFRU4gMSBGT0xMT1dJTkcgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgIF4KK0RFVEFJTDogIEN1cnJlbnQgZnJhbWUgc3RhcnRzIHdpdGggb2Zmc2V0IEZPTExPV0lO Ry4KK0hJTlQ6ICBVc2U6IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgLi4uCistLSBFUlJP UjogZW5kIGJlZm9yZSBzdGFydDogQ1VSUkVOVCBST1cgQU5EIDEgUFJFQ0VESU5HCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIFBSRUNFRElORworICAg IFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIGZyYW1l IHN0YXJ0aW5nIGZyb20gY3VycmVudCByb3cgY2Fubm90IGhhdmUgcHJlY2VkaW5nIHJvd3MKK0xJ TkUgNTogICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBQUkVDRURJTkcKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6IGVuZCBiZWZv cmUgc3RhcnQ6IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgUFJFQ0VESU5HCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgUFJFQ0VESU5H CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAg ZnJhbWUgZW5kIGNhbm5vdCBiZSBVTkJPVU5ERUQgUFJFQ0VESU5HCitMSU5FIDU6ICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBQUkVDRURJTkcKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gU2luZ2xlIHJvdyBmcmFtZTogQ1VS UkVOVCBST1cgQU5EIENVUlJFTlQgUk9XIGlzIHJlamVjdGVkICh0aGUgc3RhbmRhcmQKKy0tIGFs bG93cyBvbmx5IFVOQk9VTkRFRCBGT0xMT1dJTkcgb3IgYSBwb3NpdGl2ZSBvZmZzZXQgRk9MTE9X SU5HKS4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9m cmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBDVVJSRU5UIFJPVworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZ IGlkOworRVJST1I6ICBjYW5ub3QgdXNlIENVUlJFTlQgUk9XIGFzIGZyYW1lIGVuZCB3aXRoIHJv dyBwYXR0ZXJuIHJlY29nbml0aW9uCitMSU5FIDU6ICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIENVUlJFTlQgUk9XCisgICAgICAgICAgICBeCitISU5UOiAgVXNlIFVOQk9VTkRFRCBG T0xMT1dJTkcgb3IgYSBwb3NpdGl2ZSBvZmZzZXQgRk9MTE9XSU5HLgorLS0gWmVybyBvZmZzZXQ6 IENVUlJFTlQgUk9XIEFORCAwIEZPTExPV0lORyBkZW5vdGVzIHRoZSBzYW1lIG9uZS1yb3cgZnJh bWUKKy0tIGFuZCBpcyBsaWtld2lzZSByZWplY3RlZCAoY2F1Z2h0IGF0IGV4ZWN1dGlvbiB0aW1l KS4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFt ZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCAwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlk OworRVJST1I6ICBmcmFtZSBlbmRpbmcgb2Zmc2V0IG11c3QgYmUgcG9zaXRpdmUgd2l0aCByb3cg cGF0dGVybiByZWNvZ25pdGlvbgorLS0gQSBub24tY29uc3RhbnQgZnJhbWUgZW5kIG9mZnNldCBp cyBhbGxvd2VkOyBhIHplcm8gdmFsdWUgaXMgc3RpbGwgcmVqZWN0ZWQsCistLSB0aGlzIHRpbWUg YXQgZXhlY3V0aW9uIHRpbWUgKGEgbGl0ZXJhbCBjYW5ub3QgZXhlcmNpc2UgdGhhdCBwYXRoKS4K K1BSRVBBUkUgcnByX2VuZF9vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAkMSBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKK0VYRUNVVEUgcnByX2VuZF9vZmZzZXQo Mik7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDEK KyAgMiB8ICAxMCB8ICAgMQorICAzIHwgIDEwIHwgICAxCisgIDQgfCAgMjAgfCAgIDEKKyAgNSB8 ICAyMCB8ICAgMQorICA2IHwgIDMwIHwgICAxCisoNiByb3dzKQorCitFWEVDVVRFIHJwcl9lbmRf b2Zmc2V0KDApOworRVJST1I6ICBmcmFtZSBlbmRpbmcgb2Zmc2V0IG11c3QgYmUgcG9zaXRpdmUg d2l0aCByb3cgcGF0dGVybiByZWNvZ25pdGlvbgorREVBTExPQ0FURSBycHJfZW5kX29mZnNldDsK Ky0tIExhcmdlIG9mZnNldDogQ1VSUkVOVCBST1cgQU5EIDEwMDAgRk9MTE9XSU5HCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg MTAwMCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQg fCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDYKKyAgMiB8ICAx MCB8ICAgNQorICAzIHwgIDEwIHwgICA0CisgIDQgfCAgMjAgfCAgIDMKKyAgNSB8ICAyMCB8ICAg MgorICA2IHwgIDMwIHwgICAxCisoNiByb3dzKQorCistLSBNYXhpbXVtIG9mZnNldDogQ1VSUkVO VCBST1cgQU5EIDIxNDc0ODM2NDYgRk9MTE9XSU5HIChJTlRfTUFYIC0gMSkKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9mcmFtZQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyMTQ3 NDgzNjQ2IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgNgorICAyIHwg IDEwIHwgICA1CisgIDMgfCAgMTAgfCAgIDQKKyAgNCB8ICAyMCB8ICAgMworICA1IHwgIDIwIHwg ICAyCisgIDYgfCAgMzAgfCAgIDEKKyg2IHJvd3MpCisKKy0tIGludDY0IGZyYW1lLWVuZCBvdmVy ZmxvdzogYSBodWdlIEZPTExPV0lORyBvZmZzZXQgbXVzdCBjbGFtcCB0byB0aGUKKy0tIHBhcnRp dGlvbiBlbmQgKG1hdGNoU3RhcnRSb3cgKyBvZmZzZXQgKyAxIG92ZXJmbG93cyBpbnQ2NDsgdGhl IGNsYW1wIG1ha2VzCistLSBpdCBiZWhhdmUgbGlrZSBVTkJPVU5ERUQgRk9MTE9XSU5HKS4gIEd1 YXJkcyBhZ2FpbnN0IHNpZ25lZC1pbnRlZ2VyIG92ZXJmbG93CistLSBpbiB0aGUgImZyYW1lT2Zm c2V0ICsgMSIgc3ViZXhwcmVzc2lvbiAodW5kZWZpbmVkIGJlaGF2aW9yKS4gIFRoZSBjbnQgdmFs dWVzCistLSBtdXN0IG1hdGNoIHRoZSBVTkJPVU5ERUQgRk9MTE9XSU5HIHJlc3VsdCBmb3IgdGhl IHNhbWUgZGF0YS4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9N IHJwcl9mcmFtZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCA5MjIzMzcyMDM2ODU0Nzc1ODA2IEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0t LS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgNgorICAyIHwgIDEwIHwgICA1CisgIDMgfCAgMTAgfCAg IDQKKyAgNCB8ICAyMCB8ICAgMworICA1IHwgIDIwIHwgICAyCisgIDYgfCAgMzAgfCAgIDEKKyg2 IHJvd3MpCisKKy0tIHJhbmdlIGZyYW1lIGlzIG5vdCBhbGxvd2VkIHdpdGggUlBSCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSB2YWwKKyAgICBSQU5HRSBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCAxMCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSBCPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMCwgQiBBUyB2YWwgPj0gMAorKQor T1JERVIgQlkgaWQ7CitFUlJPUjogIGNhbm5vdCB1c2UgRlJBTUUgb3B0aW9uIFJBTkdFIHdpdGgg cm93IHBhdHRlcm4gcmVjb2duaXRpb24KK0xJTkUgNTogICAgIFJBTkdFIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIDEwIEZPTExPV0lORworICAgICAgICAgICAgXgorSElOVDogIFVzZSBST1dTIGlu c3RlYWQuCistLSBHUk9VUFMgZnJhbWUgd2l0aCBSUFIgKG5vdCBwZXJtaXR0ZWQpCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfZnJhbWUKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSB2YWwKKyAgICBHUk9VUFMgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgMSBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFU VEVSTiAoQSBCPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPj0gMCwgQiBBUyB2YWwgPj0gMAorKQor T1JERVIgQlkgaWQ7CitFUlJPUjogIGNhbm5vdCB1c2UgRlJBTUUgb3B0aW9uIEdST1VQUyB3aXRo IHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uCitMSU5FIDU6ICAgICBHUk9VUFMgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcKKyAgICAgICAgICAgIF4KK0hJTlQ6ICBVc2UgUk9XUyBp bnN0ZWFkLgorRFJPUCBUQUJMRSBycHJfZnJhbWU7CistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFBBUlRJVElPTiBCWSAr IEZSQU1FIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3QgUEFSVElUSU9OIEJZIHdpdGggUlBSIHRvIGVu c3VyZSBwcm9wZXIgcGFydGl0aW9uaW5nIGJlaGF2aW9yCitDUkVBVEUgVEFCTEUgcnByX3BhcnRp dGlvbiAoaWQgSU5ULCBncnAgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9wYXJ0aXRp b24gVkFMVUVTCisgICAgKDEsIDEsIDEwKSwgKDIsIDEsIDIwKSwgKDMsIDEsIDMwKSwKKyAgICAo NCwgMiwgMTUpLCAoNSwgMiwgMjUpLCAoNiwgMiwgMzUpOworLS0gUEFSVElUSU9OIEJZIHdpdGgg Uk9XUyBmcmFtZQorU0VMRUNUIGlkLCBncnAsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfcGFydGl0aW9uCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGdycAor ICAgIE9SREVSIEJZIHZhbAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIHZhbCA+PSAxMCwgQiBBUyB2YWwgPiAxNQorKQor T1JERVIgQlkgaWQ7CisgaWQgfCBncnAgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tKy0t LS0tCisgIDEgfCAgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAgMSB8ICAyMCB8ICAgMgorICAzIHwg ICAxIHwgIDMwIHwgICAwCisgIDQgfCAgIDIgfCAgMTUgfCAgIDMKKyAgNSB8ICAgMiB8ICAyNSB8 ICAgMgorICA2IHwgICAyIHwgIDM1IHwgICAwCisoNiByb3dzKQorCistLSBFeHBlY3RlZDogUGF0 dGVybiBtYXRjaGluZyBzaG91bGQgcmVzZXQgZm9yIGVhY2ggcGFydGl0aW9uCistLSBQQVJUSVRJ T04gQlkgd2l0aCBSQU5HRSBmcmFtZQorU0VMRUNUIGlkLCBncnAsIHZhbCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfcGFydGl0aW9uCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElU SU9OIEJZIGdycAorICAgIE9SREVSIEJZIHZhbAorICAgIFJBTkdFIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIDEwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAg ICBQQVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+PSAxMCwgQiBBUyB2YWwgPj0g MjAKKykKK09SREVSIEJZIGlkOworRVJST1I6ICBjYW5ub3QgdXNlIEZSQU1FIG9wdGlvbiBSQU5H RSB3aXRoIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uCitMSU5FIDY6ICAgICBSQU5HRSBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCAxMCBGT0xMT1dJTkcKKyAgICAgICAgICAgIF4KK0hJTlQ6ICBVc2Ug Uk9XUyBpbnN0ZWFkLgorRFJPUCBUQUJMRSBycHJfcGFydGl0aW9uOworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBQQVRU RVJOIFN5bnRheCBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUgVEFCTEUgcnByX3BhdHRlcm4gKGlkIElO VCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfcGF0dGVybiBWQUxVRVMKKyAgICAoMSwgNSks ICgyLCAxMCksICgzLCAxNSksICg0LCAyMCksICg1LCAyNSksCisgICAgKDYsIDMwKSwgKDcsIDM1 KSwgKDgsIDQwKSwgKDksIDQ1KSwgKDEwLCA1MCk7CistLSBBbHRlcm5hdGlvbiAofCkKKy0tIE11 bHRpcGxlIGFsdGVybmF0aXZlcworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3BhdHRlcm4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErIHwgQisgfCBDKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAzNSwgQiBBUyB2YWwg QkVUV0VFTiAxNSBBTkQgMzUsIEMgQVMgdmFsIDwgMTUKKykKK09SREVSIEJZIGlkOworIGlkIHwg dmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgICA1IHwgICAyCisgIDIgfCAgMTAg fCAgIDAKKyAgMyB8ICAxNSB8ICAgNQorICA0IHwgIDIwIHwgICAwCisgIDUgfCAgMjUgfCAgIDAK KyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAwCisgIDggfCAgNDAgfCAgIDMKKyAgOSB8 ICA0NSB8ICAgMAorIDEwIHwgIDUwIHwgICAwCisoMTAgcm93cykKKworLS0gR3JvdXBpbmcKKy0t IE5lc3RlZCBncm91cGluZyB3aXRoIHF1YW50aWZpZXIKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOICgoKEEgQikgQykrKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEw LCBCIEFTIHZhbCA+IDIwLCBDIEFTIHZhbCA+IDMwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZh bCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAgNSB8ICAgMAorICAyIHwgIDEwIHwg ICAwCisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8ICAyMCB8ICAgMAorICA1IHwgIDI1IHwgICA2Cisg IDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDQwIHwgICAwCisgIDkgfCAg NDUgfCAgIDAKKyAxMCB8ICA1MCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIFNlcXVlbmNlCistLSBN dWx0aS1lbGVtZW50IHNlcXVlbmNlCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfcGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA8IDE1LAor ICAgICAgICBCIEFTIHZhbCBCRVRXRUVOIDE1IEFORCAyNSwKKyAgICAgICAgQyBBUyB2YWwgQkVU V0VFTiAyNSBBTkQgMzUsCisgICAgICAgIEQgQVMgdmFsIEJFVFdFRU4gMzUgQU5EIDQ1LAorICAg ICAgICBFIEFTIHZhbCA+PSA0NQorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCist LS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgIDUgfCAgIDAKKyAgMiB8ICAxMCB8ICAgMAorICAzIHwg IDE1IHwgICAwCisgIDQgfCAgMjAgfCAgIDAKKyAgNSB8ICAyNSB8ICAgMAorICA2IHwgIDMwIHwg ICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICA0MCB8ICAgMAorICA5IHwgIDQ1IHwgICAwCisg MTAgfCAgNTAgfCAgIDAKKygxMCByb3dzKQorCistLSBDb21wbGV4IGNvbWJpbmF0aW9ucworLS0g QWx0ZXJuYXRpb24gd2l0aCBncm91cGluZworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKK0ZST00gcnByX3BhdHRlcm4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKChBIEIpIHwgKEMgRCkpCisgICAgREVGSU5FIEEgQVMgdmFsIDwgMjAsIEIg QVMgdmFsID49IDIwLCBDIEFTIHZhbCA8IDMwLCBEIEFTIHZhbCA+PSAzMAorKQorT1JERVIgQlkg aWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgIDUgfCAgIDAK KyAgMiB8ICAxMCB8ICAgMAorICAzIHwgIDE1IHwgICAyCisgIDQgfCAgMjAgfCAgIDAKKyAgNSB8 ICAyNSB8ICAgMgorICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICA0MCB8 ICAgMAorICA5IHwgIDQ1IHwgICAwCisgMTAgfCAgNTAgfCAgIDAKKygxMCByb3dzKQorCistLSBB bHRlcm5hdGlvbiArIHNlcXVlbmNlICsgZ3JvdXBpbmcKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChTVEFSVCAoVVB7Mix9IERPV04/IHwgRkxBVCspIEZJTklTSCkK KyAgICBERUZJTkUKKyAgICAgICAgU1RBUlQgQVMgdmFsID49IDAsCisgICAgICAgIFVQIEFTIHZh bCA+IDIwLAorICAgICAgICBET1dOIEFTIHZhbCA8PSAzMCwKKyAgICAgICAgRkxBVCBBUyB2YWwg QkVUV0VFTiAyNSBBTkQgMzUsCisgICAgICAgIEZJTklTSCBBUyB2YWwgPiA0MAorKQorT1JERVIg QlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgIDUgfCAg IDAKKyAgMiB8ICAxMCB8ICAgMAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjAgfCAgIDcKKyAg NSB8ICAyNSB8ICAgMAorICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICA0 MCB8ICAgMAorICA5IHwgIDQ1IHwgICAwCisgMTAgfCAgNTAgfCAgIDAKKygxMCByb3dzKQorCist LSBOZXN0ZWQgYWx0ZXJuYXRpb24gaW4gZ3JvdXBzCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGF0dGVybgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQyB8IEQpKQorICAgIERFRklORSBBIEFTIHZhbCA8 IDE1LCBCIEFTIHZhbCBCRVRXRUVOIDE1IEFORCAyNSwgQyBBUyB2YWwgQkVUV0VFTiAyNSBBTkQg MzUsIEQgQVMgdmFsID4gMzUKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0t LSstLS0tLSstLS0tLQorICAxIHwgICA1IHwgICAwCisgIDIgfCAgMTAgfCAgIDAKKyAgMyB8ICAx NSB8ICAgMAorICA0IHwgIDIwIHwgICAyCisgIDUgfCAgMjUgfCAgIDAKKyAgNiB8ICAzMCB8ICAg MAorICA3IHwgIDM1IHwgICAwCisgIDggfCAgNDAgfCAgIDAKKyAgOSB8ICA0NSB8ICAgMAorIDEw IHwgIDUwIHwgICAwCisoMTAgcm93cykKKworRFJPUCBUQUJMRSBycHJfcGF0dGVybjsKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gUXVhbnRpZmllcnMgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHJwcl9xdWFudCAo aWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9xdWFudCBWQUxVRVMKKyAgICAoMSwg MTApLCAoMiwgMjApLCAoMywgMzApLCAoNCwgNDApLCAoNSwgNTApLAorICAgICg2LCA2MCksICg3 LCA3MCksICg4LCA4MCksICg5LCA5MCksICgxMCwgMTAwKTsKKy0tIEJhc2ljIGdyZWVkeSBxdWFu dGlmaWVycworLS0gKiAoemVybyBvciBtb3JlKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBp ZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxMAor ICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwg IDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwg ICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tICsg KG9uZSBvciBtb3JlKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwg fCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAg MAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2 IHwgIDYwIHwgICA1CisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkw IHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSA/ICh6ZXJvIG9yIG9uZSkK K1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFudAor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQT8pCisgICAgREVGSU5F IEEgQVMgdmFsID0gNTAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8 ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDEKKyAgNiB8ICA2MCB8ICAgMAor ICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwg MTAwIHwgICAwCisoMTAgcm93cykKKworLS0gRWRnZSBjYXNlIHF1YW50aWZpZXJzCistLSB7MH0g aXMgbm90IGFsbG93ZWQgKG1pbiBtdXN0IGJlID49IDEpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEF7MH0gQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxMDAwLCBC IEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworRVJST1I6ICBxdWFudGlmaWVyIGJvdW5kIG11 c3QgYmUgYmV0d2VlbiAxIGFuZCAyMTQ3NDgzNjQ2CitMSU5FIDY6ICAgICBQQVRURVJOIChBezB9 IEIpCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIHswLDB9IGlzIG5vdCBhbGxvd2VkICht YXggbXVzdCBiZSA+PSAxKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBezAsMH0gQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxMDAwLCBCIEFTIHZhbCA+IDAKKykK K09SREVSIEJZIGlkOworRVJST1I6ICBxdWFudGlmaWVyIGJvdW5kcyBtdXN0IGJlIGJldHdlZW4g MCBhbmQgMjE0NzQ4MzY0NiB3aXRoIG1heCA+PSAxCitMSU5FIDY6ICAgICBQQVRURVJOIChBezAs MH0gQikKKyAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gezAsMX0gKGVxdWl2YWxlbnQgdG8g PykKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9xdWFu dAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXswLDF9KQorICAg IERFRklORSBBIEFTIHZhbCA9IDUwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAK Ky0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMg fCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAxCisgIDYgfCAgNjAg fCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAK KyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIEV4YWN0IHF1YW50aWZpZXJzIHtufQor LS0gezN9IChyZXByZXNlbnRhdGl2ZSBleGFjdCBxdWFudGlmaWVyKQorU0VMRUNUIGlkLCB2YWws IENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezN9KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK KykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAx IHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQw IHwgICAzCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAz CisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAg cm93cykKKworLS0gUmFuZ2UgcXVhbnRpZmllcnMge24sfQorLS0gezIsfSAocmVwcmVzZW50YXRp dmUgbiBvciBtb3JlKQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZS T00gcnByX3F1YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ezIsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiA0MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2 YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8 ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgNgor ICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwg IDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBVcHBlciBib3VuZCBx dWFudGlmaWVycyB7LG19CistLSB7LDN9IChyZXByZXNlbnRhdGl2ZSB1cCB0byBtKQorU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3F1YW50CitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBeywzfSkKKyAgICBERUZJTkUgQSBB UyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0r LS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAK KyAgNCB8ICA0MCB8ICAgMworICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8 ICA3MCB8ICAgMworICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8 ICAgMQorKDEwIHJvd3MpCisKKy0tIFJhbmdlIHF1YW50aWZpZXJzIHtuLG19CistLSB7Myw3fSAo cmVwcmVzZW50YXRpdmUgcmFuZ2UpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfcXVhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEF7Myw3fSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsK KyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgNworICAy IHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUw IHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAz CisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKK0RST1AgVEFC TEUgcnByX3F1YW50OworLS0gUmVsdWN0YW50IHF1YW50aWZpZXJzCitDUkVBVEUgVEFCTEUgcnBy X3JlbHVjdGFudCAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9yZWx1Y3RhbnQg VkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCk7CistLSAqPyAoemVybyBvciBtb3JlLCBy ZWx1Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNo CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEqPykKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisgICAgIDAKKyAgICAgMAorKDMgcm93 cykKKworLS0gKz8gKG9uZSBvciBtb3JlLCByZWx1Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVhbnRp ZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9N IHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErPykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAg ICAxCisgICAgIDEKKyAgICAgMQorKDMgcm93cykKKworLS0gPz8gKHplcm8gb3Igb25lLCByZWx1 Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEE/PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAw CispOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisgICAgIDAKKyAgICAgMAorKDMgcm93cykK KworLS0ge24sfT8gKG4gb3IgbW9yZSwgcmVsdWN0YW50KQorLS0gUmVsdWN0YW50IHF1YW50aWZp ZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBy cHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB ezIsfT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAg ICAgMgorICAgICAwCisgICAgIDAKKygzIHJvd3MpCisKKy0tIHtuLG19PyAobiB0byBtLCByZWx1 Y3RhbnQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7MSwzfT8pCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMQorICAgICAxCisgICAgIDEKKygzIHJv d3MpCisKKy0tIHtufT8gKGV4YWN0bHkgbiwgcmVsdWN0YW50KQorLS0gUmVsdWN0YW50IHF1YW50 aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJP TSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBezJ9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQor ICAgICAyCisgICAgIDAKKyAgICAgMAorKDMgcm93cykKKworLS0geyxtfT8gKHVwIHRvIG0sIHJl bHVjdGFudCkgLSBDT01QTEVURUxZIFVOVEVTVEVEIFJVTEUhCistLSBSZWx1Y3RhbnQgcXVhbnRp ZmllcjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9N IHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7LDN9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQor ICAgICAwCisgICAgIDAKKyAgICAgMAorKDMgcm93cykKKworLS0gezJ9KyAoc2hvdWxkIGJlIHsy fT8gbm90IHsyfSspCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Mn0rKQorICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIr IgorTElORSA2OiAgICAgUEFUVEVSTiAoQXsyfSspCisgICAgICAgICAgICAgICAgICAgICAgICAg XgorLS0gezIsfSogKHNob3VsZCBiZSB7Mix9PyBub3QgezIsfSopCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEF7Mix9KikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6 ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKiIKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7Mix9 KikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0geywzfSogKHNob3VsZCBiZSB7LDN9 PyBub3QgeywzfSopCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDN9KikKKyAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAi KiIKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7LDN9KikKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgXgorLS0gezEsM30rIChzaG91bGQgYmUgezEsM30/IG5vdCB7MSwzfSspCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEF7MSwzfSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsK K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIisiCitMSU5FIDY6ICAgICBQQVRURVJO IChBezEsM30rKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gQm91bmRhcnkgZXJy b3JzIGluIHJlbHVjdGFudCBxdWFudGlmaWVycworLS0gbmVnYXRpdmUgYm91bmQgaXMgbm90IGFs bG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXstMX0/KQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICItIgorTElO RSA2OiAgICAgUEFUVEVSTiAoQXstMX0/KQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBF UlJPUjogcXVhbnRpZmllciBib3VuZCBleGNlZWRzIGxpbWl0cworU0VMRUNUIENPVU5UKCopIE9W RVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBezIxNDc0ODM2NDd9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOwor RVJST1I6ICBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAyMTQ3NDgzNjQ2 CitMSU5FIDY6ICAgICBQQVRURVJOIChBezIxNDc0ODM2NDd9PykKKyAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gbmVnYXRpdmUgbG93ZXIgYm91bmQgaXMgbm90IGFsbG93ZWQKK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQXstMSx9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp OworRVJST1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiLSIKK0xJTkUgNjogICAgIFBBVFRF Uk4gKEF7LTEsfT8pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiBxdWFudGlm aWVyIGxvd2VyIGJvdW5kIGV4Y2VlZHMgbGltaXRzCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitG Uk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEF7MjE0NzQ4MzY0Nyx9PykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6 ICBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMTQ3NDgzNjQ2CitMSU5F IDY6ICAgICBQQVRURVJOIChBezIxNDc0ODM2NDcsfT8pCisgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIHplcm8gdXBwZXIgYm91bmQgaXMgbm90IGFsbG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQXssMH0/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjog IHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYKK0xJTkUg NjogICAgIFBBVFRFUk4gKEF7LDB9PykKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVS Uk9SOiB7LDIxNDc0ODM2NDd9PyAodXBwZXIgYm91bmQgaW4gcmFuZ2UgZXhjZWVkcyBsaW1pdHMp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7LDIxNDc0ODM2NDd9PykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBxdWFudGlmaWVyIGJvdW5kIG11c3QgYmUgYmV0 d2VlbiAxIGFuZCAyMTQ3NDgzNjQ2CitMSU5FIDY6ICAgICBQQVRURVJOIChBeywyMTQ3NDgzNjQ3 fT8pCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogey0xLDN9PyAobmVnYXRp dmUgbG93ZXIgYm91bmQgaW4gcmFuZ2UgaXMgbm90IGFsbG93ZWQpCitTRUxFQ1QgQ09VTlQoKikg T1ZFUiB3CitGUk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEF7LTEsM30/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJP UjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICItIgorTElORSA2OiAgICAgUEFUVEVSTiAoQXst MSwzfT8pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiB7MSwyMTQ3NDgzNjQ3 fT8gKHVwcGVyIGJvdW5kIGluIHJhbmdlIGV4Y2VlZHMgbGltaXRzKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBezEsMjE0NzQ4MzY0N30/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK Kyk7CitFUlJPUjogIHF1YW50aWZpZXIgYm91bmRzIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyMTQ3 NDgzNjQ2IHdpdGggbWF4ID49IDEKK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7MSwyMTQ3NDgzNjQ3 fT8pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIEVSUk9SOiB7NSwzfT8gKG1pbiA+IG1h eCBpcyBub3QgYWxsb3dlZCkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVj dGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXs1LDN9PykK KyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBxdWFudGlmaWVyIG1pbmltdW0g Ym91bmQgbXVzdCBub3QgZXhjZWVkIG1heGltdW0KK0xJTkUgNjogICAgIFBBVFRFUk4gKEF7NSwz fT8pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIFRva2VuLXNlcGFyYXRlZCByZWx1Y3Rh bnQgcXVhbnRpZmllcnMgKHNwYWNlIGJldHdlZW4gcXVhbnRpZmllciBhbmQgPykKKy0tIFRoZXNl IG1heSBiZSB0b2tlbml6ZWQgZGlmZmVyZW50bHkgYnkgdGhlIGxleGVyCistLSAqID8gKHRva2Vu IHNlcGFyYXRlZCkKKy0tIFJlbHVjdGFudCBxdWFudGlmaWVyOiBwcmVmZXIgc2hvcnRlc3QgbWF0 Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3JlbHVjdGFudAorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSogPykKKyAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisgICAgIDAKKyAgICAgMAorKDMg cm93cykKKworLS0gKyA/ICh0b2tlbiBzZXBhcmF0ZWQpCistLSBSZWx1Y3RhbnQgcXVhbnRpZmll cjogcHJlZmVyIHNob3J0ZXN0IG1hdGNoCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJw cl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr ID8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAg MQorICAgICAxCisgICAgIDEKKygzIHJvd3MpCisKKy0tIHsyLH0gPyAodG9rZW4gc2VwYXJhdGVk KQorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9ydGVzdCBtYXRjaAorU0VMRUNU IENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIsfSA/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAK Kyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDIKKyAgICAgMAorICAgICAwCisoMyByb3dzKQor CistLSAqICsgKGludmFsaWQgY29tYmluYXRpb24pCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitG Uk9NIHJwcl9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEEqICspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgc3ludGF4IGVy cm9yIGF0IG9yIG5lYXIgIisiCitMSU5FIDY6ICAgICBQQVRURVJOIChBKiArKQorICAgICAgICAg ICAgICAgICAgICAgICAgXgorLS0gKyAqIChpbnZhbGlkIGNvbWJpbmF0aW9uKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOIChBKyAqKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitF UlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIqIgorTElORSA2OiAgICAgUEFUVEVSTiAo QSsgKikKKyAgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tID8gPyAocGFyc2VkIGFzID8/IHJl bHVjdGFudCBxdWFudGlmaWVyKQorLS0gUmVsdWN0YW50IHF1YW50aWZpZXI6IHByZWZlciBzaG9y dGVzdCBtYXRjaAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfcmVsdWN0YW50CitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBPyA/KQorICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKyk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAgMAorICAg ICAwCisoMyByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9yZWx1Y3RhbnQ7CistLSBRdWFudGlmaWVy IGJvdW5kYXJ5IGNvbmRpdGlvbnMKK0NSRUFURSBUQUJMRSBycHJfYm91bmRzIChpZCBJTlQpOwor SU5TRVJUIElOVE8gcnByX2JvdW5kcyBWQUxVRVMgKDEpLCAoMik7CistLSBFUlJPUjogcXVhbnRp ZmllciBsb3dlciBib3VuZCBtdXN0IG5vdCBleGNlZWQgdXBwZXIgYm91bmQKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcKK0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQXs1LDN9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKK0VSUk9S OiAgcXVhbnRpZmllciBtaW5pbXVtIGJvdW5kIG11c3Qgbm90IGV4Y2VlZCBtYXhpbXVtCitMSU5F IDY6ICAgICBQQVRURVJOIChBezUsM30pCisgICAgICAgICAgICAgICAgICAgICAgIF4KKy0tIExh cmdlIGJvdW5kcworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezEwMDAsMjAwMH0pCisgICAg REVGSU5FIEEgQVMgaWQgPiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisgICAgIDAK KygyIHJvd3MpCisKKy0tIFZlcnkgbGFyZ2UgYm91bmQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcK K0ZST00gcnByX2JvdW5kcworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQXsxMDAwMDB9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKKyBjb3VudCAKKy0tLS0t LS0KKyAgICAgMAorICAgICAwCisoMiByb3dzKQorCistLSBJTlRfTUFYIC0gMSA9IDIxNDc0ODM2 NDYgKGF0IGxpbWl0KQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91bmRzCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIxNDc0ODM2NDZ9KQor ICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKKyBjb3VudCAKKy0tLS0tLS0KKyAgICAgMAorICAg ICAwCisoMiByb3dzKQorCistLSBFUlJPUjogcXVhbnRpZmllciBib3VuZCBleGNlZWRzIGxpbWl0 cworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIxNDc0ODM2NDd9KQorICAgIERFRklORSBB IEFTIGlkID4gMAorKTsKK0VSUk9SOiAgcXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4g MSBhbmQgMjE0NzQ4MzY0NgorTElORSA2OiAgICAgUEFUVEVSTiAoQXsyMTQ3NDgzNjQ3fSkKKyAg ICAgICAgICAgICAgICAgICAgICAgXgorLS0ge24sfSBib3VuZGFyeSBlcnJvcnMKKy0tIEVSUk9S OiBuZWdhdGl2ZSBsb3dlciBib3VuZCBpbiB7bix9IGlzIG5vdCBhbGxvd2VkCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEF7LTEsfSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CitFUlJP UjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICItIgorTElORSA2OiAgICAgUEFUVEVSTiAoQXst MSx9KQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjogcXVhbnRpZmllciBsb3dl ciBib3VuZCBleGNlZWRzIGxpbWl0cworU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJf Ym91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezIxNDc0 ODM2NDcsfSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CitFUlJPUjogIHF1YW50aWZpZXIg Ym91bmQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDIxNDc0ODM2NDYKK0xJTkUgNjogICAgIFBBVFRF Uk4gKEF7MjE0NzQ4MzY0Nyx9KQorICAgICAgICAgICAgICAgICAgICAgICBeCistLSB7LG19IGJv dW5kYXJ5IGVycm9ycworLS0gWmVybyB1cHBlciBib3VuZCBpbiB7LG19CitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3CitGUk9NIHJwcl9ib3VuZHMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEF7LDB9KQorICAgIERFRklORSBBIEFTIGlkID4gMAorKTsKK0VSUk9SOiAg cXVhbnRpZmllciBib3VuZCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMjE0NzQ4MzY0NgorTElORSA2 OiAgICAgUEFUVEVSTiAoQXssMH0pCisgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJP UjogcXVhbnRpZmllciB1cHBlciBib3VuZCBleGNlZWRzIGxpbWl0cworU0VMRUNUIENPVU5UKCop IE9WRVIgdworRlJPTSBycHJfYm91bmRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBeywyMTQ3NDgzNjQ3fSkKKyAgICBERUZJTkUgQSBBUyBpZCA+IDAKKyk7CitF UlJPUjogIHF1YW50aWZpZXIgYm91bmQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDIxNDc0ODM2NDYK K0xJTkUgNjogICAgIFBBVFRFUk4gKEF7LDIxNDc0ODM2NDd9KQorICAgICAgICAgICAgICAgICAg ICAgICAgXgorRFJPUCBUQUJMRSBycHJfYm91bmRzOworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBOYXZpZ2F0aW9uIEZ1 bmN0aW9ucyBUZXN0cyAoUFJFViAvIE5FWFQgLyBGSVJTVCAvIExBU1QpCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NSRUFU RSBUQUJMRSBycHJfbmF2IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX25hdiBW QUxVRVMKKyAgICAoMSwgMTApLCAoMiwgMjApLCAoMywgMTUpLCAoNCwgMjUpLCAoNSwgMzApOwor LS0gUFJFViBmdW5jdGlvbiAtIHJlZmVyZW5jZSBwcmV2aW91cyByb3cgaW4gcGF0dGVybgorU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+IFBSRVYodmFsKQorKQorT1JE RVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAg fCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAzCisgIDQgfCAgMjUgfCAgIDAK KyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworLS0gTkVYVCBmdW5jdGlvbiAtIHJlZmVyZW5j ZSBuZXh0IHJvdyBpbiBwYXR0ZXJuCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFz IGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTIHZhbCA8IE5FWFQodmFsKSwKKyAg ICAgICAgQiBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAg MTUgfCAgIDMKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCist LSBDb21iaW5lZCBQUkVWIGFuZCBORVhUCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBIEIgQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAwLAorICAgICAg ICBCIEFTIHZhbCA+IFBSRVYodmFsKSBBTkQgdmFsIDwgTkVYVCh2YWwpLAorICAgICAgICBDIEFT IHZhbCA+IFBSRVYodmFsKQorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0t Ky0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1 IHwgICAzCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworLS0g UFJFViBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBvdGhlciB0aGFuIGluIERFRklORQorU0VMRUNU IFBSRVYoaWQpLCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9uYXYK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgdmFsID4gMCwKKyAgICAgICAgQiBBUyB2YWwgPiBQUkVWKHZhbCkK KykKK09SREVSIEJZIGlkOworRVJST1I6ICBjYW5ub3QgdXNlIHByZXYgb3V0c2lkZSBhIERFRklO RSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIFBSRVYoaWQpLCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CisgICAgICAgICAgICAgICBeCistLSBORVhUIGZ1bmN0aW9uIGNhbm5vdCBiZSB1 c2VkIG90aGVyIHRoYW4gaW4gREVGSU5FCitTRUxFQ1QgTkVYVChpZCksIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiAw LAorICAgICAgICBCIEFTIHZhbCA+IFBSRVYodmFsKQorKQorT1JERVIgQlkgaWQ7CitFUlJPUjog IGNhbm5vdCB1c2UgbmV4dCBvdXRzaWRlIGEgREVGSU5FIGNsYXVzZQorTElORSAxOiBTRUxFQ1Qg TkVYVChpZCksIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICAgICAgICAgICAg IF4KKy0tIEZJUlNUIGZ1bmN0aW9uIC0gcmVmZXJlbmNlIG1hdGNoX3N0YXJ0IHJvdworU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX25hdgorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyB2YWwgPiAwLAorICAgICAgICBCIEFTIHZhbCA+IEZJUlNUKHZhbCkKKykKK09SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwg ICA1CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMAorICA0IHwgIDI1IHwgICAwCisg IDUgfCAgMzAgfCAgIDAKKyg1IHJvd3MpCisKKy0tIExBU1QgZnVuY3Rpb24gd2l0aG91dCBvZmZz ZXQgLSBlcXVpdmFsZW50IHRvIGN1cnJlbnQgcm93J3MgdmFsdWUKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9uYXYKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdmFs ID4gMCwKKyAgICAgICAgQiBBUyBMQVNUKHZhbCkgPiBQUkVWKHZhbCkKKykKK09SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisg IDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMworICA0IHwgIDI1IHwgICAwCisgIDUgfCAg MzAgfCAgIDAKKyg1IHJvd3MpCisKKy0tIEZJUlNUIGFuZCBMQVNUIGNvbWJpbmVkCitTRUxFQ1Qg aWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbmF2CitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAg ICBBIEFTIHZhbCA+IDAsCisgICAgICAgIEIgQVMgdmFsID4gRklSU1QodmFsKSBBTkQgTEFTVCh2 YWwpID4gUFJFVih2YWwpCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0r LS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUg fCAgIDMKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCistLSBG SVJTVCBmdW5jdGlvbiBjYW5ub3QgYmUgdXNlZCBvdGhlciB0aGFuIGluIERFRklORQorU0VMRUNU IEZJUlNUKGlkKSwgaWQsIHZhbCBGUk9NIHJwcl9uYXY7CitFUlJPUjogIGNhbm5vdCB1c2UgZmly c3Qgb3V0c2lkZSBhIERFRklORSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIEZJUlNUKGlkKSwgaWQs IHZhbCBGUk9NIHJwcl9uYXY7CisgICAgICAgICAgICAgICBeCistLSBMQVNUIGZ1bmN0aW9uIGNh bm5vdCBiZSB1c2VkIG90aGVyIHRoYW4gaW4gREVGSU5FCitTRUxFQ1QgTEFTVChpZCksIGlkLCB2 YWwgRlJPTSBycHJfbmF2OworRVJST1I6ICBjYW5ub3QgdXNlIGxhc3Qgb3V0c2lkZSBhIERFRklO RSBjbGF1c2UKK0xJTkUgMTogU0VMRUNUIExBU1QoaWQpLCBpZCwgdmFsIEZST00gcnByX25hdjsK KyAgICAgICAgICAgICAgIF4KK0RST1AgVEFCTEUgcnByX25hdjsKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU0tJUCBU TyAvIElOSVRJQUwgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorQ1JFQVRFIFRBQkxFIHJwcl9za2lwIChpZCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3NraXAgVkFMVUVTCisgICAgKDEsIDEpLCAoMiwg MiksICgzLCAzKSwgKDQsIDQpLCAoNSwgNSksCisgICAgKDYsIDYpLCAoNywgNyksICg4LCA4KTsK Ky0tIFNLSVAgVE8gTkVYVCBST1cKKy0tIFNLSVAgVE8gTkVYVCBST1cKK1NFTEVDVCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9za2lwCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiAyLCBDIEFTIHZh bCA+IDQKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0t LQorICAxIHwgICAxIHwgICAwCisgIDIgfCAgIDIgfCAgIDAKKyAgMyB8ICAgMyB8ICAgMworICA0 IHwgICA0IHwgICAzCisgIDUgfCAgIDUgfCAgIDMKKyAgNiB8ICAgNiB8ICAgMworICA3IHwgICA3 IHwgICAwCisgIDggfCAgIDggfCAgIDAKKyg4IHJvd3MpCisKKy0tIFNLSVAgUEFTVCBMQVNUIFJP VworLS0gU0tJUCBQQVNUIExBU1QgUk9XCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3 IGFzIGNudAorRlJPTSBycHJfc2tpcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAg REVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiAyLCBDIEFTIHZhbCA+IDQKKykKK09SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgICAxIHwg ICAwCisgIDIgfCAgIDIgfCAgIDAKKyAgMyB8ICAgMyB8ICAgMworICA0IHwgICA0IHwgICAwCisg IDUgfCAgIDUgfCAgIDAKKyAgNiB8ICAgNiB8ICAgMworICA3IHwgICA3IHwgICAwCisgIDggfCAg IDggfCAgIDAKKyg4IHJvd3MpCisKKy0tIERlZmF1bHQgYmVoYXZpb3IgKHNob3VsZCBiZSBTS0lQ IFBBU1QgTEFTVCBST1cpCistLSBObyBTS0lQIFRPIGNsYXVzZSAoZGVmYXVsdCkKK1NFTEVDVCBp ZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9za2lwCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMCwgQiBBUyB2YWwgPiAxCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0t LS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAgMSB8ICAgMgorICAyIHwgICAyIHwgICAwCisgIDMgfCAg IDMgfCAgIDIKKyAgNCB8ICAgNCB8ICAgMAorICA1IHwgICA1IHwgICAyCisgIDYgfCAgIDYgfCAg IDAKKyAgNyB8ICAgNyB8ICAgMgorICA4IHwgICA4IHwgICAwCisoOCByb3dzKQorCistLSBDb21w YXJlIGRlZmF1bHQgd2l0aCBleHBsaWNpdCBQQVNUIExBU1QgUk9XCistLSBSZXN1bHRzIHNob3Vs ZCBiZSBpZGVudGljYWwKK1dJVEggZGVmYXVsdF9za2lwIEFTICgKKyAgICBTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gcnByX3NraXAKKyAgICBXSU5ET1cg dyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIgQykKKyAg ICAgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiAyLCBDIEFTIHZhbCA+IDQKKyAg ICApCispLAorZXhwbGljaXRfc2tpcCBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCop IE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9za2lwCisgICAgV0lORE9XIHcgQVMgKAorICAg ICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgICAgIFBBVFRFUk4gKEEgQiBDKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBC IEFTIHZhbCA+IDIsIEMgQVMgdmFsID4gNAorICAgICkKKykKK1NFTEVDVCAnZGVmYXVsdCcgYXMg dHlwZSwgKiBGUk9NIGRlZmF1bHRfc2tpcAorVU5JT04gQUxMCitTRUxFQ1QgJ2V4cGxpY2l0JyBh cyB0eXBlLCAqIEZST00gZXhwbGljaXRfc2tpcAorT1JERVIgQlkgdHlwZSwgaWQ7CisgICB0eXBl ICAgfCBpZCB8IHZhbCB8IGNudCAKKy0tLS0tLS0tLS0rLS0tLSstLS0tLSstLS0tLQorIGRlZmF1 bHQgIHwgIDEgfCAgIDEgfCAgIDAKKyBkZWZhdWx0ICB8ICAyIHwgICAyIHwgICAwCisgZGVmYXVs dCAgfCAgMyB8ICAgMyB8ICAgMworIGRlZmF1bHQgIHwgIDQgfCAgIDQgfCAgIDAKKyBkZWZhdWx0 ICB8ICA1IHwgICA1IHwgICAwCisgZGVmYXVsdCAgfCAgNiB8ICAgNiB8ICAgMworIGRlZmF1bHQg IHwgIDcgfCAgIDcgfCAgIDAKKyBkZWZhdWx0ICB8ICA4IHwgICA4IHwgICAwCisgZXhwbGljaXQg fCAgMSB8ICAgMSB8ICAgMAorIGV4cGxpY2l0IHwgIDIgfCAgIDIgfCAgIDAKKyBleHBsaWNpdCB8 ICAzIHwgICAzIHwgICAzCisgZXhwbGljaXQgfCAgNCB8ICAgNCB8ICAgMAorIGV4cGxpY2l0IHwg IDUgfCAgIDUgfCAgIDAKKyBleHBsaWNpdCB8ICA2IHwgICA2IHwgICAzCisgZXhwbGljaXQgfCAg NyB8ICAgNyB8ICAgMAorIGV4cGxpY2l0IHwgIDggfCAgIDggfCAgIDAKKygxNiByb3dzKQorCitE Uk9QIFRBQkxFIHJwcl9za2lwOworQ1JFQVRFIFRBQkxFIHJwcl9pbml0IChpZCBJTlQsIHZhbCBJ TlQpOworSU5TRVJUIElOVE8gcnByX2luaXQgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAz MCksICg0LCA0MCk7CistLSBFeHBsaWNpdCBJTklUSUFMCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQo KikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfaW5pdAorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQor ICAxIHwgIDEwIHwgICA0CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwg IDQwIHwgICAwCisoNCByb3dzKQorCistLSBJbXBsaWNpdCBJTklUSUFMIChkZWZhdWx0KQorU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX2luaXQKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFT IHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSst LS0tLQorICAxIHwgIDEwIHwgICA0CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAor ICA0IHwgIDQwIHwgICAwCisoNCByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9pbml0OworLS0gU0VF SworQ1JFQVRFIFRBQkxFIHJwcl9zZWVrIChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8g cnByX3NlZWsgVkFMVUVTICgxLCAxMCk7CistLSBTRUVLIGtleXdvcmQsIFNFRUsgbW9kZSBpcyBu b3Qgc3VwcG9ydGVkCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZWVrCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBTRUVLCisgICAgUEFUVEVSTiAoQSspCisgICAg REVGSU5FIEEgQVMgdmFsID4gMAorKTsKK0VSUk9SOiAgU0VFSyBpcyBub3Qgc3VwcG9ydGVkCitM SU5FIDY6ICAgICBTRUVLCisgICAgICAgICAgICBeCitISU5UOiAgVXNlIElOSVRJQUwgaW5zdGVh ZC4KK0RST1AgVEFCTEUgcnByX3NlZWs7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNlcmlhbGl6YXRpb24vRGVzZXJp YWxpemF0aW9uIFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJQUi1kZWZpbmluZyB2aWV3cyBhbmQgdGFibGVz IGhlcmUgYXJlIGludGVudGlvbmFsbHkgbGVmdCBpbiBwbGFjZSAobm90CistLSBkcm9wcGVkKSBz byB0aGF0IHBnX2R1bXAvcGdfdXBncmFkZSBleGVyY2lzZSB0aGUgZGVwYXJzZS10aGVuLXJlLXBh cnNlCistLSByb3VuZC10cmlwIG9mIHRoZSBSUFIgd2luZG93IGNsYXVzZS4KKy0tIFZpZXcgY3Jl YXRpb24gYW5kIGRlcGFyc2luZworQ1JFQVRFIFRBQkxFIHJwcl9zZXJpYWwgKGlkIElOVCwgdmFs IElOVCk7CitJTlNFUlQgSU5UTyBycHJfc2VyaWFsIFZBTFVFUworICAgICgxLCAxMCksICgyLCAy MCksICgzLCAxNSksICg0LCAyNSksICg1LCAzMCk7CistLSBTaW1wbGUgcGF0dGVybgorQ1JFQVRF IFZJRVcgcnByX3NlcmlhbF92MSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg UEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKKy0tIFZlcmlmeSB2aWV3 IHdvcmtzICh0ZXN0cyBkZXNlcmlhbGl6YXRpb24pCitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxf djEgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgIDUKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjUg fCAgIDAKKyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworLS0gVmVyaWZ5IGRlcGFyc2luZwor U0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3YxJzo6cmVnY2xhc3MpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjbnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBG Uk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYSspICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBE RUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHZhbCA+IDApICk7CisoMSByb3cpCisKKy0tIENv bXBsZXggcGF0dGVybiB3aXRoIGFsdGVybmF0aW9uCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3Yy IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2Vy aWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyB8IEIqKQor ICAgIERFRklORSBBIEFTIHZhbCA+IDIwLCBCIEFTIHZhbCA8PSAyMAorKTsKK1NFTEVDVCAqIEZS T00gcnByX3NlcmlhbF92MiBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0t LS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAg IDAKKyAgNCB8ICAyNSB8ICAgMgorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCitTRUxFQ1Qg cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfdjInOjpyZWdjbGFzcyk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNudCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gcnBy X3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOIChhKyB8IGIqKSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgYSBBUyAodmFsID4gMjApLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBiIEFTICh2YWwgPD0gMjApICk7 CisoMSByb3cpCisKKy0tIFBhdHRlcm4gd2l0aCBncm91cGluZyBhbmQgcXVhbnRpZmllcnMKK0NS RUFURSBWSUVXIHJwcl9zZXJpYWxfdjMgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKChBIEIpezIsNX0gfCBDKikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2 YWwgPiAxMCwKKyAgICAgICAgQiBBUyB2YWwgPiAyMCwKKyAgICAgICAgQyBBUyB2YWwgPD0gMTAK Kyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9zZXJpYWxfdjMgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwg fCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDEKKyAgMiB8ICAyMCB8ICAg MAorICAzIHwgIDE1IHwgICAwCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAzMCB8ICAgMAorKDUg cm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3YzJzo6cmVnY2xhc3Mp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNU IGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIg dyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoKGEgYil7 Miw1fSB8IGMqKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHZhbCA+IDEwKSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBB UyAodmFsID4gMjApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBjIEFTICh2YWwgPD0gMTApICk7CisoMSByb3cpCisKKy0tIEFs bCBmZWF0dXJlcyBjb21iaW5lZAorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF92NCBBUworU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3NlcmlhbAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIElOSVRJQUwKKyAgICBQQVRURVJOIChTVEFSVCAoTUlEezEsM30gfCBBTFQrKSBGSU5JU0gp CisgICAgREVGSU5FCisgICAgICAgIFNUQVJUIEFTIHZhbCA+IDUsCisgICAgICAgIE1JRCBBUyB2 YWwgQkVUV0VFTiAxMCBBTkQgMjUsCisgICAgICAgIEFMVCBBUyB2YWwgPiAyNSwKKyAgICAgICAg RklOSVNIIEFTIHZhbCA+IDE1CispOworU0VMRUNUICogRlJPTSBycHJfc2VyaWFsX3Y0IE9SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwg ICA1CisgIDIgfCAgMjAgfCAgIDQKKyAgMyB8ICAxNSB8ICAgMworICA0IHwgIDI1IHwgICAwCisg IDUgfCAgMzAgfCAgIDAKKyg1IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3Nl cmlhbF92NCc6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgIFBBVFRFUk4gKHN0YXJ0IChtaWR7MSwzfSB8IGFsdCspIGZpbmlzaCkgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBzdGFydCBB UyAodmFsID4gNSksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgIG1pZCBBUyAoKHZhbCA+PSAxMCkgQU5EICh2YWwgPD0gMjUpKSwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYWx0IEFTICh2YWwgPiAyNSks ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICBmaW5pc2ggQVMgKHZhbCA+IDE1KSApOworKDEgcm93KQorCistLSBBZGRpdGlvbmFsIHF1 YW50aWZpZXJzIGZvciBkZXBhcnNpbmcgY292ZXJhZ2UKKy0tID8gcXVhbnRpZmllciAoemVybyBv ciBvbmUpCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX3Y1IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEI/KQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwLCBC IEFTIHZhbCA+IDIwCispOworU0VMRUNUICogRlJPTSBycHJfc2VyaWFsX3Y1IE9SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisg IDIgfCAgMjAgfCAgIDEKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisgIDUgfCAg MzAgfCAgIDEKKyg1IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF92 NSc6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3Zp ZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBj b3VudCgqKSBPVkVSIHcgQVMgY250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBB VFRFUk4gKGEgYj8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTICh2YWwgPiAx MCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIGIgQVMgKHZhbCA+IDIwKSApOworKDEgcm93KQorCistLSB7bix9IHF1YW50aWZp ZXIgKG4gb3IgbW9yZSkKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfdjYgQVMKK1NFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEF7Mix9KQorICAgIERFRklORSBBIEFTIHZh bCA+IDE1CispOworU0VMRUNUICogRlJPTSBycHJfc2VyaWFsX3Y2IE9SREVSIEJZIGlkOworIGlk IHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAg MjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMAorICA0IHwgIDI1IHwgICAyCisgIDUgfCAgMzAgfCAg IDAKKyg1IHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF92Nic6OnJl Z2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg IFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgq KSBPVkVSIHcgQVMgY250ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKwor ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4g KGF7Mix9KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTICh2YWwgPiAxNSkgKTsK KygxIHJvdykKKworLS0ge259IHF1YW50aWZpZXIgKGV4YWN0bHkgbikKK0NSRUFURSBWSUVXIHJw cl9zZXJpYWxfdjcgQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEF7M30pCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKTsKK1NFTEVDVCAqIEZST00gcnByX3Nl cmlhbF92NyBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0K KyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDAKKyAgNCB8 ICAyNSB8ICAgMAorICA1IHwgIDMwIHwgICAwCisoNSByb3dzKQorCitTRUxFQ1QgcGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9zZXJpYWxfdjcnOjpyZWdjbGFzcyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIHZhbCwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNudCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00gcnByX3NlcmlhbCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElB TCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBQQVRURVJOIChhezN9KSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgYSBBUyAodmFsID4gMCkgKTsKKygxIHJvdykKKworLS0gTmVzdGVkIEFMVCBwYXR0ZXJu ICh0ZXN0cyBkZXBhcnNlIG9mIGNvbXBsZXggbmVzdGVkIHN0cnVjdHVyZSkKK0NSRUFURSBWSUVX IHJwcl9zZXJpYWxfdjggQVMKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKCgoQSsgQikgfCBDKSBEIHwgQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDE1LCBC IEFTIHZhbCA8PSAyNSwgQyBBUyB2YWwgPD0gMzAsIEQgQVMgdmFsID4gMzAKKyk7CitTRUxFQ1Qg KiBGUk9NIHJwcl9zZXJpYWxfdjggT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0t Ky0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1 IHwgICAwCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAzMCB8ICAgMAorKDUgcm93cykKKworU0VM RUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX3Y4Jzo6cmVnY2xhc3MpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjbnQgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9N IHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoKChhKyBiKSB8IGMpIGQgfCBh IGIgYykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJ TkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIGEgQVMgKHZhbCA8PSAxNSksICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAodmFsIDw9IDI1 KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICBjIEFTICh2YWwgPD0gMzApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGQgQVMgKHZhbCA+IDMwKSApOworKDEgcm93 KQorCistLSBOYXZpZ2F0aW9uIGZ1bmN0aW9uIHNlcmlhbGl6YXRpb246IFBSRVYgd2l0aCBvZmZz ZXQKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfbmF2MSBBUworU0VMRUNUIGlkLCB2YWwsIGNvdW50 KCopIE9WRVIgdworRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAg ICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICAgICAgIERFRklORSBBIEFT IFRSVUUsIEIgQVMgdmFsID4gUFJFVih2YWwsIDIpKTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZign cnByX3NlcmlhbF9uYXYxJzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgUEFUVEVSTiAoYSBiKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg IGEgQVMgdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAodmFsID4gUFJFVih2YWwsICgyKTo6YmlnaW50 KSkgKTsKKygxIHJvdykKKworLS0gTmF2aWdhdGlvbiBmdW5jdGlvbiBzZXJpYWxpemF0aW9uOiBG SVJTVCBhbmQgTEFTVAorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF9uYXYyIEFTCitTRUxFQ1QgaWQs IHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZAorICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICAgICAg REVGSU5FIEEgQVMgVFJVRSwgQiBBUyBGSVJTVCh2YWwpIDwgTEFTVCh2YWwsIDEpKTsKK1NFTEVD VCBwZ19nZXRfdmlld2RlZigncnByX3NlcmlhbF9uYXYyJzo6cmVnY2xhc3MpOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9N IHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYSBiKykgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJ TkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIGEgQVMgdHJ1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAoRklSU1QodmFs KSA8IExBU1QodmFsLCAoMSk6OmJpZ2ludCkpICk7CisoMSByb3cpCisKKy0tIE5hdmlnYXRpb24g ZnVuY3Rpb24gc2VyaWFsaXphdGlvbjogY29tcG91bmQgUFJFVihGSVJTVCgpKQorQ1JFQVRFIFZJ RVcgcnByX3NlcmlhbF9uYXYzIEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitG Uk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAgICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAg ICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyBQ UkVWKEZJUlNUKHZhbCwgMSksIDIpID4gMCk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9z ZXJpYWxfbmF2Myc6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg cGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIFBBVFRFUk4gKGEgYispICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFT IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIGIgQVMgKFBSRVYoRklSU1QodmFsLCAoMSk6OmJpZ2ludCksICgy KTo6YmlnaW50KSA+IDApICk7CisoMSByb3cpCisKKy0tIE5hdmlnYXRpb24gZnVuY3Rpb24gc2Vy aWFsaXphdGlvbjogY29tcG91bmQgTkVYVChMQVNUKCkpCitDUkVBVEUgVklFVyBycHJfc2VyaWFs X25hdjQgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX3Nlcmlh bAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAo QSBCKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIE5FWFQoTEFTVCh2YWwp LCAyKSBJUyBOT1QgTlVMTCk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfbmF2 NCc6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3Zp ZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBj b3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBB VFRFUk4gKGEgYispICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTIHRydWUsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIGIgQVMgKE5FWFQoTEFTVCh2YWwpLCAoMik6OmJpZ2ludCkgSVMgTk9UIE5VTEwp ICk7CisoMSByb3cpCisKKy0tIE5hdmlnYXRpb24gZnVuY3Rpb24gc2VyaWFsaXphdGlvbjogY29t cG91bmQgUFJFVihMQVNUKCkpCitDUkVBVEUgVklFVyBycHJfc2VyaWFsX25hdjUgQVMKK1NFTEVD VCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkCisgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAg ICAgICBERUZJTkUgQSBBUyBUUlVFLCBCIEFTIFBSRVYoTEFTVCh2YWwsIDEpLCAyKSA+IDApOwor U0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfc2VyaWFsX25hdjUnOjpyZWdjbGFzcyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgIHZhbCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3IEFTIGNv dW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg IEZST00gcnByX3NlcmlhbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBQQVRURVJOIChhIGIrKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg IERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgYSBBUyB0cnVlLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBiIEFTIChQUkVW KExBU1QodmFsLCAoMSk6OmJpZ2ludCksICgyKTo6YmlnaW50KSA+IDApICk7CisoMSByb3cpCisK Ky0tIE5hdmlnYXRpb24gZnVuY3Rpb24gc2VyaWFsaXphdGlvbjogY29tcG91bmQgTkVYVChGSVJT VCgpKQorQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF9uYXY2IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291 bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAor ICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICAgICAgREVGSU5FIEEg QVMgVFJVRSwgQiBBUyBORVhUKEZJUlNUKHZhbCksIDMpID4gMCk7CitTRUxFQ1QgcGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9zZXJpYWxfbmF2Nic6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFs LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklU SUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGEgYispICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICBhIEFTIHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIgQVMgKE5FWFQoRklSU1QodmFsKSwgKDMp OjpiaWdpbnQpID4gMCkgKTsKKygxIHJvdykKKworLS0gUHJldHR5IGRlcGFyc2U6IG5hdmlnYXRp b24gY2FsbHMgYXJlIGZ1bmN0aW9uLWxpa2UgYW5kIHRha2Ugbm8gZXh0cmEgcGFyZW5zCitDUkVB VEUgVklFVyBycHJfbmF2X3ByZXR0eV92IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZF UiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgVFJVRSwK KyAgICAgICAgICAgICAgICAgICAgQiBBUyB2YWwgPiBQUkVWKHZhbCkgQU5EIFBSRVYodmFsKSBJ UyBOT1QgTlVMTAorICAgICAgICAgICAgICAgICAgICAgICAgIEFORCBORVhUKHZhbCkgPiBGSVJT VCh2YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIFBSRVYoRklSU1QodmFsKSkgPiAw KTsKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX25hdl9wcmV0dHlfdic6OnJlZ2NsYXNzLCB0 cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBnX2dl dF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVD VCBpZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFsLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcg QVMgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFsICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgIFBBVFRFUk4gKGEgYispICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVG SU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBhIEFTIHRydWUs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIgQVMgdmFsID4gUFJFVih2 YWwpIEFORCBQUkVWKHZhbCkgSVMgTk9UIE5VTEwgQU5EIE5FWFQodmFsKSA+IEZJUlNUKHZhbCkg QU5EIFBSRVYoRklSU1QodmFsKSkgPiAwICk7CisoMSByb3cpCisKKy0tIFJlbHVjdGFudCB7MX0/ IHF1YW50aWZpZXIgZGVwYXJzZSB0aHJvdWdoIHJ1bGV1dGlscworQ1JFQVRFIFZJRVcgcnByX3F1 YW50X3JlbHVjdGFudF92IEFTCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3CitGUk9N IHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg IElOSVRJQUwKKyAgICAgICAgICAgICBQQVRURVJOIChBezF9PyBCKQorICAgICAgICAgICAgIERF RklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gMCk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYo J3Jwcl9xdWFudF9yZWx1Y3RhbnRfdic6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgdmFs LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJPTSBycHJfc2VyaWFs ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBJTklU SUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGF7MX0/IGIpICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICBhIEFTICh2YWwgPiAwKSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGIgQVMgKHZhbCA+IDApICk7CisoMSByb3cp CisKKy0tIFF1b3RlZCBpZGVudGlmaWVyIHJvdW5kLXRyaXA6IG1peGVkIGNhc2UgYW5kIHJlc2Vy dmVkIHdvcmRzIG5lZWQgcXVvdGluZworQ1JFQVRFIFZJRVcgcnByX3NlcmlhbF9xdW90ZWQgQVMK K1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX3NlcmlhbAorV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoIlN0YXJ0IiAi VXAiKykKKyAgICAgICAgICAgICBERUZJTkUgIlN0YXJ0IiBBUyBUUlVFLCAiVXAiIEFTIHZhbCA+ IFBSRVYodmFsKSk7CitTRUxFQ1QgcGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9zZXJpYWxfcXVvdGVkJzo6 cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2Rl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50 KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyAr CisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVS TiAoIlN0YXJ0IiAiVXAiKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICJTdGFydCIgQVMgdHJ1ZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgIlVwIiBBUyAodmFsID4gUFJFVih2YWwpKSApOworKDEgcm93KQorCistLSBJbmxpbmUg T1ZFUiByb3VuZC10cmlwOiBpbmxpbmUgd2luZG93IHNwZWMgKG5vIFdJTkRPVyBhbGlhcykgZGVw YXJzZXMgaW5zaWRlIE9WRVIgKC4uLikKK0NSRUFURSBWSUVXIHJwcl9zZXJpYWxfaW5saW5lX292 ZXIgQVMKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlk CisgICAgICAgICAgICAgICAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAg ICAgICAgICAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAxMCwgQiBBUyB2YWwgPiBQUkVW KHZhbCkpIEFTIGNudAorRlJPTSBycHJfc2VyaWFsOworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdy cHJfc2VyaWFsX2lubGluZV9vdmVyJzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBnX2dldF92aWV3ZGVmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICBTRUxFQ1QgaWQsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKwor ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgSU5JVElBTCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg UEFUVEVSTiAoYSBiKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgREVGSU5FICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgYSBB UyAodmFsID4gMTApLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgYiBBUyAodmFsID4gUFJFVih2YWwpKSApIEFTIGNudCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgIEZST00g cnByX3NlcmlhbDsKKygxIHJvdykKKworLS0gTWF0ZXJpYWxpemVkIHZpZXcgKGlmIHN1cHBvcnRl ZCkKK0NSRUFURSBUQUJMRSBycHJfbXZpZXcgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5U TyBycHJfbXZpZXcgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAzMCk7CitDUkVBVEUgTUFU RVJJQUxJWkVEIFZJRVcgcnByX212aWV3X3YxIEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbXZpZXcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitTRUxFQ1Qg KiBGUk9NIHJwcl9tdmlld192MSBPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0r LS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAg fCAgIDAKKygzIHJvd3MpCisKK1NFTEVDVCBwZ19nZXRfdmlld2RlZigncnByX212aWV3X3YxJzo6 cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZ19nZXRfdmlld2Rl ZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWwsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIGNvdW50 KCopIE9WRVIgdyBBUyBjbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9tdmlldyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyAr CisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgUEFUVEVS TiAoYSspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMgKHZhbCA+IDApICk7 CisoMSByb3cpCisKKy0tIFJlZnJlc2ggdGVzdAorUkVGUkVTSCBNQVRFUklBTElaRUQgVklFVyBy cHJfbXZpZXdfdjE7CitTRUxFQ1QgKiBGUk9NIHJwcl9tdmlld192MSBPUkRFUiBCWSBpZDsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwg IDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKygzIHJvd3MpCisKKy0tIENSRUFURSBUQUJMRSBB UyBTRUxFQ1Qgd2l0aCBSUFIKK0NSRUFURSBUQUJMRSBycHJfY3RhcyAoaWQgSU5ULCB2YWwgSU5U KTsKK0lOU0VSVCBJTlRPIHJwcl9jdGFzIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMTUp LCAoNCwgMjUpOworQ1JFQVRFIFRBQkxFIHJwcl9jdGFzX3Jlc3VsdCBBUworU0VMRUNUIGlkLCB2 YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2N0YXMKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyB2YWwgPiBQUkVWKHZhbCkK Kyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9jdGFzX3Jlc3VsdCBPUkRFUiBCWSBpZDsKKyBpZCB8IHZh bCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwg ICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAgMAorKDQgcm93cykKKworLS0gSU5T RVJUIElOVE8gLi4uIFNFTEVDVCB3aXRoIFJQUgorQ1JFQVRFIFRBQkxFIHJwcl9pbnNlcnRfdGFy Z2V0IChpZCBJTlQsIHZhbCBJTlQsIGNudCBCSUdJTlQpOworSU5TRVJUIElOVE8gcnByX2luc2Vy dF90YXJnZXQKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX2N0YXMK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEEgQVMgVFJVRSwgQiBBUyB2 YWwgPiBQUkVWKHZhbCkKKyk7CitTRUxFQ1QgKiBGUk9NIHJwcl9pbnNlcnRfdGFyZ2V0IE9SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwg ICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwgICAwCiso NCByb3dzKQorCitEUk9QIFRBQkxFIHJwcl9jdGFzX3Jlc3VsdDsKK0RST1AgVEFCTEUgcnByX2lu c2VydF90YXJnZXQ7CitEUk9QIFRBQkxFIHJwcl9jdGFzOworLS0gUHJlcGFyZWQgc3RhdGVtZW50 cyAodGVzdHMgb3V0ZnVuY3MuYyAvIHJlYWRmdW5jcy5jKQorQ1JFQVRFIFRBQkxFIHJwcl9wcmVw IChpZCBJTlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3ByZXAgVkFMVUVTICgxLCAxMCks ICgyLCAyMCksICgzLCAzMCk7CistLSBTaW1wbGUgcHJlcGFyZWQgc3RhdGVtZW50CitQUkVQQVJF IHJwcl9wcmVwX3NpbXBsZSBBUworU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3ByZXAKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworRVhFQ1VU RSBycHJfcHJlcF9zaW1wbGU7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisoMyByb3dz KQorCitFWEVDVVRFIHJwcl9wcmVwX3NpbXBsZTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0t LS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAg IDAKKygzIHJvd3MpCisKK0RFQUxMT0NBVEUgcnByX3ByZXBfc2ltcGxlOworLS0gUHJlcGFyZWQg c3RhdGVtZW50IHdpdGggcGFyYW1ldGVycworUFJFUEFSRSBycHJfcHJlcF9wYXJhbShpbnQpIEFT CitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcHJlcAor V0hFUkUgaWQgPD0gJDEKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDEwCispCitPUkRFUiBCWSBpZDsKK0VYRUNVVEUg cnByX3ByZXBfcGFyYW0oMik7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMQorKDIgcm93cykKKworRVhFQ1VURSBycHJf cHJlcF9wYXJhbSgzKTsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8 ICAxMCB8ICAgMAorICAyIHwgIDIwIHwgICAyCisgIDMgfCAgMzAgfCAgIDAKKygzIHJvd3MpCisK K0RFQUxMT0NBVEUgcnByX3ByZXBfcGFyYW07CistLSBDb21wbGV4IHByZXBhcmVkIHN0YXRlbWVu dAorUFJFUEFSRSBycHJfcHJlcF9jb21wbGV4IEFTCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcHJlcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBIEIpezEs Mn0gfCBDKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2YWwgPiA1LAorICAgICAgICBCIEFT IHZhbCA+IDE1LAorICAgICAgICBDIEFTIHZhbCA8PSAxNQorKQorT1JERVIgQlkgaWQ7CitFWEVD VVRFIHJwcl9wcmVwX2NvbXBsZXg7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0t CisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMgorICAzIHwgIDMwIHwgICAwCisoMyBy b3dzKQorCitFWEVDVVRFIHJwcl9wcmVwX2NvbXBsZXg7CisgaWQgfCB2YWwgfCBjbnQgCistLS0t Ky0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMgorICAzIHwgIDMw IHwgICAwCisoMyByb3dzKQorCitERUFMTE9DQVRFIHJwcl9wcmVwX2NvbXBsZXg7CitEUk9QIFRB QkxFIHJwcl9wcmVwOworLS0gQ1RFIGFuZCBTdWJxdWVyeSAodGVzdHMgY29weWZ1bmNzLmMpCitD UkVBVEUgVEFCTEUgcnByX2NvcHkgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJf Y29weSBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKSwgKDMsIDMwKSwgKDQsIDQwKTsKKy0tIFNpbXBs ZSBDVEUKK1dJVEggcnByX2N0ZSBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9W RVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9jb3B5CisgICAgV0lORE9XIHcgQVMgKAorICAgICAg ICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFT IHZhbCA+IDAKKyAgICApCispCitTRUxFQ1QgKiBGUk9NIHJwcl9jdGUgT1JERVIgQlkgaWQ7Cisg aWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDQKKyAgMiB8 ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyg0IHJvd3MpCisK Ky0tIENURSB3aXRoIG11bHRpcGxlIHJlZmVyZW5jZXMgKGZvcmNlcyBub2RlIGNvcHkpCitXSVRI IHJwcl9jdGUgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CisgICAgRlJPTSBycHJfY29weQorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkg aWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAxNQor ICAgICkKKykKK1NFTEVDVCBjMS5pZCwgYzEuY250IGFzIGNudDEsIGMyLmNudCBhcyBjbnQyCitG Uk9NIHJwcl9jdGUgYzEKK0pPSU4gcnByX2N0ZSBjMiBPTiBjMS5pZCA9IGMyLmlkCitPUkRFUiBC WSBjMS5pZDsKKyBpZCB8IGNudDEgfCBjbnQyIAorLS0tLSstLS0tLS0rLS0tLS0tCisgIDEgfCAg ICAwIHwgICAgMAorICAyIHwgICAgMyB8ICAgIDMKKyAgMyB8ICAgIDAgfCAgICAwCisgIDQgfCAg ICAwIHwgICAgMAorKDQgcm93cykKKworLS0gU3VicXVlcnkgaW4gRlJPTSBjbGF1c2UKK1NFTEVD VCAqCitGUk9NICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor ICAgIEZST00gcnByX2NvcHkKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBIEI/KQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAxMCwg QiBBUyB2YWwgPiAyMAorICAgICkKKykgc3ViCitXSEVSRSBjbnQgPiAwCitPUkRFUiBCWSBpZDsK KyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMiB8ICAyMCB8ICAgMgorICA0 IHwgIDQwIHwgICAxCisoMiByb3dzKQorCistLSBOZXN0ZWQgc3VicXVlcmllcworU0VMRUNUICoK K0ZST00gKAorICAgIFNFTEVDVCAqCisgICAgRlJPTSAoCisgICAgICAgIFNFTEVDVCBpZCwgdmFs LCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgICAgIEZST00gcnByX2NvcHkKKyAgICAgICAg V0lORE9XIHcgQVMgKAorICAgICAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAg UEFUVEVSTiAoQSspCisgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPj0gMTAKKyAgICAgICAg KQorICAgICkgaW5uZXJfc3ViCisgICAgV0hFUkUgY250ID4gMAorKSBvdXRlcl9zdWIKK09SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwg ICA0CisoMSByb3cpCisKK0RST1AgVEFCTEUgcnByX2NvcHk7CistLSBESVNUSU5DVCBhbmQgc2V0 IG9wZXJhdGlvbnMgKHRlc3RzIGVxdWFsZnVuY3MuYykKK0NSRUFURSBUQUJMRSBycHJfZXF1YWwg KGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfZXF1YWwgVkFMVUVTICgxLCAxMCks ICgyLCAyMCksICgzLCAxMCksICg0LCAyMCk7CistLSBESVNUSU5DVCB3aXRoIFJQUgorU0VMRUNU IERJU1RJTkNUIGNudAorRlJPTSAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIg dyBhcyBjbnQKKyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAg T1JERVIgQlkgdmFsCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg ICAgIFBBVFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQorKSBz dWIKK09SREVSIEJZIGNudDsKKyBjbnQgCistLS0tLQorICAgMQorICAgMgorICAgMworICAgNAor KDQgcm93cykKKworLS0gVU5JT04gd2l0aCBSUFIgaW4gYm90aCBzaWRlcworU0VMRUNUIGlkLCB2 YWwsIGNudCBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0hFUkUgdmFsID0gMTAKKyAgICBXSU5ET1cgdyBB UyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAg REVGSU5FIEEgQVMgdmFsID4gMAorICAgICkKKykgc3ViMQorVU5JT04KK1NFTEVDVCBpZCwgdmFs LCBjbnQgRlJPTSAoCisgICAgU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK KyAgICBGUk9NIHJwcl9lcXVhbAorICAgIFdIRVJFIHZhbCA9IDIwCisgICAgV0lORE9XIHcgQVMg KAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyAgICApCispIHN1YjIKK09SREVSIEJZIGlkOworIGlkIHwgdmFs IHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAg IDIKKyAgMyB8ICAxMCB8ICAgMAorICA0IHwgIDIwIHwgICAwCisoNCByb3dzKQorCistLSBVTklP TiBBTEwKK1NFTEVDVCBpZCwgY250IEZST00gKAorICAgIFNFTEVDVCBpZCwgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorICAgIEZST00gcnByX2VxdWFsCisgICAgV0lORE9XIHcgQVMgKAorICAgICAg ICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFT IHZhbCA+IDEwCisgICAgKQorKSBzdWIKK1VOSU9OIEFMTAorU0VMRUNUIGlkLCBjbnQgRlJPTSAo CisgICAgU0VMRUNUIGlkLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgICAgRlJPTSBycHJfZXF1 YWwKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsIDw9IDEwCisgICAgKQorKSBzdWIKK09S REVSIEJZIGlkLCBjbnQ7CisgaWQgfCBjbnQgCistLS0tKy0tLS0tCisgIDEgfCAgIDAKKyAgMSB8 ICAgMQorICAyIHwgICAwCisgIDIgfCAgIDEKKyAgMyB8ICAgMAorICAzIHwgICAxCisgIDQgfCAg IDAKKyAgNCB8ICAgMQorKDggcm93cykKKworLS0gSU5URVJTRUNUCitTRUxFQ1QgaWQsIGNudCBG Uk9NICgKKyAgICBTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJw cl9lcXVhbAorICAgIFdIRVJFIGlkIDw9IDMKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9S REVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorICAgICkKKykgc3ViMQorSU5URVJTRUNUCitTRUxFQ1QgaWQsIGNudCBGUk9NICgKKyAg ICBTRUxFQ1QgaWQsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9lcXVhbAor ICAgIFdIRVJFIGlkID49IDIKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMAorICAg ICkKKykgc3ViMgorT1JERVIgQlkgaWQ7CisgaWQgfCBjbnQgCistLS0tKy0tLS0tCisgIDMgfCAg IDAKKygxIHJvdykKKworRFJPUCBUQUJMRSBycHJfZXF1YWw7CistLSBWaWV3IHdpdGggbXVsdGlw bGUgd2luZG93IGRlZmluaXRpb25zCitDUkVBVEUgVEFCTEUgcnByX211bHRpd2luIChpZCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX211bHRpd2luIFZBTFVFUyAoMSwgMTApLCAoMiwg MjApLCAoMywgMzApOworQ1JFQVRFIFZJRVcgcnByX211bHRpd2luX3YgQVMKK1NFTEVDVAorICAg IGlkLAorICAgIHZhbCwKKyAgICBDT1VOVCgqKSBPVkVSIHcxIGFzIGNudDEsCisgICAgQ09VTlQo KikgT1ZFUiB3MiBhcyBjbnQyCitGUk9NIHJwcl9tdWx0aXdpbgorV0lORE9XCisgICAgdzEgQVMg KAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERF RklORSBBIEFTIHZhbCA+IDE1CisgICAgKSwKKyAgICB3MiBBUyAoCisgICAgICAgIE9SREVSIEJZ IGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICBQQVRURVJOIChCKikKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsIDw9IDE1 CisgICAgKTsKK1NFTEVDVCAqIEZST00gcnByX211bHRpd2luX3YgT1JERVIgQlkgaWQ7CisgaWQg fCB2YWwgfCBjbnQxIHwgY250MiAKKy0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLQorICAxIHwgIDEw IHwgICAgMCB8ICAgIDEKKyAgMiB8ICAyMCB8ICAgIDIgfCAgICAwCisgIDMgfCAgMzAgfCAgICAw IHwgICAgMAorKDMgcm93cykKKworU0VMRUNUIHBnX2dldF92aWV3ZGVmKCdycHJfbXVsdGl3aW5f dic6OnJlZ2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGdf Z2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQo KikgT1ZFUiB3MSBBUyBjbnQxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgY291bnQoKikgT1ZFUiB3MiBBUyBjbnQyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICBGUk9NIHJwcl9tdWx0aXdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3MSBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HICAgICAgICAgICAgICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg IElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGErKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIGEgQVMg KHZhbCA+IDE1KSApLCB3MiBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HICsKKyAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIElOSVRJQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGIq KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgIERFRklORSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgIGIgQVMgKHZhbCA8PSAxNSkgKTsKKygxIHJvdykKKworLS0ge259IHF1YW50aWZpZXIgZGlz cGxheSBpbiB2aWV3CitDUkVBVEUgVklFVyBycHJfcXVhbnRfbl92IEFTCitTRUxFQ1QgaWQsIHZh bCwgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9zZXJpYWwKK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZAorICAgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICAgICAgIElOSVRJQUwKKyAgICAgICAgICAgICBQQVRURVJOIChB ezN9KQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDApOworU0VMRUNUIHBnX2dldF92 aWV3ZGVmKCdycHJfcXVhbnRfbl92Jzo6cmVnY2xhc3MpOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwZ19nZXRfdmlld2RlZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgU0VMRUNUIGlkLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB2YWws ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgIGNvdW50KCopIE9WRVIgdyBBUyBjb3VudCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICBGUk9NIHJwcl9zZXJpYWwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORyArCisgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIElOSVRJ QUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgUEFUVEVSTiAoYXszfSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICBERUZJTkUgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIGEgQVMgKHZhbCA+IDApICk7CisoMSByb3cpCisKKy0tIHtuLH0gcXVhbnRpZmllciBk aXNwbGF5IGluIHZpZXcKK0NSRUFURSBWSUVXIHJwcl9xdWFudF9uX3BsdXNfdiBBUworU0VMRUNU IGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfc2VyaWFsCitXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQKKyAgICAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBJTklUSUFMCisgICAgICAgICAgICAgUEFU VEVSTiAoQXsyLH0pCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsID4gMCk7CitTRUxFQ1Qg cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9xdWFudF9uX3BsdXNfdic6OnJlZ2NsYXNzKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgcGdfZ2V0X3ZpZXdkZWYgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIFNFTEVDVCBpZCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgdmFsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICBjb3VudCgqKSBPVkVSIHcgQVMgY291bnQg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgRlJP TSBycHJfc2VyaWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgKworICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICBJTklUSUFMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgIFBBVFRFUk4gKGF7Mix9KSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgREVG SU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICBhIEFTICh2YWwgPiAwKSApOworKDEgcm93KQorCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIEdsdWVkIFF1YW50aWZpZXIgLyBBbHRlcm5hdGlvbiBUZXN0cworLS0gPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitDUkVBVEUg VEFCTEUgcnByX2dsdWUgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfZ2x1ZSBW QUxVRVMgKDEsIDUpLCAoMiwgOCksICgzLCA5KSwgKDQsIC0xKSwgKDUsIDYpLCAoNiwgLTIpOwor LS0gUXVhbnRpZmllciBnbHVlZCB0byB0aGUgYWx0ZXJuYXRpb24gb3BlcmF0b3IgJ3wnIHdpdGhv dXQgYSBzcGFjZSAoMDA1OSkuCistLSBUaGUgbGV4ZXIgZ2x1ZXMgdGhlIHRyYWlsaW5nICd8JyBp bnRvIG9uZSBPcCB0b2tlbjsgdGhlIGdyYW1tYXIgcmVhdHRhY2hlcyBpdAorLS0gYXMgdGhlIGxv d2VzdC1wcmVjZWRlbmNlIGFsdGVybmF0aW9uIG9uY2UgdGhlIHN1cnJvdW5kaW5nIHNlcXVlbmNl IGlzIGJ1aWx0LgorLS0gRGVwYXJzZSBpcyBjYW5vbmljYWwsIHNvIHRoZSBnbHVlZCwgc3BhY2Vk LCBhbmQgbWl4ZWQtc3BhY2luZyBmb3JtcyBhbGwKKy0tIHJlZHVjZSB0byB0aGUgc2FtZSBQQVRU RVJOIC0tIG9uZSBkZXBhcnNlIHBlciBzaGFwZSBwcm92ZXMgdGhlIHBhcnNlIHRyZWUuCistLSBP cC1jaGFyIHF1YW50aWZpZXJzICgqLCArLCA/LCAqPywgKz8sID8/KSBnbHVlZCB0byAnfCcuCitD UkVBVEUgVklFVyBycHJfZHBfb3AgQVMgU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiB3MSBBUyB3 MSwgY291bnQoKikgT1ZFUiB3MiBBUyB3MiwgY291bnQoKikgT1ZFUiB3MyBBUyB3MywKKyAgICBj b3VudCgqKSBPVkVSIHc0IEFTIHc0LCBjb3VudCgqKSBPVkVSIHc1IEFTIHc1LCBjb3VudCgqKSBP VkVSIHc2IEFTIHc2CitGUk9NIHJwcl9nbHVlCitXSU5ET1cgdzEgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChB KnxCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3MiBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIFBBVFRFUk4gKEErfEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAor ICAgICAgIHczIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQT98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCksCisgICAgICAgdzQgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKj98QikgREVGSU5FIEEg QVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzUgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChB Kz98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzYgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyBQQVRURVJOIChBPz98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9kcF9vcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAg ICAgICAgIGxpbmUgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4g KGEqIHwgYikgCisgICBQQVRURVJOIChhKyB8IGIpIAorICAgUEFUVEVSTiAoYT8gfCBiKSAKKyAg IFBBVFRFUk4gKGEqPyB8IGIpIAorICAgUEFUVEVSTiAoYSs/IHwgYikgCisgICBQQVRURVJOIChh Pz8gfCBiKSAKKyg2IHJvd3MpCisKK0RST1AgVklFVyBycHJfZHBfb3A7CistLSBTcGFjZWQgcmVm ZXJlbmNlOiB0aGUgZnVsbHktc3BhY2VkIGNhbm9uaWNhbCBmb3Jtcy4gIElkZW50aWNhbCBkZXBh cnNlIHRvIHRoZQorLS0gZ2x1ZWQgcnByX2RwX29wIHcxL3c0IGFib3ZlIGNvbXBsZXRlcyB0aGUg Z2x1ZWQgPSBzcGFjZWQgPSBtaXhlZCBlcXVpdmFsZW5jZS4KK0NSRUFURSBWSUVXIHJwcl9kcF9z cGMgQVMgU0VMRUNUIGNvdW50KCopIE9WRVIgdzEgQVMgdzEsIGNvdW50KCopIE9WRVIgdzIgQVMg dzIKK0ZST00gcnByX2dsdWUKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqIHwgQikgREVG SU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzIgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRU RVJOIChBKj8gfCBCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2Rw X3NwYycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg IGxpbmUgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEqIHwg YikgCisgICBQQVRURVJOIChhKj8gfCBiKSAKKygyIHJvd3MpCisKK0RST1AgVklFVyBycHJfZHBf c3BjOworLS0gUmFuZ2UgcXVhbnRpZmllcnMgZ2x1ZWQgdG8gJ3wnOiBub24tcmVsdWN0YW50IHtu fXwgKH0gKyBjaGFyICd8JykgYW5kCistLSByZWx1Y3RhbnQge259P3wgKH0gKyBPcCAiP3wiKS4K K0NSRUFURSBWSUVXIHJwcl9kcF9ybmcgQVMgU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiB3MSBB UyB3MSwgY291bnQoKikgT1ZFUiB3MiBBUyB3MiwgY291bnQoKikgT1ZFUiB3MyBBUyB3MywgY291 bnQoKikgT1ZFUiB3NCBBUyB3NCwKKyAgICBjb3VudCgqKSBPVkVSIHc1IEFTIHc1LCBjb3VudCgq KSBPVkVSIHc2IEFTIHc2LCBjb3VudCgqKSBPVkVSIHc3IEFTIHc3LCBjb3VudCgqKSBPVkVSIHc4 IEFTIHc4CitGUk9NIHJwcl9nbHVlCitXSU5ET1cgdzEgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezJ9fEIp IERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHcyIEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcg UEFUVEVSTiAoQXsyLH18QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisg ICAgICAgdzMgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBeywzfXxCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBC IEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NCBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEF7MiwzfXxCKSBERUZJ TkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICB3NSBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRF Uk4gKEF7Mn0/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAg IHc2IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyLH0/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMg dmFsIDw9IDApLAorICAgICAgIHc3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQXssM30/fEIpIERFRklORSBB IEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApLAorICAgICAgIHc4IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAo QXsyLDN9P3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2RwX3Ju ZycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAg bGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAo YXsyfSB8IGIpIAorICAgUEFUVEVSTiAoYXsyLH0gfCBiKSAKKyAgIFBBVFRFUk4gKGF7MCwzfSB8 IGIpIAorICAgUEFUVEVSTiAoYXsyLDN9IHwgYikgCisgICBQQVRURVJOIChhezJ9PyB8IGIpIAor ICAgUEFUVEVSTiAoYXsyLH0/IHwgYikgCisgICBQQVRURVJOIChhezAsM30/IHwgYikgCisgICBQ QVRURVJOIChhezIsM30/IHwgYikgCisoOCByb3dzKQorCitEUk9QIFZJRVcgcnByX2RwX3JuZzsK Ky0tIE1peGVkIHNwYWNpbmc6IGEgc3BhY2UgaW5zaWRlIHRoZSBxdWFudGlmaWVyIHdpdGggJ3wn IHN0aWxsIGdsdWVkLgorLS0gIkEqID98QiIgPSAnKicgKyBPcCI/fCIgPSByZWx1Y3RhbnQgIkEq PyIgcGx1cyBhbHRlcm5hdGlvbi4KK0NSRUFURSBWSUVXIHJwcl9kcF9taXggQVMgU0VMRUNUIGNv dW50KCopIE9WRVIgdzEgQVMgdzEsIGNvdW50KCopIE9WRVIgdzIgQVMgdzIsIGNvdW50KCopIE9W RVIgdzMgQVMgdzMKK0ZST00gcnByX2dsdWUKK1dJTkRPVyB3MSBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEq ID98QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCksCisgICAgICAgdzIgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORyBQQVRURVJOIChBKyA/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDAp LAorICAgICAgIHczIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQT8gP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAw LCBCIEFTIHZhbCA8PSAwKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJh eShwZ19nZXRfdmlld2RlZigncnByX2RwX21peCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKKyAgICAgICAgIGxpbmUgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgIFBBVFRFUk4gKGEqPyB8IGIpIAorICAgUEFUVEVSTiAoYSs/IHwgYikgCisgICBQ QVRURVJOIChhPz8gfCBiKSAKKygzIHJvd3MpCisKK0RST1AgVklFVyBycHJfZHBfbWl4OworLS0g U3RydWN0dXJlOiBwcmVjZWRlbmNlICh8IGlzIGxvd2VzdCwgc28gaXRzIHJpZ2h0IG9wZXJhbmQg aXMgdGhlIHdob2xlCistLSBmb2xsb3dpbmcgc2VxdWVuY2UpLCBjaGFpbmluZywgY29uY2F0ZW5h dGlvbiwgYW5kIGdyb3VwaW5nLgorQ1JFQVRFIFZJRVcgcnByX2RwX3N0cnVjdCBBUyBTRUxFQ1QK KyAgICBjb3VudCgqKSBPVkVSIHcxIEFTIHcxLCBjb3VudCgqKSBPVkVSIHcyIEFTIHcyLCBjb3Vu dCgqKSBPVkVSIHczIEFTIHczLAorICAgIGNvdW50KCopIE9WRVIgdzQgQVMgdzQsIGNvdW50KCop IE9WRVIgdzUgQVMgdzUsIGNvdW50KCopIE9WRVIgdzYgQVMgdzYKK0ZST00gcnByX2dsdWUKK1dJ TkRPVyB3MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfEIgQykgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCwgQyBBUyB2YWwgPCAxMDApLAorICAgICAgIHcyIEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAo QSp8Qip8QykgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCwgQyBBUyB2YWwgPCAx MDApLAorICAgICAgIHczIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSBCKnxDIEQpIERFRklORSBBIEFTIHZh bCA+IDAsIEIgQVMgdmFsIDw9IDAsIEMgQVMgdmFsIDwgMTAwLCBEIEFTIHZhbCA+IDUpLAorICAg ICAgIHc0IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoKEEqfEIpKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFT IHZhbCA8PSAwKSwKKyAgICAgICB3NSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqfChCfEMpKSBERUZJTkUg QSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwLCBDIEFTIHZhbCA8IDEwMCksCisgICAgICAgdzYg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyBQQVRURVJOICgoQSp8QikrKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8 PSAwKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmll d2RlZigncnByX2RwX3N0cnVjdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKKyAgICAgICAgICAgbGluZSAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICBQQVRURVJOIChhKiB8IGIgYykgCisgICBQQVRURVJOIChhKiB8IGIqIHwgYykg CisgICBQQVRURVJOIChhIGIqIHwgYyBkKSAKKyAgIFBBVFRFUk4gKChhKiB8IGIpKSAKKyAgIFBB VFRFUk4gKGEqIHwgKGIgfCBjKSkgCisgICBQQVRURVJOICgoYSogfCBiKSspIAorKDYgcm93cykK KworRFJPUCBWSUVXIHJwcl9kcF9zdHJ1Y3Q7CistLSBFeGVjdXRpb24gc2VtYW50aWNzIChkZXBh cnNlIGNhbm5vdCBzaG93IHJlbHVjdGFudCBzaG9ydGVzdC1tYXRjaCkuICBUaGUKKy0tIHJwcl9n bHVlIHJvd3MgLS0gYW4gQS1ydW4gZm9sbG93ZWQgYnkgQiByb3dzIC0tIG1ha2UgdGhlICd8Qicg YWx0ZXJuYXRpdmUKKy0tIHJlYWNoYWJsZTogd2l0aCAiKiIgdGhlIGdyZWVkeSBmb3JtIG1hdGNo ZXMgdGhlIHdob2xlIHJ1biB3aGlsZSB0aGUKKy0tIHJlbHVjdGFudCBmb3JtIG1hdGNoZXMgZW1w dHk7IHdpdGggIisiIHRoZSBncmVlZHkgZm9ybSBtYXRjaGVzIHRoZSBydW4gYW5kCistLSB0aGUg cmVsdWN0YW50IGZvcm0gbWF0Y2hlcyBvbmUgcm93LCBhbmQgb24gYSBCIHJvdyAod2hlcmUgIkEr IiBmYWlscykgdGhlIEIKKy0tIGFsdGVybmF0aXZlIGZpcmVzLgorU0VMRUNUIGlkLCB2YWwsCisg ICAgICAgY291bnQoKikgT1ZFUiBncyBBUyBnc3RhciwgY291bnQoKikgT1ZFUiBycyBBUyByc3Rh ciwKKyAgICAgICBjb3VudCgqKSBPVkVSIGdwIEFTIGdwbHVzLCBjb3VudCgqKSBPVkVSIHJwIEFT IHJwbHVzCitGUk9NIHJwcl9nbHVlCitXSU5ET1cgZ3MgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKnxCKSBE RUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAgICBycyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBB VFRFUk4gKEEqP3xCKSBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKSwKKyAgICAg ICBncCBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HIFBBVFRFUk4gKEErfEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFs IDw9IDApLAorICAgICAgIHJwIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSs/fEIpIERFRklORSBBIEFTIHZh bCA+IDAsIEIgQVMgdmFsIDw9IDApCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGdzdGFyIHwg cnN0YXIgfCBncGx1cyB8IHJwbHVzIAorLS0tLSstLS0tLSstLS0tLS0tKy0tLS0tLS0rLS0tLS0t LSstLS0tLS0tCisgIDEgfCAgIDUgfCAgICAgMyB8ICAgICAwIHwgICAgIDMgfCAgICAgMQorICAy IHwgICA4IHwgICAgIDAgfCAgICAgMCB8ICAgICAwIHwgICAgIDEKKyAgMyB8ICAgOSB8ICAgICAw IHwgICAgIDAgfCAgICAgMCB8ICAgICAxCisgIDQgfCAgLTEgfCAgICAgMSB8ICAgICAxIHwgICAg IDEgfCAgICAgMQorICA1IHwgICA2IHwgICAgIDEgfCAgICAgMCB8ICAgICAxIHwgICAgIDEKKyAg NiB8ICAtMiB8ICAgICAxIHwgICAgIDEgfCAgICAgMSB8ICAgICAxCisoNiByb3dzKQorCistLSBQ YXR0ZXJucyB0aGF0IG11c3Qgc3RheSByZWplY3RlZC4gICImIiBpcyBhbiBpbnZhbGlkIG9wOyBh ICd8JyB3aXRoIGFuIGVtcHR5CistLSBzaWRlIChsZWFkaW5nLCB0cmFpbGluZywgZG91YmxlZCwg b3IgYWxvbmUgaW4gYSBncm91cCkgaGFzIG5vIG9wZXJhbmQ7ICJ8fCIKKy0tIGFuZCAiKnx8IiBh cmUgZG91YmxlZCBwaXBlczsgIkEqICp8QiIvIkEqICo/fEIiLyJBezJ9Kj98QiIgYXJlIGRvdWJs ZWQKKy0tIHF1YW50aWZpZXJzLgorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVl IFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSZCKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKK0VS Uk9SOiAgdW5zdXBwb3J0ZWQgcXVhbnRpZmllciAiJiIKK0xJTkUgMTogLi4uRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEmQikgREVGSU5FLi4uCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgorSElOVDogIFZhbGlkIHF1YW50aWZpZXJzIGFyZTogKiwgKywgPywgKj8sICs/LCA/Pywge259 LCB7bix9LCB7LG19LCB7bixtfSBhbmQgdGhlaXIgcmVsdWN0YW50IHZlcnNpb25zLgorU0VMRUNU IGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAo QSp8KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKK0VSUk9SOiAgYWx0ZXJuYXRpb24gb3BlcmF0b3Ig InwiIHJlcXVpcmVzIGEgcGF0dGVybiBvbiBib3RoIHNpZGVzCitMSU5FIDE6IC4uLldFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSp8KSBERUZJTi4uLgor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIFBBVFRFUk4gKEEqfCB8QikgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7 CitFUlJPUjogIGFsdGVybmF0aW9uIG9wZXJhdG9yICJ8IiByZXF1aXJlcyBhIHBhdHRlcm4gb24g Ym90aCBzaWRlcworTElORSAxOiAuLi5XRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HIFBBVFRFUk4gKEEqfCB8QikgREUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKnx8QikgREVGSU5F IEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitFUlJPUjogIHVuc3VwcG9ydGVkIHF1YW50 aWZpZXIgIip8fCIKK0xJTkUgMTogLi4uRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HIFBBVFRFUk4gKEEqfHxCKSBERUZJLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIFZhbGlkIHF1YW50 aWZpZXJzIGFyZTogKiwgKywgPywgKj8sICs/LCA/Pywge259LCB7bix9LCB7LG19LCB7bixtfSBh bmQgdGhlaXIgcmVsdWN0YW50IHZlcnNpb25zLgorU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9N IHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQXx8QikgREVGSU5FIEEgQVMgdmFs ID4gMCwgQiBBUyB2YWwgPD0gMCk7CitFUlJPUjogIHVuc3VwcG9ydGVkIHF1YW50aWZpZXIgInx8 IgorTElORSAxOiAuLi5FRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFU VEVSTiAoQXx8QikgREVGSU4uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgVmFsaWQgcXVhbnRpZmllcnMgYXJl OiAqLCArLCA/LCAqPywgKz8sID8/LCB7bn0sIHtuLH0sIHssbX0sIHtuLG19IGFuZCB0aGVpciBy ZWx1Y3RhbnQgdmVyc2lvbnMuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKnxCfCkgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBB UyB2YWwgPD0gMCk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICIpIgorTElORSAx OiAuLi5DVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKnxCfCkg REVGSU5FIEEuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBeCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUg V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOICh8QSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CitFUlJP UjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJ8IgorTElORSAxOiAuLi5XRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKHxBKSBERUZJTkUuLi4KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBe CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQ QVRURVJOICgoQSp8KSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CitFUlJPUjogIGFsdGVybmF0aW9u IG9wZXJhdG9yICJ8IiByZXF1aXJlcyBhIHBhdHRlcm4gb24gYm90aCBzaWRlcworTElORSAxOiAu Li5FRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoKEEqfCkp IERFRkkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lO RE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORyBQQVRURVJOIChBKiAqfEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMg dmFsIDw9IDApOworRVJST1I6ICBpbnZhbGlkIHRva2VuICIqIiBhZnRlciAiKiIgcXVhbnRpZmll cgorTElORSAxOiAuLi5OIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRF Uk4gKEEqICp8QikgREVGSU4uLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgRGlkIHlvdSBtZWFuICIqPyIgZm9y IHJlbHVjdGFudCBxdWFudGlmaWVyPworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9n bHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSogKj98QikgREVGSU5FIEEgQVMgdmFsID4g MCwgQiBBUyB2YWwgPD0gMCk7CitFUlJPUjogIGludmFsaWQgdG9rZW4gIio/IiBhZnRlciAiKiIg cXVhbnRpZmllcgorTElORSAxOiAuLi5OIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIFBBVFRFUk4gKEEqICo/fEIpIERFRkkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgRGlkIHlvdSBtZWFu ICIqPyIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBG Uk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQT8gKj98QikgREVGSU5FIEEg QVMgdmFsID4gMCwgQiBBUyB2YWwgPD0gMCk7CitFUlJPUjogIGludmFsaWQgcXVhbnRpZmllciBj b21iaW5hdGlvbgorTElORSAxOiAuLi5FRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgUEFUVEVSTiAoQT8gKj98QikgREUuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgRGlkIHlvdSBtZWFu ICI/PyIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPworU0VMRUNUIGNvdW50KCopIE9WRVIgdyBG Uk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyfSo/fEIpIERFRklORSBB IEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworRVJST1I6ICBpbnZhbGlkIHRva2VuICIqPyIg YWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgorTElORSAxOiAuLi4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyfSo/fEIpIERFRkkuLi4KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAg T25seSAiPyIgaXMgYWxsb3dlZCBhZnRlciB7bn0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3IEZST00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJO IChBezJ9ICo/fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworRVJST1I6 ICBpbnZhbGlkIHRva2VuICIqPyIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgorTElORSAxOiAuLi5D VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBezJ9ICo/fEIpIERF RkkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgT25seSAiPyIgaXMgYWxsb3dlZCBhZnRlciB7bn0gdG8gbWFr ZSBpdCByZWx1Y3RhbnQuCistLSBEb3VibGVkIG9wLWNoYXIgcXVhbnRpZmllcnMgbGV4IGFzIG9u ZSBPcCB0b2tlbiBhbmQgYXJlIHVuc3VwcG9ydGVkLCB3aGV0aGVyCistLSBnbHVlZCB0byAnfCcg KCIqKnwiLCAiKit8IiwgIj8/P3wiKSBvciBvbiB0aGVpciBvd24gKCIqKiIpLgorU0VMRUNUIGNv dW50KCopIE9WRVIgdyBGUk9NIHJwcl9nbHVlIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcgUEFUVEVSTiAoQSoq fEIpIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworRVJST1I6ICB1bnN1cHBv cnRlZCBxdWFudGlmaWVyICIqKnwiCitMSU5FIDE6IC4uLkVFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKip8QikgREVGSS4uLgorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBW YWxpZCBxdWFudGlmaWVycyBhcmU6ICosICssID8sICo/LCArPywgPz8sIHtufSwge24sfSwgeyxt fSwge24sbX0gYW5kIHRoZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4KK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcgRlJPTSBycHJfZ2x1ZSBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKEEqK3xCKSBERUZJ TkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA8PSAwKTsKK0VSUk9SOiAgdW5zdXBwb3J0ZWQgcXVh bnRpZmllciAiKit8IgorTElORSAxOiAuLi5FRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcgUEFUVEVSTiAoQSorfEIpIERFRkkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgVmFsaWQgcXVh bnRpZmllcnMgYXJlOiAqLCArLCA/LCAqPywgKz8sID8/LCB7bn0sIHtuLH0sIHssbX0sIHtuLG19 IGFuZCB0aGVpciByZWx1Y3RhbnQgdmVyc2lvbnMuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZS T00gcnByX2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBPz8/fEIpIERFRklORSBBIEFT IHZhbCA+IDAsIEIgQVMgdmFsIDw9IDApOworRVJST1I6ICB1bnN1cHBvcnRlZCBxdWFudGlmaWVy ICI/Pz98IgorTElORSAxOiAuLi5FRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcgUEFUVEVSTiAoQT8/P3xCKSBERUYuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgVmFsaWQgcXVhbnRpZmll cnMgYXJlOiAqLCArLCA/LCAqPywgKz8sID8/LCB7bn0sIHtuLH0sIHssbX0sIHtuLG19IGFuZCB0 aGVpciByZWx1Y3RhbnQgdmVyc2lvbnMuCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEZST00gcnBy X2dsdWUgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKipCKSBERUZJTkUgQSBBUyB2YWwgPiAw KTsKK0VSUk9SOiAgdW5zdXBwb3J0ZWQgcXVhbnRpZmllciAiKioiCitMSU5FIDE6IC4uLkVFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyBQQVRURVJOIChBKipCKSBERUZJTi4u LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIF4KK0hJTlQ6ICBWYWxpZCBxdWFudGlmaWVycyBhcmU6ICosICssID8sICo/LCArPywg Pz8sIHtufSwge24sfSwgeyxtfSwge24sbX0gYW5kIHRoZWlyIHJlbHVjdGFudCB2ZXJzaW9ucy4K K0RST1AgVEFCTEUgcnByX2dsdWU7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVycm9yIENhc2VzIFRlc3RzCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KK0RST1AgVEFCTEUgSUYgRVhJU1RTIHJwcl9lcnI7CitDUkVBVEUgVEFCTEUgcnByX2VyciAo aWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9lcnIgVkFMVUVTICgxLCAxMCksICgy LCAyMCk7CistLSBJbnZhbGlkIHF1YW50aWZpZXIgc3ludGF4CitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErISkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICB1bnN1cHBvcnRl ZCBxdWFudGlmaWVyICIrISIKK0xJTkUgNjogICAgIFBBVFRFUk4gKEErISkKKyAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgVmFsaWQgcXVhbnRpZmllcnMgYXJlOiAqLCArLCA/LCAqPywg Kz8sID8/LCB7bn0sIHtuLH0sIHssbX0sIHtuLG19IGFuZCB0aGVpciByZWx1Y3RhbnQgdmVyc2lv bnMuCistLSBub25lIG9mIHRoZSBmb2xsb3dpbmcgcXVlcmllcyBzaG91bGQgYmUgYWNjZXB0ZWQK K1NFTEVDVCBGUk9NIHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEErICEpIERFRklORSBBIEFTIFRSVUUpOworRVJS T1I6ICBpbnZhbGlkIHRva2VuICIhIiBhZnRlciAiKyIgcXVhbnRpZmllcgorTElORSAxOiAuLi5T IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEErICEpIERFRklO RSAuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeCitISU5UOiAgRGlkIHlvdSBtZWFuICIrPyIgZm9yIHJlbHVjdGFudCBxdWFu dGlmaWVyPworU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQSsgPyspIERFRklORSBBIEFTIFRS VUUpOworRVJST1I6ICBpbnZhbGlkIHRva2VuICI/KyIgYWZ0ZXIgIisiIHF1YW50aWZpZXIKK0xJ TkUgMTogLi4uUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChB KyA/KykgREVGSU5FLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIERpZCB5b3UgbWVhbiAiKz8iIGZvciByZWx1 Y3RhbnQgcXVhbnRpZmllcj8KK1NFTEVDVCBGUk9NIHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEEqID8rKSBERUZJ TkUgQSBBUyBUUlVFKTsKK0VSUk9SOiAgaW52YWxpZCB0b2tlbiAiPysiIGFmdGVyICIqIiBxdWFu dGlmaWVyCitMSU5FIDE6IC4uLlMgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcg UEFUVEVSTiAoQSogPyspIERFRklORS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBEaWQgeW91IG1lYW4gIio/ IiBmb3IgcmVsdWN0YW50IHF1YW50aWZpZXI/CitTRUxFQ1QgRlJPTSBycHJfZXJyIFdJTkRPVyB3 IEFTICggUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChB PyA/PykgREVGSU5FIEEgQVMgVFJVRSk7CitFUlJPUjogIGludmFsaWQgcXVhbnRpZmllciBjb21i aW5hdGlvbgorTElORSAxOiAuLi5PV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJ TkcgUEFUVEVSTiAoQT8gPz8pIERFRkkuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgRGlkIHlvdSBtZWFuICI/ PyIgZm9yIHJlbHVjdGFudCBxdWFudGlmaWVyPworU0VMRUNUIEZST00gcnByX2VyciBXSU5ET1cg dyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAo QSB7MSwyfT8/KSBERUZJTkUgQSBBUyBUUlVFKTsKK0VSUk9SOiAgaW52YWxpZCB0b2tlbiAiPz8i IGFmdGVyIHJhbmdlIHF1YW50aWZpZXIKK0xJTkUgMTogLi4uVFdFRU4gQ1VSUkVOVCBST1cgQU5E IDEgRk9MTE9XSU5HIFBBVFRFUk4gKEEgezEsMn0/PykgREVGSU5FLi4uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDog IE9ubHkgIj8iIGlzIGFsbG93ZWQgYWZ0ZXIge24sbX0gdG8gbWFrZSBpdCByZWx1Y3RhbnQuCist LSBub25lIG9mIHRoZSBmb2xsb3dpbmcgNCByYW5nZS1xdWFudGlmaWVyIHF1ZXJpZXMgc2hvdWxk IGJlIGFjY2VwdGVkCitTRUxFQ1QgRlJPTSBycHJfZXJyIFdJTkRPVyB3IEFTICggUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChBezJ9ICEpIERFRklORSBB IEFTIFRSVUUpOworRVJST1I6ICBpbnZhbGlkIHRva2VuICIhIiBhZnRlciByYW5nZSBxdWFudGlm aWVyCitMSU5FIDE6IC4uLkJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRF Uk4gKEF7Mn0gISkgREVGSU5FIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5ICI/IiBpcyBhbGxvd2Vk IGFmdGVyIHtufSB0byBtYWtlIGl0IHJlbHVjdGFudC4KK1NFTEVDVCBGUk9NIHJwcl9lcnIgV0lO RE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRF Uk4gKEF7Mix9ICEpIERFRklORSBBIEFTIFRSVUUpOworRVJST1I6ICBpbnZhbGlkIHRva2VuICIh IiBhZnRlciByYW5nZSBxdWFudGlmaWVyCitMSU5FIDE6IC4uLkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyLH0gISkgREVGSU5FIC4uLgorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6 ICBPbmx5ICI/IiBpcyBhbGxvd2VkIGFmdGVyIHtuLH0gb3IgeyxtfSB0byBtYWtlIGl0IHJlbHVj dGFudC4KK1NFTEVDVCBGUk9NIHJwcl9lcnIgV0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEF7LDN9ICEpIERFRklORSBBIEFTIFRS VUUpOworRVJST1I6ICBpbnZhbGlkIHRva2VuICIhIiBhZnRlciByYW5nZSBxdWFudGlmaWVyCitM SU5FIDE6IC4uLkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQXss M30gISkgREVGSU5FIC4uLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIF4KK0hJTlQ6ICBPbmx5ICI/IiBpcyBhbGxvd2VkIGFmdGVy IHtuLH0gb3IgeyxtfSB0byBtYWtlIGl0IHJlbHVjdGFudC4KK1NFTEVDVCBGUk9NIHJwcl9lcnIg V0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5HIFBB VFRFUk4gKEF7MiwzfSAhKSBERUZJTkUgQSBBUyBUUlVFKTsKK0VSUk9SOiAgaW52YWxpZCB0b2tl biAiISIgYWZ0ZXIgcmFuZ2UgcXVhbnRpZmllcgorTElORSAxOiAuLi5UV0VFTiBDVVJSRU5UIFJP VyBBTkQgMSBGT0xMT1dJTkcgUEFUVEVSTiAoQXsyLDN9ICEpIERFRklORSAuLi4KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitI SU5UOiAgT25seSAiPyIgaXMgYWxsb3dlZCBhZnRlciB7bixtfSB0byBtYWtlIGl0IHJlbHVjdGFu dC4KKy0tIFVubWF0Y2hlZCBwYXJlbnRoZXNlcworU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSBO T1RJQ0U7CitETyAkJAorQkVHSU4KKyAgICBFWEVDVVRFICdTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX2VyciBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HIFBBVFRFUk4gKChBIEIpIERFRklORSBBIEFT IHZhbCA+IDAsIEIgQVMgdmFsID4gMTApJzsKKyAgICBSQUlTRSBOT1RJQ0UgJ1VubWF0Y2hlZCBw YXJlbnRoZXNlczogVU5FWFBFQ1RFRCBTVUNDRVNTJzsKK0VYQ0VQVElPTgorICAgIFdIRU4gc3lu dGF4X2Vycm9yIFRIRU4KKyAgICAgICAgUkFJU0UgTk9USUNFICdVbm1hdGNoZWQgcGFyZW50aGVz ZXM6IEVYUEVDVEVEIEVSUk9SIC0gJScsIFNRTEVSUk07CisgICAgV0hFTiBPVEhFUlMgVEhFTgor ICAgICAgICBSQUlTRSBOT1RJQ0UgJ1VubWF0Y2hlZCBwYXJlbnRoZXNlczogVU5FWFBFQ1RFRCBF UlJPUiAtICUnLCBTUUxFUlJNOworRU5EICQkOworTk9USUNFOiAgVW5tYXRjaGVkIHBhcmVudGhl c2VzOiBFWFBFQ1RFRCBFUlJPUiAtIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJBUyIKK1NFVCBj bGllbnRfbWluX21lc3NhZ2VzID0gV0FSTklORzsKKy0tIEVSUk9SOiBlbXB0eSBERUZJTkUgbm90 IGFsbG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lORE9XIHcg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCispOworRVJS T1I6ICBzeW50YXggZXJyb3IgYXQgb3IgbmVhciAiKSIKK0xJTkUgODogKTsKKyAgICAgICAgXgor LS0gRVJST1I6IGVtcHR5IFBBVFRFUk4gbm90IGFsbG93ZWQKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBh dCBvciBuZWFyICIpIgorTElORSA2OiAgICAgUEFUVEVSTiAoKQorICAgICAgICAgICAgICAgICAg ICAgXgorLS0gRVJST1I6IERFRklORSB3aXRob3V0IFBBVFRFUk4gKFBBVFRFUk4gYW5kIERFRklO RSBtdXN0IGJlIHVzZWQgdG9nZXRoZXIpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJw cl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKyk7CitFUlJPUjogIHN5bnRheCBlcnJvciBhdCBvciBuZWFyICJERUZJTkUiCitMSU5FIDY6 ICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgICAgICAgICBeCistLSBRdWFsaWZpZWQgY29s dW1uIHJlZmVyZW5jZXMgKE5PVCBTVVBQT1JURUQpCistLSBQYXR0ZXJuIHZhcmlhYmxlIHF1YWxp ZmllZCBuYW1lOiBub3Qgc3VwcG9ydGVkICh2YWxpZCBwZXIgSVNPL0lFQyAxOTA3NS01IDYuMTUg LyA0LjE2LCBub3QgeWV0IGltcGxlbWVudGVkKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJP TSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykK KyAgICBERUZJTkUgQSBBUyBBLnZhbCA+IDAKKyk7CitFUlJPUjogIHBhdHRlcm4gdmFyaWFibGUg cXVhbGlmaWVkIGV4cHJlc3Npb24gImEudmFsIiBpcyBub3Qgc3VwcG9ydGVkIGluIERFRklORSBj bGF1c2UKK0xJTkUgNzogICAgIERFRklORSBBIEFTIEEudmFsID4gMAorICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gUEFUVEVSTi1vbmx5IHZhcmlhYmxlIHF1YWxpZmllZCBuYW1lOiBub3Qg c3VwcG9ydGVkIGV2ZW4gd2l0aG91dCBERUZJTkUgZW50cnkKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcKK0ZST00gcnByX2VycgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSsgQispCisgICAgREVGSU5FIEEgQVMgQi52YWwgPiAwCispOworRVJST1I6ICBwYXR0ZXJu IHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9uICJiLnZhbCIgaXMgbm90IHN1cHBvcnRlZCBp biBERUZJTkUgY2xhdXNlCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyBCLnZhbCA+IDAKKyAgICAg ICAgICAgICAgICAgICAgICAgIF4KKy0tIERFRklORS1vbmx5IHZhcmlhYmxlIHF1YWxpZmllZCBu YW1lOiBzdGlsbCBhIHBhdHRlcm4gdmFyaWFibGUsIG5vdCBhIHJhbmdlIHZhcmlhYmxlCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgQi52 YWwgPiAwCispOworRVJST1I6ICBERUZJTkUgdmFyaWFibGUgImIiIGlzIG5vdCB1c2VkIGluIFBB VFRFUk4KK0xJTkUgNzogICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgQi52YWwgPiAwCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBGUk9NLWNsYXVzZSByYW5nZSB2 YXJpYWJsZSBxdWFsaWZpZWQgbmFtZTogbm90IGFsbG93ZWQgKHByb2hpYml0ZWQgYnkgSVNPL0lF QyAxOTA3NS01IDYuNSkKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2VycgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgcnByX2Vyci52YWwgPiAwCispOworRVJST1I6ICByYW5nZSB2YXJpYWJsZSBxdWFsaWZpZWQg ZXhwcmVzc2lvbiAicnByX2Vyci52YWwiIGlzIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UK K0xJTkUgNzogICAgIERFRklORSBBIEFTIHJwcl9lcnIudmFsID4gMAorICAgICAgICAgICAgICAg ICAgICAgICAgXgorLS0gVW5rbm93biBxdWFsaWZpZXIgKG5laXRoZXIgcGF0dGVybiB2YXIgbm9y IHJhbmdlIHZhcik6IHRoZSBERUZJTkUgcHJlLWNoZWNrCistLSBtdXN0IGZhbGwgdGhyb3VnaCBz byB0aGF0IG5vcm1hbCBjb2x1bW4gcmVzb2x1dGlvbiBwcm9kdWNlcyBhIHNlbnNpYmxlIGVycm9y LgorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBub3N1Y2gudmFs ID4gMAorKTsKK0VSUk9SOiAgbWlzc2luZyBGUk9NLWNsYXVzZSBlbnRyeSBmb3IgdGFibGUgIm5v c3VjaCIKK0xJTkUgNzogICAgIERFRklORSBBIEFTIG5vc3VjaC52YWwgPiAwCisgICAgICAgICAg ICAgICAgICAgICAgICBeCistLSBVbnF1YWxpZmllZCBjb21wb3NpdGUgZmllbGQgYWNjZXNzIGlu IERFRklORSB3b3Jrczogbm8gcXVhbGlmaWVyIG1lYW5zIG5vCistLSBwYXR0ZXJuL3JhbmdlLXZh ciBuYXZpZ2F0aW9uLCBzbyB0aGUgcHJlLWNoZWNrIHNraXBzIGFuZCBub3JtYWwgcmVzb2x1dGlv bgorLS0gaGFuZGxlcyAiKGl0ZW1zKS5hbW91bnQiIHZpYSBBX0luZGlyZWN0aW9uIG9uIHRoZSBj dXJyZW50IHJvdy4KK0NSRUFURSBUWVBFIHJwcl9pdGVtIEFTIChuYW1lIFRFWFQsIGFtb3VudCBJ TlQpOworQ1JFQVRFIFRFTVAgVEFCTEUgcnByX2NvbXBvc2l0ZSAoaWQgaW50LCBpdGVtcyBycHJf aXRlbSk7CitJTlNFUlQgSU5UTyBycHJfY29tcG9zaXRlIFZBTFVFUyAoMSwgUk9XKCdhJyw1KSks ICgyLCBST1coJ2InLDE1KSksICgzLCBST1coJ2MnLDI1KSk7CitTRUxFQ1QgaWQsIChpdGVtcyku YW1vdW50LCBDT1VOVCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9jb21wb3NpdGUKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyAoaXRlbXMpLmFtb3VudCA+IDEwCisp OworIGlkIHwgYW1vdW50IHwgY250IAorLS0tLSstLS0tLS0tLSstLS0tLQorICAxIHwgICAgICA1 IHwgICAwCisgIDIgfCAgICAgMTUgfCAgIDIKKyAgMyB8ICAgICAyNSB8ICAgMQorKDMgcm93cykK KworLS0gRXhwZWN0ZWQ6IHJvd3Mgd2hlcmUgKGl0ZW1zKS5hbW91bnQgPiAxMCBmb3JtIG1hdGNo ZXM7IGNvdW50cyByZWZsZWN0IGZyYW1lIHNpemUKKy0tIENvbXBvc2l0ZSB0eXBlIGZpZWxkIHNl bGVjdGlvbiAocXVhbGlmaWVkIGZvcm1zKTogdGhlIENvbHVtblJlZiBwb3J0aW9uICgiQS5pdGVt cyIgb3IKKy0tICJycHJfY29tcG9zaXRlLml0ZW1zIikgaXMgd2hhdCBnZXRzIHF1b3RlZDsgdGhl IHRyYWlsaW5nICIuYW1vdW50IiBsaXZlcyBpbgorLS0gdGhlIHN1cnJvdW5kaW5nIEFfSW5kaXJl Y3Rpb24gbm9kZSBhbmQgaXMgbm90IHZpc2libGUgdG8gdGhlIHByZS1jaGVjay4KK1NFTEVDVCBD T1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2NvbXBvc2l0ZQorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgKEEuaXRlbXMpLmFtb3Vu dCA+IDEwCispOworRVJST1I6ICBwYXR0ZXJuIHZhcmlhYmxlIHF1YWxpZmllZCBleHByZXNzaW9u ICJhLml0ZW1zIiBpcyBub3Qgc3VwcG9ydGVkIGluIERFRklORSBjbGF1c2UKK0xJTkUgNzogICAg IERFRklORSBBIEFTIChBLml0ZW1zKS5hbW91bnQgPiAxMAorICAgICAgICAgICAgICAgICAgICAg ICAgIF4KK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2NvbXBvc2l0ZQorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMg KHJwcl9jb21wb3NpdGUuaXRlbXMpLmFtb3VudCA+IDEwCispOworRVJST1I6ICByYW5nZSB2YXJp YWJsZSBxdWFsaWZpZWQgZXhwcmVzc2lvbiAicnByX2NvbXBvc2l0ZS5pdGVtcyIgaXMgbm90IGFs bG93ZWQgaW4gREVGSU5FIGNsYXVzZQorTElORSA3OiAgICAgREVGSU5FIEEgQVMgKHJwcl9jb21w b3NpdGUuaXRlbXMpLmFtb3VudCA+IDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgXgorRFJP UCBUQUJMRSBycHJfY29tcG9zaXRlOworRFJPUCBUWVBFIHJwcl9pdGVtOworLS0gRVJST1I6IHVu ZGVmaW5lZCBjb2x1bW4gaW4gREVGSU5FCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3CitGUk9NIHJw cl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAg IERFRklORSBBIEFTIG5vbmV4aXN0ZW50X2NvbHVtbiA+IDAKKyk7CitFUlJPUjogIGNvbHVtbiAi bm9uZXhpc3RlbnRfY29sdW1uIiBkb2VzIG5vdCBleGlzdAorTElORSA3OiAgICAgREVGSU5FIEEg QVMgbm9uZXhpc3RlbnRfY29sdW1uID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0g RVJST1I6IHR5cGUgbWlzbWF0Y2gKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX2Vy cgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVG SU5FIEEgQVMgdmFsID4gJ3N0cmluZycKKyk7CitFUlJPUjogIGludmFsaWQgaW5wdXQgc3ludGF4 IGZvciB0eXBlIGludGVnZXI6ICJzdHJpbmciCitMSU5FIDc6ICAgICBERUZJTkUgQSBBUyB2YWwg PiAnc3RyaW5nJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gRVJST1I6IGFn Z3JlZ2F0ZSBmdW5jdGlvbiBpbiBERUZJTkUgaXMgbm90IHN1cHBvcnRlZAorU0VMRUNUIENPVU5U KCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBDT1VOVCgqKSA+IDAKKyk7CitFUlJPUjog IGFnZ3JlZ2F0ZSBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRklORQorTElORSA3OiAg ICAgREVGSU5FIEEgQVMgQ09VTlQoKikgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCist LSBFUlJPUjogc2V0LXJldHVybmluZyBmdW5jdGlvbiBpbiBERUZJTkUgaXMgbm90IHN1cHBvcnRl ZAorU0VMRUNUIEZST00gcnByX2VycgorV0lORE9XIHcgQVMgKCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIDEgRk9MTE9XSU5HIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyAxID4gZ2VuZXJh dGVfc2VyaWVzKDEgLDIpKTsKK0VSUk9SOiAgc2V0LXJldHVybmluZyBmdW5jdGlvbnMgYXJlIG5v dCBhbGxvd2VkIGluIERFRklORQorTElORSAyOiAuLi4gUk9XIEFORCAxIEZPTExPV0lORyBQQVRU RVJOIChBKykgREVGSU5FIEEgQVMgMSA+IGdlbmVyYXRlX3MuLi4KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSBFUlJPUjog d2luZG93IGZ1bmN0aW9uIGluIERFRklORSBpcyBub3Qgc3VwcG9ydGVkCitTRUxFQ1QgRlJPTSBy cHJfZXJyCitXSU5ET1cgdyBBUyAoIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgMSBGT0xM T1dJTkcgUEFUVEVSTiAoQSspIERFRklORSBBIEFTIDEgPiByb3dfbnVtYmVyKCkgT1ZFUiAoKSk7 CitFUlJPUjogIHdpbmRvdyBmdW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRklORQorTElO RSAyOiAuLi4gUk9XIEFORCAxIEZPTExPV0lORyBQQVRURVJOIChBKykgREVGSU5FIEEgQVMgMSA+ IHJvd19udW1iZXIuLi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBeCistLSBTdWJxdWVyeSBpbiBERUZJTkUgaXMgbm90IHN1cHBv cnRlZAorU0VMRUNUIENPVU5UKCopIE9WRVIgdworRlJPTSBycHJfZXJyCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAo U0VMRUNUIG1heCh2YWwpIEZST00gcnByX2VycikKKyk7CitFUlJPUjogIGNhbm5vdCB1c2Ugc3Vi cXVlcnkgaW4gREVGSU5FIGV4cHJlc3Npb24KK0xJTkUgNzogICAgIERFRklORSBBIEFTIHZhbCA+ IChTRUxFQ1QgbWF4KHZhbCkgRlJPTSBycHJfZXJyKQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gUGF0dGVybiB2YXJpYWJsZSBub3QgdXNlZCAoc2hvdWxkIHdvcmssIGV4dHJh IHZhcnMgaWdub3JlZCkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9lcnIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEr KQorICAgIERFRklORSBBIEFTIHZhbCA+IDAsIEIgQVMgdmFsID4gNSwgQyBBUyB2YWwgPiAxMAor KQorT1JERVIgQlkgaWQ7CitFUlJPUjogIERFRklORSB2YXJpYWJsZSAiYiIgaXMgbm90IHVzZWQg aW4gUEFUVEVSTgorTElORSA3OiAgICAgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiA1 LCBDIEFTIHZhbCA+IDEwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCitEUk9Q IFRBQkxFIHJwcl9lcnI7CistLSBOVUxMIGhhbmRsaW5nCitDUkVBVEUgVEFCTEUgcnByX251bGwg KGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfbnVsbCBWQUxVRVMgKDEsIDEwKSwg KDIsIE5VTEwpLCAoMywgMzApOworLS0gTlVMTCBpbiBERUZJTkUgZXhwcmVzc2lvbgorU0VMRUNU IGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX251bGwKK1dJTkRPVyB3 IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZh bCA+IDE1CispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0t LS0KKyAgMSB8ICAxMCB8ICAgMAorICAyIHwgICAgIHwgICAwCisgIDMgfCAgMzAgfCAgIDEKKygz IHJvd3MpCisKKy0tIElTIE5VTEwgaW4gREVGSU5FCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikg T1ZFUiB3IGFzIGNudAorRlJPTSBycHJfbnVsbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoTispCisgICAgREVGSU5FIE4gQVMgdmFsIElTIE5VTEwKKykKK09SREVS IEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwg ICAwCisgIDIgfCAgICAgfCAgIDEKKyAgMyB8ICAzMCB8ICAgMAorKDMgcm93cykKKworLS0gSVMg Tk9UIE5VTEwgaW4gREVGSU5FCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfbnVsbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoTk4rKQorICAgIERFRklORSBOTiBBUyB2YWwgSVMgTk9UIE5VTEwKKykKK09SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAxCisg IDIgfCAgICAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMQorKDMgcm93cykKKworRFJPUCBUQUJMRSBy cHJfbnVsbDsKKy0tIENvbXBvdW5kIG5hdmlnYXRpb246IGlubmVyIG5hdiBtdXN0IGJlIGRpcmVj dCBhcmcgKG5vdCBuZXN0ZWQgaW4gZXhwcmVzc2lvbikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHYgKyBGSVJTVCh2KSkgPiAwCispOworRVJST1I6 ICByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG9wZXJhdGlvbiBtdXN0IGJlIGEgZGlyZWN0IGFyZ3Vt ZW50IG9mIHRoZSBvdXRlciBuYXZpZ2F0aW9uCitMSU5FIDY6ICAgICBERUZJTkUgQSBBUyBQUkVW KHYgKyBGSVJTVCh2KSkgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAgT25s eSBQUkVWKEZJUlNUKCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhUKExB U1QoKSkgY29tcG91bmQgZm9ybXMgYXJlIGFsbG93ZWQuCistLSBGSVJTVC9MQVNUIHdyYXBwaW5n IEZJUlNUL0xBU1Q6IHByb2hpYml0ZWQKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAg ICBERUZJTkUgQSBBUyBGSVJTVChGSVJTVCh2KSkgPiAwCispOworRVJST1I6ICBGSVJTVCBhbmQg TEFTVCBjYW5ub3QgY29udGFpbiBGSVJTVCBvciBMQVNUCitMSU5FIDY6ICAgICBERUZJTkUgQSBB UyBGSVJTVChGSVJTVCh2KSkgPiAwCisgICAgICAgICAgICAgICAgICAgICAgICBeCitISU5UOiAg T25seSBQUkVWKEZJUlNUKCkpLCBQUkVWKExBU1QoKSksIE5FWFQoRklSU1QoKSksIGFuZCBORVhU KExBU1QoKSkgY29tcG91bmQgZm9ybXMgYXJlIGFsbG93ZWQuCistLSBUcmlwbGUgbmVzdGluZzog cHJvaGliaXRlZCAoMy1sZXZlbCBkZWVwIG5hdmlnYXRpb24pCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVChQUkVWKHYpKSkgPiAwCispOwor RVJST1I6ICBjYW5ub3QgbmVzdCByb3cgcGF0dGVybiBuYXZpZ2F0aW9uIG1vcmUgdGhhbiB0d28g bGV2ZWxzIGRlZXAKK0xJTkUgNjogICAgIERFRklORSBBIEFTIFBSRVYoRklSU1QoUFJFVih2KSkp ID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgXgorSElOVDogIE9ubHkgUFJFVihGSVJTVCgp KSwgUFJFVihMQVNUKCkpLCBORVhUKEZJUlNUKCkpLCBhbmQgTkVYVChMQVNUKCkpIGNvbXBvdW5k IGZvcm1zIGFyZSBhbGxvd2VkLgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBXaW5kb3cgRGVkdXBsaWNhdGlvbiBUZXN0 cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBub24tUlBSIGFuZCBSUFIgd2luZG93cyB3aXRoIGlkZW50aWNhbCBiYXNl IGZyYW1lIGFyZSBrZXB0IHNlcGFyYXRlLgorU0VMRUNUIGlkLCB2YWwsCisgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICApIEFTIGZ2X25vcm1hbCwK KyAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3MSBBUyBmdl9ycHIKK0ZST00gKFZBTFVFUyAoMSwg MTApLCAoMiwgMjApLCAoMywgMzApLCAoNCwgNDApKSBBUyB0KGlkLCB2YWwpCitXSU5ET1cgdzEg QVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMTAKKyk7CisgaWQgfCB2YWwgfCBmdl9ub3JtYWwgfCBmdl9ycHIgCistLS0tKy0tLS0tKy0t LS0tLS0tLS0tKy0tLS0tLS0tCisgIDEgfCAgMTAgfCAgICAgICAgIDEgfCAgICAgICAKKyAgMiB8 ICAyMCB8ICAgICAgICAgMiB8ICAgICAgMgorICAzIHwgIDMwIHwgICAgICAgICAzIHwgICAgICAg CisgIDQgfCAgNDAgfCAgICAgICAgIDQgfCAgICAgICAKKyg0IHJvd3MpCisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g UGF0dGVybiBPcHRpbWl6YXRpb24gVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgZm9yIHBhdHRlcm4g b3B0aW1pemF0aW9uCistLSBVc2UgRVhQTEFJTiB0byB2ZXJpZnkgb3B0aW1pemVkIHBhdHRlcm4g KHNob3duIGFzICJQYXR0ZXJuOiAuLi4iKQorQ1JFQVRFIFRBQkxFIHJwcl9wbGFuIChpZCBJTlQs IHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3BsYW4gVkFMVUVTCisgICAgKDEsIDEwKSwgKDIs IDIwKSwgKDMsIDMwKSwgKDQsIDQwKSwgKDUsIDUwKSwKKyAgICAoNiwgNjApLCAoNywgNzApLCAo OCwgODApLCAoOSwgOTApLCAoMTAsIDEwMCk7CistLSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2U6IEEg QSBBIC0+IGF7M30KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEg QSBBKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogYXszfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcg cm93cykKKworLS0gQ29uc2VjdXRpdmUgVkFSIG1lcmdlOiBBezJ9IEF7M30gLT4gYXs1fQorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoQXsyfSBBezN9KSBERUZJTkUg QSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXs1 fQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtl eTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0g Q29uc2VjdXRpdmUgVkFSIG1lcmdlOiBBKyBBKiAtPiBhKworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoQSsgQSopIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIENvbnNlY3V0aXZlIFZBUiBtZXJnZTog QSBBKyAtPiBhezIsfQorLS0gd2hlcmUgYSBmaW5pdGUgcHJldiAoQXsxLDF9KSBtZWV0cyBhbiBp bmZpbml0ZSBjaGlsZCAoQSspLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCop IE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFU VEVSTiAoQSBBKykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGF7Mix9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBT b3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJf cGxhbgorKDcgcm93cykKKworLS0gQ29uc2VjdXRpdmUgVkFSIG1lcmdlIGF0IHRoZSBib3VuZGFy eTogQXsxMDczNzQxODIzLH0gQXsxMDczNzQxODIzLH0gLT4KKy0tIGF7MjE0NzQ4MzY0Nix9LiAg VGhlIG1pbiBzdW0gMjE0NzQ4MzY0NiA9IElOVDMyX01BWCAtIDEgaXMgdGhlIGxhcmdlc3QKKy0t IHN0aWxsLWZpbml0ZSBib3VuZCwgc28gdGhlIG1lcmdlIHByb2NlZWRzOyBhIHN1bSBvZiBleGFj dGx5IElORiBpbnN0ZWFkCistLSBmYWxscyBiYWNrIChzZWUgdGhlIE9wdGltaXphdGlvbiBGYWxs YmFjayBUZXN0cykuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChB ezEwNzM3NDE4MjMsfSBBezEwNzM3NDE4MjMsfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7MjE0NzQ4MzY0Nix9IgorICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gQ29uc2VjdXRp dmUgR1JPVVAgbWVyZ2Ugd2l0aCBmaW5pdGUgcXVhbnRpZmllcnM6ICgoQSBCKXs1fSkgKChBIEIp ezEwfSkgLT4gbWVyZ2VkCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJO ICgoKEEgQil7NX0pICgoQSBCKXsxMH0pKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFs ID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiKXsxNX0K KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6 IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIENv bnNlY3V0aXZlIEdST1VQIG1lcmdlIHdpdGggdW5ib3VuZGVkOiAoQSBCKSsgKEEgQikrIC0+IChh IGIpezIsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQikr IChBIEIpKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEnIGInKXsyLH0iCisgICBOYXYgTWFyayBM b29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBDb25zZWN1dGl2ZSBHUk9V UCBtZXJnZTogKEEgQil7Mn0gKEEgQikrIC0+IChhIGIpezMsfQorLS0gV2hlcmUgYSBmaW5pdGUg cHJldiAoKEEgQil7MiwyfSkgbWVldHMgYW4gaW5maW5pdGUgY2hpbGQgKChBIEIpKykuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKXsyfSAoQSBCKSspIERF RklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIFBhdHRlcm46IChhJyBiJyl7Myx9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAK KyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gQ29uc2VjdXRpdmUgR1JPVVAgbWVyZ2UgYXQg dGhlIGJvdW5kYXJ5OiAoQSBCKXsxMDczNzQxODIzLH0gKEEgQil7MTA3Mzc0MTgyMyx9CistLSAt PiAoYSBiKXsyMTQ3NDgzNjQ2LH0uICBUaGUgbWluIHN1bSBJTlQzMl9NQVggLSAxIGlzIHN0aWxs IGZpbml0ZSwgc28gdGhlCistLSBtZXJnZSBwcm9jZWVkczsgYSBzdW0gb2YgZXhhY3RseSBJTkYg aW5zdGVhZCBmYWxscyBiYWNrIChzZWUgdGhlCistLSBPcHRpbWl6YXRpb24gRmFsbGJhY2sgVGVz dHMpLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJw cl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQil7MTA3 Mzc0MTgyMyx9IChBIEIpezEwNzM3NDE4MjMsfSkgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFT IHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEnIGIn KXsyMTQ3NDgzNjQ2LH0iCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBQUkVGSVggbWVyZ2U6IEEgQiAoQSBCKSsgLT4gKGEgYil7Mix9CitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOIChBIEIgKEEgQikrKSBERUZJTkUg QSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiAoYScgYicpezIsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFBSRUZJWCBhbmQgU1VGRklYIG1lcmdlOiBBIEIgKEEg QikrIEEgQiAtPiAoYSBiKXszLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKEEgQiAoQSBCKSsgQSBCKSBERUZJTkUgQSBBUyB2YWwgPD0gNDAsIEIgQVMgdmFsID4g NDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYicpezMsfSIK KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6 IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIEZs YXR0ZW4gbmVzdGVkOiBBICgoQikgKEMpKSAtPiBhIGIgYworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoQSAoKEIpIChDKSkpIERFRklORSBBIEFTIHZhbCA8PSAzMCwg QiBBUyB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhIGIgYworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0 CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxh bgorKDcgcm93cykKKworLS0gRGF0YSBleGVjdXRpb246IFNFUSBmbGF0dGVuIHByb2R1Y2VzIGNv cnJlY3QgcmVzdWx0cworU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgICAgICAgICAgUEFUVEVSTiAoQSAoKEIpIChDKSkpIERFRklO RSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjApOworIGlkIHwg dmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgMjAg fCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAK KyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8 ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gQUxUIGZsYXR0ZW46 IChBIHwgKEIgfCBDKSkrIC0+IChhIHwgYiB8IGMpKworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgUEFUVEVSTiAoKEEgfCAoQiB8IEMpKSspIERFRklORSBBIEFTIHZhbCA8PSAzMCwg QiBBUyB2YWwgPD0gNjAsIEMgQVMgdmFsID4gNjApOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiAoYSB8IGIgfCBjKSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIEFMVCBkZWR1cGxpY2F0ZTogKEEgfCBCIHwgQSkgLT4g KGEgfCBiKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgfCBC IHwgQSkrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2lu ZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpKworICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBT ZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gRGF0YSBleGVjdXRpb246IEFMVCBk ZWR1cCBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdHMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBP VkVSIHcgQVMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgICAgICAgICAgUEFUVEVSTiAo KEEgfCBCIHwgQSkrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworIGlk IHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgIDEwCisgIDIgfCAg MjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAg IDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAg OSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gUXVhbnRpZmll ciBtdWx0aXBseTogKEF7Mn0pezN9IC0+IGF7Nn0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAg ICAgICAgIFBBVFRFUk4gKChBezJ9KXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBX aW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7Nn0KKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6 IHJlbHVjdGFudCBHUk9VUCBjaGlsZCAoKChBIEIpezJ9Pyl7M30pIHN0YXlzIG5lc3RlZAorLS0g YSByZWx1Y3RhbnQgcXVhbnRpZmllciBvbiBhIEdST1VQIGlzIG5vdCBzdWJqZWN0IHRvIG11bHRp cGxpY2F0aW9uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoKEEg Qil7Mn0/KXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiAwKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChhIGIpezJ9Pyl7M30KKyAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgbXVs dGlwbHkgY29udHJvbDogZ3JlZWR5IEdST1VQICgoKEEgQil7Mn0pezN9KSAtPiAoYSBiKXs2fQor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKChBIEIpezJ9KXszfSkg REVGSU5FIEEgQVMgdmFsID4gMCwgQiBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogKGEgYil7Nn0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgbXVsdGlwbHkgd2l0aCBjaGlsZCBy YW5nZTogKEF7MiwzfSl7M30gLT4gYXs2LDl9CistLSBvdXRlciBleGFjdCwgY2hpbGQgcmFuZ2Ug LSBvcHRpbWl6YXRpb24gYXBwbGllcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoKEF7MiwzfSl7M30pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93 OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezYsOX0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAw CisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNj YW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgTk8gbXVsdGlwbHk6IChB ezJ9KXsyLDN9IHN0YXlzIGFzIChhezJ9KXsyLDN9CistLSBvdXRlciByYW5nZSAtIGdhcHMgd291 bGQgb2NjdXIgKDQsNiBub3QgNCw1LDYpLCBubyBvcHRpbWl6YXRpb24KK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezJ9KXsyLDN9KSBERUZJTkUgQSBBUyB2YWwg PiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGF7Mn0pezIsM30K KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6 IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1 YW50aWZpZXIgTk8gbXVsdGlwbHk6IChBezJ9KXsyLH0gc3RheXMgYXMgKGF7Mn0pezIsfQorLS0g b3V0ZXIgdW5ib3VuZGVkIC0gZ2FwcyB3b3VsZCBvY2N1ciAoNCw2LDgsLi4uIG5vdCA0LDUsNiwu Li4pLCBubyBvcHRpbWl6YXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBB VFRFUk4gKChBezJ9KXsyLH0pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsyfScpezIsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgbXVsdGlwbHk6IChB KXsyLH0gLT4gYXsyLH0KKy0tIGNoaWxkIGV4YWN0IDEgLSBubyBnYXBzLCBvcHRpbWl6YXRpb24g YXBwbGllcworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEpezIs fSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlk IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IGF7Mix9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcg cm93cykKKworLS0gUXVhbnRpZmllciBtdWx0aXBseTogKEEpKyAtPiBhKworLS0gY2hpbGQgZXhh Y3QgMSAtIG5vIGdhcHMsIG9wdGltaXphdGlvbiBhcHBsaWVzCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBQQVRURVJOICgoQSkrKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAg IFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFj azogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNl cSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBRdWFudGlmaWVyIE5PIG11bHRpcGx5 OiAoQXsyfSl7Myw1fSBzdGF5cyBhcyAoYXsyfSl7Myw1fQorLS0gb3V0ZXIgcmFuZ2UsIGNoaWxk IGV4YWN0ID4gMSAtIGdhcHMgd291bGQgb2NjdXIgKDYsOCwxMCBub3QgNiw3LDgsOSwxMCkKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezJ9KXszLDV9KSBERUZJ TkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog KGF7Mn0pezMsNX0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAg ICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJv d3MpCisKKy0tIFF1YW50aWZpZXIgbXVsdGlwbHk6IChBezIsM30pezIsM30gLT4gYXs0LDl9Cist LSBvdXRlciByYW5nZSwgY2hpbGQgcmFuZ2U6IGNvdW50cyBbNCw2XSBVIFs2LDldID0gWzQsOV0g YXJlIGNvbnRpZ3VvdXMsIHNvIGl0IGZvbGRzCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBQQVRURVJOICgoQXsyLDN9KXsyLDN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAg IFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXs0LDl9CisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBRdWFudGlmaWVyIE5PIG11bHRp cGx5OiAoQXs0LDV9KXsyLDN9IHN0YXlzIGFzIChhezQsNX0pezIsM30KKy0tIG91dGVyIHJhbmdl LCBjaGlsZCByYW5nZSB3aXRoIGEgZ2FwOiBbOCwxMF0gVSBbMTIsMTVdIG1pc3NlcyAxMQorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7NCw1fSl7MiwzfSkgREVG SU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IChhezQsNX0pezIsM30KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3 IHJvd3MpCisKKy0tIE5lc3RlZCB1bmJvdW5kZWQ6IChBKikqIC0+IGEqCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSopKikgREVGSU5FIEEgQVMgdmFsID4gMCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEqIgorICAgTmF2IE1hcmsg TG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gTmVzdGVkIHVuYm91bmRl ZDogKEErKSogLT4gYSoKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4g KChBKykqKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYSoiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBOZXN0ZWQgdW5ib3VuZGVkOiAoQSspKyAtPiBhKworRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEErKSspIERFRklORSBBIEFTIHZhbCA+IDAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFF1YW50aWZpZXIgbXVs dGlwbHkgd2l0aCBhbiB1bmJvdW5kZWQgY2hpbGQ6IGFuIGV4YWN0IG91dGVyIGNvdW50IChtID09 IG4pCistLSBhbHdheXMgZm9sZHMgcmVnYXJkbGVzcyBvZiB0aGUgY2hpbGQncyBtYXggLSAoQSsp ezN9IC0+IGF7Myx9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgo QSspezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYXszLH0iCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQK KyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFu CisoNyByb3dzKQorCistLSAoQXsyLH0pezN9IC0+IGF7Nix9ICAobSA9PSBuLCB1bmJvdW5kZWQg Y2hpbGQgd2l0aCBtaW4gMikKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKChBezIsfSl7M30pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiBhezYsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAt PiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24g cnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIChBKyl7Miw0fSAtPiBhezIsfSAgKG91dGVyIHJhbmdl LCB1bmJvdW5kZWQgY2hpbGQ6IGV2ZXJ5IGludGVydmFsIHJlYWNoZXMgSU5GLAorLS0gc28gdGhl eSBhbHdheXMgdG91Y2gpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJO ICgoQSspezIsNH0pIERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICBQYXR0ZXJuOiBhezIsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X3BsYW4KKyg3IHJvd3MpCisKKy0tIChBezIsM30pezIsNH0gLT4gYXs0LDEyfSAgKG91dGVyIHJh bmdlIHggY2hpbGQgcmFuZ2UsIGNvbnRpZ3VvdXM6CistLSBbNCw2XSBVIFs2LDldIFUgWzgsMTJd ID0gWzQsMTJdKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7 MiwzfSl7Miw0fSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGF7NCwxMn0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X3BsYW4KKyg3IHJvd3MpCisKKy0tIFNraXBwYWJsZSBvdXRlciAobWluIDApIGZvbGRzIG9ubHkg d2hlbiB0aGUgemVybyBjYXNlIGNvbm5lY3RzIHRvIHRoZSBjaGlsZAorLS0gcmFuZ2U6IChBezEs M30pPyAtPiBhezAsM30gIChjaGlsZCBtaW4gPD0gMSwgc28gezB9IFUgWzEsM10gPSBbMCwzXSBp cyBjb250aWd1b3VzKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAo KEF7MSwzfSk/KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H KQorICAgUGF0dGVybjogYXswLDN9CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNv cnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9w bGFuCisoNyByb3dzKQorCistLSBRdWFudGlmaWVyIE5PIG11bHRpcGx5OiAoQXsyLDN9KT8gc3Rh eXMgYXMgKGF7MiwzfSk/CistLSBtaW4gMCB3aXRoIGNoaWxkIG1pbiA+PSAyOiB7MH0gVSBbMiwz XSBsZWF2ZXMgMSB1bnJlYWNoYWJsZSAoaW50ZXJ2YWxzIHRvdWNoIGJ1dAorLS0gdGhlIHplcm8g Y2FzZSBkb2VzIG5vdCBjb25uZWN0KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoKEF7MiwzfSk/KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzog dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgUGF0dGVybjogKGF7MiwzfSk/CisgICBOYXYgTWFyayBMb29rYmFjazog MAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBRdWFudGlmaWVyIE5PIG11bHRpcGx5OiAo QXszLDR9KT8gc3RheXMgYXMgKGF7Myw0fSk/CistLSBtaW4gMCB3aXRoIGNoaWxkIG1pbiA+PSAy OiB7MH0gVSBbMyw0XSBsZWF2ZXMgMSwyIHVucmVhY2hhYmxlCitFWFBMQUlOIChDT1NUUyBPRkYp CitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgICAgICBQQVRURVJOICgoQXszLDR9KT8pIERFRklORSBBIEFTIHZhbCA+IDApOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXszLDR9KT8KKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFVud3JhcCBHUk9V UHsxLDF9OiAoQSkgLT4gYQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9W RVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVS TiAoKEEpKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcg cm93cykKKworLS0gVW53cmFwIEdST1VQezEsMX06IChBIEIpIC0+IGEgYgorRVhQTEFJTiAoQ09T VFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQikpIERFRklORSBBIEFTIHZhbCA8PSA1 MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVF UlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IGEgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0 IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKwor LS0gQ29tYmluZWQgb3B0aW1pemF0aW9uOiBBIEEgKEIgQikrIEIgQiBDIEMgQyAtPiBhezJ9IChi ezJ9KXsyLH0gY3szfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAo QSBBIChCIEIpKyBCIEIgQyBDIEMpCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDIw LCBCIEFTIHZhbCA+IDIwIEFORCB2YWwgPD0gNzAsIEMgQVMgdmFsID4gNzApOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2lu ZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezJ9IChiezJ9KXsyLH0gY3szfQorICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gQ29uc2VjdXRp dmUgR1JPVVAgbWVyZ2Ugd2l0aCB1bmJvdW5kZWQ6IChBKykgKEErKSAtPiBhezIsfQorRVhQTEFJ TiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5E T1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEErKSAoQSspKSBERUZJTkUgQSBB UyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXsyLH0i CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5 OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBD b25zZWN1dGl2ZSBHUk9VUCBtZXJnZSBmaW5pdGU6IChBezEwfSl7MjB9IC0+IGF7MjAwfQorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEF7MTB9KXsyMH0pIERFRklO RSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBh ezIwMH0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29y dCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisK Ky0tIERpZmZlcmVudCBHUk9VUCBwcmV2ZW50cyBtZXJnZTogKEEgQil7Mn0gKEMgRCl7M30KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIpezJ9IChDIEQpezN9 KQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAyNSwgQiBBUyB2YWwgPiAyNSBBTkQg dmFsIDw9IDUwLAorICAgICAgICAgICAgICAgICAgICBDIEFTIHZhbCA+IDUwIEFORCB2YWwgPD0g NzUsIEQgQVMgdmFsID4gNzUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYSBiKXsyfSAoYyBkKXszfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0 CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxh bgorKDcgcm93cykKKworLS0gRGlmZmVyZW50IGNoaWxkcmVuIGNvdW50IHByZXZlbnRzIG1lcmdl OiAoQSBCKSsgKEEgQiBDKSsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBP VkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRF Uk4gKChBIEIpKyAoQSBCIEMpKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzMs IEIgQVMgdmFsID4gMzMgQU5EIHZhbCA8PSA2NiwgQyBBUyB2YWwgPiA2Nik7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5k b3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJykrIiAoYSBiIGMpKworICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUFJFRklYIG9ubHkg bWVyZ2U6IEEgQiAoQSBCKSsgLT4gKGEgYil7Mix9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgICAgICBQQVRURVJOIChBIEIgKEEgQikrKSBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMg dmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYicp ezIsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29y dCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisK Ky0tIFNVRkZJWCBvbmx5IG1lcmdlOiAoQSBCKSsgQSBCIC0+IChhIGIpezIsfQorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAoKEEgQikrIEEgQikgREVGSU5FIEEgQVMg dmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogKGEnIGInKXsyLH0iCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNv cnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9w bGFuCisoNyByb3dzKQorCistLSBNdWx0aXBsZSBTVUZGSVggYWJzb3JwdGlvbiB3aXRoIHNraXBV bnRpbDogKEEgQikrIEEgQiBBIEIgQworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoKEEgQikrIEEgQiBBIEIgQykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwg PD0gNTAsIEIgQVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwgQyBBUyB2YWwgPiA3NSk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisg ICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJyl7Myx9IiBjCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBQUkVGSVggbWVy Z2Ugd2l0aCByZW1haW5pbmcgcHJlZml4OiBBIEIgQyBEIChDIEQpKyAgLT4gQSBCIChDIEQpIHsy LH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJf cGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQiBDIEQgKEMg RCkrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAyNSwgQiBBUyB2YWwgPiAyNSBB TkQgdmFsIDw9IDUwLAorICAgICAgICAgICAgICAgICAgICBDIEFTIHZhbCA+IDUwIEFORCB2YWwg PD0gNzUsIEQgQVMgdmFsID4gNzUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiBhIGIgKGMgZCl7Mix9CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQK KyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFu CisoNyByb3dzKQorCistLSBjYW5ub3QgbWVyZ2UsIHByZWZpeCBpcyBkaWZmZXJlbnQKK0VYUExB SU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcKK0ZST00gcnByX3BsYW4KK1dJ TkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKK1BBVFRFUk4gKEEgQiBDIEQgQyAoQyBEKSArKQorREVGSU5FIEEgQVMg dmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1LAorICAgICAgIEMgQVMgdmFsID4gNTAsIEQgQVMgdmFs ID4gNzUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIgYyBkIGMg KGMgZCkrCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNv cnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQor CistLSBQUkVGSVggbWVyZ2Ugd2l0aCBxdWFudGlmaWVyczogQSBCKiAoQSBCKikrIC0+IChhIGIq KXsyLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBy cHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEEgQiogKEEg QiopKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiKil7Mix9CisgICBO YXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAor ICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBQUkVGSVgg bWVyZ2Ugd2l0aCBtdWx0aXBsZSBxdWFudGlmaWVyczogQSsgQiogQz8gKEErIEIqIEM/KSsgLT4g KGErIGIqIGM/KXsyLH0KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4g KEErIEIqIEM/IChBKyBCKiBDPykrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSAz MCwgQiBBUyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGErIiBiKiBjPyl7Mix9CisgICBOYXYgTWFy ayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBTVUZGSVggbWVyZ2Ug d2l0aCBxdWFudGlmaWVyczogKEEgQiopKyBBIEIqIC0+IChhIGIqKXsyLH0KK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIEIqKSsgQSBCKikKKyAgICAgICAgICAg ICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiKil7Mix9CisgICBOYXYgTWFyayBMb29rYmFjazog MAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBVbndyYXAgR1JPVVB7MSwxfTogKChBIHwg QiB8IEMpKSAtPiAoYSB8IGIgfCBjKQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoKEEgfCBCIHwgQykpIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPD0g NjAsIEMgQVMgdmFsID4gNjApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYSB8IGIgfCBjKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcg cm93cykKKworLS0gRGF0YSBleGVjdXRpb246IEdST1VQIHVud3JhcCBwcm9kdWNlcyBjb3JyZWN0 IHJlc3VsdHMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJw cl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgICAgICAgICAgIFBBVFRFUk4gKChBIHwgQiB8IEMpKSBERUZJTkUgQSBB UyB2YWwgPD0gMzAsIEIgQVMgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwKTsKKyBpZCB8IHZhbCB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMQorICAyIHwgIDIwIHwgICAx CisgIDMgfCAgMzAgfCAgIDEKKyAgNCB8ICA0MCB8ICAgMQorICA1IHwgIDUwIHwgICAxCisgIDYg fCAgNjAgfCAgIDEKKyAgNyB8ICA3MCB8ICAgMQorICA4IHwgIDgwIHwgICAxCisgIDkgfCAgOTAg fCAgIDEKKyAxMCB8IDEwMCB8ICAgMQorKDEwIHJvd3MpCisKKy0tIFJlbHVjdGFudCBvcHRpbWl6 YXRpb24gYnlwYXNzOiBWQVIgbWVyZ2UKKy0tIEErPyBBIHN0YXlzIGFzIGErPyBhIChncmVlZHkg QSsgQSBtZXJnZXMgdG8gYXsyLH0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQ QVRURVJOIChBKz8gQSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIFBhdHRlcm46IGErPyBhCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4g IFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJw cl9wbGFuCisoNyByb3dzKQorCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFzczogR1JP VVAgbWVyZ2UKKy0tIChBIEIpKz8gKEEgQikgc3RheXMgc2VwYXJhdGUgKGdyZWVkeSBtZXJnZXMg dG8gKGEgYil7Mix9KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIg dyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgUEFUVEVSTiAo KEEgQikrPyAoQSBCKSkgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgYikrPyBhIGIKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAg ICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFJlbHVjdGFudCBv cHRpbWl6YXRpb24gYnlwYXNzOiBxdWFudGlmaWVyIG11bHRpcGx5IChvdXRlciByZWx1Y3RhbnQp CistLSAoQXsyfSl7M30/IHN0YXlzIGFzIChhezJ9KXszfT8gKGdyZWVkeSBtZXJnZXMgdG8gYXs2 fSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJf cGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBezJ9KXszfT8p IERFRklORSBBIEFTIHZhbCA+IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiAoYXsyfSl7M30/CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFzczogcXVhbnRpZmllciBt dWx0aXBseSAoaW5uZXIgcmVsdWN0YW50KQorLS0gKEF7Mn0/KXszfSBzdGF5cyBhcyAoYXsyfT8p ezN9IChncmVlZHkgbWVyZ2VzIHRvIGF7Nn0pCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg Q09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg ICAgICBQQVRURVJOICgoQXsyfT8pezN9KSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdp bmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGF7Mn0/KXszfQorICAgTmF2IE1hcmsgTG9v a2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gUmVsdWN0YW50IG9wdGltaXph dGlvbiBieXBhc3M6IFBSRUZJWCBtZXJnZQorLS0gQSBCIChBIEIpKz8gc3RheXMgc2VwYXJhdGUg KGdyZWVkeSBtZXJnZXMgdG8gKGEgYil7Mix9KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNU IENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAg ICAgICAgUEFUVEVSTiAoQSBCIChBIEIpKz8pIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2 YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYiAoYSBi KSs/CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQg S2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCist LSBSZWx1Y3RhbnQgb3B0aW1pemF0aW9uIGJ5cGFzczogU1VGRklYIG1lcmdlCistLSAoQSBCKSs/ IEEgQiBzdGF5cyBzZXBhcmF0ZSAoZ3JlZWR5IG1lcmdlcyB0byAoYSBiKXsyLH0pCitFWFBMQUlO IChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJOICgoQSBCKSs/IEEgQikgREVGSU5FIEEg QVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogKGEgYikrPyBhIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X3BsYW4KKyg3IHJvd3MpCisKKy0tIEdST1VQIHVud3JhcCB3aXRoIHF1YW50aWZpZXIgcHJvcGFn YXRpb246IChBKT8/IEIgLT4gYT8/IGIKKy0tIFNpbmdsZSBWQVIgY2hpbGQgezEsMX0gcmVjZWl2 ZXMgR1JPVVAncyBxdWFudGlmaWVyIGFuZCByZWx1Y3RhbnQKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgICAgICAgICAgIFBBVFRFUk4gKChBKT8/IEIpIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBB UyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExB TiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGE/PyBi CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5 OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBS ZWx1Y3RhbnQgcHJlc2VydmVkIHRocm91Z2ggQUxUIGZsYXR0ZW4KKy0tIChBIHwgKEIgfCBDKSkr PyBmbGF0dGVucyB0byAoYSB8IGIgfCBjKSs/IC0gaW5uZXIgQUxUIGZsYXR0ZW5lZCwgcmVsdWN0 YW50IGtlcHQKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIHwg KEIgfCBDKSkrPykgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8PSA2MCwgQyBBUyB2 YWwgPiA2MCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYiB8 IGMpKz8KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29y dCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisK Ky0tIFJlbHVjdGFudCBvcHRpbWl6YXRpb24gYnlwYXNzOiBhYnNvcnB0aW9uIGZsYWdzCistLSBB Kz8gd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cgLSBubyBhYnNvcnB0aW9uIG1hcmtlcnMgKGdyZWVk eSBBKyBnZXRzIGErIikKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKz8pIERFRklORSBBIEFTIHZhbCA+IDAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKz8KKyAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIER1cGxpY2F0ZSBHUk9V UCByZW1vdmFsOiAoKEEgfCBCKSsgfCAoQSB8IEIpKykgLT4gKGEgfCBiKSsKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKChBIHwgQikrIHwgKEEgfCBCKSspIERFRklO RSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IChhIHwgYikrCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4g IFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJw cl9wbGFuCisoNyByb3dzKQorCistLSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2Ugd2l0aCB6ZXJvLW1p bjogQSogQSsgLT4gYSsKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVS IHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4g KEEqIEErKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBDb25zZWN1dGl2ZSBWQVIgbWVyZ2UgKDQtZWxlbWVudCk6IEEgQXsyfSBB KyBBezN9IC0+IGF7Nyx9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZF UiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBQQVRURVJO IChBIEF7Mn0gQSsgQXszfSkgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IGF7Nyx9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfcGxhbgorKDcgcm93cykKKworLS0gUFJFRklYK1NVRkZJWCBtZXJnZSAoNS13YXkpOiBB IEIgQSBCIChBIEIpKyBBIEIgQSBCIC0+IChhIGIpezUsfQorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgUEFUVEVSTiAoQSBCIEEgQiAoQSBCKSsgQSBCIEEgQikKKyAgICAgICAgICAg ICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgYicpezUsfSIKKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIFBSRUZJWCtTVUZGSVggbWVyZ2UgKDUt d2F5KTogQiBBIEIgKEEgQikrIEEgQiBBIEIgLT4gYiAoYSBiKXs0LH0KK0VYUExBSU4gKENPU1RT IE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICAgICAgIFBBVFRFUk4gKEIgQSBCIChBIEIpKyBBIEIgQSBCKQorICAgICAg ICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5k b3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGIgKGEgYil7NCx9CisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBVbndyYXAgc2luZ2xlLWl0ZW0g QUxUIGFmdGVyIGRlZHVwOiAoQSB8IEEpKyAtPiBhKworLS0gQUxUIGRlZHVwIHJlZHVjZXMgdG8g c2luZ2xlLWl0ZW0sIHRoZW4gR1JPVVAgdW53cmFwCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgICAgICBQQVRURVJOICgoQSB8IEEpKykgREVGSU5FIEEgQVMgdmFsID4gMCk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBX aW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIgorICAgTmF2IE1hcmsgTG9va2JhY2s6 IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEg U2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gR1JPVVB7MSwxfSB0byBTRVEgd2l0aCBm bGF0dGVuOiAoKEEgQikoQyBEKSkgLT4gYSBiIGMgZAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VM RUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg ICAgICAgICAgUEFUVEVSTiAoKChBIEIpKEMgRCkpKQorICAgICAgICAgICAgIERFRklORSBBIEFT IHZhbCA8PSAyNSwgQiBBUyB2YWwgPiAyNSBBTkQgdmFsIDw9IDUwLAorICAgICAgICAgICAgICAg ICAgICBDIEFTIHZhbCA+IDUwIEFORCB2YWwgPD0gNzUsIEQgQVMgdmFsID4gNzUpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIgYyBkCisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBOZXN0ZWQgQUxUIHBhdHRlcm46 ICgoQSBCKSB8IEMpIEQgfCBBIEIgQworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg UEFUVEVSTiAoKChBIEIpIHwgQykgRCB8IEEgQiBDKQorICAgICAgICAgICAgIERFRklORSBBIEFT IHZhbCA8PSAyNSwgQiBBUyB2YWwgPiAyNSBBTkQgdmFsIDw9IDUwLAorICAgICAgICAgICAgICAg ICAgICBDIEFTIHZhbCA+IDUwIEFORCB2YWwgPD0gNzUsIEQgQVMgdmFsID4gNzUpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKGEgYiB8IGMpIGQgfCBhIGIgYykKKyAg IE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlk CisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIE5lc3Rl ZCBBTFQgd2l0aCB1bmJvdW5kZWQ6ICgoQSsgQikgfCBDKSBEIHwgQSBCIEMKK0VYUExBSU4gKENP U1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICAgICAgIFBBVFRFUk4gKCgoQSsgQikgfCBDKSBEIHwgQSBCIEMpCisg ICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDI1LCBCIEFTIHZhbCA+IDI1IEFORCB2YWwg PD0gNTAsCisgICAgICAgICAgICAgICAgICAgIEMgQVMgdmFsID4gNTAgQU5EIHZhbCA8PSA3NSwg RCBBUyB2YWwgPiA3NSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgo YSsiIGIgfCBjKSBkIHwgYSBiIGMpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNv cnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9w bGFuCisoNyByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEFic29ycHRpb24gRmxhZyBEaXNwbGF5IFRlc3Rz CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFRlc3RzIGFic29ycHRpb24gbWFya2VyIGRpc3BsYXkgaW4gRVhQTEFJTiBv dXRwdXQKKy0tIE1hcmtlcnM6ICcgPSBicmFuY2ggZWxlbWVudCwgIiA9IGp1ZGdtZW50IHBvaW50 CistLSBGaWxlczogZXhwbGFpbi5jIChhcHBlbmRfcnByX3F1YW50aWZpZXIsIGRlcGFyc2VfcnBy X3BhdHRlcm4pCistLSBTaW1wbGUgVkFSOiBBKyAtPiBhKyIgKGp1ZGdtZW50IHBvaW50KQorRVhQ TEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBB UyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4g IFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJw cl9wbGFuCisoNyByb3dzKQorCistLSBHUk9VUCB1bmJvdW5kZWQ6IChBIEIpKyAtPiAoYScgYicp KyIgKGJyYW5jaCArIGp1ZGdtZW50KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIEIpKykgREVGSU5FIEEg QVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogKGEnIGInKSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNv cnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9w bGFuCisoNyByb3dzKQorCistLSBBTFQgYm90aCBhYnNvcmJhYmxlOiBBKyB8IEIrIC0+IChhKyIg fCBiKyIpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00g cnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoQSsgfCBCKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBC IEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEr IiB8IGIrIikKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAg U29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3Mp CisKKy0tIEFMVCBvbmUgYWJzb3JiYWJsZTogQSsgfCBCIC0+IChhKyIgfCBiKQorRVhQTEFJTiAo Q09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBB VFRFUk4gKEErIHwgQikgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGErIiB8IGIpCisgICBOYXYgTWFy ayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBTZXF1ZW5jZSB3aXRo IGFic29yYmFibGUgc3RhcnQ6IEErIEIgLT4gYSsiIGIKK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKyBCKSBE RUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBy cHJfcGxhbgorKDcgcm93cykKKworLS0gQ29tcGxleCBuZXN0ZWQ6ICgoQSsgQikgfCBDKSBEIHwg QSBCIEMgLSBkZWVwbHkgbmVzdGVkIEFMVAorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENP VU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKCgoQSsgQikgfCBDKSBE IHwgQSBCIEMpCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDMwLCBCIEFTIHZhbCA8 PSA2MCwgQyBBUyB2YWwgPD0gODAsIEQgQVMgdmFsID4gODApOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiAoKGErIiBiIHwgYykgZCB8IGEgYiBjKQorICAgTmF2IE1hcmsg TG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAg IC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gTmVzdGVkIHVuYm91bmRl ZDogKEErIHwgQikrIC0+IChhKyIgfCBiKSsgKGZpcnN0IGl0ZXJhdGlvbiBhYnNvcmJhYmxlKQor RVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XIFBBVFRFUk4gKChBKyB8IEIpKykKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwg PD0gNTAsIEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiAoYSsiIHwgYikrCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAg ICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCiso NyByb3dzKQorCistLSBBTFQgaW5zaWRlIHVuYm91bmRlZCBHUk9VUDogKEErIEIgfCBBIEIpKiAt PiAoYSsiIGIgfCBhIGIpKiAoZmlyc3QgaXRlcmF0aW9uIGFic29yYmFibGUpCitFWFBMQUlOIChD T1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFU VEVSTiAoKEErIEIgfCBBIEIpKikKKyAgICAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAs IEIgQVMgdmFsID4gNTApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAo YSsiIGIgfCBhIGIpKgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAg ICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcg cm93cykKKworLS0gRml4ZWQtbGVuZ3RoIGdyb3VwIGFic29yYmFibGU6IChBezJ9IEJ7M30pKyAt PiAoYXsyfScgYnszfScpezIsfSIKKy0tIEFsbCBjaGlsZHJlbiBoYXZlIG1pbiA9PSBtYXgsIGVx dWl2YWxlbnQgdG8gdW5yb2xsaW5nIHRvIHsxLDF9CitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxF Q1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBp ZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEF7Mn0gQnsz fSkrKQorICAgICAgICAgICAgIERFRklORSBBIEFTIHZhbCA8PSA1MCwgQiBBUyB2YWwgPiA1MCk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhezJ9JyBiezN9JykrIgor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTog aWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gTmVz dGVkIGZpeGVkLWxlbmd0aCBncm91cDogKEEgKEIgQyl7Mn0gRCkrIC0+IGFic29yYmFibGUKK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfcGxhbgor V0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVyBQQVRURVJOICgoQSAoQiBDKXsyfSBEKSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMg dmFsIDw9IDIwLCBCIEFTIHZhbCA8PSA0MCwgQyBBUyB2YWwgPD0gNjAsIEQgQVMgdmFsID4gNjAp OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYScgKGInIGMnKXsyfScg ZCcpKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29y dCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisK Ky0tIE5lc3RlZCBmaXhlZC1sZW5ndGggd2l0aCBpbm5lciBxdWFudGlmaWVyOiAoKEF7Mn0gQnsz fSl7Mn0pKyAtPiBhYnNvcmJhYmxlCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQo KikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKChBezJ9IEJ7M30pezJ9KSsp CisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChhezJ9JyBiezN9Jyl7Mn0nKSsi CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5 OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQorCistLSBO b24tYWJzb3JiYWJsZSBmaXhlZC1sZW5ndGg6IChBIEJ7Miw1fSkrIC0+IG5vIG1hcmtlcnMgKG1p biAhPSBtYXgpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZS T00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cgUEFUVEVSTiAoKEEgQnsyLDV9KSspCisgICAgICAgICAgICAgREVG SU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogKGEgYnsyLDV9KSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisg ICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIE5vbi1hYnNvcmJhYmxlIGZpeGVkLWxlbmd0aDog KEEgQj8pKyAtPiBubyBtYXJrZXJzIChtaW4gIT0gbWF4KQorRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XIFBBVFRFUk4gKChBIEI/ KSspCisgICAgICAgICAgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgYj8pKworICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gTm9uLWFic29yYmFi bGUgKHVuYm91bmRlZCBub3QgYXQgc3RhcnQpOiBBIEIrIC0+IGEgYisgKG5vIG1hcmtlcnMpCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cgUEFUVEVSTiAoQSBCKykgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUw KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiKworICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAg ICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfcGxhbgorKDcgcm93cykKKworLS0gTm9uLWFic29yYmFi bGUgKG5vIHVuYm91bmRlZCBicmFuY2gpOiAoQSB8IEIpezIsfSAtPiAoYSB8IGIpezIsfSAobm8g bWFya2VycykKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfcGxhbgorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICAgICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOICgoQSB8IEIpezIsfSkgREVGSU5FIEEgQVMgdmFsIDw9 IDUwLCBCIEFTIHZhbCA+IDUwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogKGEgfCBiKXsyLH0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAg ICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX3BsYW4KKyg3 IHJvd3MpCisKKy0tIE5vbi1hYnNvcmJhYmxlIChTS0lQIFRPIE5FWFQgUk9XKTogQSsgLT4gYSsg KG5vIG1hcmtlcnMpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XIFBBVFRFUk4gKEErKSBERUZJTkUgQSBBUyB2YWwgPiAwKTsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsKKyAgIE5hdiBNYXJrIExvb2ti YWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAg U2VxIFNjYW4gb24gcnByX3BsYW4KKyg3IHJvd3MpCisKKy0tIE5vbi1hYnNvcmJhYmxlIChsaW1p dGVkIGZyYW1lKTogQSsgLT4gYSsgKG5vIG1hcmtlcnMpCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1QgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTIChPUkRFUiBC WSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEwIEZPTExPV0lORworICAgICAgICAg ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVyBQQVRURVJOIChBKykgREVGSU5FIEEg QVMgdmFsID4gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgJzEwJzo6YmlnaW50IEZPTExPV0lORykKKyAgIFBhdHRl cm46IGErCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNv cnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyByb3dzKQor CistLSBSZWx1Y3RhbnQgezF9PyBxdWFudGlmaWVyIGRlcGFyc2UKKy0tIEF7MX0/IGlzIGEgcmVs dWN0YW50IHsxLDF9IHF1YW50aWZpZXIuICBUaGUgZGVwYXJzZSBjb2RlIG11c3QKKy0tIG91dHB1 dCAiezF9IiBleHBsaWNpdGx5IHRvIGRpc2FtYmlndWF0ZSBmcm9tIGEgYmFyZSAiPyIgcXVhbnRp ZmllcgorLS0gKHdoaWNoIHdvdWxkIG1lYW4gezAsMX0pLgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgdmFsCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsxfT8gQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAw LCBCIEFTIHZhbCA+IDAKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgdmFsIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IGF7MX0/IGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAg ICAgU29ydCBLZXk6IHZhbAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9wbGFuCisoNyBy b3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIEFic29ycHRpb24gQW5hbHlzaXMgVGVzdHMKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g VGVzdHMgY29udGV4dCBhYnNvcnB0aW9uIG9wdGltaXphdGlvbiAoTyhuXjIpIC0+IE8obikpCist LSBGaWxlczogcnByLmMgKGNvbXB1dGVBYnNvcmJhYmlsaXR5KQorLS0gU2ltcGxlIEFic29yYmFi bGUgUGF0dGVybjogQSsgQgorLS0gUGF0dGVybiBzdGFydHMgd2l0aCB1bmJvdW5kZWQgVkFSCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMg dmFsID4gNTAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSst LS0tLQorICAxIHwgIDEwIHwgICA2CisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAor ICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwg IDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwg ICAwCisoMTAgcm93cykKKworLS0gQWJzb3JiYWJsZSBHUk9VUCBQYXR0ZXJuOiAoQSBCKSsgQwor LS0gUGF0dGVybiBzdGFydHMgd2l0aCB1bmJvdW5kZWQgR1JPVVAKK1NFTEVDVCBpZCwgdmFsLCBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsID4gMzAgQU5E IHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBj bnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAor ICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwg IDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwg ICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBOb24tQWJzb3JiYWJsZTogVW5i b3VuZGVkIE5vdCBhdCBTdGFydAorLS0gUGF0dGVybjogQSBCKyAodW5ib3VuZGVkIG5vdCBhdCBz dGFydCkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1 MCwgQiBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0t Ky0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMw IHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgNgorICA2IHwgIDYwIHwgICAw CisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAg fCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBBTFQgd2l0aCBBYnNvcmJhYmxlIEJyYW5jaGVz CistLSBQYXR0ZXJuOiAoQSsgfCBCKykgQyAtIGJvdGggYnJhbmNoZXMgYWJzb3JiYWJsZQorU0VM RUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKChBKyB8IEIrKSBDKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwg QiBBUyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFTIHZhbCA+IDYwCispCitPUkRFUiBCWSBp ZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMAor ICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgNAorICA1IHwg IDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwg ICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIEFM VCB3aXRoIE1peGVkIEJyYW5jaGVzCistLSBQYXR0ZXJuOiAoQSsgfCBCIEMpIC0gb25seSBmaXJz dCBicmFuY2ggYWJzb3JiYWJsZQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBj bnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBKyB8IEIgQykrKQorICAg IERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPiAzMCBBTkQgdmFsIDw9IDYwLCBDIEFT IHZhbCA+IDYwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0r LS0tLS0KKyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAK KyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDIKKyAgNyB8 ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8 ICAgMAorKDEwIHJvd3MpCisKKy0tIE5vbi1BYnNvcmJhYmxlOiBBTFQgSW5zaWRlIEdST1VQCist LSBQYXR0ZXJuOiAoQSB8IEIpezIsfSAtIEFMVCBpbnNpZGUgdW5ib3VuZGVkIEdST1VQCitTRUxF Q1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgfCBCKXsyLH0pCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBC IEFTIHZhbCA+IDUwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0t LS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAg IDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAg NyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEw MCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIE5vbi1BYnNvcmJhYmxlOiBOZXN0ZWQgVW5ib3VuZGVk CistLSBQYXR0ZXJuOiAoKEEgQikrIEMpKyAtIG5lc3RlZCBHUk9VUCBzdHJ1Y3R1cmUKK1NFTEVD VCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOICgoKEEgQikrIEMpKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIg QVMgdmFsID4gMzAgQU5EIHZhbCA8PSA2MCwgQyBBUyB2YWwgPiA2MAorKQorT1JERVIgQlkgaWQ7 CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAg MiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1 MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAg MAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBOb24t QWJzb3JiYWJsZTogVW5ib3VuZGVkIEVsZW1lbnQgSW5zaWRlIEdST1VQCistLSBQYXR0ZXJuOiAo QSBCKyl7Mix9IC0gdW5ib3VuZGVkIGluc2lkZSBHUk9VUAorU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChB IEIrKXsyLH0pCisgICAgREVGSU5FIEEgQVMgdmFsIDw9IDUwLCBCIEFTIHZhbCA+IDUwCispCitP UkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAx MCB8ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAg MAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4 IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3Mp CisKKy0tIFJ1bnRpbWUgQ29uZGl0aW9uczogU0tJUCBUTyBORVhUIFJPVworLS0gQWJzb3JwdGlv biBkaXNhYmxlZCB3aXRoIFNLSVAgVE8gTkVYVCBST1cKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlk OworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICA2Cisg IDIgfCAgMjAgfCAgIDUKKyAgMyB8ICAzMCB8ICAgNAorICA0IHwgIDQwIHwgICAzCisgIDUgfCAg NTAgfCAgIDIKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAg IDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gUnVu dGltZSBDb25kaXRpb25zOiBMaW1pdGVkIEZyYW1lCistLSBBYnNvcnB0aW9uIGRpc2FibGVkIHdp dGggbGltaXRlZCBmcmFtZSBlbmQKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMg Y250CitGUk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDUgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2 YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250 IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICA2CisgIDIgfCAgMjAgfCAgIDAKKyAg MyB8ICAzMCB8ICAgMAorICA0IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2 MCB8ICAgMAorICA3IHwgIDcwIHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAg MAorIDEwIHwgMTAwIHwgICAwCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBFZGdlIENhc2UgVGVz dHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gVGVzdHMgYm91bmRhcnkgY29uZGl0aW9ucyBhbmQgY29tcGxleCBzY2Vu YXJpb3MKKy0tIEVtcHR5IE1hdGNoIFByZXZlbnRpb24KKy0tIFBhdHRlcm4gdGhhdCBjb3VsZCBt YXRjaCBlbXB0eTogQSoKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KikKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAxMDAwICAtLSBOZXZlciBtYXRjaGVzCispCitPUkRF UiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8 ICAgMAorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAor ICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwg IDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisK Ky0tIEFsbCBSb3dzIE1hdGNoCistLSBQYXR0ZXJuIHdoZXJlIGV2ZXJ5IHJvdyBtYXRjaGVzCitT RUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEg QVMgdmFsID49IDAgIC0tIEFsd2F5cyB0cnVlCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAxMAorICAyIHwgIDIwIHwgICAw CisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYg fCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAg fCAgIDAKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0tIExhcmdlIFF1YW50aWZpZXJz CistLSBQYXR0ZXJuOiBBezEwMH0gKGxhcmdlIGV4YWN0IHF1YW50aWZpZXIpCitTRUxFQ1QgaWQs IHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsxMDB9KQorICAgIERFRklORSBBIEFTIHZh bCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0t LQorICAxIHwgIDEwIHwgICAwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0 IHwgIDQwIHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcw IHwgICAwCisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAw CisoMTAgcm93cykKKworLS0gUGF0dGVybjogQXsxMCwyMH0gKGxhcmdlIHJhbmdlIHF1YW50aWZp ZXIpCitTRUxFQ1QgaWQsIHZhbCwgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxh bgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQXsxMCwyMH0pCisg ICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgMTAKKyAgMiB8ICAyMCB8ICAgMAorICAz IHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYw IHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAw CisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBDb21wbGV4IE11bHRpLUxldmVsIE5l c3RpbmcKKy0tIFBhdHRlcm46ICgoKEEgQikgfCBDKSsgRCkrCitTRUxFQ1QgaWQsIHZhbCwgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSBCKSB8IEMpKyBEKSspCisgICAgREVGSU5FIEEgQVMg dmFsIDw9IDIwLCBCIEFTIHZhbCA+IDIwIEFORCB2YWwgPD0gNDAsCisgICAgICAgICAgIEMgQVMg dmFsID4gNDAgQU5EIHZhbCA8PSA2MCwgRCBBUyB2YWwgPiA2MAorKQorT1JERVIgQlkgaWQ7Cisg aWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDAKKyAgMiB8 ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyAgNSB8ICA1MCB8 ICAgMworICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAgOCB8ICA4MCB8ICAgMAor ICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dzKQorCistLSBMb25nIEFs dGVybmF0aW9uIENoYWluCistLSBQYXR0ZXJuOiBBIHwgQiB8IEMgfCBEIHwgRSAoNS13YXkgQUxU KQorU0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnByX3BsYW4K K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgfCBCIHwgQyB8IEQg fCBFKQorICAgIERFRklORSBBIEFTIHZhbCA9IDEwLCBCIEFTIHZhbCA9IDMwLCBDIEFTIHZhbCA9 IDUwLAorICAgICAgICAgICBEIEFTIHZhbCA9IDcwLCBFIEFTIHZhbCA9IDkwCispCitPUkRFUiBC WSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAg MQorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDEKKyAgNCB8ICA0MCB8ICAgMAorICA1 IHwgIDUwIHwgICAxCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8ICAgMQorICA4IHwgIDgw IHwgICAwCisgIDkgfCAgOTAgfCAgIDEKKyAxMCB8IDEwMCB8ICAgMAorKDEwIHJvd3MpCisKKy0t IExvbmcgU2VxdWVuY2UKKy0tIFBhdHRlcm46IEEgQiBDIEQgRSBGIEcgSCAoOC1lbGVtZW50IFNF USkKK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFu CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIgQyBEIEUgRiBH IEgpCisgICAgREVGSU5FIEEgQVMgdmFsID49IDEwLCBCIEFTIHZhbCA+PSAyMCwgQyBBUyB2YWwg Pj0gMzAsCisgICAgICAgICAgIEQgQVMgdmFsID49IDQwLCBFIEFTIHZhbCA+PSA1MCwgRiBBUyB2 YWwgPj0gNjAsCisgICAgICAgICAgIEcgQVMgdmFsID49IDcwLCBIIEFTIHZhbCA+PSA4MAorKQor T1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAg MTAgfCAgIDgKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAg IDAKKyAgNSB8ICA1MCB8ICAgMAorICA2IHwgIDYwIHwgICAwCisgIDcgfCAgNzAgfCAgIDAKKyAg OCB8ICA4MCB8ICAgMAorICA5IHwgIDkwIHwgICAwCisgMTAgfCAxMDAgfCAgIDAKKygxMCByb3dz KQorCistLSBJbnRlcmxlYXZlZCBRdWFudGlmaWVycworLS0gUGF0dGVybjogQXsyfSBCKyBDezMs NX0gRCogRXsxLH0KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9N IHJwcl9wbGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBezJ9 IEIrIEN7Myw1fSBEKiBFezEsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwLCBCIEFTIHZhbCA+ IDAsIEMgQVMgdmFsID4gMCwKKyAgICAgICAgICAgRCBBUyB2YWwgPiAwLCBFIEFTIHZhbCA+IDAK KykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAx IHwgIDEwIHwgIDEwCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgMAorICA0IHwgIDQw IHwgICAwCisgIDUgfCAgNTAgfCAgIDAKKyAgNiB8ICA2MCB8ICAgMAorICA3IHwgIDcwIHwgICAw CisgIDggfCAgODAgfCAgIDAKKyAgOSB8ICA5MCB8ICAgMAorIDEwIHwgMTAwIHwgICAwCisoMTAg cm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBPcHRpbWl6YXRpb24gRmFsbGJhY2sgVGVzdHMKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gVGVzdHMgZm9yIG9wdGltaXphdGlvbiBlZGdlIGNhc2VzIGFuZCBmYWxsYmFjayBiZWhhdmlv cgorQ1JFQVRFIFRBQkxFIHJwcl9mYWxsYmFjayAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJ TlRPIHJwcl9mYWxsYmFjayBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKy0tIFRlc3Q6IG1pbiBx dWFudGlmaWVyIG92ZXJmbG93IGNhdXNlcyBvcHRpbWl6YXRpb24gZmFsbGJhY2sgKG1pbiA9PSBt YXggY2FzZSkKK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KChBezIwMDAwMDAwMDB9KXsyfSkKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAg V2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsyMDAwMDAwMDAwfSl7Mn0KKyAgIE5h diBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisg ICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ZhbGxiYWNrCisoNyByb3dzKQorCistLSBFeHBl Y3RlZDogRmFsbGJhY2sgLSBwYXR0ZXJuIG5vdCBtZXJnZWQgZHVlIHRvIG1pbiBvdmVyZmxvdyAo NDAwMDAwMDAwMCA+IElOVDMyX01BWCkKKy0tIFRlc3Q6IG1heC1vbmx5IHF1YW50aWZpZXIgb3Zl cmZsb3cgY2F1c2VzIG9wdGltaXphdGlvbiBmYWxsYmFjaworRVhQTEFJTiAoQ09TVFMgT0ZGKQor U0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJwcl9mYWxsYmFjaworV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEF7MSwyMDAwMDAwMDAwfSl7Mn0pCisgICAgREVG SU5FIEEgQVMgdmFsID4gMAorKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBR VUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogKGF7MSwyMDAwMDAwMDAwfSl7Mn0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg U29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnBy X2ZhbGxiYWNrCisoNyByb3dzKQorCistLSBFeHBlY3RlZDogRmFsbGJhY2sgLSBtaW4gT0sgKDIq MT0yKSwgYnV0IG1heCBvdmVyZmxvdyAoMioyMDAwMDAwMDAwID4gSU5UMzJfTUFYKQorLS0gVGVz dDogbWF4IHF1YW50aWZpZXIgZXhjZWVkcyB2YWxpZCByYW5nZSAoMjE0NzQ4MzY0NyA9IElOVF9N QVgsIGxpbWl0IGlzIDIxNDc0ODM2NDYpCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09V TlQoKikgT1ZFUiB3IEZST00gcnByX2ZhbGxiYWNrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOICgoQXsyMDAwMDAwMDAwLDIxNDc0ODM2NDd9KXsyfSkKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBxdWFudGlmaWVyIGJvdW5kcyBtdXN0IGJlIGJl dHdlZW4gMCBhbmQgMjE0NzQ4MzY0NiB3aXRoIG1heCA+PSAxCitMSU5FIDY6ICAgICBQQVRURVJO ICgoQXsyMDAwMDAwMDAwLDIxNDc0ODM2NDd9KXsyfSkKKyAgICAgICAgICAgICAgICAgICAgICAg IF4KKy0tIFRlc3Q6IG5lc3RlZCB1bmJvdW5kZWQgd2l0aCBsYXJnZSBtaW4gY2F1c2VzIG92ZXJm bG93IGZhbGxiYWNrCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgQ09VTlQoKikgT1ZFUiB3 IEZST00gcnByX2ZhbGxiYWNrCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRU RVJOICgoQXsyMDAwMDAwMDAwLH0pezIwMDAwMDAwMDAsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsyMDAwMDAw MDAwLH0iKXsyMDAwMDAwMDAwLH0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgU29y dAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2Zh bGxiYWNrCisoNyByb3dzKQorCistLSBFeHBlY3RlZDogRmFsbGJhY2sgLSBtaW4gb3ZlcmZsb3cg KDIwMDAwMDAwMDAgKiAyMDAwMDAwMDAwID4gSU5UMzJfTUFYKQorLS0gVGVzdDogcHJlZml4IG1p c21hdGNoIGNhdXNlcyBvcHRpbWl6YXRpb24gZmFsbGJhY2sKK0VYUExBSU4gKENPU1RTIE9GRikK K1NFTEVDVCBDT1VOVCgqKSBPVkVSIHcgRlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQiAoQyBEKSspCisgICAgREVGSU5FIEEgQVMg dmFsID4gMCwgQiBBUyB2YWwgPiA1LCBDIEFTIHZhbCA+IDEwLCBEIEFTIHZhbCA+IDE1CispOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIgKGMgZCkrCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9mYWxsYmFjaworKDcgcm93cykKKworLS0gRXhwZWN0 ZWQ6IEZhbGxiYWNrIC0gcHJlZml4IGVsZW1lbnRzIGRvbid0IG1hdGNoIEdST1VQIGNvbnRlbnQK Ky0tIFRlc3Q6IGNvbnNlY3V0aXZlIFZBUiBtZXJnZSB3aG9zZSBtaW4gc3VtIGlzIGV4YWN0bHkg SU5GIGNhdXNlcyBmYWxsYmFjay4KKy0tIDEwNzM3NDE4MjQgKyAxMDczNzQxODIzID0gMjE0NzQ4 MzY0NyA9IElOVDMyX01BWCA9IFJQUl9RVUFOVElUWV9JTkYuCistLSBNZXJnaW5nIHdvdWxkIHlp ZWxkIGEgVkFSIHdpdGggbWluID09IElORiwgc28gdGhlIG1lcmdlIG11c3QgZmFsbCBiYWNrIGFu ZAorLS0gbGVhdmUgdGhlIHR3byBWQVJzIHVubWVyZ2VkIChtaXJyb3JzIHRoZSBtdWx0aXBseSBw YXRoJ3MgPj0gSU5GIGd1YXJkKS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBDT1VOVCgq KSBPVkVSIHcgRlJPTSBycHJfZmFsbGJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEF7MTA3Mzc0MTgyNCx9IEF7MTA3Mzc0MTgyMyx9KQorICAgIERFRklORSBB IEFTIHZhbCA+IDAKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7 MTA3Mzc0MTgyNCx9IiBhezEwNzM3NDE4MjMsfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfZmFsbGJhY2sKKyg3IHJvd3MpCisKKy0tIEV4cGVjdGVkOiBGYWxsYmFjayAtIFZBUnMg bm90IG1lcmdlZCAobWluIHN1bSAyMTQ3NDgzNjQ3ID09IElORikKKy0tIFRlc3Q6IGNvbnNlY3V0 aXZlIEdST1VQIG1lcmdlIHdob3NlIG1pbiBzdW0gaXMgZXhhY3RseSBJTkYgY2F1c2VzIGZhbGxi YWNrLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIENPVU5UKCopIE9WRVIgdyBGUk9NIHJw cl9mYWxsYmFjaworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEg Qil7MTA3Mzc0MTgyNCx9IChBIEIpezEwNzM3NDE4MjMsfSkKKyAgICBERUZJTkUgQSBBUyB2YWwg PiAwLCBCIEFTIHZhbCA+IDUKKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IChhJyBiJyl7MTA3Mzc0MTgyNCx9IiAoYSBiKXsxMDczNzQxODIzLH0KKyAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcnByX2ZhbGxiYWNrCisoNyByb3dzKQorCistLSBFeHBlY3RlZDog RmFsbGJhY2sgLSBHUk9VUHMgbm90IG1lcmdlZCAobWluIHN1bSAyMTQ3NDgzNjQ3ID09IElORikK K0RST1AgVEFCTEUgcnByX2ZhbGxiYWNrOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBQbGFubmVyIEludGVncmF0aW9u IFRlc3RzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFRlc3RzIGZ1bGwgcGxhbm5pbmcgcGlwZWxpbmUgYW5kIFdpbmRv d0FnZyBwbGFuIG5vZGUgY3JlYXRpb24KKy0tIEZpbGVzOiBwbGFubmVyLmMsIGNyZWF0ZXBsYW4u YworQ1JFQVRFIFRBQkxFIHJwcl9wbGFubmVyIChpZCBJTlQsIGNhdGVnb3J5IFZBUkNIQVIoMTAp LCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9wbGFubmVyIFZBTFVFUworICAgICgxLCAnQScs IDEwKSwgKDIsICdBJywgMjApLCAoMywgJ0EnLCAzMCksCisgICAgKDQsICdCJywgNDApLCAoNSwg J0InLCA1MCksICg2LCAnQicsIDYwKSwKKyAgICAoNywgJ0MnLCA3MCksICg4LCAnQycsIDgwKSwg KDksICdDJywgOTApOworLS0gTXVsdGlwbGUgV2luZG93IEZ1bmN0aW9ucyBpbiBTYW1lIFF1ZXJ5 CitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3MSBhcyBj bnQxLAorICAgICAgIENPVU5UKCopIE9WRVIgdzIgYXMgY250MgorRlJPTSBycHJfcGxhbm5lcgor V0lORE9XIHcxIEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKyksCit3MiBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNhdGVnb3J5Cisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPj0gNDAK KykKK09SREVSIEJZIGlkOworIGlkIHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQxIHwgY250MiAKKy0t LS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLS0rLS0tLS0tCisgIDEgfCBBICAgICAgICB8ICAxMCB8 ICAgIDkgfCAgICAwCisgIDIgfCBBICAgICAgICB8ICAyMCB8ICAgIDAgfCAgICAwCisgIDMgfCBB ICAgICAgICB8ICAzMCB8ICAgIDAgfCAgICAwCisgIDQgfCBCICAgICAgICB8ICA0MCB8ICAgIDAg fCAgICAzCisgIDUgfCBCICAgICAgICB8ICA1MCB8ICAgIDAgfCAgICAwCisgIDYgfCBCICAgICAg ICB8ICA2MCB8ICAgIDAgfCAgICAwCisgIDcgfCBDICAgICAgICB8ICA3MCB8ICAgIDAgfCAgICAz CisgIDggfCBDICAgICAgICB8ICA4MCB8ICAgIDAgfCAgICAwCisgIDkgfCBDICAgICAgICB8ICA5 MCB8ICAgIDAgfCAgICAwCisoOSByb3dzKQorCistLSBXaW5kb3cgRnVuY3Rpb24gd2l0aCBQQVJU SVRJT04gQlkKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVS IHcgYXMgY250CitGUk9NIHJwcl9wbGFubmVyCitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9O IEJZIGNhdGVnb3J5CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUg QSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSBjYXRlZ29yeSwgaWQ7CisgaWQgfCBjYXRlZ29yeSB8 IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLQorICAxIHwgQSAgICAgICAg fCAgMTAgfCAgIDMKKyAgMiB8IEEgICAgICAgIHwgIDIwIHwgICAwCisgIDMgfCBBICAgICAgICB8 ICAzMCB8ICAgMAorICA0IHwgQiAgICAgICAgfCAgNDAgfCAgIDMKKyAgNSB8IEIgICAgICAgIHwg IDUwIHwgICAwCisgIDYgfCBCICAgICAgICB8ICA2MCB8ICAgMAorICA3IHwgQyAgICAgICAgfCAg NzAgfCAgIDMKKyAgOCB8IEMgICAgICAgIHwgIDgwIHwgICAwCisgIDkgfCBDICAgICAgICB8ICA5 MCB8ICAgMAorKDkgcm93cykKKworLS0gV2luZG93IEZ1bmN0aW9uIHdpdGggQ29tcGxleCBPUkRF UiBCWQorU0VMRUNUIGlkLCBjYXRlZ29yeSwgdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBh cyBjbnQKK0ZST00gcnByX3BsYW5uZXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBjYXRl Z29yeSBERVNDLCB2YWwgQVNDCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4g MAorKQorT1JERVIgQlkgY2F0ZWdvcnkgREVTQywgdmFsIEFTQzsKKyBpZCB8IGNhdGVnb3J5IHwg dmFsIHwgY250IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0tLS0tCisgIDcgfCBDICAgICAgICB8 ICA3MCB8ICAgOQorICA4IHwgQyAgICAgICAgfCAgODAgfCAgIDAKKyAgOSB8IEMgICAgICAgIHwg IDkwIHwgICAwCisgIDQgfCBCICAgICAgICB8ICA0MCB8ICAgMAorICA1IHwgQiAgICAgICAgfCAg NTAgfCAgIDAKKyAgNiB8IEIgICAgICAgIHwgIDYwIHwgICAwCisgIDEgfCBBICAgICAgICB8ICAx MCB8ICAgMAorICAyIHwgQSAgICAgICAgfCAgMjAgfCAgIDAKKyAgMyB8IEEgICAgICAgIHwgIDMw IHwgICAwCisoOSByb3dzKQorCistLSBOYW1lZCBXaW5kb3cgUmVmZXJlbmNlCitTRUxFQ1QgaWQs IGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJf cGxhbm5lcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCBjYXRlZ29yeSB8 IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0tLQorICAxIHwgQSAgICAgICAg fCAgMTAgfCAgIDkKKyAgMiB8IEEgICAgICAgIHwgIDIwIHwgICAwCisgIDMgfCBBICAgICAgICB8 ICAzMCB8ICAgMAorICA0IHwgQiAgICAgICAgfCAgNDAgfCAgIDAKKyAgNSB8IEIgICAgICAgIHwg IDUwIHwgICAwCisgIDYgfCBCICAgICAgICB8ICA2MCB8ICAgMAorICA3IHwgQyAgICAgICAgfCAg NzAgfCAgIDAKKyAgOCB8IEMgICAgICAgIHwgIDgwIHwgICAwCisgIDkgfCBDICAgICAgICB8ICA5 MCB8ICAgMAorKDkgcm93cykKKworLS0gSW5saW5lIFdpbmRvdyBEZWZpbml0aW9uCitTRUxFQ1Qg aWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiAoCisgICAgICAgICAgIE9S REVSIEJZIGlkCisgICAgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgICAgREVGSU5F IEEgQVMgdmFsID4gMAorICAgICAgICkgYXMgY250CitGUk9NIHJwcl9wbGFubmVyCitPUkRFUiBC WSBpZDsKKyBpZCB8IGNhdGVnb3J5IHwgdmFsIHwgY250IAorLS0tLSstLS0tLS0tLS0tKy0tLS0t Ky0tLS0tCisgIDEgfCBBICAgICAgICB8ICAxMCB8ICAgOQorICAyIHwgQSAgICAgICAgfCAgMjAg fCAgIDAKKyAgMyB8IEEgICAgICAgIHwgIDMwIHwgICAwCisgIDQgfCBCICAgICAgICB8ICA0MCB8 ICAgMAorICA1IHwgQiAgICAgICAgfCAgNTAgfCAgIDAKKyAgNiB8IEIgICAgICAgIHwgIDYwIHwg ICAwCisgIDcgfCBDICAgICAgICB8ICA3MCB8ICAgMAorICA4IHwgQyAgICAgICAgfCAgODAgfCAg IDAKKyAgOSB8IEMgICAgICAgIHwgIDkwIHwgICAwCisoOSByb3dzKQorCistLSBXaW5kb3cgd2l0 aCBBZ2dyZWdhdGUgRnVuY3Rpb25zCitTRUxFQ1QgY2F0ZWdvcnksCisgICAgICAgQ09VTlQoKikg T1ZFUiB3IGFzIHdpbmRvd19jbnQsCisgICAgICAgQ09VTlQoKikgYXMgYWdnX2NudAorRlJPTSBy cHJfcGxhbm5lcgorV0lORE9XIHcgQVMgKAorICAgIFBBUlRJVElPTiBCWSBjYXRlZ29yeQorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQor R1JPVVAgQlkgY2F0ZWdvcnkKK09SREVSIEJZIGNhdGVnb3J5OworRVJST1I6ICBzeW50YXggZXJy b3IgYXQgb3IgbmVhciAiR1JPVVAiCitMSU5FIDEyOiBHUk9VUCBCWSBjYXRlZ29yeQorICAgICAg ICAgXgorLS0gKEdST1VQIEJZIGFmdGVyIFdJTkRPVyBjbGF1c2UgaXMgbm90IHZhbGlkIFNRTCBz eW50YXgpCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFN1YnF1ZXJ5IGFuZCBDVEUgVGVzdHMKKy0tIEZpbGVzOiBwbGFu bmVyLmMsIHByZXBqb2ludHJlZS5jCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRlc3RzIFJQUiB3aXRoIHN1YnF1ZXJp ZXMgYW5kIENURXMKKy0tIFJQUiBpbiBTdWJxdWVyeSAoRlJPTSBjbGF1c2UpCitTRUxFQ1QgKiBG Uk9NICgKKyAgICBTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgICAgIENPVU5UKCop IE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9wbGFubmVyCisgICAgV0lORE9XIHcgQVMgKAor ICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklO RSBBIEFTIHZhbCA+IDAKKyAgICApCispIHN1YgorV0hFUkUgY250ID4gNQorT1JERVIgQlkgaWQ7 CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0t LQorICAxIHwgQSAgICAgICAgfCAgMTAgfCAgIDkKKygxIHJvdykKKworLS0gUlBSIHdpdGggU3Vi cXVlcnkgaW4gV0hFUkUKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBDT1VOVCgq KSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9wbGFubmVyCitXSEVSRSB2YWwgPiAoU0VMRUNUIEFW Ryh2YWwpIEZST00gcnByX3BsYW5uZXIpCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiA1MAorKQorT1JERVIgQlkgaWQ7 CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0tLS0tLSstLS0tLSstLS0t LQorICA2IHwgQiAgICAgICAgfCAgNjAgfCAgIDQKKyAgNyB8IEMgICAgICAgIHwgIDcwIHwgICAw CisgIDggfCBDICAgICAgICB8ICA4MCB8ICAgMAorICA5IHwgQyAgICAgICAgfCAgOTAgfCAgIDAK Kyg0IHJvd3MpCisKKy0tIENURSB3aXRoIFJQUgorV0lUSCBycHJfY3RlIEFTICgKKyAgICBTRUxF Q1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK KyAgICBGUk9NIHJwcl9wbGFubmVyCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBC WSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAK KyAgICApCispCitTRUxFQ1QgKiBGUk9NIHJwcl9jdGUgV0hFUkUgY250ID4gNSBPUkRFUiBCWSBp ZDsKKyBpZCB8IGNhdGVnb3J5IHwgdmFsIHwgY250IAorLS0tLSstLS0tLS0tLS0tKy0tLS0tKy0t LS0tCisgIDEgfCBBICAgICAgICB8ICAxMCB8ICAgOQorKDEgcm93KQorCistLSBNdWx0aXBsZSBD VEUgUmVmZXJlbmNlcworV0lUSCBycHJfY3RlIEFTICgKKyAgICBTRUxFQ1QgaWQsIGNhdGVnb3J5 LCB2YWwsCisgICAgICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyAgICBGUk9NIHJwcl9w bGFubmVyCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAg UEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAgICApCispCitTRUxF Q1QgYzEuaWQsIGMxLmNudCwgYzIuY250IGFzIGNudDIKK0ZST00gcnByX2N0ZSBjMQorSk9JTiBy cHJfY3RlIGMyIE9OIGMxLmlkID0gYzIuaWQKK09SREVSIEJZIGMxLmlkOworIGlkIHwgY250IHwg Y250MiAKKy0tLS0rLS0tLS0rLS0tLS0tCisgIDEgfCAgIDkgfCAgICA5CisgIDIgfCAgIDAgfCAg ICAwCisgIDMgfCAgIDAgfCAgICAwCisgIDQgfCAgIDAgfCAgICAwCisgIDUgfCAgIDAgfCAgICAw CisgIDYgfCAgIDAgfCAgICAwCisgIDcgfCAgIDAgfCAgICAwCisgIDggfCAgIDAgfCAgICAwCisg IDkgfCAgIDAgfCAgICAwCisoOSByb3dzKQorCistLSBOZXN0ZWQgQ1RFcworV0lUSCBjdGUxIEFT ICgKKyAgICBTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwgRlJPTSBycHJfcGxhbm5lciBXSEVSRSB2 YWwgPiAzMAorKSwKK2N0ZTIgQVMgKAorICAgIFNFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAg ICAgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorICAgIEZST00gY3RlMQorICAgIFdJTkRP VyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRFUk4gKEErKQorICAg ICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgICAgKQorKQorU0VMRUNUICogRlJPTSBjdGUyIE9S REVSIEJZIGlkOworIGlkIHwgY2F0ZWdvcnkgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tLS0tLS0r LS0tLS0rLS0tLS0KKyAgNCB8IEIgICAgICAgIHwgIDQwIHwgICA2CisgIDUgfCBCICAgICAgICB8 ICA1MCB8ICAgMAorICA2IHwgQiAgICAgICAgfCAgNjAgfCAgIDAKKyAgNyB8IEMgICAgICAgIHwg IDcwIHwgICAwCisgIDggfCBDICAgICAgICB8ICA4MCB8ICAgMAorICA5IHwgQyAgICAgICAgfCAg OTAgfCAgIDAKKyg2IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSk9JTiBUZXN0cworLS0gRmlsZXM6IHBy ZXBqb2ludHJlZS5jLCBzZXRyZWZzLmMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgUlBSIHdpdGggSk9JTnMg YW5kIG11bHRpcGxlIHRhYmxlIHJlZmVyZW5jZXMKK0NSRUFURSBUQUJMRSBycHJfam9pbjEgKGlk IElOVCwgdmFsMSBJTlQpOworQ1JFQVRFIFRBQkxFIHJwcl9qb2luMiAoaWQgSU5ULCB2YWwyIElO VCk7CitJTlNFUlQgSU5UTyBycHJfam9pbjEgVkFMVUVTICgxLCAxMCksICgyLCAyMCksICgzLCAz MCksICg0LCA0MCksICg1LCA1MCk7CitJTlNFUlQgSU5UTyBycHJfam9pbjIgVkFMVUVTICgxLCAx MDApLCAoMiwgMjAwKSwgKDMsIDMwMCksICg0LCA0MDApLCAoNSwgNTAwKTsKKy0tIFJQUiBBZnRl ciBJTk5FUiBKT0lOCitTRUxFQ1QgdDEuaWQsIHQxLnZhbDEsIHQyLnZhbDIsCisgICAgICAgQ09V TlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfam9pbjEgdDEKK0lOTkVSIEpPSU4gcnByX2pv aW4yIHQyIE9OIHQxLmlkID0gdDIuaWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5p ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbDEgKyB2YWwyID4gMTAwCispCitP UkRFUiBCWSB0MS5pZDsKKyBpZCB8IHZhbDEgfCB2YWwyIHwgY250IAorLS0tLSstLS0tLS0rLS0t LS0tKy0tLS0tCisgIDEgfCAgIDEwIHwgIDEwMCB8ICAgNQorICAyIHwgICAyMCB8ICAyMDAgfCAg IDAKKyAgMyB8ICAgMzAgfCAgMzAwIHwgICAwCisgIDQgfCAgIDQwIHwgIDQwMCB8ICAgMAorICA1 IHwgICA1MCB8ICA1MDAgfCAgIDAKKyg1IHJvd3MpCisKKy0tIFJQUiBBZnRlciBMRUZUIEpPSU4K K1NFTEVDVCB0MS5pZCwgdDEudmFsMSwgdDIudmFsMiwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcg YXMgY250CitGUk9NIHJwcl9qb2luMSB0MQorTEVGVCBKT0lOIHJwcl9qb2luMiB0MiBPTiB0MS5p ZCA9IHQyLmlkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgdDEuaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwxID4gMAorKQorT1JERVIgQlkgdDEuaWQ7CisgaWQgfCB2 YWwxIHwgdmFsMiB8IGNudCAKKy0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLQorICAxIHwgICAxMCB8 ICAxMDAgfCAgIDUKKyAgMiB8ICAgMjAgfCAgMjAwIHwgICAwCisgIDMgfCAgIDMwIHwgIDMwMCB8 ICAgMAorICA0IHwgICA0MCB8ICA0MDAgfCAgIDAKKyAgNSB8ICAgNTAgfCAgNTAwIHwgICAwCiso NSByb3dzKQorCistLSBSUFIgd2l0aCBNdWx0aXBsZSBUYWJsZXMgaW4gREVGSU5FCitTRUxFQ1Qg dDEuaWQsIHQxLnZhbDEsIHQyLnZhbDIsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAor RlJPTSBycHJfam9pbjEgdDEKK0lOTkVSIEpPSU4gcnByX2pvaW4yIHQyIE9OIHQxLmlkID0gdDIu aWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5pZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErIEIpCisg ICAgREVGSU5FIEEgQVMgdmFsMSA+IDIwLAorICAgICAgICAgICBCIEFTIHZhbDIgPiAyMDAKKykK K09SREVSIEJZIHQxLmlkOworIGlkIHwgdmFsMSB8IHZhbDIgfCBjbnQgCistLS0tKy0tLS0tLSst LS0tLS0rLS0tLS0KKyAgMSB8ICAgMTAgfCAgMTAwIHwgICAwCisgIDIgfCAgIDIwIHwgIDIwMCB8 ICAgMAorICAzIHwgICAzMCB8ICAzMDAgfCAgIDMKKyAgNCB8ICAgNDAgfCAgNDAwIHwgICAwCisg IDUgfCAgIDUwIHwgIDUwMCB8ICAgMAorKDUgcm93cykKKworLS0gUlBSIEFmdGVyIENyb3NzIEpv aW4KK1NFTEVDVCB0MS5pZCBhcyBpZDEsIHQyLmlkIGFzIGlkMiwgdDEudmFsMSwgdDIudmFsMiwK KyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9qb2luMSB0MQorQ1JPU1Mg Sk9JTiBycHJfam9pbjIgdDIKK1dIRVJFIHQxLmlkIDw9IDIgQU5EIHQyLmlkIDw9IDIKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSB0MS5pZCwgdDIuaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyB2YWwxICsgdmFsMiA+IDAKKykKK09SREVSIEJZIHQxLmlkLCB0Mi5pZDsKKyBp ZDEgfCBpZDIgfCB2YWwxIHwgdmFsMiB8IGNudCAKKy0tLS0tKy0tLS0tKy0tLS0tLSstLS0tLS0r LS0tLS0KKyAgIDEgfCAgIDEgfCAgIDEwIHwgIDEwMCB8ICAgNAorICAgMSB8ICAgMiB8ICAgMTAg fCAgMjAwIHwgICAwCisgICAyIHwgICAxIHwgICAyMCB8ICAxMDAgfCAgIDAKKyAgIDIgfCAgIDIg fCAgIDIwIHwgIDIwMCB8ICAgMAorKDQgcm93cykKKworLS0gU2VsZi1Kb2luIHdpdGggUlBSCitT RUxFQ1QgaWQsIHZhbDEsIHZhbDFfbmV4dCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIChTRUxFQ1QgYS5pZCwgYS52YWwxLCBiLnZhbDEgYXMgdmFsMV9uZXh0CisgICAgICBG Uk9NIHJwcl9qb2luMSBhCisgICAgICBJTk5FUiBKT0lOIHJwcl9qb2luMSBiIE9OIGEuaWQgKyAx ID0gYi5pZCkgc3ViCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChY KykKKyAgICBERUZJTkUgWCBBUyB2YWwxIDwgdmFsMV9uZXh0CispCitPUkRFUiBCWSBpZDsKKyBp ZCB8IHZhbDEgfCB2YWwxX25leHQgfCBjbnQgCistLS0tKy0tLS0tLSstLS0tLS0tLS0tLSstLS0t LQorICAxIHwgICAxMCB8ICAgICAgICAyMCB8ICAgNAorICAyIHwgICAyMCB8ICAgICAgICAzMCB8 ICAgMAorICAzIHwgICAzMCB8ICAgICAgICA0MCB8ICAgMAorICA0IHwgICA0MCB8ICAgICAgICA1 MCB8ICAgMAorKDQgcm93cykKKworRFJPUCBUQUJMRSBycHJfam9pbjEsIHJwcl9qb2luMjsKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gQ29tcGxleCBFeHByZXNzaW9uIFRlc3RzCistLSBGaWxlczogY3JlYXRlcGxhbi5j LCBzZXRyZWZzLmMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgY29tcGxleCB0YXJnZXQgbGlzdCBleHByZXNz aW9ucworQ1JFQVRFIFRBQkxFIHJwcl90YXJnZXQgKGlkIElOVCwgdmFsIElOVCk7CitJTlNFUlQg SU5UTyBycHJfdGFyZ2V0IFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApLCAoNCwgNDAp LCAoNSwgNTApOworLS0gRXhwcmVzc2lvbnMgaW4gVGFyZ2V0IExpc3QKK1NFTEVDVCBpZCwKKyAg ICAgICB2YWwgKiAyIGFzIGRvdWJsZWQsCisgICAgICAgdmFsICsgMTAgYXMgYWRkZWQsCisgICAg ICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAw CispCitPUkRFUiBCWSBpZDsKKyBpZCB8IGRvdWJsZWQgfCBhZGRlZCB8IGNudCAKKy0tLS0rLS0t LS0tLS0tKy0tLS0tLS0rLS0tLS0KKyAgMSB8ICAgICAgMjAgfCAgICAyMCB8ICAgNQorICAyIHwg ICAgICA0MCB8ICAgIDMwIHwgICAwCisgIDMgfCAgICAgIDYwIHwgICAgNDAgfCAgIDAKKyAgNCB8 ICAgICAgODAgfCAgICA1MCB8ICAgMAorICA1IHwgICAgIDEwMCB8ICAgIDYwIHwgICAwCisoNSBy b3dzKQorCistLSBDQVNFIEV4cHJlc3Npb24gaW4gVGFyZ2V0IExpc3QKK1NFTEVDVCBpZCwgdmFs LAorICAgICAgIENBU0UKKyAgICAgICAgICAgV0hFTiB2YWwgPCAzMCBUSEVOICdsb3cnCisgICAg ICAgICAgIFdIRU4gdmFsIDwgNTAgVEhFTiAnbWVkaXVtJworICAgICAgICAgICBFTFNFICdoaWdo JworICAgICAgIEVORCBhcyBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250 CitGUk9NIHJwcl90YXJnZXQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwg dmFsIHwgY2F0ZWdvcnkgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tLS0tLS0rLS0tLS0KKyAgMSB8 ICAxMCB8IGxvdyAgICAgIHwgICA1CisgIDIgfCAgMjAgfCBsb3cgICAgICB8ICAgMAorICAzIHwg IDMwIHwgbWVkaXVtICAgfCAgIDAKKyAgNCB8ICA0MCB8IG1lZGl1bSAgIHwgICAwCisgIDUgfCAg NTAgfCBoaWdoICAgICB8ICAgMAorKDUgcm93cykKKworLS0gU3VicXVlcnkgaW4gVGFyZ2V0IExp c3QKK1NFTEVDVCBpZCwgdmFsLAorICAgICAgIChTRUxFQ1QgTUFYKHZhbCkgRlJPTSBycHJfdGFy Z2V0KSBhcyBtYXhfdmFsLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKK0ZST00gcnBy X3RhcmdldAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisg ICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBtYXhf dmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgICAg NTAgfCAgIDUKKyAgMiB8ICAyMCB8ICAgICAgNTAgfCAgIDAKKyAgMyB8ICAzMCB8ICAgICAgNTAg fCAgIDAKKyAgNCB8ICA0MCB8ICAgICAgNTAgfCAgIDAKKyAgNSB8ICA1MCB8ICAgICAgNTAgfCAg IDAKKyg1IHJvd3MpCisKKy0tIEZ1bmN0aW9uIENhbGxzIGluIFRhcmdldCBMaXN0CitTRUxFQ1Qg aWQsIHZhbCwKKyAgICAgICBDT0FMRVNDRSh2YWwsIDApIGFzIGNvYWxlc2NlZCwKKyAgICAgICBB QlModmFsIC0gMzApIGFzIGRpc3RhbmNlLAorICAgICAgIENPVU5UKCopIE9WRVIgdyBhcyBjbnQK K0ZST00gcnByX3RhcmdldAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQ7CisgaWQgfCB2 YWwgfCBjb2FsZXNjZWQgfCBkaXN0YW5jZSB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAgICAgIDEwIHwgICAgICAgMjAgfCAgIDUK KyAgMiB8ICAyMCB8ICAgICAgICAyMCB8ICAgICAgIDEwIHwgICAwCisgIDMgfCAgMzAgfCAgICAg ICAgMzAgfCAgICAgICAgMCB8ICAgMAorICA0IHwgIDQwIHwgICAgICAgIDQwIHwgICAgICAgMTAg fCAgIDAKKyAgNSB8ICA1MCB8ICAgICAgICA1MCB8ICAgICAgIDIwIHwgICAwCisoNSByb3dzKQor CistLSBDb2x1bW4gQWxpYXNlcyBhbmQgUmVmZXJlbmNlcworU0VMRUNUIGlkIGFzIHJvd19pZCwK KyAgICAgICB2YWwgYXMgdmFsdWUsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJP TSBycHJfdGFyZ2V0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChB KykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBCWSByb3dfaWQ7Cisgcm93X2lk IHwgdmFsdWUgfCBjbnQgCistLS0tLS0tLSstLS0tLS0tKy0tLS0tCisgICAgICAxIHwgICAgMTAg fCAgIDUKKyAgICAgIDIgfCAgICAyMCB8ICAgMAorICAgICAgMyB8ICAgIDMwIHwgICAwCisgICAg ICA0IHwgICAgNDAgfCAgIDAKKyAgICAgIDUgfCAgICA1MCB8ICAgMAorKDUgcm93cykKKworRFJP UCBUQUJMRSBycHJfdGFyZ2V0OworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTZXQgT3BlcmF0aW9ucyBUZXN0cworLS0g RmlsZXM6IHBsYW5uZXIuYworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBUZXN0cyBSUFIgd2l0aCBVTklPTiwgSU5URVJT RUNULCBFWENFUFQKK0NSRUFURSBUQUJMRSBycHJfc2V0MSAoaWQgSU5ULCB2YWwgSU5UKTsKK0NS RUFURSBUQUJMRSBycHJfc2V0MiAoaWQgSU5ULCB2YWwgSU5UKTsKK0lOU0VSVCBJTlRPIHJwcl9z ZXQxIFZBTFVFUyAoMSwgMTApLCAoMiwgMjApLCAoMywgMzApOworSU5TRVJUIElOVE8gcnByX3Nl dDIgVkFMVUVTICgyLCAyMCksICgzLCAzMCksICg0LCA0MCk7CistLSBVTklPTiB3aXRoIFJQUgor KFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MQor IFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBE RUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK1VOSU9OCisoU0VMRUNUIGlkLCB2YWwsIENPVU5UKCop IE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQyCisgV0lORE9XIHcgQVMgKAorICAgICBPUkRF UiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyApKQor T1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAg MTAgfCAgIDMKKyAgMiB8ICAyMCB8ICAgMAorICAyIHwgIDIwIHwgICAzCisgIDMgfCAgMzAgfCAg IDAKKyAgNCB8ICA0MCB8ICAgMAorKDUgcm93cykKKworLS0gVU5JT04gQUxMIHdpdGggUlBSCiso U0VMRUNUIGlkLCB2YWwsIENPVU5UKCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQxCisg V0lORE9XIHcgQVMgKAorICAgICBPUkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERF RklORSBBIEFTIHZhbCA+IDAKKyApKQorVU5JT04gQUxMCisoU0VMRUNUIGlkLCB2YWwsIENPVU5U KCopIE9WRVIgdyBhcyBjbnQKKyBGUk9NIHJwcl9zZXQyCisgV0lORE9XIHcgQVMgKAorICAgICBP UkRFUiBCWSBpZAorICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICAgUEFUVEVSTiAoQSspCisgICAgIERFRklORSBBIEFTIHZhbCA+IDAKKyAp KQorT1JERVIgQlkgaWQsIHZhbDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0K KyAgMSB8ICAxMCB8ICAgMworICAyIHwgIDIwIHwgICAwCisgIDIgfCAgMjAgfCAgIDMKKyAgMyB8 ICAzMCB8ICAgMAorICAzIHwgIDMwIHwgICAwCisgIDQgfCAgNDAgfCAgIDAKKyg2IHJvd3MpCisK Ky0tIElOVEVSU0VDVCB3aXRoIFJQUgorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg YXMgY250CisgRlJPTSBycHJfc2V0MQorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQK KyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK0lOVEVSU0VD VAorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0 MgorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAg ICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250 IAorLS0tLSstLS0tLSstLS0tLQorICAzIHwgIDMwIHwgICAwCisoMSByb3cpCisKKy0tIEVYQ0VQ VCB3aXRoIFJQUgorKFNFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJP TSBycHJfc2V0MQorIFdJTkRPVyB3IEFTICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4g KEErKQorICAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisgKSkKK0VYQ0VQVAorKFNFTEVDVCBpZCwg dmFsLCBDT1VOVCgqKSBPVkVSIHcgYXMgY250CisgRlJPTSBycHJfc2V0MgorIFdJTkRPVyB3IEFT ICgKKyAgICAgT1JERVIgQlkgaWQKKyAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgIFBBVFRFUk4gKEErKQorICAgICBERUZJTkUgQSBBUyB2 YWwgPiAwCisgKSkKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSst LS0tLQorICAxIHwgIDEwIHwgICAzCisgIDIgfCAgMjAgfCAgIDAKKygyIHJvd3MpCisKK0RST1Ag VEFCTEUgcnByX3NldDEsIHJwcl9zZXQyOworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTb3J0aW5nIGFuZCBHcm91cGlu ZyBUZXN0cworLS0gRmlsZXM6IHBsYW5uZXIuYywgY3JlYXRlcGxhbi5jCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRl c3RzIFJQUiBpbnRlcmFjdGlvbiB3aXRoIHNvcnRpbmcgYW5kIGdyb3VwaW5nCitDUkVBVEUgVEFC TEUgcnByX3NvcnQgKGlkIElOVCwgY2F0ZWdvcnkgVkFSQ0hBUigxMCksIHZhbCBJTlQpOworSU5T RVJUIElOVE8gcnByX3NvcnQgVkFMVUVTCisgICAgKDEsICdBJywgMzApLCAoMiwgJ0InLCAyMCks ICgzLCAnQScsIDEwKSwKKyAgICAoNCwgJ0InLCA0MCksICg1LCAnQScsIDUwKSwgKDYsICdCJywg NjApOworLS0gUlBSIHdpdGggR1JPVVAgQlkgKGFnZ3JlZ2F0ZSBpbiBERUZJTkUgLT4gRVJST1Ig YmVmb3JlIEdST1VQIEJZIGludGVyYWN0aW9uKQorU0VMRUNUIGNhdGVnb3J5LAorICAgICAgIENP VU5UKCopIGFzIGdyb3VwX2NudCwKKyAgICAgICBNQVgodmFsKSBhcyBtYXhfdmFsLAorICAgICAg IENPVU5UKCopIE9WRVIgdyBhcyB3aW5kb3dfY250CitGUk9NIHJwcl9zb3J0CitHUk9VUCBCWSBj YXRlZ29yeQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGNhdGVnb3J5CisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSspCisgICAgREVGSU5FIEEgQVMgQ09VTlQoKikgPiAwCispCitPUkRFUiBCWSBjYXRlZ29yeTsK K0VSUk9SOiAgYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUgbm90IGFsbG93ZWQgaW4gREVGSU5FCitM SU5FIDExOiAgICAgREVGSU5FIEEgQVMgQ09VTlQoKikgPiAwCisgICAgICAgICAgICAgICAgICAg ICAgICAgXgorLS0gUlBSIHdpdGggSEFWSU5HIChzYW1lIGFnZ3JlZ2F0ZS1pbi1ERUZJTkUgZXJy b3IpCitTRUxFQ1QgY2F0ZWdvcnksCisgICAgICAgQ09VTlQoKikgYXMgZ3JvdXBfY250LAorICAg ICAgIENPVU5UKCopIE9WRVIgdyBhcyB3aW5kb3dfY250CitGUk9NIHJwcl9zb3J0CitHUk9VUCBC WSBjYXRlZ29yeQorSEFWSU5HIENPVU5UKCopID4gMgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGNhdGVnb3J5CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgQ09VTlQoKikgPiAw CispCitPUkRFUiBCWSBjYXRlZ29yeTsKK0VSUk9SOiAgYWdncmVnYXRlIGZ1bmN0aW9ucyBhcmUg bm90IGFsbG93ZWQgaW4gREVGSU5FCitMSU5FIDExOiAgICAgREVGSU5FIEEgQVMgQ09VTlQoKikg PiAwCisgICAgICAgICAgICAgICAgICAgICAgICAgXgorLS0gUlBSIHdpdGggRElTVElOQ1QKK1NF TEVDVCBESVNUSU5DVCBjYXRlZ29yeSwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcgYXMgY250CitG Uk9NIHJwcl9zb3J0CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIGNhdGVnb3J5Cisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCisp CitPUkRFUiBCWSBjYXRlZ29yeTsKKyBjYXRlZ29yeSB8IGNudCAKKy0tLS0tLS0tLS0rLS0tLS0K KyBBICAgICAgICB8ICAgMworIEEgICAgICAgIHwgICAwCisgQiAgICAgICAgfCAgIDAKKyBCICAg ICAgICB8ICAgMworKDQgcm93cykKKworLS0gUlBSIHdpdGggT1JERVIgQlkgKGRpZmZlcmVudCBm cm9tIHdpbmRvdyBPUkRFUiBCWSkKK1NFTEVDVCBpZCwgY2F0ZWdvcnksIHZhbCwKKyAgICAgICBD T1VOVCgqKSBPVkVSIHcgYXMgY250CitGUk9NIHJwcl9zb3J0CitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitP UkRFUiBCWSB2YWwgREVTQzsKKyBpZCB8IGNhdGVnb3J5IHwgdmFsIHwgY250IAorLS0tLSstLS0t LS0tLS0tKy0tLS0tKy0tLS0tCisgIDYgfCBCICAgICAgICB8ICA2MCB8ICAgMAorICA1IHwgQSAg ICAgICAgfCAgNTAgfCAgIDAKKyAgNCB8IEIgICAgICAgIHwgIDQwIHwgICAwCisgIDEgfCBBICAg ICAgICB8ICAzMCB8ICAgNgorICAyIHwgQiAgICAgICAgfCAgMjAgfCAgIDAKKyAgMyB8IEEgICAg ICAgIHwgIDEwIHwgICAwCisoNiByb3dzKQorCistLSBSUFIgd2l0aCBMSU1JVCBhbmQgT0ZGU0VU CitTRUxFQ1QgaWQsIGNhdGVnb3J5LCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNu dAorRlJPTSBycHJfc29ydAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKQorT1JERVIgQlkgaWQKK0xJTUlUIDMg T0ZGU0VUIDE7CisgaWQgfCBjYXRlZ29yeSB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0tLS0tLSst LS0tLSstLS0tLQorICAyIHwgQiAgICAgICAgfCAgMjAgfCAgIDAKKyAgMyB8IEEgICAgICAgIHwg IDEwIHwgICAwCisgIDQgfCBCICAgICAgICB8ICA0MCB8ICAgMAorKDMgcm93cykKKworRFJPUCBU QUJMRSBycHJfc29ydDsKKy0tIFNRTCBmdW5jdGlvbiBpbmxpbmluZzogJDEgaW4gREVGSU5FIG11 c3QgYmUgc3Vic3RpdHV0ZWQgYnkKKy0tIHN1YnN0aXR1dGVfYWN0dWFsX3BhcmFtZXRlcnNfaW5f ZnJvbSB2aWEgcXVlcnlfdHJlZV9tdXRhdG9yLgorQ1JFQVRFIFRBQkxFIHJwcl9zcmZfdCAodiBp bnQpOworSU5TRVJUIElOVE8gcnByX3NyZl90IFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSk7 CitDUkVBVEUgRlVOQ1RJT04gcnByX3NyZl9mKHRocmVzaG9sZCBpbnQpCitSRVRVUk5TIFRBQkxF ICh2IGludCwgY250IGJpZ2ludCkKK0xBTkdVQUdFIHNxbCBTVEFCTEUgQVMgJCQKKyAgICBTRUxF Q1Qgdjo6aW50LCBjb3VudCgqKSBPVkVSIHcKKyAgICBGUk9NIHJwcl9zcmZfdAorICAgIFdJTkRP VyB3IEFTICgKKyAgICAgICAgT1JERVIgQlkgdgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAg ICAgIERFRklORSBBIEFTIHYgPiAkMQorICAgICkKKyQkOworU0VMRUNUIHYsIGNudCBGUk9NIHJw cl9zcmZfZigzKSBPUkRFUiBCWSB2OworIHYgfCBjbnQgCistLS0rLS0tLS0KKyAxIHwgICAwCisg MiB8ICAgMAorIDMgfCAgIDAKKyA0IHwgICAyCisgNSB8ICAgMAorKDUgcm93cykKKworRFJPUCBU QUJMRSBycHJfc3JmX3Q7CitEUk9QIEZVTkNUSU9OIHJwcl9zcmZfZihpbnQpOworRFJPUCBUQUJM RSBycHJfcGxhbm5lcjsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RyZXNzIFRlc3RzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVkZ2Ug Y2FzZXMgYW5kIHN0cmVzcyBzY2VuYXJpb3MKK0NSRUFURSBUQUJMRSBycHJfc3RyZXNzIChpZCBJ TlQsIHZhbCBJTlQpOworSU5TRVJUIElOVE8gcnByX3N0cmVzcyBTRUxFQ1QgaSwgaSAqIDEwIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBpOworLS0gVmVyeSBMb25nIFF1ZXJ5IHdpdGggTWFu eSBXaW5kb3dzCitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBDT1VOVCgqKSBPVkVSIHcxIGFzIGNu dDEsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3MiBhcyBjbnQyLAorICAgICAgIENPVU5UKCopIE9W RVIgdzMgYXMgY250MworRlJPTSBycHJfc3RyZXNzCitXSU5ET1cgdzEgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdmFsID4gMAorKSwKK3cyIEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+ IDUwCispLAordzMgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyspCisgICAgREVG SU5FIEMgQVMgdmFsID4gMTAwCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudDEgfCBj bnQyIHwgY250MyAKKy0tLS0rLS0tLS0rLS0tLS0tKy0tLS0tLSstLS0tLS0KKyAgMSB8ICAxMCB8 ICAgMjAgfCAgICAwIHwgICAgMAorICAyIHwgIDIwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgIDMg fCAgMzAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAgNCB8ICA0MCB8ICAgIDAgfCAgICAwIHwgICAg MAorICA1IHwgIDUwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgIDYgfCAgNjAgfCAgICAwIHwgICAx NSB8ICAgIDAKKyAgNyB8ICA3MCB8ICAgIDAgfCAgICAwIHwgICAgMAorICA4IHwgIDgwIHwgICAg MCB8ICAgIDAgfCAgICAwCisgIDkgfCAgOTAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAxMCB8IDEw MCB8ICAgIDAgfCAgICAwIHwgICAgMAorIDExIHwgMTEwIHwgICAgMCB8ICAgIDAgfCAgIDEwCisg MTIgfCAxMjAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAxMyB8IDEzMCB8ICAgIDAgfCAgICAwIHwg ICAgMAorIDE0IHwgMTQwIHwgICAgMCB8ICAgIDAgfCAgICAwCisgMTUgfCAxNTAgfCAgICAwIHwg ICAgMCB8ICAgIDAKKyAxNiB8IDE2MCB8ICAgIDAgfCAgICAwIHwgICAgMAorIDE3IHwgMTcwIHwg ICAgMCB8ICAgIDAgfCAgICAwCisgMTggfCAxODAgfCAgICAwIHwgICAgMCB8ICAgIDAKKyAxOSB8 IDE5MCB8ICAgIDAgfCAgICAwIHwgICAgMAorIDIwIHwgMjAwIHwgICAgMCB8ICAgIDAgfCAgICAw CisoMjAgcm93cykKKworLS0gRGVlcGx5IE5lc3RlZCBTdWJxdWVyaWVzIHdpdGggUlBSCitTRUxF Q1QgKiBGUk9NICgKKyAgICBTRUxFQ1QgKiBGUk9NICgKKyAgICAgICAgU0VMRUNUICogRlJPTSAo CisgICAgICAgICAgICBTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICAgICAgICAgICAgICBDT1VOVCgq KSBPVkVSIHcgYXMgY250CisgICAgICAgICAgICBGUk9NIHJwcl9zdHJlc3MKKyAgICAgICAgICAg IFdJTkRPVyB3IEFTICgKKyAgICAgICAgICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICAgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICAgICAgICAgIFBBVFRFUk4gKEErKQorICAgICAgICAgICAgICAgIERFRklORSBBIEFTIHZh bCA+IDAKKyAgICAgICAgICAgICkKKyAgICAgICAgKSBzdWIxCisgICAgKSBzdWIyCispIHN1YjMK K1dIRVJFIGNudCA+IDEwCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0t LS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAyMAorKDEgcm93KQorCistLSBDb21wbGV4IEV4cHJlc3Np b24gaW4gREVGSU5FIENsYXVzZQorU0VMRUNUIGlkLCB2YWwsCisgICAgICAgQ09VTlQoKikgT1ZF UiB3IGFzIGNudAorRlJPTSBycHJfc3RyZXNzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTICh2YWwgJSAzID0gMCBPUiB2YWwg JSA1ID0gMCksCisgICAgICAgICAgIEIgQVMgKHZhbCAqIDIgPiAxMDAgQU5EIHZhbCAvIDIgPCAx MDApCispCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0K KyAgMSB8ICAxMCB8ICAxOQorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMzAgfCAgIDAKKyAgNCB8 ICA0MCB8ICAgMAorICA1IHwgIDUwIHwgICAwCisgIDYgfCAgNjAgfCAgIDAKKyAgNyB8ICA3MCB8 ICAgMAorICA4IHwgIDgwIHwgICAwCisgIDkgfCAgOTAgfCAgIDAKKyAxMCB8IDEwMCB8ICAgMAor IDExIHwgMTEwIHwgICAwCisgMTIgfCAxMjAgfCAgIDAKKyAxMyB8IDEzMCB8ICAgMAorIDE0IHwg MTQwIHwgICAwCisgMTUgfCAxNTAgfCAgIDAKKyAxNiB8IDE2MCB8ICAgMAorIDE3IHwgMTcwIHwg ICAwCisgMTggfCAxODAgfCAgIDAKKyAxOSB8IDE5MCB8ICAgMAorIDIwIHwgMjAwIHwgICAwCiso MjAgcm93cykKKworLS0gV2luZG93IHdpdGggTm8gTWF0Y2hpbmcgUm93cworU0VMRUNUIGlkLCB2 YWwsCisgICAgICAgQ09VTlQoKikgT1ZFUiB3IGFzIGNudAorRlJPTSBycHJfc3RyZXNzCitXSEVS RSB2YWwgPiAxMDAwICAtLSBObyByb3dzIG1hdGNoCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2YWwgPiAwCispCitPUkRFUiBC WSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKygwIHJvd3MpCisKKy0t IFdpbmRvdyBvbiBTaW5nbGUgUm93CitTRUxFQ1QgaWQsIHZhbCwKKyAgICAgICBDT1VOVCgqKSBP VkVSIHcgYXMgY250CitGUk9NIHJwcl9zdHJlc3MKK1dIRVJFIGlkID0gMTAKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHZhbCA+ IDAKKykKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQor IDEwIHwgMTAwIHwgICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgcnByX3N0cmVzczsKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gRXJyb3IgTGltaXQgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVGVzdHMgZm9yIGVycm9yIGNvbmRp dGlvbnMgaW4gcnByLmMKK0NSRUFURSBUQUJMRSBycHJfZXJyb3JzIChpZCBJTlQsIHZhbCBJTlQp OworSU5TRVJUIElOVE8gcnByX2Vycm9ycyBWQUxVRVMgKDEsIDEwKSwgKDIsIDIwKTsKKy0tIFRl c3Q6IERFRklORSB2YXJpYWJsZSBub3QgaW4gUEFUVEVSTiAoZXJyb3IpCitTRUxFQ1QgaWQsIHZh bCwgQ09VTlQoKikgT1ZFUiB3IEZST00gcnByX2Vycm9ycworV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUKKyAgICAgIEIgQVMgVFJVRQorKTsK K0VSUk9SOiAgREVGSU5FIHZhcmlhYmxlICJiIiBpcyBub3QgdXNlZCBpbiBQQVRURVJOCitMSU5F IDc6ICAgICAgIEIgQVMgVFJVRQorICAgICAgICAgICAgICBeCistLSBFeHBlY3RlZDogRXJyb3Ig LSBCIGlzIG5vdCB1c2VkIGluIFBBVFRFUk4KKy0tIFRlc3Q6IDI0MCB2YXJpYWJsZXMgaW4gUEFU VEVSTiBhbmQgREVGSU5FIChib3VuZGFyeSAtIHNob3VsZCBzdWNjZWVkKQorU0VMRUNUIENPVU5U KCopIE9WRVIgdyBGUk9NIHJwcl9lcnJvcnMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKFYxIFYyIFYzIFY0IFY1IFY2IFY3IFY4IFY5IFYxMCBWMTEgVjEyIFYxMyBW MTQgVjE1IFYxNiBWMTcgVjE4IFYxOSBWMjAgVjIxIFYyMiBWMjMgVjI0IFYyNSBWMjYgVjI3IFYy OCBWMjkgVjMwIFYzMSBWMzIgVjMzIFYzNCBWMzUgVjM2IFYzNyBWMzggVjM5IFY0MCBWNDEgVjQy IFY0MyBWNDQgVjQ1IFY0NiBWNDcgVjQ4IFY0OSBWNTAgVjUxIFY1MiBWNTMgVjU0IFY1NSBWNTYg VjU3IFY1OCBWNTkgVjYwIFY2MSBWNjIgVjYzIFY2NCBWNjUgVjY2IFY2NyBWNjggVjY5IFY3MCBW NzEgVjcyIFY3MyBWNzQgVjc1IFY3NiBWNzcgVjc4IFY3OSBWODAgVjgxIFY4MiBWODMgVjg0IFY4 NSBWODYgVjg3IFY4OCBWODkgVjkwIFY5MSBWOTIgVjkzIFY5NCBWOTUgVjk2IFY5NyBWOTggVjk5 IFYxMDAgVjEwMSBWMTAyIFYxMDMgVjEwNCBWMTA1IFYxMDYgVjEwNyBWMTA4IFYxMDkgVjExMCBW MTExIFYxMTIgVjExMyBWMTE0IFYxMTUgVjExNiBWMTE3IFYxMTggVjExOSBWMTIwIFYxMjEgVjEy MiBWMTIzIFYxMjQgVjEyNSBWMTI2IFYxMjcgVjEyOCBWMTI5IFYxMzAgVjEzMSBWMTMyIFYxMzMg VjEzNCBWMTM1IFYxMzYgVjEzNyBWMTM4IFYxMzkgVjE0MCBWMTQxIFYxNDIgVjE0MyBWMTQ0IFYx NDUgVjE0NiBWMTQ3IFYxNDggVjE0OSBWMTUwIFYxNTEgVjE1MiBWMTUzIFYxNTQgVjE1NSBWMTU2 IFYxNTcgVjE1OCBWMTU5IFYxNjAgVjE2MSBWMTYyIFYxNjMgVjE2NCBWMTY1IFYxNjYgVjE2NyBW MTY4IFYxNjkgVjE3MCBWMTcxIFYxNzIgVjE3MyBWMTc0IFYxNzUgVjE3NiBWMTc3IFYxNzggVjE3 OSBWMTgwIFYxODEgVjE4MiBWMTgzIFYxODQgVjE4NSBWMTg2IFYxODcgVjE4OCBWMTg5IFYxOTAg VjE5MSBWMTkyIFYxOTMgVjE5NCBWMTk1IFYxOTYgVjE5NyBWMTk4IFYxOTkgVjIwMCBWMjAxIFYy MDIgVjIwMyBWMjA0IFYyMDUgVjIwNiBWMjA3IFYyMDggVjIwOSBWMjEwIFYyMTEgVjIxMiBWMjEz IFYyMTQgVjIxNSBWMjE2IFYyMTcgVjIxOCBWMjE5IFYyMjAgVjIyMSBWMjIyIFYyMjMgVjIyNCBW MjI1IFYyMjYgVjIyNyBWMjI4IFYyMjkgVjIzMCBWMjMxIFYyMzIgVjIzMyBWMjM0IFYyMzUgVjIz NiBWMjM3IFYyMzggVjIzOSBWMjQwKQorICAgIERFRklORQorICAgIFYxIEFTIHZhbCA+IDAsIFYy IEFTIHZhbCA+IDAsIFYzIEFTIHZhbCA+IDAsIFY0IEFTIHZhbCA+IDAsIFY1IEFTIHZhbCA+IDAs IFY2IEFTIHZhbCA+IDAsIFY3IEFTIHZhbCA+IDAsIFY4IEFTIHZhbCA+IDAsIFY5IEFTIHZhbCA+ IDAsIFYxMCBBUyB2YWwgPiAwLAorICAgIFYxMSBBUyB2YWwgPiAwLCBWMTIgQVMgdmFsID4gMCwg VjEzIEFTIHZhbCA+IDAsIFYxNCBBUyB2YWwgPiAwLCBWMTUgQVMgdmFsID4gMCwgVjE2IEFTIHZh bCA+IDAsIFYxNyBBUyB2YWwgPiAwLCBWMTggQVMgdmFsID4gMCwgVjE5IEFTIHZhbCA+IDAsIFYy MCBBUyB2YWwgPiAwLAorICAgIFYyMSBBUyB2YWwgPiAwLCBWMjIgQVMgdmFsID4gMCwgVjIzIEFT IHZhbCA+IDAsIFYyNCBBUyB2YWwgPiAwLCBWMjUgQVMgdmFsID4gMCwgVjI2IEFTIHZhbCA+IDAs IFYyNyBBUyB2YWwgPiAwLCBWMjggQVMgdmFsID4gMCwgVjI5IEFTIHZhbCA+IDAsIFYzMCBBUyB2 YWwgPiAwLAorICAgIFYzMSBBUyB2YWwgPiAwLCBWMzIgQVMgdmFsID4gMCwgVjMzIEFTIHZhbCA+ IDAsIFYzNCBBUyB2YWwgPiAwLCBWMzUgQVMgdmFsID4gMCwgVjM2IEFTIHZhbCA+IDAsIFYzNyBB UyB2YWwgPiAwLCBWMzggQVMgdmFsID4gMCwgVjM5IEFTIHZhbCA+IDAsIFY0MCBBUyB2YWwgPiAw LAorICAgIFY0MSBBUyB2YWwgPiAwLCBWNDIgQVMgdmFsID4gMCwgVjQzIEFTIHZhbCA+IDAsIFY0 NCBBUyB2YWwgPiAwLCBWNDUgQVMgdmFsID4gMCwgVjQ2IEFTIHZhbCA+IDAsIFY0NyBBUyB2YWwg PiAwLCBWNDggQVMgdmFsID4gMCwgVjQ5IEFTIHZhbCA+IDAsIFY1MCBBUyB2YWwgPiAwLAorICAg IFY1MSBBUyB2YWwgPiAwLCBWNTIgQVMgdmFsID4gMCwgVjUzIEFTIHZhbCA+IDAsIFY1NCBBUyB2 YWwgPiAwLCBWNTUgQVMgdmFsID4gMCwgVjU2IEFTIHZhbCA+IDAsIFY1NyBBUyB2YWwgPiAwLCBW NTggQVMgdmFsID4gMCwgVjU5IEFTIHZhbCA+IDAsIFY2MCBBUyB2YWwgPiAwLAorICAgIFY2MSBB UyB2YWwgPiAwLCBWNjIgQVMgdmFsID4gMCwgVjYzIEFTIHZhbCA+IDAsIFY2NCBBUyB2YWwgPiAw LCBWNjUgQVMgdmFsID4gMCwgVjY2IEFTIHZhbCA+IDAsIFY2NyBBUyB2YWwgPiAwLCBWNjggQVMg dmFsID4gMCwgVjY5IEFTIHZhbCA+IDAsIFY3MCBBUyB2YWwgPiAwLAorICAgIFY3MSBBUyB2YWwg PiAwLCBWNzIgQVMgdmFsID4gMCwgVjczIEFTIHZhbCA+IDAsIFY3NCBBUyB2YWwgPiAwLCBWNzUg QVMgdmFsID4gMCwgVjc2IEFTIHZhbCA+IDAsIFY3NyBBUyB2YWwgPiAwLCBWNzggQVMgdmFsID4g MCwgVjc5IEFTIHZhbCA+IDAsIFY4MCBBUyB2YWwgPiAwLAorICAgIFY4MSBBUyB2YWwgPiAwLCBW ODIgQVMgdmFsID4gMCwgVjgzIEFTIHZhbCA+IDAsIFY4NCBBUyB2YWwgPiAwLCBWODUgQVMgdmFs ID4gMCwgVjg2IEFTIHZhbCA+IDAsIFY4NyBBUyB2YWwgPiAwLCBWODggQVMgdmFsID4gMCwgVjg5 IEFTIHZhbCA+IDAsIFY5MCBBUyB2YWwgPiAwLAorICAgIFY5MSBBUyB2YWwgPiAwLCBWOTIgQVMg dmFsID4gMCwgVjkzIEFTIHZhbCA+IDAsIFY5NCBBUyB2YWwgPiAwLCBWOTUgQVMgdmFsID4gMCwg Vjk2IEFTIHZhbCA+IDAsIFY5NyBBUyB2YWwgPiAwLCBWOTggQVMgdmFsID4gMCwgVjk5IEFTIHZh bCA+IDAsIFYxMDAgQVMgdmFsID4gMCwKKyAgICBWMTAxIEFTIHZhbCA+IDAsIFYxMDIgQVMgdmFs ID4gMCwgVjEwMyBBUyB2YWwgPiAwLCBWMTA0IEFTIHZhbCA+IDAsIFYxMDUgQVMgdmFsID4gMCwg VjEwNiBBUyB2YWwgPiAwLCBWMTA3IEFTIHZhbCA+IDAsIFYxMDggQVMgdmFsID4gMCwgVjEwOSBB UyB2YWwgPiAwLCBWMTEwIEFTIHZhbCA+IDAsCisgICAgVjExMSBBUyB2YWwgPiAwLCBWMTEyIEFT IHZhbCA+IDAsIFYxMTMgQVMgdmFsID4gMCwgVjExNCBBUyB2YWwgPiAwLCBWMTE1IEFTIHZhbCA+ IDAsIFYxMTYgQVMgdmFsID4gMCwgVjExNyBBUyB2YWwgPiAwLCBWMTE4IEFTIHZhbCA+IDAsIFYx MTkgQVMgdmFsID4gMCwgVjEyMCBBUyB2YWwgPiAwLAorICAgIFYxMjEgQVMgdmFsID4gMCwgVjEy MiBBUyB2YWwgPiAwLCBWMTIzIEFTIHZhbCA+IDAsIFYxMjQgQVMgdmFsID4gMCwgVjEyNSBBUyB2 YWwgPiAwLCBWMTI2IEFTIHZhbCA+IDAsIFYxMjcgQVMgdmFsID4gMCwgVjEyOCBBUyB2YWwgPiAw LCBWMTI5IEFTIHZhbCA+IDAsIFYxMzAgQVMgdmFsID4gMCwKKyAgICBWMTMxIEFTIHZhbCA+IDAs IFYxMzIgQVMgdmFsID4gMCwgVjEzMyBBUyB2YWwgPiAwLCBWMTM0IEFTIHZhbCA+IDAsIFYxMzUg QVMgdmFsID4gMCwgVjEzNiBBUyB2YWwgPiAwLCBWMTM3IEFTIHZhbCA+IDAsIFYxMzggQVMgdmFs ID4gMCwgVjEzOSBBUyB2YWwgPiAwLCBWMTQwIEFTIHZhbCA+IDAsCisgICAgVjE0MSBBUyB2YWwg PiAwLCBWMTQyIEFTIHZhbCA+IDAsIFYxNDMgQVMgdmFsID4gMCwgVjE0NCBBUyB2YWwgPiAwLCBW MTQ1IEFTIHZhbCA+IDAsIFYxNDYgQVMgdmFsID4gMCwgVjE0NyBBUyB2YWwgPiAwLCBWMTQ4IEFT IHZhbCA+IDAsIFYxNDkgQVMgdmFsID4gMCwgVjE1MCBBUyB2YWwgPiAwLAorICAgIFYxNTEgQVMg dmFsID4gMCwgVjE1MiBBUyB2YWwgPiAwLCBWMTUzIEFTIHZhbCA+IDAsIFYxNTQgQVMgdmFsID4g MCwgVjE1NSBBUyB2YWwgPiAwLCBWMTU2IEFTIHZhbCA+IDAsIFYxNTcgQVMgdmFsID4gMCwgVjE1 OCBBUyB2YWwgPiAwLCBWMTU5IEFTIHZhbCA+IDAsIFYxNjAgQVMgdmFsID4gMCwKKyAgICBWMTYx IEFTIHZhbCA+IDAsIFYxNjIgQVMgdmFsID4gMCwgVjE2MyBBUyB2YWwgPiAwLCBWMTY0IEFTIHZh bCA+IDAsIFYxNjUgQVMgdmFsID4gMCwgVjE2NiBBUyB2YWwgPiAwLCBWMTY3IEFTIHZhbCA+IDAs IFYxNjggQVMgdmFsID4gMCwgVjE2OSBBUyB2YWwgPiAwLCBWMTcwIEFTIHZhbCA+IDAsCisgICAg VjE3MSBBUyB2YWwgPiAwLCBWMTcyIEFTIHZhbCA+IDAsIFYxNzMgQVMgdmFsID4gMCwgVjE3NCBB UyB2YWwgPiAwLCBWMTc1IEFTIHZhbCA+IDAsIFYxNzYgQVMgdmFsID4gMCwgVjE3NyBBUyB2YWwg PiAwLCBWMTc4IEFTIHZhbCA+IDAsIFYxNzkgQVMgdmFsID4gMCwgVjE4MCBBUyB2YWwgPiAwLAor ICAgIFYxODEgQVMgdmFsID4gMCwgVjE4MiBBUyB2YWwgPiAwLCBWMTgzIEFTIHZhbCA+IDAsIFYx ODQgQVMgdmFsID4gMCwgVjE4NSBBUyB2YWwgPiAwLCBWMTg2IEFTIHZhbCA+IDAsIFYxODcgQVMg dmFsID4gMCwgVjE4OCBBUyB2YWwgPiAwLCBWMTg5IEFTIHZhbCA+IDAsIFYxOTAgQVMgdmFsID4g MCwKKyAgICBWMTkxIEFTIHZhbCA+IDAsIFYxOTIgQVMgdmFsID4gMCwgVjE5MyBBUyB2YWwgPiAw LCBWMTk0IEFTIHZhbCA+IDAsIFYxOTUgQVMgdmFsID4gMCwgVjE5NiBBUyB2YWwgPiAwLCBWMTk3 IEFTIHZhbCA+IDAsIFYxOTggQVMgdmFsID4gMCwgVjE5OSBBUyB2YWwgPiAwLCBWMjAwIEFTIHZh bCA+IDAsCisgICAgVjIwMSBBUyB2YWwgPiAwLCBWMjAyIEFTIHZhbCA+IDAsIFYyMDMgQVMgdmFs ID4gMCwgVjIwNCBBUyB2YWwgPiAwLCBWMjA1IEFTIHZhbCA+IDAsIFYyMDYgQVMgdmFsID4gMCwg VjIwNyBBUyB2YWwgPiAwLCBWMjA4IEFTIHZhbCA+IDAsIFYyMDkgQVMgdmFsID4gMCwgVjIxMCBB UyB2YWwgPiAwLAorICAgIFYyMTEgQVMgdmFsID4gMCwgVjIxMiBBUyB2YWwgPiAwLCBWMjEzIEFT IHZhbCA+IDAsIFYyMTQgQVMgdmFsID4gMCwgVjIxNSBBUyB2YWwgPiAwLCBWMjE2IEFTIHZhbCA+ IDAsIFYyMTcgQVMgdmFsID4gMCwgVjIxOCBBUyB2YWwgPiAwLCBWMjE5IEFTIHZhbCA+IDAsIFYy MjAgQVMgdmFsID4gMCwKKyAgICBWMjIxIEFTIHZhbCA+IDAsIFYyMjIgQVMgdmFsID4gMCwgVjIy MyBBUyB2YWwgPiAwLCBWMjI0IEFTIHZhbCA+IDAsIFYyMjUgQVMgdmFsID4gMCwgVjIyNiBBUyB2 YWwgPiAwLCBWMjI3IEFTIHZhbCA+IDAsIFYyMjggQVMgdmFsID4gMCwgVjIyOSBBUyB2YWwgPiAw LCBWMjMwIEFTIHZhbCA+IDAsCisgICAgVjIzMSBBUyB2YWwgPiAwLCBWMjMyIEFTIHZhbCA+IDAs IFYyMzMgQVMgdmFsID4gMCwgVjIzNCBBUyB2YWwgPiAwLCBWMjM1IEFTIHZhbCA+IDAsIFYyMzYg QVMgdmFsID4gMCwgVjIzNyBBUyB2YWwgPiAwLCBWMjM4IEFTIHZhbCA+IDAsIFYyMzkgQVMgdmFs ID4gMCwgVjI0MCBBUyB2YWwgPiAwCispOworIGNvdW50IAorLS0tLS0tLQorICAgICAwCisgICAg IDAKKygyIHJvd3MpCisKKy0tIEV4cGVjdGVkOiBTdWNjZXNzIC0gZXhhY3RseSBhdCBSUFJfVkFS SURfTUFYIGJvdW5kYXJ5CistLSBFUlJPUjogMjQxIHZhcmlhYmxlcyBpbiBQQVRURVJOLCAyNDAg aW4gREVGSU5FIChleGNlZWRzIGxpbWl0IHdpdGggaW1wbGljaXQgVFJVRSkKK1NFTEVDVCBDT1VO VCgqKSBPVkVSIHcgRlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChWMSBWMiBWMyBWNCBWNSBWNiBWNyBWOCBWOSBWMTAgVjExIFYxMiBWMTMg VjE0IFYxNSBWMTYgVjE3IFYxOCBWMTkgVjIwIFYyMSBWMjIgVjIzIFYyNCBWMjUgVjI2IFYyNyBW MjggVjI5IFYzMCBWMzEgVjMyIFYzMyBWMzQgVjM1IFYzNiBWMzcgVjM4IFYzOSBWNDAgVjQxIFY0 MiBWNDMgVjQ0IFY0NSBWNDYgVjQ3IFY0OCBWNDkgVjUwIFY1MSBWNTIgVjUzIFY1NCBWNTUgVjU2 IFY1NyBWNTggVjU5IFY2MCBWNjEgVjYyIFY2MyBWNjQgVjY1IFY2NiBWNjcgVjY4IFY2OSBWNzAg VjcxIFY3MiBWNzMgVjc0IFY3NSBWNzYgVjc3IFY3OCBWNzkgVjgwIFY4MSBWODIgVjgzIFY4NCBW ODUgVjg2IFY4NyBWODggVjg5IFY5MCBWOTEgVjkyIFY5MyBWOTQgVjk1IFY5NiBWOTcgVjk4IFY5 OSBWMTAwIFYxMDEgVjEwMiBWMTAzIFYxMDQgVjEwNSBWMTA2IFYxMDcgVjEwOCBWMTA5IFYxMTAg VjExMSBWMTEyIFYxMTMgVjExNCBWMTE1IFYxMTYgVjExNyBWMTE4IFYxMTkgVjEyMCBWMTIxIFYx MjIgVjEyMyBWMTI0IFYxMjUgVjEyNiBWMTI3IFYxMjggVjEyOSBWMTMwIFYxMzEgVjEzMiBWMTMz IFYxMzQgVjEzNSBWMTM2IFYxMzcgVjEzOCBWMTM5IFYxNDAgVjE0MSBWMTQyIFYxNDMgVjE0NCBW MTQ1IFYxNDYgVjE0NyBWMTQ4IFYxNDkgVjE1MCBWMTUxIFYxNTIgVjE1MyBWMTU0IFYxNTUgVjE1 NiBWMTU3IFYxNTggVjE1OSBWMTYwIFYxNjEgVjE2MiBWMTYzIFYxNjQgVjE2NSBWMTY2IFYxNjcg VjE2OCBWMTY5IFYxNzAgVjE3MSBWMTcyIFYxNzMgVjE3NCBWMTc1IFYxNzYgVjE3NyBWMTc4IFYx NzkgVjE4MCBWMTgxIFYxODIgVjE4MyBWMTg0IFYxODUgVjE4NiBWMTg3IFYxODggVjE4OSBWMTkw IFYxOTEgVjE5MiBWMTkzIFYxOTQgVjE5NSBWMTk2IFYxOTcgVjE5OCBWMTk5IFYyMDAgVjIwMSBW MjAyIFYyMDMgVjIwNCBWMjA1IFYyMDYgVjIwNyBWMjA4IFYyMDkgVjIxMCBWMjExIFYyMTIgVjIx MyBWMjE0IFYyMTUgVjIxNiBWMjE3IFYyMTggVjIxOSBWMjIwIFYyMjEgVjIyMiBWMjIzIFYyMjQg VjIyNSBWMjI2IFYyMjcgVjIyOCBWMjI5IFYyMzAgVjIzMSBWMjMyIFYyMzMgVjIzNCBWMjM1IFYy MzYgVjIzNyBWMjM4IFYyMzkgVjI0MCBWMjQxKQorICAgIERFRklORQorICAgIFYxIEFTIHZhbCA+ IDAsIFYyIEFTIHZhbCA+IDAsIFYzIEFTIHZhbCA+IDAsIFY0IEFTIHZhbCA+IDAsIFY1IEFTIHZh bCA+IDAsIFY2IEFTIHZhbCA+IDAsIFY3IEFTIHZhbCA+IDAsIFY4IEFTIHZhbCA+IDAsIFY5IEFT IHZhbCA+IDAsIFYxMCBBUyB2YWwgPiAwLAorICAgIFYxMSBBUyB2YWwgPiAwLCBWMTIgQVMgdmFs ID4gMCwgVjEzIEFTIHZhbCA+IDAsIFYxNCBBUyB2YWwgPiAwLCBWMTUgQVMgdmFsID4gMCwgVjE2 IEFTIHZhbCA+IDAsIFYxNyBBUyB2YWwgPiAwLCBWMTggQVMgdmFsID4gMCwgVjE5IEFTIHZhbCA+ IDAsIFYyMCBBUyB2YWwgPiAwLAorICAgIFYyMSBBUyB2YWwgPiAwLCBWMjIgQVMgdmFsID4gMCwg VjIzIEFTIHZhbCA+IDAsIFYyNCBBUyB2YWwgPiAwLCBWMjUgQVMgdmFsID4gMCwgVjI2IEFTIHZh bCA+IDAsIFYyNyBBUyB2YWwgPiAwLCBWMjggQVMgdmFsID4gMCwgVjI5IEFTIHZhbCA+IDAsIFYz MCBBUyB2YWwgPiAwLAorICAgIFYzMSBBUyB2YWwgPiAwLCBWMzIgQVMgdmFsID4gMCwgVjMzIEFT IHZhbCA+IDAsIFYzNCBBUyB2YWwgPiAwLCBWMzUgQVMgdmFsID4gMCwgVjM2IEFTIHZhbCA+IDAs IFYzNyBBUyB2YWwgPiAwLCBWMzggQVMgdmFsID4gMCwgVjM5IEFTIHZhbCA+IDAsIFY0MCBBUyB2 YWwgPiAwLAorICAgIFY0MSBBUyB2YWwgPiAwLCBWNDIgQVMgdmFsID4gMCwgVjQzIEFTIHZhbCA+ IDAsIFY0NCBBUyB2YWwgPiAwLCBWNDUgQVMgdmFsID4gMCwgVjQ2IEFTIHZhbCA+IDAsIFY0NyBB UyB2YWwgPiAwLCBWNDggQVMgdmFsID4gMCwgVjQ5IEFTIHZhbCA+IDAsIFY1MCBBUyB2YWwgPiAw LAorICAgIFY1MSBBUyB2YWwgPiAwLCBWNTIgQVMgdmFsID4gMCwgVjUzIEFTIHZhbCA+IDAsIFY1 NCBBUyB2YWwgPiAwLCBWNTUgQVMgdmFsID4gMCwgVjU2IEFTIHZhbCA+IDAsIFY1NyBBUyB2YWwg PiAwLCBWNTggQVMgdmFsID4gMCwgVjU5IEFTIHZhbCA+IDAsIFY2MCBBUyB2YWwgPiAwLAorICAg IFY2MSBBUyB2YWwgPiAwLCBWNjIgQVMgdmFsID4gMCwgVjYzIEFTIHZhbCA+IDAsIFY2NCBBUyB2 YWwgPiAwLCBWNjUgQVMgdmFsID4gMCwgVjY2IEFTIHZhbCA+IDAsIFY2NyBBUyB2YWwgPiAwLCBW NjggQVMgdmFsID4gMCwgVjY5IEFTIHZhbCA+IDAsIFY3MCBBUyB2YWwgPiAwLAorICAgIFY3MSBB UyB2YWwgPiAwLCBWNzIgQVMgdmFsID4gMCwgVjczIEFTIHZhbCA+IDAsIFY3NCBBUyB2YWwgPiAw LCBWNzUgQVMgdmFsID4gMCwgVjc2IEFTIHZhbCA+IDAsIFY3NyBBUyB2YWwgPiAwLCBWNzggQVMg dmFsID4gMCwgVjc5IEFTIHZhbCA+IDAsIFY4MCBBUyB2YWwgPiAwLAorICAgIFY4MSBBUyB2YWwg PiAwLCBWODIgQVMgdmFsID4gMCwgVjgzIEFTIHZhbCA+IDAsIFY4NCBBUyB2YWwgPiAwLCBWODUg QVMgdmFsID4gMCwgVjg2IEFTIHZhbCA+IDAsIFY4NyBBUyB2YWwgPiAwLCBWODggQVMgdmFsID4g MCwgVjg5IEFTIHZhbCA+IDAsIFY5MCBBUyB2YWwgPiAwLAorICAgIFY5MSBBUyB2YWwgPiAwLCBW OTIgQVMgdmFsID4gMCwgVjkzIEFTIHZhbCA+IDAsIFY5NCBBUyB2YWwgPiAwLCBWOTUgQVMgdmFs ID4gMCwgVjk2IEFTIHZhbCA+IDAsIFY5NyBBUyB2YWwgPiAwLCBWOTggQVMgdmFsID4gMCwgVjk5 IEFTIHZhbCA+IDAsIFYxMDAgQVMgdmFsID4gMCwKKyAgICBWMTAxIEFTIHZhbCA+IDAsIFYxMDIg QVMgdmFsID4gMCwgVjEwMyBBUyB2YWwgPiAwLCBWMTA0IEFTIHZhbCA+IDAsIFYxMDUgQVMgdmFs ID4gMCwgVjEwNiBBUyB2YWwgPiAwLCBWMTA3IEFTIHZhbCA+IDAsIFYxMDggQVMgdmFsID4gMCwg VjEwOSBBUyB2YWwgPiAwLCBWMTEwIEFTIHZhbCA+IDAsCisgICAgVjExMSBBUyB2YWwgPiAwLCBW MTEyIEFTIHZhbCA+IDAsIFYxMTMgQVMgdmFsID4gMCwgVjExNCBBUyB2YWwgPiAwLCBWMTE1IEFT IHZhbCA+IDAsIFYxMTYgQVMgdmFsID4gMCwgVjExNyBBUyB2YWwgPiAwLCBWMTE4IEFTIHZhbCA+ IDAsIFYxMTkgQVMgdmFsID4gMCwgVjEyMCBBUyB2YWwgPiAwLAorICAgIFYxMjEgQVMgdmFsID4g MCwgVjEyMiBBUyB2YWwgPiAwLCBWMTIzIEFTIHZhbCA+IDAsIFYxMjQgQVMgdmFsID4gMCwgVjEy NSBBUyB2YWwgPiAwLCBWMTI2IEFTIHZhbCA+IDAsIFYxMjcgQVMgdmFsID4gMCwgVjEyOCBBUyB2 YWwgPiAwLCBWMTI5IEFTIHZhbCA+IDAsIFYxMzAgQVMgdmFsID4gMCwKKyAgICBWMTMxIEFTIHZh bCA+IDAsIFYxMzIgQVMgdmFsID4gMCwgVjEzMyBBUyB2YWwgPiAwLCBWMTM0IEFTIHZhbCA+IDAs IFYxMzUgQVMgdmFsID4gMCwgVjEzNiBBUyB2YWwgPiAwLCBWMTM3IEFTIHZhbCA+IDAsIFYxMzgg QVMgdmFsID4gMCwgVjEzOSBBUyB2YWwgPiAwLCBWMTQwIEFTIHZhbCA+IDAsCisgICAgVjE0MSBB UyB2YWwgPiAwLCBWMTQyIEFTIHZhbCA+IDAsIFYxNDMgQVMgdmFsID4gMCwgVjE0NCBBUyB2YWwg PiAwLCBWMTQ1IEFTIHZhbCA+IDAsIFYxNDYgQVMgdmFsID4gMCwgVjE0NyBBUyB2YWwgPiAwLCBW MTQ4IEFTIHZhbCA+IDAsIFYxNDkgQVMgdmFsID4gMCwgVjE1MCBBUyB2YWwgPiAwLAorICAgIFYx NTEgQVMgdmFsID4gMCwgVjE1MiBBUyB2YWwgPiAwLCBWMTUzIEFTIHZhbCA+IDAsIFYxNTQgQVMg dmFsID4gMCwgVjE1NSBBUyB2YWwgPiAwLCBWMTU2IEFTIHZhbCA+IDAsIFYxNTcgQVMgdmFsID4g MCwgVjE1OCBBUyB2YWwgPiAwLCBWMTU5IEFTIHZhbCA+IDAsIFYxNjAgQVMgdmFsID4gMCwKKyAg ICBWMTYxIEFTIHZhbCA+IDAsIFYxNjIgQVMgdmFsID4gMCwgVjE2MyBBUyB2YWwgPiAwLCBWMTY0 IEFTIHZhbCA+IDAsIFYxNjUgQVMgdmFsID4gMCwgVjE2NiBBUyB2YWwgPiAwLCBWMTY3IEFTIHZh bCA+IDAsIFYxNjggQVMgdmFsID4gMCwgVjE2OSBBUyB2YWwgPiAwLCBWMTcwIEFTIHZhbCA+IDAs CisgICAgVjE3MSBBUyB2YWwgPiAwLCBWMTcyIEFTIHZhbCA+IDAsIFYxNzMgQVMgdmFsID4gMCwg VjE3NCBBUyB2YWwgPiAwLCBWMTc1IEFTIHZhbCA+IDAsIFYxNzYgQVMgdmFsID4gMCwgVjE3NyBB UyB2YWwgPiAwLCBWMTc4IEFTIHZhbCA+IDAsIFYxNzkgQVMgdmFsID4gMCwgVjE4MCBBUyB2YWwg PiAwLAorICAgIFYxODEgQVMgdmFsID4gMCwgVjE4MiBBUyB2YWwgPiAwLCBWMTgzIEFTIHZhbCA+ IDAsIFYxODQgQVMgdmFsID4gMCwgVjE4NSBBUyB2YWwgPiAwLCBWMTg2IEFTIHZhbCA+IDAsIFYx ODcgQVMgdmFsID4gMCwgVjE4OCBBUyB2YWwgPiAwLCBWMTg5IEFTIHZhbCA+IDAsIFYxOTAgQVMg dmFsID4gMCwKKyAgICBWMTkxIEFTIHZhbCA+IDAsIFYxOTIgQVMgdmFsID4gMCwgVjE5MyBBUyB2 YWwgPiAwLCBWMTk0IEFTIHZhbCA+IDAsIFYxOTUgQVMgdmFsID4gMCwgVjE5NiBBUyB2YWwgPiAw LCBWMTk3IEFTIHZhbCA+IDAsIFYxOTggQVMgdmFsID4gMCwgVjE5OSBBUyB2YWwgPiAwLCBWMjAw IEFTIHZhbCA+IDAsCisgICAgVjIwMSBBUyB2YWwgPiAwLCBWMjAyIEFTIHZhbCA+IDAsIFYyMDMg QVMgdmFsID4gMCwgVjIwNCBBUyB2YWwgPiAwLCBWMjA1IEFTIHZhbCA+IDAsIFYyMDYgQVMgdmFs ID4gMCwgVjIwNyBBUyB2YWwgPiAwLCBWMjA4IEFTIHZhbCA+IDAsIFYyMDkgQVMgdmFsID4gMCwg VjIxMCBBUyB2YWwgPiAwLAorICAgIFYyMTEgQVMgdmFsID4gMCwgVjIxMiBBUyB2YWwgPiAwLCBW MjEzIEFTIHZhbCA+IDAsIFYyMTQgQVMgdmFsID4gMCwgVjIxNSBBUyB2YWwgPiAwLCBWMjE2IEFT IHZhbCA+IDAsIFYyMTcgQVMgdmFsID4gMCwgVjIxOCBBUyB2YWwgPiAwLCBWMjE5IEFTIHZhbCA+ IDAsIFYyMjAgQVMgdmFsID4gMCwKKyAgICBWMjIxIEFTIHZhbCA+IDAsIFYyMjIgQVMgdmFsID4g MCwgVjIyMyBBUyB2YWwgPiAwLCBWMjI0IEFTIHZhbCA+IDAsIFYyMjUgQVMgdmFsID4gMCwgVjIy NiBBUyB2YWwgPiAwLCBWMjI3IEFTIHZhbCA+IDAsIFYyMjggQVMgdmFsID4gMCwgVjIyOSBBUyB2 YWwgPiAwLCBWMjMwIEFTIHZhbCA+IDAsCisgICAgVjIzMSBBUyB2YWwgPiAwLCBWMjMyIEFTIHZh bCA+IDAsIFYyMzMgQVMgdmFsID4gMCwgVjIzNCBBUyB2YWwgPiAwLCBWMjM1IEFTIHZhbCA+IDAs IFYyMzYgQVMgdmFsID4gMCwgVjIzNyBBUyB2YWwgPiAwLCBWMjM4IEFTIHZhbCA+IDAsIFYyMzkg QVMgdmFsID4gMCwgVjI0MCBBUyB2YWwgPiAwCispOworRVJST1I6ICB0b28gbWFueSBwYXR0ZXJu IHZhcmlhYmxlcworTElORSA1OiAuLi5WMjMwIFYyMzEgVjIzMiBWMjMzIFYyMzQgVjIzNSBWMjM2 IFYyMzcgVjIzOCBWMjM5IFYyNDAgVjI0MSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KK0RFVEFJTDogIE1heGltdW0g aXMgMjQwLgorLS0gVGVzdDogUGF0dGVybiBuZXN0aW5nIGF0IG1heGltdW0gZGVwdGggKGRlcHRo IDI1MykKKy0tIE5vdGU6IDI1MyBuZXN0ZWQgR1JPVVB7Myw3fT8gcXVhbnRpZmllcnM7IHJlbHVj dGFudCBxdWFudGlmaWVycyBhcmUgbm90CistLSBzdWJqZWN0IHRvIHF1YW50aWZpZXIgbXVsdGlw bGljYXRpb24sIHNvIHRoZSBuZXN0aW5nIChhbmQgZGVwdGggMjUzKSBpcworLS0gcHJlc2VydmVk IGFmdGVyIG9wdGltaXphdGlvbi4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcgRlJP TSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoQXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pCisgICAgREVGSU5FIEEgQVMgdmFs ID4gMAorKTsKKyBpZCB8IHZhbCB8IGNvdW50IAorLS0tLSstLS0tLSstLS0tLS0tCisgIDEgfCAg MTAgfCAgICAgMAorICAyIHwgIDIwIHwgICAgIDAKKygyIHJvd3MpCisKKy0tIEV4cGVjdGVkOiBT aG91bGQgc3VjY2VlZAorLS0gVGVzdDogUGF0dGVybiBuZXN0aW5nIGRlcHRoIGV4Y2VlZHMgbWF4 aW11bSAoZGVwdGggMjU0KQorLS0gTm90ZTogMjU0IG5lc3RlZCBHUk9VUHszLDd9PyBxdWFudGlm aWVyczsgcmVsdWN0YW50IHF1YW50aWZpZXJzIGFyZSBub3QKKy0tIHN1YmplY3QgdG8gcXVhbnRp ZmllciBtdWx0aXBsaWNhdGlvbiwgc28gdGhlIG5lc3RpbmcgcmVhY2hlcyBkZXB0aCAyNTQgYW5k CistLSBleGNlZWRzIHRoZSBsaW1pdC4KK1NFTEVDVCBpZCwgdmFsLCBDT1VOVCgqKSBPVkVSIHcg RlJPTSBycHJfZXJyb3JzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO ICgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKEF7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMs N30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3 fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9 Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/ KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8p ezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7 Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXsz LDd9Pyl7Myw3fT8pezMsN30/KXszLDd9Pyl7Myw3fT8pezMsN30/KXszLDd9PykKKyAgICBERUZJ TkUgQSBBUyB2YWwgPiAwCispOworRVJST1I6ICBwYXR0ZXJuIG5lc3RpbmcgdG9vIGRlZXAKK0RF VEFJTDogIFBhdHRlcm4gbmVzdGluZyBkZXB0aCAyNTQgZXhjZWVkcyBtYXhpbXVtIDI1My4KK0RS T1AgVEFCTEUgcnByX2Vycm9yczsKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQmFzaWMgUGF0dGVybiBNYXRjaGluZwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBUZXN0OiBBPyAob3B0aW9uYWwsIGdyZWVkeSkKK1NFTEVDVCBpZCwgdmFsLCBj b3VudCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QT8pCisgICAgREVGSU5FIEEgQVMgdmFsID4gNTAKKyk7CisgaWQgfCB2YWwgfCBjIAorLS0tLSst LS0tLSstLS0KKyAgMSB8ICAxMCB8IDAKKyAgMiB8ICAyMCB8IDAKKyAgMyB8ICAzMCB8IDAKKyAg NCB8ICA0MCB8IDAKKyAgNSB8ICA1MCB8IDAKKyAgNiB8ICA2MCB8IDEKKyAgNyB8ICA3MCB8IDEK KyAgOCB8ICA4MCB8IDEKKyAgOSB8ICA5MCB8IDEKKyAxMCB8IDEwMCB8IDEKKygxMCByb3dzKQor CistLSBUZXN0OiBBezJ9IChleGFjdCBjb3VudCkKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBP VkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsyfSkKKyAg ICBERUZJTkUgQSBBUyB2YWwgPD0gNTAKKyk7CisgaWQgfCB2YWwgfCBjIAorLS0tLSstLS0tLSst LS0KKyAgMSB8ICAxMCB8IDIKKyAgMiB8ICAyMCB8IDAKKyAgMyB8ICAzMCB8IDIKKyAgNCB8ICA0 MCB8IDAKKyAgNSB8ICA1MCB8IDAKKyAgNiB8ICA2MCB8IDAKKyAgNyB8ICA3MCB8IDAKKyAgOCB8 ICA4MCB8IDAKKyAgOSB8ICA5MCB8IDAKKyAxMCB8IDEwMCB8IDAKKygxMCByb3dzKQorCistLSBU ZXN0OiBBezEsM30gKGJvdW5kZWQgcmFuZ2UsIGdyZWVkeSkKK1NFTEVDVCBpZCwgdmFsLCBjb3Vu dCgqKSBPVkVSIHcgQVMgYworRlJPTSBycHJfcGxhbgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsx LDN9KQorICAgIERFRklORSBBIEFTIHZhbCA8PSA1MAorKTsKKyBpZCB8IHZhbCB8IGMgCistLS0t Ky0tLS0tKy0tLQorICAxIHwgIDEwIHwgMworICAyIHwgIDIwIHwgMAorICAzIHwgIDMwIHwgMAor ICA0IHwgIDQwIHwgMgorICA1IHwgIDUwIHwgMAorICA2IHwgIDYwIHwgMAorICA3IHwgIDcwIHwg MAorICA4IHwgIDgwIHwgMAorICA5IHwgIDkwIHwgMAorIDEwIHwgMTAwIHwgMAorKDEwIHJvd3Mp CisKKy0tIFRlc3Q6IEEgfCBCIChzaW1wbGUgYWx0ZXJuYXRpb24pCitTRUxFQ1QgaWQsIHZhbCwg Y291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEEgfCBCKQorICAgIERFRklORSBBIEFTIHZhbCA8PSAzMCwgQiBBUyB2YWwgPiA3MAorKTsKKyBp ZCB8IHZhbCB8IGMgCistLS0tKy0tLS0tKy0tLQorICAxIHwgIDEwIHwgMQorICAyIHwgIDIwIHwg MQorICAzIHwgIDMwIHwgMQorICA0IHwgIDQwIHwgMAorICA1IHwgIDUwIHwgMAorICA2IHwgIDYw IHwgMAorICA3IHwgIDcwIHwgMAorICA4IHwgIDgwIHwgMQorICA5IHwgIDkwIHwgMQorIDEwIHwg MTAwIHwgMQorKDEwIHJvd3MpCisKKy0tIFRlc3Q6IEEgfCBCIHwgQyAodGhyZWUtd2F5IGFsdGVy bmF0aW9uKQorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9w bGFuCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIHwgQiB8IEMpCisgICAgREVGSU5FIEEgQVMgdmFs IDw9IDIwLCBCIEFTIHZhbCBCRVRXRUVOIDQwIEFORCA2MCwgQyBBUyB2YWwgPiA4MAorKTsKKyBp ZCB8IHZhbCB8IGMgCistLS0tKy0tLS0tKy0tLQorICAxIHwgIDEwIHwgMQorICAyIHwgIDIwIHwg MQorICAzIHwgIDMwIHwgMAorICA0IHwgIDQwIHwgMQorICA1IHwgIDUwIHwgMQorICA2IHwgIDYw IHwgMQorICA3IHwgIDcwIHwgMAorICA4IHwgIDgwIHwgMAorICA5IHwgIDkwIHwgMQorIDEwIHwg MTAwIHwgMQorKDEwIHJvd3MpCisKKy0tIFRlc3Q6IEEgQiBDIChjb25jYXRlbmF0aW9uKQorU0VM RUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIHJwcl9wbGFuCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBIEIgQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFs IEJFVFdFRU4gMzEgQU5EIDYwLCBDIEFTIHZhbCA+IDYwCispOworIGlkIHwgdmFsIHwgYyAKKy0t LS0rLS0tLS0rLS0tCisgIDEgfCAgMTAgfCAwCisgIDIgfCAgMjAgfCAwCisgIDMgfCAgMzAgfCAw CisgIDQgfCAgNDAgfCAwCisgIDUgfCAgNTAgfCAwCisgIDYgfCAgNjAgfCAwCisgIDcgfCAgNzAg fCAwCisgIDggfCAgODAgfCAwCisgIDkgfCAgOTAgfCAwCisgMTAgfCAxMDAgfCAwCisoMTAgcm93 cykKKworLS0gVGVzdDogQSBCPyBDIChvcHRpb25hbCBtaWRkbGUpCitTRUxFQ1QgaWQsIHZhbCwg Y291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KEEgQj8gQykKKyAgICBERUZJTkUgQSBBUyB2YWwgPD0gMzAsIEIgQVMgdmFsIEJFVFdFRU4gMzEg QU5EIDYwLCBDIEFTIHZhbCA+IDYwCispOworIGlkIHwgdmFsIHwgYyAKKy0tLS0rLS0tLS0rLS0t CisgIDEgfCAgMTAgfCAwCisgIDIgfCAgMjAgfCAwCisgIDMgfCAgMzAgfCAwCisgIDQgfCAgNDAg fCAwCisgIDUgfCAgNTAgfCAwCisgIDYgfCAgNjAgfCAwCisgIDcgfCAgNzAgfCAwCisgIDggfCAg ODAgfCAwCisgIDkgfCAgOTAgfCAwCisgMTAgfCAxMDAgfCAwCisoMTAgcm93cykKKworLS0gVGVz dDogKEEgQikrIChncm91cGVkIHF1YW50aWZpZXIpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikg T1ZFUiB3IEFTIGMKK0ZST00gcnByX3BsYW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIpKykK KyAgICBERUZJTkUgQSBBUyB2YWwgPD0gNTAsIEIgQVMgdmFsID4gNTAKKyk7CisgaWQgfCB2YWwg fCBjIAorLS0tLSstLS0tLSstLS0KKyAgMSB8ICAxMCB8IDAKKyAgMiB8ICAyMCB8IDAKKyAgMyB8 ICAzMCB8IDAKKyAgNCB8ICA0MCB8IDAKKyAgNSB8ICA1MCB8IDIKKyAgNiB8ICA2MCB8IDAKKyAg NyB8ICA3MCB8IDAKKyAgOCB8ICA4MCB8IDAKKyAgOSB8ICA5MCB8IDAKKyAxMCB8IDEwMCB8IDAK KygxMCByb3dzKQorCistLSBUZXN0OiAoQSB8IEIpKyBDIChhbHRlcm5hdGlvbiB3aXRoIHF1YW50 aWZpZXIpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gcnByX3Bs YW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdmFs IDw9IDMwLCBCIEFTIHZhbCBCRVRXRUVOIDMxIEFORCA2MCwgQyBBUyB2YWwgPiA4MAorKTsKKyBp ZCB8IHZhbCB8IGMgCistLS0tKy0tLS0tKy0tLQorICAxIHwgIDEwIHwgMAorICAyIHwgIDIwIHwg MAorICAzIHwgIDMwIHwgMAorICA0IHwgIDQwIHwgMAorICA1IHwgIDUwIHwgMAorICA2IHwgIDYw IHwgMAorICA3IHwgIDcwIHwgMAorICA4IHwgIDgwIHwgMAorICA5IHwgIDkwIHwgMAorIDEwIHwg MTAwIHwgMAorKDEwIHJvd3MpCisKKy0tIFRlc3Q6IChBKyB8IChBIHwgQikrKSogLSBuZXN0ZWQg YWx0ZXJuYXRpb24gaW5zaWRlIHF1YW50aWZpZWQgZ3JvdXAKKy0tIFByZXZpb3VzbHkgY2F1c2Vk IGluZmluaXRlIHJlY3Vyc2lvbiBpbiBhbHRlcm5hdGlvbiBoYW5kbGluZyB3aGVuIHRoZSBpbm5l cgorLS0gQkVHSU4oKykncyBza2lwIGp1bXAgd2FzIGZvbGxvd2VkIGFzIGFuIEFMVCBicmFuY2gg cG9pbnRlci4KK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gKFZBTFVF UworICAgICgxLCBBUlJBWVsnQScsICdCJ10pLAorICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAo MywgQVJSQVlbJ0MnXSkKKykgQVMgdChpZCwgZmxhZ3MpCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgo QSsgfCAoQSB8IEIpKykqKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorICAxIHwge0EsQn0gfCAgICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorKDMgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBQYXRob2xvZ2ljYWwgUGF0dGVybnMKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gVGhlc2UgcGF0dGVybnMgcHJldmlvdXNseSBjYXVzZWQgaXNzdWVzLiBOb3cgb3B0 aW1pemVkIG9yIGhhbmRsZWQgc2FmZWx5LgorLS0gVGVzdDogKEEqKSogLSBuZXN0ZWQgdW5ib3Vu ZGVkIChvcHRpbWl6ZWQgdG8gQSopCitTRUxFQ1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZS T00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEEq KSopCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKyB2IHwgYyAKKy0tLSstLS0KKyAxIHwgNQor IDIgfCAwCisgMyB8IDAKKyA0IHwgMAorIDUgfCAwCisoNSByb3dzKQorCistLSBUZXN0OiAoQSop KyAtIGlubmVyIG51bGxhYmxlIChvcHRpbWl6ZWQgdG8gQSopCitTRUxFQ1QgdiwgY291bnQoKikg T1ZFUiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgNSkgdikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisg ICAgUEFUVEVSTiAoKEEqKSspCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsKKyB2IHwgYyAKKy0t LSstLS0KKyAxIHwgNQorIDIgfCAwCisgMyB8IDAKKyA0IHwgMAorIDUgfCAwCisoNSByb3dzKQor CistLSBUZXN0OiAoQSspKiAtIG91dGVyIG51bGxhYmxlIChvcHRpbWl6ZWQgdG8gQSopCitTRUxF Q1QgdiwgY291bnQoKikgT1ZFUiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMo MSwgNSkgdikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoKEErKSopCisgICAgREVGSU5FIEEgQVMgVFJVRQor KTsKKyB2IHwgYyAKKy0tLSstLS0KKyAxIHwgNQorIDIgfCAwCisgMyB8IDAKKyA0IHwgMAorIDUg fCAwCisoNSByb3dzKQorCistLSBUZXN0OiAoQSspKyAtIGJvdGggcmVxdWlyZSBtYXRjaCAob3B0 aW1pemVkIHRvIEErKQorU0VMRUNUIHYsIGNvdW50KCopIE9WRVIgdyBBUyBjCitGUk9NIChTRUxF Q1QgZ2VuZXJhdGVfc2VyaWVzKDEsIDUpIHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKChBKykrKQorICAg IERFRklORSBBIEFTIFRSVUUKKyk7CisgdiB8IGMgCistLS0rLS0tCisgMSB8IDUKKyAyIHwgMAor IDMgfCAwCisgNCB8IDAKKyA1IHwgMAorKDUgcm93cykKKworLS0gVGVzdDogKCgoQSkqKSopKiAg LSB0cmlwbGUgbmVzdGVkIChvcHRpbWl6ZWQgdG8gQSopCitTRUxFQ1QgdiwgY291bnQoKikgT1ZF UiB3IEFTIGMKK0ZST00gKFNFTEVDVCBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgdikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBJTklUSUFMCisgICAg UEFUVEVSTiAoKCgoQSkqKSopKikKKyAgICBERUZJTkUgQSBBUyBUUlVFCispOworIHYgfCBjIAor LS0tKy0tLQorIDEgfCAzCisgMiB8IDAKKyAzIHwgMAorKDMgcm93cykKKworLS0gT3B0aW9uYWwg Z3JvdXAgd2l0aCBhbHRlcm5hdGlvbjogQSAoKEIgfCBDKSAoRCB8IEUpKSogRj8KKy0tIFdoZW4g b25seSBBIG1hdGNoZXMsIHRoZSAqIGdyb3VwIG1hdGNoZXMgMCB0aW1lcyBhbmQgRj8gbWF0Y2hl cyAwIHRpbWVzCitTRUxFQ1QgaWQsIHZhbCwgbWF0Y2hfbGVuCitGUk9NIChTRUxFQ1QgaWQsIHZh bCwKKyAgICAgICAgICAgICBDT1VOVCgqKSBPVkVSIHcgQVMgbWF0Y2hfbGVuCisgICAgICBGUk9N IChWQUxVRVMgKDEsIDEpLCAoMiwgOTkpKSBBUyB0KGlkLCB2YWwpCisgICAgICBXSU5ET1cgdyBB UyAoCisgICAgICAgICAgT1JERVIgQlkgaWQKKyAgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICAgICAgICBQQVRURVJOIChBICgoQiB8IEMpIChEIHwgRSkpKiBG PykKKyAgICAgICAgICBERUZJTkUgQSBBUyB2YWwgPSAxLAorICAgICAgICAgICAgICAgICBCIEFT IHZhbCA9IDIsIEMgQVMgdmFsID0gMywKKyAgICAgICAgICAgICAgICAgRCBBUyB2YWwgPSA0LCBF IEFTIHZhbCA9IDUsCisgICAgICAgICAgICAgICAgIEYgQVMgdmFsID0gNgorICAgICAgKQorKSBz OworIGlkIHwgdmFsIHwgbWF0Y2hfbGVuIAorLS0tLSstLS0tLSstLS0tLS0tLS0tLQorICAxIHwg ICAxIHwgICAgICAgICAxCisgIDIgfCAgOTkgfCAgICAgICAgIDAKKygyIHJvd3MpCisKK0RST1Ag VEFCTEUgcnByX3BsYW47CitSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwpkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfZXhwbGFpbi5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw MDAwMDAwMDAwMC4uY2M4NmQwYWFlMzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3Jwcl9leHBsYWluLm91dApAQCAtMCwwICsxLDYwNzUgQEAKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gUlBSIEVYUExBSU4gVGVzdHMKKy0tIFRlc3RzIGZvciBSb3cgUGF0dGVybiBSZWNvZ25pdGlv biBFWFBMQUlOIG91dHB1dAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLQorLS0gVmlld3MgYW5kIHRhYmxlcyBpbiB0aGlz IGZpbGUgYXJlIGludGVudGlvbmFsbHkgbm90IGRyb3BwZWQsCistLSBzbyB0aGF0IHBnX3VwZ3Jh ZGUvcGdfZHVtcCBjYW4gdGVzdCBSUFIgc3ludGF4IHNlcmlhbGl6YXRpb24uCistLQorLS0gVGhp cyB0ZXN0IHN1aXRlIHZhbGlkYXRlcyBFWFBMQUlOIG91dHB1dCBmb3IgUlBSIHF1ZXJpZXMsCist LSBpbmNsdWRpbmcgTkZBIHN0YXRpc3RpY3Mgc2hvd24gaW4gRVhQTEFJTiBBTkFMWVpFOgorLS0g ICAtIE5GQSBTdGF0ZXM6IHBlYWssIHRvdGFsLCBtZXJnZWQKKy0tICAgLSBORkEgQ29udGV4dHM6 IHBlYWssIHRvdGFsLCBwcnVuZWQKKy0tICAgLSBORkE6IG1hdGNoZWQgKGxlbiBtaW4vbWF4L2F2 ZyksIG1pc21hdGNoZWQgKGxlbiBtaW4vbWF4L2F2ZykKKy0tICAgLSBORkE6IGFic29yYmVkIChs ZW4gbWluL21heC9hdmcpLCBza2lwcGVkIChsZW4gbWluL21heC9hdmcpCistLSAgIC0gUGF0dGVy biBkZXBhcnNlIGZvcm1hdHRpbmcKKy0tICAgLSBNdWx0aXBsZSBvdXRwdXQgZm9ybWF0cyAodGV4 dCwgSlNPTiwgWE1MKQorLS0KKy0tIFRlc3QgQ292ZXJhZ2U6CistLSAgIEJhc2ljIE5GQSBTdGF0 aXN0aWNzIFRlc3RzCistLSAgIFN0YXRlIFN0YXRpc3RpY3MgVGVzdHMKKy0tICAgQ29udGV4dCBT dGF0aXN0aWNzIFRlc3RzCistLSAgIE1hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRlc3RzCistLSAg IE1pc21hdGNoIExlbmd0aCBTdGF0aXN0aWNzIFRlc3RzCistLSAgIEpTT04gRm9ybWF0IFRlc3Rz CistLSAgIFhNTCBGb3JtYXQgVGVzdHMKKy0tICAgTXVsdGlwbGUgUGFydGl0aW9ucyBUZXN0cwor LS0gICBFZGdlIENhc2VzCistLSAgIENvbXBsZXggUGF0dGVybiBUZXN0cworLS0gICBSZWFsLXdv cmxkIFBhdHRlcm4gRXhhbXBsZXMKKy0tICAgUGVyZm9ybWFuY2Utb3JpZW50ZWQgVGVzdHMKKy0t ICAgSU5JVElBTCB2cyBubyBJTklUSUFMIGNvbXBhcmlzb24KKy0tICAgUXVhbnRpZmllciBWYXJp YXRpb25zCistLSAgIFJlZ3Jlc3Npb24gVGVzdHMgZm9yIFN0YXRpc3RpY3MgQWNjdXJhY3kKKy0t ICAgQWx0ZXJuYXRpb24gUGF0dGVybiBUZXN0cworLS0gICBHcm91cCBQYXR0ZXJuIFRlc3RzCist LSAgIFdpbmRvdyBGdW5jdGlvbiBDb21iaW5hdGlvbnMKKy0tICAgREVGSU5FIEV4cHJlc3Npb24g VmFyaWF0aW9ucworLS0gICBMYXJnZSBTY2FsZSBTdGF0aXN0aWNzIFZlcmlmaWNhdGlvbgorLS0g ICBOYXYgTWFyayBMb29rYmFjay9Mb29rYWhlYWQgKHR1cGxlc3RvcmUgdHJpbSkKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gRmlsdGVyIGZ1bmN0aW9uIHRvIG5vcm1hbGl6ZSBwbGF0Zm9ybS1kZXBlbmRlbnQgbWVtb3J5 IHZhbHVlcyAobm90IE5GQSBzdGF0aXN0aWNzKS4KKy0tIE5GQSBzdGF0aXN0aWNzIHNob3VsZCBu b3QgY2hhbmdlIGJldHdlZW4gcGxhdGZvcm1zOyBpZiB0aGV5IGRvLCBpdCBjb3VsZAorLS0gaW5k aWNhdGUgaXNzdWVzIHN1Y2ggYXMgdW5pbml0aWFsaXplZCBtZW1vcnkgYWNjZXNzLgorLS0gV29y a3MgZm9yIHRleHQsIEpTT04sIGFuZCBYTUwgZm9ybWF0cy4KK2NyZWF0ZSBmdW5jdGlvbiBycHJf ZXhwbGFpbl9maWx0ZXIodGV4dCkgcmV0dXJucyBzZXRvZiB0ZXh0CitsYW5ndWFnZSBwbHBnc3Fs IGFzCiskJAorZGVjbGFyZQorICAgIGxuIHRleHQ7CitiZWdpbgorICAgIGZvciBsbiBpbiBleGVj dXRlICQxCisgICAgbG9vcAorICAgICAgICAtLSBOb3JtYWxpemUgcGxhdGZvcm0tZGVwZW5kZW50 IG1lbW9yeSB2YWx1ZXMKKyAgICAgICAgLS0gS2VlcCBORkEgc3RhdGlzdGljcyBudW1iZXJzIHVu Y2hhbmdlZCAodGhleSBhcmUgdGVzdCBhc3NlcnRpb25zKQorCisgICAgICAgIC0tIFRleHQgZm9y bWF0OiAiU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IDE4a0IiCisgICAgICAgIGlm IGxuIH4gJ1N0b3JhZ2U6LipNYXhpbXVtIFN0b3JhZ2U6JyB0aGVuCisgICAgICAgICAgICBsbiA6 PSByZWdleHBfcmVwbGFjZShsbiwgJ1xtXGQra0InLCAnTmtCJywgJ2cnKTsKKyAgICAgICAgZW5k IGlmOworCisgICAgICAgIC0tIEpTT04gZm9ybWF0OiAiTWF4aW11bSBTdG9yYWdlIjogMTcgKG51 bWJlciBpbiBrQiB1bml0cykKKyAgICAgICAgaWYgbG4gfiAnIk1heGltdW0gU3RvcmFnZSI6JyB0 aGVuCisgICAgICAgICAgICBsbiA6PSByZWdleHBfcmVwbGFjZShsbiwgJyJNYXhpbXVtIFN0b3Jh Z2UiOiBcZCsnLCAnIk1heGltdW0gU3RvcmFnZSI6IDAnLCAnZycpOworICAgICAgICBlbmQgaWY7 CisKKyAgICAgICAgLS0gWE1MIGZvcm1hdDogPE1heGltdW0tU3RvcmFnZT4xNzwvTWF4aW11bS1T dG9yYWdlPiAobnVtYmVyIGluIGtCIHVuaXRzKQorICAgICAgICBpZiBsbiB+ICc8TWF4aW11bS1T dG9yYWdlPicgdGhlbgorICAgICAgICAgICAgbG4gOj0gcmVnZXhwX3JlcGxhY2UobG4sICc8TWF4 aW11bS1TdG9yYWdlPlxkKzwvTWF4aW11bS1TdG9yYWdlPicsICc8TWF4aW11bS1TdG9yYWdlPjA8 L01heGltdW0tU3RvcmFnZT4nLCAnZycpOworICAgICAgICBlbmQgaWY7CisKKyAgICAgICAgLS0g U29ydCBNZXRob2QgbWVtb3J5IGlzIHBsYXRmb3JtLWRlcGVuZGVudCAoMzItYml0IHZzIDY0LWJp dCkKKyAgICAgICAgaWYgbG4gfiAnU29ydCBNZXRob2Q6LipNZW1vcnk6JyB0aGVuCisgICAgICAg ICAgICBsbiA6PSByZWdleHBfcmVwbGFjZShsbiwgJ01lbW9yeTogXGQra0InLCAnTWVtb3J5OiBO a0InKTsKKyAgICAgICAgZW5kIGlmOworCisgICAgICAgIHJldHVybiBuZXh0IGxuOworICAgIGVu ZCBsb29wOworZW5kOworJCQ7CistLSBTZXR1cDogQ3JlYXRlIHRlc3QgdGFibGVzCitDUkVBVEUg VEFCTEUgcnByX25mYV90ZXN0ICgKKyAgICBpZCBzZXJpYWwsCisgICAgdiBpbnQsCisgICAgY2F0 IGNoYXIoMSkKKyk7CistLSBJbnNlcnQgdGVzdCBkYXRhOiAxMDAgcm93cyB3aXRoIHByZWRpY3Rh YmxlIHBhdHRlcm4KK0lOU0VSVCBJTlRPIHJwcl9uZmFfdGVzdCAodiwgY2F0KQorU0VMRUNUIGks CisgICAgICAgQ0FTRQorICAgICAgICAgICBXSEVOIGkgJSA1ID0gMSBUSEVOICdBJworICAgICAg ICAgICBXSEVOIGkgJSA1ID0gMiBUSEVOICdCJworICAgICAgICAgICBXSEVOIGkgJSA1ID0gMyBU SEVOICdDJworICAgICAgICAgICBXSEVOIGkgJSA1ID0gNCBUSEVOICdEJworICAgICAgICAgICBF TFNFICdFJworICAgICAgIEVORAorRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBpOworLS0g QWRkaXRpb25hbCB0ZXN0IHRhYmxlIHdpdGggbW9yZSBjb21wbGV4IHBhdHRlcm5zCitDUkVBVEUg VEFCTEUgcnByX25mYV9jb21wbGV4ICgKKyAgICBpZCBzZXJpYWwsCisgICAgcHJpY2UgaW50LAor ICAgIHRyZW5kIGNoYXIoMSkgIC0tIFU9dXAsIEQ9ZG93biwgUz1zdGFibGUKKyk7CitJTlNFUlQg SU5UTyBycHJfbmZhX2NvbXBsZXggKHByaWNlLCB0cmVuZCkKK1ZBTFVFUworICAgICgxMDAsICdT JyksICgxMDUsICdVJyksICgxMTAsICdVJyksICgxMDgsICdEJyksICgxMTIsICdVJyksCisgICAg KDExNSwgJ1UnKSwgKDExMywgJ0QnKSwgKDExMSwgJ0QnKSwgKDEwOSwgJ0QnKSwgKDExMCwgJ1Un KSwKKyAgICAoMTIwLCAnVScpLCAoMTI1LCAnVScpLCAoMTMwLCAnVScpLCAoMTI4LCAnRCcpLCAo MTI2LCAnRCcpLAorICAgICgxMjQsICdEJyksICgxMjIsICdEJyksICgxMjAsICdEJyksICgxMTgs ICdEJyksICgxMTksICdVJyksCisgICAgKDEyMSwgJ1UnKSwgKDEyMywgJ1UnKSwgKDEyNSwgJ1Un KSwgKDEyNywgJ1UnKSwgKDEyOSwgJ1UnKSwKKyAgICAoMTMxLCAnVScpLCAoMTMzLCAnVScpLCAo MTMwLCAnRCcpLCAoMTI3LCAnRCcpLCAoMTI0LCAnRCcpOworLS0gPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCYXNpYyBORkEg U3RhdGlzdGljcyBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTaW1wbGUgcGF0dGVybiAtIHNob3VsZCBzaG93 IGJhc2ljIHN0YXRpc3RpY3MKK0NSRUFURSBWSUVXIHJwcl9ldl9iYXNpY19zaW1wbGUgQVMKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERF RklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9iYXNpY19zaW1w bGUnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGlu ZSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiKSAKKygxIHJvdykK KworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIGNh dCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnCispJyk7CisgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogYSBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFrLCAxMDEgdG90YWws IDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMTAxIHRvdGFsLCA2MCBwcnVuZWQK KyAgIE5GQTogMjAgbWF0Y2hlZCAobGVuIDIvMi8yLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTog MCBhYnNvcmJlZCwgMjAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgU2VxIFNjYW4gb24g cnByX25mYV90ZXN0IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCist LSBQYXR0ZXJuIHdpdGggbm8gbWF0Y2hlcyAtIDAgbWF0Y2hlZAorQ1JFQVRFIFZJRVcgcnByX2V2 X2Jhc2ljX25vbWF0Y2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90 ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoWCBZIFopCisgICAgREVGSU5FIFggQVMgY2F0ID0gJ1gnLCBZIEFTIGNhdCA9ICdZ JywgWiBBUyBjYXQgPSAnWicKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9iYXNpY19ub21hdGNoJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICh4IHkgeikgCisoMSByb3cpCisKK1NFTEVDVCBy cHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RT IE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKFggWSBaKQorICAgIERFRklORSBYIEFTIGNhdCA9ICcnWCcn LCBZIEFTIGNhdCA9ICcnWScnLCBaIEFTIGNhdCA9ICcnWicnCispOycpOworICAgICAgICAgICAg ICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBX aW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIFBhdHRlcm46IHggeSB6CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3Rv cmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMSBwZWFr LCAxMDEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMTAxIHRvdGFs LCAxMDAgcHJ1bmVkCisgICBORkE6IDAgbWF0Y2hlZCwgMCBtaXNtYXRjaGVkCisgICAtPiAgU2Vx IFNjYW4gb24gcnByX25mYV90ZXN0IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyg5IHJv d3MpCisKKy0tIFBhdHRlcm4gbWF0Y2hpbmcgZXZlcnkgcm93IC0gaGlnaCBtYXRjaCBjb3VudAor Q1JFQVRFIFZJRVcgcnByX2V2X2Jhc2ljX2FsbHJvd3MgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoUikKKyAgICBERUZJTkUgUiBBUyBUUlVFCispOwor U0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdy cHJfZXZfYmFzaWNfYWxscm93cycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKKyAgICAgIGxpbmUgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKHIp IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChSKQorICAgIERFRklO RSBSIEFTIFRSVUUKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogcgorICAg TmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdl OiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDIgcGVhaywgMTAxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZB IENvbnRleHRzOiAyIHBlYWssIDEwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAwIG1hdGNo ZWQgKGxlbiAxLzEvMS4wKSwgMCBtaXNtYXRjaGVkCisgICAtPiAgU2VxIFNjYW4gb24gcnByX25m YV90ZXN0IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIFJlZ3Jl c3Npb24gdGVzdDogU3BhY2UgYmVmb3JlIHBhcmVudGhlc2lzIGluIHBhdHRlcm4gZGVwYXJzZQor LS0gVmVyaWZpZXMgdGhhdCAiQSAoQiB8IEMpIiBjb3JyZWN0bHkgb3V0cHV0cyBhcyAiYSAoYiB8 IGMpIiB3aXRoIHNwYWNlCitDUkVBVEUgVklFVyBycHJfZXZfYmFzaWNfZGVwYXJzZV9zcGFjZSBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChCIHwgQykpCisgICAgREVGSU5FIEEg QVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9i YXNpY19kZXBhcnNlX3NwYWNlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgIFBBVFRFUk4gKGEgKGIgfCBjKSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgKEIgfCBD KSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAz ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFj dHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgKGIgfCBj KQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBT dG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMzUgdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDIgcGVhaywgMjEgdG90YWwsIDYgcHJ1bmVkCisgICBORkE6IDcgbWF0 Y2hlZCAobGVuIDIvMi8yLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgNyBz a2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFJlZ3Jl c3Npb24gdGVzdDogU2VxdWVudGlhbCBhbHRlcm5hdGlvbnMgYXQgc2FtZSBkZXB0aAorLS0gVmVy aWZpZXMgdGhhdCAiKChCIHwgQykgKEQgfCBFKSkiIGNvcnJlY3RseSBvdXRwdXRzIGFzICIoYiB8 IGMpIChkIHwgZSkiCistLSBQcmV2aW91c2x5IGZhaWxlZCBkdWUgdG8gbWlzc2luZyBwYXJlbnRo ZXNlcyBvbiBBTFQgZGVwdGggZGVjcmVhc2UKK0NSRUFURSBWSUVXIHJwcl9ldl9iYXNpY19kZXBh cnNlX3NlcWFsdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBICgoQiB8IEMpIChE IHwgRSkpKikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDEsIEIgQVMgdiAlIDUgPSAyLCBDIEFT IHYgJSA1ID0gMywgRCBBUyB2ICUgNSA9IDQsIEUgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYmFz aWNfZGVwYXJzZV9zZXFhbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVS Tic7CisgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgKChiIHwgYykgKGQgfCBlKSkqKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAoKEIgfCBDKSAoRCB8IEUpKSopCisgICAgREVGSU5F IEEgQVMgdiAlIDUgPSAxLCBCIEFTIHYgJSA1ID0gMiwgQyBBUyB2ICUgNSA9IDMsIEQgQVMgdiAl IDUgPSA0LCBFIEFTIHYgJSA1ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IGEgKChiIHwgYykgKGQgfCBlKSkqCisgICBOYXYgTWFyayBMb29rYmFjazogMAor ICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczog NCBwZWFrLCA2MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAzMSB0 b3RhbCwgMjQgcHJ1bmVkCisgICBORkE6IDYgbWF0Y2hlZCAobGVuIDEvMS8xLjApLCAwIG1pc21h dGNoZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwg cm93cz0zMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworLS0gUmVncmVzc2lvbiB0ZXN0OiBRdW90 ZWQgaWRlbnRpZmllcnMgaW4gRVhQTEFJTiBwYXR0ZXJuIGRlcGFyc2UKKy0tIE1peGVkIGNhc2Ug bmFtZXMgbXVzdCBiZSBxdW90ZWQgdG8gcHJlc2VydmUgcm91bmQtdHJpcCBzYWZldHkKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOICgiU3RhcnQiICJVcCIrKQorICAgIERFRklORSAiU3RhcnQiIEFTIFRS VUUsICJVcCIgQVMgdiA+IFBSRVYodikKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBy cHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICJTdGFydCIgIlVwIisKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAxCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMg cworKDUgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBTdGF0ZSBTdGF0aXN0aWNzIFRlc3RzIChwZWFrLCB0 b3RhbCwgbWVyZ2VkKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBTaW1wbGUgcXVhbnRpZmllciBwYXR0ZXJuIC0gQSsg d2l0aCBzaG9ydCBtYXRjaGVzIChubyBtZXJnaW5nKQorQ1JFQVRFIFZJRVcgcnByX2V2X3N0YXRl X3NpbXBsZV9xdWFudCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEK Kyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdk ZWYoJ3Jwcl9ldl9zdGF0ZV9zaW1wbGVfcXVhbnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICBsaW5lICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKGErKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxCispOycpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAu MDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiCisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZB IFN0YXRlczogMyBwZWFrLCA3NiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBw ZWFrLCA1MSB0b3RhbCwgMjUgcHJ1bmVkCisgICBORkE6IDI1IG1hdGNoZWQgKGxlbiAxLzEvMS4w KSwgMCBtaXNtYXRjaGVkCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMg cyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIEFsdGVybmF0aW9u IHBhdHRlcm4gLSBtdWx0aXBsZSBzdGF0ZSBicmFuY2hlcworQ1JFQVRFIFZJRVcgcnByX2V2X3N0 YXRlX2FsdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSB8IEIgfCBDKSAoRCB8IEUpKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNhdCA9ICdB JywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAorICAgICAgICBEIEFTIGNhdCA9ICdE JywgRSBBUyBjYXQgPSAnRScKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHQnKSwgRSdcbicpKSBBUyBsaW5l IFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8 IGIgfCBjKSAoZCB8IGUpKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoKEEgfCBCIHwgQykgKEQgfCBFKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAn J0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBjYXQgPSAnJ0MnJywKKyAgICAgICAgRCBBUyBj YXQgPSAnJ0QnJywgRSBBUyBjYXQgPSAnJ0UnJworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3 IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiAoYSB8IGIgfCBjKSAoZCB8IGUpCisgICBOYXYgTWFyayBMb29rYmFjazogMAor ICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczog NiBwZWFrLCA1MjQgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAx IHRvdGFsLCAyMCBwcnVuZWQKKyAgIE5GQTogMjAgbWF0Y2hlZCAobGVuIDIvMi8yLjApLCA0MCBt aXNtYXRjaGVkIChsZW4gMi8yLzIuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgMjAgc2tpcHBlZCAo bGVuIDEvMS8xLjApCisgICAtPiAgU2VxIFNjYW4gb24gcnByX25mYV90ZXN0IChhY3R1YWwgcm93 cz0xMDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBDb21wbGV4IHBhdHRlcm4gd2l0aCBo aWdoIHN0YXRlIGNvdW50CitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfY29tcGxleCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQiogQyspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdiAlIDMgPSAxLAorICAg ICAgICBCIEFTIHYgJSAzID0gMiwKKyAgICAgICAgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9z dGF0ZV9jb21wbGV4JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor ICAgICAgICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRU RVJOIChhKyBiKiBjKykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBKyBCKiBDKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2 ICUgMyA9IDEsCisgICAgICAgIEIgQVMgdiAlIDMgPSAyLAorICAgICAgICBDIEFTIHYgJSAzID0g MAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0 dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiKiBj KworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBT dG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgMjM1IHRvdGFsLCAwIG1lcmdlZAor ICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgMzQgcHJ1bmVkCisgICBORkE6IDMz IG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQs IDMzIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJh dGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0t IEdyb3VwZWQgcGF0dGVybiB3aXRoIHF1YW50aWZpZXIgLSBzdGF0ZSBjb3VudCB3aXRoIGdyb3Vw aW5nCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfZ3JvdXBfcXVhbnQgQVMKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEg QikrKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9zdGF0ZV9ncm91cF9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKKyAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQ QVRURVJOICgoYSBiKSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoQSBCKSspCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBC IEFTIHYgJSAyID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxh aW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IChhJyBiJykrIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAg TWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgOTEgdG90YWwsIDAg bWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNjEgdG90YWwsIDAgcHJ1bmVkCisgICBO RkE6IDEgbWF0Y2hlZCAobGVuIDYwLzYwLzYwLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMjkg YWJzb3JiZWQgKGxlbiAyLzIvMi4wKSwgMzAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAg RnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9v cHM9MSkKKygxMCByb3dzKQorCistLSBTdGF0ZSBleHBsb3Npb24gcGF0dGVybiAtIG1hbnkgYWx0 ZXJuYXRpb25zCistLSBQYXR0ZXJuIChBfEIpKEF8QikoQXxCKShBfEIpIGNhbiBjcmVhdGUgbWFu eSBwYXJhbGxlbCBzdGF0ZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9leHBsb3Npb24gQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIp IChBIHwgQikgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIg PSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfc3RhdGVfZXhwbG9zaW9uJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp bmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgIFBBVFRFUk4gKChhIHwgYikgKGEgfCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBi KSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAo QSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikpCisgICAgREVGSU5FIEEgQVMg diAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IChhIHwgYil7OH0KKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBT dG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAxNyBw ZWFrLCA5OTUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDggcGVhaywgMTAxIHRv dGFsLCAxIHBydW5lZAorICAgTkZBOiAxMiBtYXRjaGVkIChsZW4gOC84LzguMCksIDMgbWlzbWF0 Y2hlZCAobGVuIDIvNC8zLjApCisgICBORkE6IDAgYWJzb3JiZWQsIDg0IHNraXBwZWQgKGxlbiAx LzcvNC4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVh bCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIENvbnNlY3V0aXZlIEFMVCBt ZXJnZSBmb2xsb3dlZCBieSBkaWZmZXJlbnQgQUxUCistLSAoKEEgfCBCKSAoQSB8IEIpIChDIHwg RCkpIC0+IChBfEIpezJ9IChDfEQpCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfYWx0X21lcmdl X2FsdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChBIHwgQikgKEMgfCBEKSkKKyAgICBERUZJTkUgQSBB UyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9 IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9hbHRfbWVyZ2VfYWx0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgo YSB8IGIpIChhIHwgYikgKGMgfCBkKSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQyB8IEQpKQorICAg IERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBE IEFTIHYgJSA0ID0gMworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxh aW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IChhIHwgYil7Mn0gKGMgfCBkKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDcgcGVhaywgMTgx IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDQxIHRvdGFsLCAxMiBw cnVuZWQKKyAgIE5GQTogOSBtYXRjaGVkIChsZW4gMy8zLzMuMCksIDEgbWlzbWF0Y2hlZCAobGVu IDIvMi8yLjApCisgICBORkE6IDAgYWJzb3JiZWQsIDE4IHNraXBwZWQgKGxlbiAxLzIvMS41KQor ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQw LjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gQ29uc2VjdXRpdmUgQUxUIG1lcmdlIGZvbGxv d2VkIGJ5IG5vbi1BTFQgZWxlbWVudAorLS0gKChBIHwgQikgKEEgfCBCKSBDKSAtPiAoQXxCKXsy fSBDCitDUkVBVEUgVklFVyBycHJfZXZfc3RhdGVfYWx0X21lcmdlX25vbmFsdCBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSB8IEIpIChBIHwgQikgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAl IDMgPSAxLCBDIEFTIHYgJSAzID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3N0YXRlX2FsdF9tZXJnZV9ub25hbHQn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAg IGxpbmUgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKChhIHwgYikgKGEgfCBiKSBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSAoQSB8IEIpIEMpCisgICAg REVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7 Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93 cz00MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSB8IGIpezJ9IGMKKyAg IE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFn ZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWssIDE3NyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5G QSBDb250ZXh0czogMyBwZWFrLCA0MSB0b3RhbCwgMiBwcnVuZWQKKyAgIE5GQTogMTIgbWF0Y2hl ZCAobGVuIDMvMy8zLjApLCAyIG1pc21hdGNoZWQgKGxlbiAyLzIvMi4wKQorICAgTkZBOiAwIGFi c29yYmVkLCAyNCBza2lwcGVkIChsZW4gMS8yLzEuNSkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBsb29wcz0xKQorKDEwIHJvd3Mp CisKKy0tIEFMVCBwcmVmaXgvc3VmZml4IGFic29yYmVkIGludG8gR1JPVVA6IChBfEIpIChBfEIp KyAoQXxCKSAtPiAoQXxCKXszLH0KK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9hbHRfYWJzb3Ji X2dyb3VwIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSsgKEEgfCBCKSkKKyAgICBERUZJTkUg QSBBUyB2ICUgMiA9IDAsIEIgQVMgdiAlIDIgPSAxCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X2Fic29y Yl9ncm91cCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAg ICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8IGIpIChhIHwgYikrIChhIHwgYikp IAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZ WkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSB8IEIpIChBIHwgQikrIChBIHwgQikpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAw LCBCIEFTIHYgJSAyID0gMQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4 cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IChhIHwgYil7Myx9CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVt b3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNyBwZWFrLCAyNDMgdG90 YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNDEgdG90YWwsIDAgcHJ1bmVk CisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDQwLzQwLzQwLjApLCAwIG1pc21hdGNoZWQKKyAgIE5G QTogMCBhYnNvcmJlZCwgMzkgc2tpcHBlZCAobGVuIDEvMi8xLjApCisgICAtPiAgRnVuY3Rpb24g U2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKygx MCByb3dzKQorCistLSBIaWdoIHN0YXRlIGNvdW50IC0gYWx0ZXJuYXRpb24gd2l0aCBwbHVzIHF1 YW50aWZpZXIKK0NSRUFURSBWSUVXIHJwcl9ldl9zdGF0ZV9hbHRfcGx1cyBBUworU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KEEgfCBCIHwgQykrIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAxLCBCIEFTIHYgJSA0ID0g MiwgQyBBUyB2ICUgNCA9IDMsIEQgQVMgdiAlIDQgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X3Bs dXMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAg ICBsaW5lICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBB VFRFUk4gKChhIHwgYiB8IGMpKyBkKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2Zp bHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcg T0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiB8IEMpKyBEKQorICAgIERFRklORSBB IEFTIHYgJSA0ID0gMSwgQiBBUyB2ICUgNCA9IDIsIEMgQVMgdiAlIDQgPSAzLCBEIEFTIHYgJSA0 ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAo YWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwg YiB8IGMpKyBkCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMTYgcGVhaywgMTAwNCB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNCBwZWFrLCAxMDEgdG90YWwsIDAgcHJ1bmVkCisg ICBORkE6IDI1IG1hdGNoZWQgKGxlbiA0LzQvNC4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAg YWJzb3JiZWQsIDc1IHNraXBwZWQgKGxlbiAxLzMvMi4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDEwIHJv d3MpCisKKy0tIEVhcmx5IHRlcm1pbmF0aW9uOiBmaXJzdCBBTFQgYnJhbmNoIChBKSByZWFjaGVz IEZJTiBpbW1lZGlhdGVseSwKKy0tIHBydW5pbmcgc2Vjb25kIGJyYW5jaCAoQSBCKykgYmVmb3Jl IGl0IGNhbiBhY2N1bXVsYXRlIEIgcmVwZXRpdGlvbnMuCitDUkVBVEUgVklFVyBycHJfZXZfc3Rh dGVfYWx0X3BydW5lIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEEgQikrKQorICAgIERFRklORSBBIEFTIHYg PSAxLCBCIEFTIHYgPiAxCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc3RhdGVfYWx0X3BydW5lJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBhIGIpKykgCisoMSBy b3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikKK1dJTkRP VyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgo QSB8IEEgQikrKQorICAgIERFRklORSBBIEFTIHYgPSAxLCBCIEFTIHYgPiAxCispOycpOworICAg ICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAu MDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBhIGIpKworICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IK KyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgMzA2IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgOTkgcHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVu IDEvMS8xLjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRl X3NlcmllcyBzIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIE5l c3RlZCBxdWFudGlmaWVycyBjYXVzaW5nIHN0YXRlIGdyb3d0aAorQ1JFQVRFIFZJRVcgcnByX2V2 X3N0YXRlX25lc3RlZF9xdWFudCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKCgoQSB8IEIpKykrKQorICAgIERFRklO RSBBIEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9zdGF0ZV9uZXN0ZWRf cXVhbnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAg ICAgIGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRF Uk4gKCgoYSB8IGIpKykrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcign CitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBT VU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDEwMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKSspKykKKyAgICBERUZJTkUgQSBBUyB2ICUg MyA9IDEsIEIgQVMgdiAlIDMgPSAyCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRv dzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H KQorICAgUGF0dGVybjogKGEgfCBiKSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9y YWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWss IDUwMDQgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMTAwMSB0b3Rh bCwgMzMzIHBydW5lZAorICAgTkZBOiAzMzQgbWF0Y2hlZCAobGVuIDEvMi8yLjApLCAwIG1pc21h dGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgMzMzIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMDAu MDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSAoQXsyLH0pKiBtdXN0IE5PVCBmbGF0dGVuIHRv IGEqIChILTEpOiBjb3VudHMgezB9IFVOSU9OIFsyLCBJTkYpIGxlYXZlIDEKKy0tIHVucmVhY2hh YmxlLiAgVGhlIHBsYW5uZXIga2VlcHMgaXQgYXMgKGF7Mix9KSosIG5vdCBhKi4KK0NSRUFURSBW SUVXIHJwcl9ldl9uZXN0ZWRfcXVhbnRfbm9fZmxhdHRlbiBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBezIsfSkqKQor ICAgIERFRklORSBBIEFTIHYgJSAzIDw+IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9uZXN0ZWRfcXVhbnRfbm9fZmxh dHRlbicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg IGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGF7 Mix9KSopIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNikgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBezIsfSkqKQorICAgIERFRklORSBBIEFTIHYgJSAzIDw+IDAKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9Ni4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYXsyLH0iKSoKKyAgIE5hdiBNYXJrIExv b2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBO RkEgU3RhdGVzOiA1IHBlYWssIDE4IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAz IHBlYWssIDcgdG90YWwsIDIgcHJ1bmVkCisgICBORkE6IDIgbWF0Y2hlZCAobGVuIDIvMi8yLjAp LCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMiBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAwIHNraXBw ZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93 cz02LjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDb250ZXh0IFN0YXRpc3Rp Y3MgVGVzdHMgKHBlYWssIHRvdGFsLCBwcnVuZWQgKyBhYnNvcmJlZC9za2lwcGVkKQorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBDb250ZXh0IGFic29ycHRpb24gd2l0aCB1bmJvdW5kZWQgcXVhbnRpZmllciBhdCBzdGFy dAorQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9hYnNvcmJfdW5ib3VuZGVkIEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9jdHhfYWJzb3JiX3VuYm91bmRlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBB VFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMg diAlIDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsi IGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDkxIHRvdGFsLCAwIG1lcmdlZAor ICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDUxIHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAxMCBt YXRjaGVkIChsZW4gNS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAzMCBhYnNvcmJlZCAo bGVuIDEvMS8xLjApLCAxMCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDEw IHJvd3MpCisKKy0tIE5vIGFic29ycHRpb24gLSBib3VuZGVkIHF1YW50aWZpZXIKK0NSRUFURSBW SUVXIHJwcl9ldl9jdHhfbm9fYWJzb3JiIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Miw0fSBCKQorICAgIERFRklO RSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3R4X25vX2Fic29y YicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgIGxp bmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYXsyLDR9 IGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBezIsNH0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1 ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFj dHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7Miw0fSBi CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNyBwZWFrLCAxMDEgdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDUgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1h dGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDQw IHNraXBwZWQgKGxlbiAxLzQvMi41KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gQ29u dGV4dHMgc2tpcHBlZCBieSBTS0lQIFBBU1QgTEFTVCBST1cKK0NSRUFURSBWSUVXIHJwcl9ldl9j dHhfc2tpcCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExB U1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDEwID0gMSwg QiBBUyB2ICUgMTAgPSAyLCBDIEFTIHYgJSAxMCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVu bmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfc2tpcCcpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiIGMpIAorKDEgcm93KQor CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMp CisgICAgREVGSU5FIEEgQVMgdiAlIDEwID0gMSwgQiBBUyB2ICUgMTAgPSAyLCBDIEFTIHYgJSAx MCA9IDMKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRl ciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIg YworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBT dG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDIgcGVhaywgMTAxIHRvdGFsLCAwIG1lcmdlZAor ICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgODAgcHJ1bmVkCisgICBORkE6IDEw IG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQs IDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJh dGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0t IEhpZ2ggY29udGV4dCBhYnNvcnB0aW9uIC0gdW5ib3VuZGVkIGdyb3VwCitDUkVBVEUgVklFVyBy cHJfZXZfY3R4X2Fic29yYl9ncm91cCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrIEMpCisgICAgREVGSU5F IEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitTRUxF Q1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9l dl9jdHhfYWJzb3JiX2dyb3VwJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworICAgICAgICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICBQQVRURVJOICgoYSBiKSsgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCAxMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKSsgQykKKyAgICBERUZJTkUgQSBBUyB2ICUg MyA9IDEsIEIgQVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsnKTsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhJyBiJykrIiBjCisgICBOYXYgTWFyayBMb29r YmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZB IFN0YXRlczogMyBwZWFrLCAxMzQgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMg cGVhaywgMTAxIHRvdGFsLCAzNCBwcnVuZWQKKyAgIE5GQTogMzMgbWF0Y2hlZCAobGVuIDMvMy8z LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgMzMgc2tpcHBlZCAobGVuIDEv MS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFs IHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gRml4ZWQtbGVuZ3RoIGdyb3Vw IGFic29ycHRpb246IChBIEIgQikrIEMKKy0tIEIgQiBtZXJnZWQgdG8gQnsyfTsgYWJzb3JiYWJs ZSB3aXRoIGZpeGVkLWxlbmd0aCBjaGVjaworLS0gc3RlcF9zaXplPTMgKEEgKyBCICsgQik7IHYg JSA3IGN5Y2xlIGdpdmVzIDIgaXRlcmF0aW9ucyBwZXIgbWF0Y2gKK0NSRUFURSBWSUVXIHJwcl9l dl9jdHhfYWJzb3JiX2ZpeGVkdmFyIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdl bmVyYXRlX3NlcmllcygxLCA3MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIgQikrIEMpCisgICAgREVGSU5F IEEgQVMgdiAlIDcgSU4gKDEsIDQpLCBCIEFTIHYgJSA3IElOICgyLCAzLCA1LCA2KSwgQyBBUyB2 ICUgNyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jdHhfYWJzb3JiX2ZpeGVkdmFyJyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgYiBiKSsgYykgCisoMSByb3cp CisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA3MCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIEIg QikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDcgSU4gKDEsIDQpLCBCIEFTIHYgJSA3IElOICgy LCAzLCA1LCA2KSwgQyBBUyB2ICUgNyA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz03MC4wMCBsb29wcz0xKQorICAgV2luZG93 OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiAoYScgYnsyfScpKyIgYworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMg cGVhaywgOTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDQgcGVhaywgNzEgdG90 YWwsIDQwIHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gNy83LzcuMCksIDAgbWlzbWF0 Y2hlZAorICAgTkZBOiAxMCBhYnNvcmJlZCAobGVuIDMvMy8zLjApLCAxMCBza2lwcGVkIChsZW4g MS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1 YWwgcm93cz03MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIE5lc3RlZCBmaXhlZC1sZW5n dGggZ3JvdXAgYWJzb3JwdGlvbjogKEEgKEIgQyl7Mn0gRCkrIEUKKy0tIHN0ZXBfc2l6ZSA9IDEg KyAoMSsxKSoyICsgMSA9IDY7IHYgJSAxMyBjeWNsZSBnaXZlcyAyIGl0ZXJhdGlvbnMgKyBFCitD UkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9uZXN0ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBP VkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDY1KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgKEIgQyl7 Mn0gRCkrIEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDEzIElOICgxLCA3KSwgQiBBUyB2ICUgMTMg SU4gKDIsIDQsIDgsIDEwKSwKKyAgICAgICAgICAgQyBBUyB2ICUgMTMgSU4gKDMsIDUsIDksIDEx KSwgRCBBUyB2ICUgMTMgSU4gKDYsIDEyKSwKKyAgICAgICAgICAgRSBBUyB2ICUgMTMgPSAwCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfY3R4X2Fic29yYl9uZXN0ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CisgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIChiIGMpezJ9IGQpKyBlKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDY1KSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoKEEgKEIgQyl7Mn0gRCkrIEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDEzIElOICgxLCA3KSwg QiBBUyB2ICUgMTMgSU4gKDIsIDQsIDgsIDEwKSwKKyAgICAgICAgICAgQyBBUyB2ICUgMTMgSU4g KDMsIDUsIDksIDExKSwgRCBBUyB2ICUgMTMgSU4gKDYsIDEyKSwKKyAgICAgICAgICAgRSBBUyB2 ICUgMTMgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9NjUuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEn IChiJyBjJyl7Mn0nIGQnKSsiIGUKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdl OiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDc2 IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiA0IHBlYWssIDY2IHRvdGFsLCA1MCBw cnVuZWQKKyAgIE5GQTogNSBtYXRjaGVkIChsZW4gMTMvMTMvMTMuMCksIDAgbWlzbWF0Y2hlZAor ICAgTkZBOiA1IGFic29yYmVkIChsZW4gNi82LzYuMCksIDUgc2tpcHBlZCAobGVuIDEvMS8xLjAp CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 NjUuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBEb3VibHkgbmVzdGVkIGZpeGVkLWxlbmd0 aCBncm91cCBhYnNvcnB0aW9uOiAoQSAoKEIgQ3szfSl7Mn0gRCl7Mn0gRSkrIEYKKy0tIHN0ZXBf c2l6ZSA9IDEgKyAoKDErMykqMisxKSoyICsgMSA9IDIwOyB2ICUgNDEgY3ljbGUgZ2l2ZXMgMiBp dGVyYXRpb25zICsgRgorQ1JFQVRFIFZJRVcgcnByX2V2X2N0eF9hYnNvcmJfZGVlcCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgODIpIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSAoKEIgQyBDIEMpezJ9IEQpezJ9IEUpKyBGKQorICAgIERFRklORSBBIEFTIHYgJSA0 MSBJTiAoMSwgMjEpLAorICAgICAgICAgICBCIEFTIHYgJSA0MSBJTiAoMiwgNiwgMTEsIDE1LCAy MiwgMjYsIDMxLCAzNSksCisgICAgICAgICAgIEMgQVMgdiAlIDQxIElOICgzLDQsNSwgNyw4LDks IDEyLDEzLDE0LCAxNiwxNywxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLDI0LDI1 LCAyNywyOCwyOSwgMzIsMzMsMzQsIDM2LDM3LDM4KSwKKyAgICAgICAgICAgRCBBUyB2ICUgNDEg SU4gKDEwLCAxOSwgMzAsIDM5KSwKKyAgICAgICAgICAgRSBBUyB2ICUgNDEgSU4gKDIwLCA0MCks CisgICAgICAgICAgIEYgQVMgdiAlIDQxID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfZGVlcCcp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAg ICAgICBsaW5lICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhICgoYiBjIGMgYyl7Mn0gZCl7Mn0gZSkr IGYpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgODIpIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOICgoQSAoKEIgQyBDIEMpezJ9IEQpezJ9IEUpKyBGKQorICAgIERFRklORSBBIEFTIHYg JSA0MSBJTiAoMSwgMjEpLAorICAgICAgICAgICBCIEFTIHYgJSA0MSBJTiAoMiwgNiwgMTEsIDE1 LCAyMiwgMjYsIDMxLCAzNSksCisgICAgICAgICAgIEMgQVMgdiAlIDQxIElOICgzLDQsNSwgNyw4 LDksIDEyLDEzLDE0LCAxNiwxNywxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLDI0 LDI1LCAyNywyOCwyOSwgMzIsMzMsMzQsIDM2LDM3LDM4KSwKKyAgICAgICAgICAgRCBBUyB2ICUg NDEgSU4gKDEwLCAxOSwgMzAsIDM5KSwKKyAgICAgICAgICAgRSBBUyB2ICUgNDEgSU4gKDIwLCA0 MCksCisgICAgICAgICAgIEYgQVMgdiAlIDQxID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTgyLjAwIGxvb3BzPTEpCisgICBX aW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIFBhdHRlcm46IChhJyAoKGInIGN7M30nKXsyfScgZCcpezJ9JyBlJykrIiBmCisg ICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3Jh Z2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA4NyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5G QSBDb250ZXh0czogNCBwZWFrLCA4MyB0b3RhbCwgNzYgcHJ1bmVkCisgICBORkE6IDIgbWF0Y2hl ZCAobGVuIDQxLzQxLzQxLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMiBhYnNvcmJlZCAobGVu IDIwLzIwLzIwLjApLCAyIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNj YW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTgyLjAwIGxvb3BzPTEpCisoMTAg cm93cykKKworLS0gMy1sZXZlbCBFTkQgY2hhaW4gYWJzb3JwdGlvbjogKChBIChCIEMpezJ9KXsy fSkrCistLSBzdGVwX3NpemUgPSAoMSArICgxKzEpKjIpICogMiA9IDEwOyB2ICUgMjEgY3ljbGUg Z2l2ZXMgMiBpdGVyYXRpb25zCistLSBFTkQgY2hhaW46IEVORChCQ3syfSkgLT4gRU5EKEEuLnsy fSkgLT4gRU5EKCssIEFCU09SQkFCTEUpCitDUkVBVEUgVklFVyBycHJfZXZfY3R4X2Fic29yYl9l bmRjaGFpbiBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNDIpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoKEEgKEIgQyl7Mn0pezJ9KSspCisgICAgREVGSU5FIEEgQVMg diAlIDIxIElOICgxLCA2LCAxMSwgMTYpLAorICAgICAgICAgICBCIEFTIHYgJSAyMSBJTiAoMiwg NCwgNywgOSwgMTIsIDE0LCAxNywgMTkpLAorICAgICAgICAgICBDIEFTIHYgJSAyMSBJTiAoMywg NSwgOCwgMTAsIDEzLCAxNSwgMTgsIDIwKQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfZW5kY2hhaW4n KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAg IGxpbmUgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgUEFUVEVSTiAoKChhIChiIGMpezJ9KXsyfSkrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9l eHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDQyKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKChBIChCIEMpezJ9KXsyfSkrKQor ICAgIERFRklORSBBIEFTIHYgJSAyMSBJTiAoMSwgNiwgMTEsIDE2KSwKKyAgICAgICAgICAgQiBB UyB2ICUgMjEgSU4gKDIsIDQsIDcsIDksIDEyLCAxNCwgMTcsIDE5KSwKKyAgICAgICAgICAgQyBB UyB2ICUgMjEgSU4gKDMsIDUsIDgsIDEwLCAxMywgMTUsIDE4LCAyMCkKKyk7Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz00Mi4wMCBsb29w cz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKGEnIChiJyBjJyl7Mn0nKXsyfScpKyIKKyAg IE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFn ZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDQ3IHRvdGFsLCAwIG1lcmdlZAorICAgTkZB IENvbnRleHRzOiA1IHBlYWssIDQzIHRvdGFsLCAzMCBwcnVuZWQKKyAgIE5GQTogMiBtYXRjaGVk IChsZW4gMjAvMjAvMjAuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAyIGFic29yYmVkIChsZW4g MTAvMTAvMTAuMCksIDggc2tpcHBlZCAobGVuIDEvNS8zLjApCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NDIuMDAgbG9vcHM9MSkKKygxMCBy b3dzKQorCistLSBObyBhYnNvcnB0aW9uIHdoZW4gREVGSU5FIHVzZXMgRklSU1QgKG1hdGNoX3N0 YXJ0LWRlcGVuZGVudCkKKy0tIFNhbWUgcGF0dGVybiBhcyBycHJfZXZfY3R4X2Fic29yYl91bmJv dW5kZWQgYnV0IHdpdGggRklSU1QgaW4gREVGSU5FLgorLS0gQ29tcGFyZTogYWJzb3JiZWQgY291 bnQgc2hvdWxkIGJlIDAgaGVyZSB2cyA+MCBhYm92ZS4KK0NSRUFURSBWSUVXIHJwcl9ldl9jdHhf bm9fYWJzb3JiX2ZpcnN0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUg PD4gMCwgQiBBUyB2ICUgNSA9IDAgQU5EIHYgPiBGSVJTVCh2KQorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9ub19h YnNvcmJfZmlyc3QnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBi KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMCBB TkQgdiA+IEZJUlNUKHYpCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhw bGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdp bmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogYSsgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIE5hdiBNYXJrIExvb2thaGVhZDog MAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRl czogOSBwZWFrLCAxNTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDUgcGVhaywg NTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBt aXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDQwIHNraXBwZWQgKGxlbiAxLzQvMi41KQor ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUw LjAwIGxvb3BzPTEpCisoMTEgcm93cykKKworLS0gQWJzb3JwdGlvbiBwcmVzZXJ2ZWQgd2hlbiBE RUZJTkUgdXNlcyBvbmx5IExBU1Qgd2l0aG91dCBvZmZzZXQKKy0tIExBU1QodikgaXMgbWF0Y2hf c3RhcnQtaW5kZXBlbmRlbnQgKGFsd2F5cyBjdXJyZW50cG9zKSwgc28gYWJzb3JwdGlvbgorLS0g cmVtYWlucyBhY3RpdmUuICBDb21wYXJlOiBhYnNvcmJlZCBjb3VudCBzaG91bGQgYmUgPjAsIGxp a2UgdGhlCistLSBQUkVWLW9ubHkgY2FzZSBhYm92ZS4KK0NSRUFURSBWSUVXIHJwcl9ldl9jdHhf YWJzb3JiX2xhc3QgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAw LCBCIEFTIExBU1QodikgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2N0eF9hYnNvcmJfbGFzdCcpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxF Q1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBD T1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERF RklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgTEFTVCh2KSAlIDUgPSAwCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3Rh dGVzOiAzIHBlYWssIDkxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWss IDUxIHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gNS81LzUuMCksIDAg bWlzbWF0Y2hlZAorICAgTkZBOiAzMCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAxMCBza2lwcGVk IChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBz IChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIE5vIGFic29ycHRp b24gd2l0aCBjb21wb3VuZCBQUkVWKEZJUlNUKCkpIChtYXRjaF9zdGFydC1kZXBlbmRlbnQpCitD UkVBVEUgVklFVyBycHJfZXZfY3R4X25vX2Fic29yYl9jb21wb3VuZCBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBC KQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwIEFORCBQUkVWKEZJ UlNUKHYpLCAxKSBJUyBOT1QgTlVMTAorKTsKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBB UyB2ICUgNSA9IDAgQU5EIFBSRVYoRklSU1QodiksIDEpIElTIE5PVCBOVUxMCispOycpOworICAg ICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAg bG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsgYgorICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIE5hdiBNYXJrIExvb2thaGVhZDogLTEKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4 aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDkgcGVhaywgMTUxIHRvdGFsLCAwIG1l cmdlZAorICAgTkZBIENvbnRleHRzOiA1IHBlYWssIDUxIHRvdGFsLCAwIHBydW5lZAorICAgTkZB OiAxMCBtYXRjaGVkIChsZW4gNC81LzQuOSksIDEgbWlzbWF0Y2hlZCAobGVuIDUvNS81LjApCisg ICBORkE6IDAgYWJzb3JiZWQsIDM5IHNraXBwZWQgKGxlbiAxLzQvMi41KQorICAgLT4gIEZ1bmN0 aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEp CisoMTEgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBNYXRjaCBMZW5ndGggU3RhdGlzdGljcyBUZXN0cwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBGaXhlZCBsZW5ndGggbWF0Y2hlcyAtIGFsbCBzYW1lIGxlbmd0aAorQ1JFQVRF IFZJRVcgcnByX2V2X21sZW5fZml4ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g cnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFKQorICAgIERFRklORQorICAgICAgICBBIEFTIGNh dCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnLAorICAgICAgICBEIEFTIGNh dCA9ICdEJywgRSBBUyBjYXQgPSAnRScKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJp bmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX2ZpeGVkJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgIGxpbmUgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYiBjIGQgZSkgCisoMSBy b3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSkKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyBjYXQgPSAnJ0EnJywgQiBBUyBjYXQgPSAnJ0InJywgQyBBUyBjYXQg PSAnJ0MnJywKKyAgICAgICAgRCBBUyBjYXQgPSAnJ0QnJywgRSBBUyBjYXQgPSAnJ0UnJworKTsn KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIgYyBkIGUKKyAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisg ICBORkEgU3RhdGVzOiAyIHBlYWssIDEwMSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0 czogMyBwZWFrLCAxMDEgdG90YWwsIDYwIHBydW5lZAorICAgTkZBOiAyMCBtYXRjaGVkIChsZW4g NS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAyMCBza2lwcGVkIChs ZW4gMS8xLzEuMCkKKyAgIC0+ICBTZXEgU2NhbiBvbiBycHJfbmZhX3Rlc3QgKGFjdHVhbCByb3dz PTEwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFZhcmlhYmxlIGxlbmd0aCBtYXRjaGVz IC0gbWluL21heC9hdmcgZGlmZmVyCitDUkVBVEUgVklFVyBycHJfZXZfbWxlbl92YXJpYWJsZSBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2ICUg MTAgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfbWxlbl92YXJpYWJsZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQ QVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAg PD4gMCwgQiBBUyB2ICUgMTAgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBy cHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogYSsiIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDE5MSB0 b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAxMDEgdG90YWwsIDAgcHJ1 bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiAxMC8xMC8xMC4wKSwgMCBtaXNtYXRjaGVkCisg ICBORkE6IDgwIGFic29yYmVkIChsZW4gMS8xLzEuMCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4w KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dz PTEwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFZlcnkgbG9uZyBtYXRjaGVzCitDUkVB VEUgVklFVyBycHJfZXZfbWxlbl9sb25nIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyMDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBB IEFTIHYgPD0gMTk1LCBCIEFTIHYgPiAxOTUKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChz dHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9tbGVuX2xvbmcnKSwgRSdcbicp KSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAKKygxIHJvdykKKworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVG SU5FIEEgQVMgdiA8PSAxOTUsIEIgQVMgdiA+IDE5NQorKTsnKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAwLjAwIGxvb3BzPTEpCisg ICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IGErIiBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAg U3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBw ZWFrLCAzOTYgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMjAxIHRv dGFsLCA0IHBydW5lZAorICAgTkZBOiAxIG1hdGNoZWQgKGxlbiAxOTYvMTk2LzE5Ni4wKSwgMCBt aXNtYXRjaGVkCisgICBORkE6IDE5NCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAxIHNraXBwZWQg KGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMg KGFjdHVhbCByb3dzPTIwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFVuaWZvcm0gbWF0 Y2ggbGVuZ3RoIHdpdGggbWlzbWF0Y2hlcyBmcm9tIGdhcCByb3dzICh2JTIwID0gMTEuLjE1KQor Q1JFQVRFIFZJRVcgcnByX2V2X21sZW5fd2l0aF9taXNtYXRjaCBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikK KyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAodiAlIDIwIDw+IDApIEFORCAodiAlIDIwIDw9IDEw IE9SIHYgJSAyMCA+IDE1KSwKKyAgICAgICAgQiBBUyB2ICUgMjAgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbWxl bl93aXRoX21pc21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4n OworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAo YSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICh2ICUgMjAgPD4gMCkg QU5EICh2ICUgMjAgPD0gMTAgT1IgdiAlIDIwID4gMTUpLAorICAgICAgICBCIEFTIHYgJSAyMCA9 IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFj dHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMTcxIHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgMjUgcHJ1bmVkCisgICBORkE6IDUgbWF0 Y2hlZCAobGVuIDUvNS81LjApLCA1IG1pc21hdGNoZWQgKGxlbiAxMS8xMS8xMS4wKQorICAgTkZB OiA2MCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCA1IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4w MCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTWlzbWF0Y2ggTGVuZ3RoIFN0YXRp c3RpY3MgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gUGF0dGVybiB3aXRoIGNvbXBsZXRlIG1hdGNoIGV2ZXJ5 IGN5Y2xlOiAwIG1pc21hdGNoZWQKKy0tIEEoMSwyLDMpIEIoNCw1KSBDKDYpIHJlcGVhdHMgcGVy ZmVjdGx5OyBYIHJvd3MgYXJlIHBydW5lZCwgbm90IG1pc21hdGNoZWQKK0NSRUFURSBWSUVXIHJw cl9ldl9tbGVuX25vX21pc21hdGNoIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgK KyAgICBTRUxFQ1QgdiwKKyAgICAgICAgICAgQ0FTRSBXSEVOIHYgJSAxMCBJTiAoMSwyLDMpIFRI RU4gJ0EnCisgICAgICAgICAgICAgICAgV0hFTiB2ICUgMTAgSU4gKDQsNSkgVEhFTiAnQicKKyAg ICAgICAgICAgICAgICBXSEVOIHYgJSAxMCA9IDYgVEhFTiAnQycKKyAgICAgICAgICAgICAgICBF TFNFICdYJyBFTkQgQVMgY2F0CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBz KHYpCispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKyBCKyBDKQorICAgIERFRklORSBBIEFTIGNhdCA9ICdBJywgQiBBUyBj YXQgPSAnQicsIEMgQVMgY2F0ID0gJ0MnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3Ry aW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfbWxlbl9ub19taXNtYXRjaCcpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgIGxpbmUgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIrIGMpIAorKDEg cm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSAoCisgICAgU0VMRUNUIHYsCisgICAgICAgICAgIENBU0UgV0hF TiB2ICUgMTAgSU4gKDEsMiwzKSBUSEVOICcnQScnCisgICAgICAgICAgICAgICAgV0hFTiB2ICUg MTAgSU4gKDQsNSkgVEhFTiAnJ0InJworICAgICAgICAgICAgICAgIFdIRU4gdiAlIDEwID0gNiBU SEVOICcnQycnCisgICAgICAgICAgICAgICAgRUxTRSAnJ1gnJyBFTkQgQVMgY2F0CisgICAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCispIHQKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKyBDKQorICAg IERFRklORSBBIEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNhdCA9ICcn QycnCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIr IGMKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDE1MSB0b3RhbCwgMCBtZXJnZWQK KyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAxMDEgdG90YWwsIDYwIHBydW5lZAorICAgTkZBOiAx MCBtYXRjaGVkIChsZW4gNi82LzYuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAyMCBhYnNvcmJl ZCAobGVuIDEvMS8xLjApLCAxMCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlv biBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkK KygxMCByb3dzKQorCistLSBMb25nIHBhcnRpYWwgbWF0Y2hlcyB0aGF0IGZhaWwKK0NSRUFURSBW SUVXIHJwcl9ldl9tbGVuX2xvbmdfcGFydGlhbCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSAoCisgICAgU0VMRUNUIGkgQVMgdiwKKyAgICAgICAgICAgQ0FTRQorICAgICAgICAgICAg ICAgV0hFTiBpIDw9IDIwIFRIRU4gJ0EnCisgICAgICAgICAgICAgICBXSEVOIGkgPD0gMjUgVEhF TiAnQicKKyAgICAgICAgICAgICAgIFdIRU4gaSA9IDI2IFRIRU4gJ1gnICAtLSBicmVha3MgdGhl IHBhdHRlcm4KKyAgICAgICAgICAgICAgIFdIRU4gaSA8PSA1MCBUSEVOICdBJworICAgICAgICAg ICAgICAgV0hFTiBpIDw9IDU1IFRIRU4gJ0InCisgICAgICAgICAgICAgICBXSEVOIGkgPSA1NiBU SEVOICdDJyAgLS0gY29tcGxldGVzIHBhdHRlcm4KKyAgICAgICAgICAgICAgIEVMU0UgJ1knCisg ICAgICAgICAgIEVORCBBUyBjYXQKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgaQor KSB0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoQSsgQisgQykKKyAgICBERUZJTkUgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0ID0g J0InLCBDIEFTIGNhdCA9ICdDJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X21sZW5fbG9uZ19wYXJ0aWFsJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgbGluZSAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYisgYykgCisoMSByb3cp CisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QgaSBBUyB2LAorICAgICAgICAgICBDQVNFCisg ICAgICAgICAgICAgICBXSEVOIGkgPD0gMjAgVEhFTiAnJ0EnJworICAgICAgICAgICAgICAgV0hF TiBpIDw9IDI1IFRIRU4gJydCJycKKyAgICAgICAgICAgICAgIFdIRU4gaSA9IDI2IFRIRU4gJydY JycgIC0tIGJyZWFrcyB0aGUgcGF0dGVybgorICAgICAgICAgICAgICAgV0hFTiBpIDw9IDUwIFRI RU4gJydBJycKKyAgICAgICAgICAgICAgIFdIRU4gaSA8PSA1NSBUSEVOICcnQicnCisgICAgICAg ICAgICAgICBXSEVOIGkgPSA1NiBUSEVOICcnQycnICAtLSBjb21wbGV0ZXMgcGF0dGVybgorICAg ICAgICAgICAgICAgRUxTRSAnJ1knJworICAgICAgICAgICBFTkQgQVMgY2F0CisgICAgRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgNjApIGkKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIrIEMpCisgICAgREVGSU5FIEEg QVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycKKyk7Jyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz02 MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYisgYworICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IK KyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMTE1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAzIHBlYWssIDYxIHRvdGFsLCAxNSBwcnVuZWQKKyAgIE5GQTogMSBtYXRjaGVkIChsZW4g MzAvMzAvMzAuMCksIDEgbWlzbWF0Y2hlZCAobGVuIDI2LzI2LzI2LjApCisgICBORkE6IDQyIGFi c29yYmVkIChsZW4gMS8xLzEuMCksIDEgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVu Y3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgaSAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9 MSkKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEpTT04gRm9ybWF0IFRlc3RzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IEpTT04gZm9ybWF0IG91dHB1dCB3aXRoIGFsbCBzdGF0aXN0aWNzCitDUkVBVEUgVklFVyBycHJf ZXZfanNvbl9iYXNpYyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9 IDEsIEIgQVMgdiAlIDMgPSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3Rv X2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfanNvbl9iYXNpYycpLCBFJ1xuJykpIEFTIGxp bmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYispIAorKDEgcm93KQorCitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGLCBGT1JNQVQgSlNPTikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQisp CisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMgorKScpOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAiUGxhbiI6IHsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJOb2RlIFR5 cGUiOiAiV2luZG93QWdnIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICJQYXJhbGxlbCBBd2FyZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJBc3luYyBDYXBhYmxlIjogZmFsc2Us ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJB Y3R1YWwgUm93cyI6IDUwLjAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJBY3R1YWwgTG9vcHMiOiAxLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJEaXNhYmxlZCI6IGZhbHNl LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJXaW5kb3ciOiAidyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HKSIsKworICAgICAgICJQYXR0ZXJuIjogImErXCIgYisiLCAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJOYXYgTWFyayBM b29rYmFjayI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICJTdG9yYWdlIjogIk1lbW9yeSIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJNYXhpbXVtIFN0b3JhZ2UiOiAwLCAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEg U3RhdGVzIFBlYWsiOiAzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICJORkEgU3RhdGVzIFRvdGFsIjogODUsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIE1lcmdlZCI6 IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICJORkEgQ29udGV4dHMgUGVhayI6IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgVG90YWwiOiA1MSwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMg QWJzb3JiZWQiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICJORkEgQ29udGV4dHMgU2tpcHBlZCI6IDE3LCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgUHJ1bmVkIjogMTYsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0 Y2hlZCI6IDE3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICJORkEgTWlzbWF0Y2hlZCI6IDAsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVuZ3RoIE1pbiI6 IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJO RkEgTWF0Y2ggTGVuZ3RoIE1heCI6IDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVuZ3RoIEF2ZyI6IDIuMCwgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5n dGggTWluIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJORkEgU2tpcHBlZCBMZW5ndGggTWF4IjogMSwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGggQXZnIjogMS4wLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJQbGFucyI6IFsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiTm9kZSBUeXBlIjogIkZ1bmN0aW9u IFNjYW4iLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAi UGFyZW50IFJlbGF0aW9uc2hpcCI6ICJPdXRlciIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQXN5bmMgQ2FwYWJsZSI6 IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICAgICAiRnVuY3Rpb24gTmFtZSI6ICJnZW5lcmF0ZV9zZXJpZXMiLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgICAiQWxpYXMiOiAicyIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQWN0dWFsIFJv d3MiOiA1MC4wMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAiQWN0dWFsIExvb3BzIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiRGlzYWJsZWQiOiBmYWxzZSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgfSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAiVHJp Z2dlcnMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgfSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIF0K KygxIHJvdykKKworLS0gSlNPTiBmb3JtYXQgd2l0aCBtYXRjaCBsZW5ndGggc3RhdGlzdGljcwor Q1JFQVRFIFZJRVcgcnByX2V2X2pzb25fbWF0Y2hsZW4gQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdiAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2pzb25f bWF0Y2hsZW4nKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAg ICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgRk9STUFU IEpTT04pCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAx MDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBS T1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFT IHYgJSAxMCA9IDAKKyknKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxh aW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBbICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgIlBsYW4i OiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAiTm9kZSBUeXBlIjogIldpbmRvd0FnZyIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBm YWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAiQXN5bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAiQWN0dWFsIFJvd3MiOiAxMDAuMDAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiQWN0dWFsIExvb3Bz IjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAiRGlzYWJsZWQiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiV2luZG93IjogIncgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykiLCsKKyAgICAgICAiUGF0dGVy biI6ICJhK1wiIGIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAiTmF2IE1hcmsgTG9va2JhY2siOiAwLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiU3RvcmFnZSI6ICJNZW1vcnkiLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAi TWF4aW11bSBTdG9yYWdlIjogMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAiTkZBIFN0YXRlcyBQZWFrIjogMywgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFN0YXRlcyBUb3Rh bCI6IDE5MSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAiTkZBIFN0YXRlcyBNZXJnZWQiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRzIFBlYWsiOiAyLCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRl eHRzIFRvdGFsIjogMTAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAiTkZBIENvbnRleHRzIEFic29yYmVkIjogODAsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIENvbnRleHRzIFNraXBwZWQiOiAx MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZB IENvbnRleHRzIFBydW5lZCI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoZWQiOiAxMCwgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1pc21hdGNoZWQiOiAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAiTkZBIE1hdGNoIExlbmd0aCBNaW4iOiAxMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoIExlbmd0aCBNYXgiOiAxMCwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIE1hdGNoIExl bmd0aCBBdmciOiAxMC4wLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgICAiTkZBIEFic29yYmVkIExlbmd0aCBNaW4iOiAxLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIEFic29yYmVkIExlbmd0aCBNYXgiOiAx LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIEFi c29yYmVkIExlbmd0aCBBdmciOiAxLjAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAiTkZBIFNraXBwZWQgTGVuZ3RoIE1pbiI6IDEsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAiTkZBIFNraXBwZWQgTGVuZ3RoIE1h eCI6IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAi TkZBIFNraXBwZWQgTGVuZ3RoIEF2ZyI6IDEuMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICAiUGxhbnMiOiBbICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICAgICAgIk5vZGUgVHlwZSI6ICJGdW5jdGlvbiBTY2FuIiwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIlBhcmVudCBSZWxhdGlvbnNoaXAiOiAiT3V0 ZXIiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIlBhcmFs bGVsIEF3YXJlIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgICAgICAgICAgIkFzeW5jIENhcGFibGUiOiBmYWxzZSwgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkZ1bmN0aW9uIE5hbWUiOiAiZ2Vu ZXJhdGVfc2VyaWVzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg IkFsaWFzIjogInMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICAgICAgIkFjdHVhbCBSb3dzIjogMTAwLjAwLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgIkFjdHVhbCBMb29wcyI6 IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICAgICAgIkRpc2FibGVkIjogZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICsKKyAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICBdICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsK KyAgICAgfSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICsKKyAgICAgIlRyaWdnZXJzIjogWyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgXSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICsKKyAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyBdCisoMSByb3cpCisKKy0tIEpTT04gZm9ybWF0 IHdpdGggbWlzbWF0Y2ggc3RhdGlzdGljcworLS0gUGF0dGVybiBBIEIgQyBleHBlY3RzIDEsMiwz IGJ1dCBnZXRzIDEsMiw0IHR3aWNlIGNhdXNpbmcgbWlzbWF0Y2hlcworQ1JFQVRFIFZJRVcgcnBy X2V2X2pzb25fbWlzbWF0Y2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKFZBTFVF UyAoMSksKDIpLCg0KSwgKDEpLCgyKSwoNCksICgxKSwoMiksKDMpKSBBUyB0KHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBC IEMpCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIsIEMgQVMgdiA9IDMKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9qc29uX21pc21hdGNoJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworICAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRU RVJOIChhIGIgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYsIEZPUk1BVCBKU09OKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoVkFMVUVT ICgxKSwoMiksKDQpLCAoMSksKDIpLCg0KSwgKDEpLCgyKSwoMykpIEFTIHQodikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIg QykKKyAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMiwgQyBBUyB2ID0gMworKScpOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAiUGxhbiI6IHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJO b2RlIFR5cGUiOiAiV2luZG93QWdnIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJQYXJhbGxlbCBBd2FyZSI6IGZhbHNlLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJBc3luYyBDYXBhYmxlIjog ZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJBY3R1YWwgUm93cyI6IDkuMDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICJBY3R1YWwgTG9vcHMiOiAxLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJEaXNhYmxlZCI6 IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICJXaW5kb3ciOiAidyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKSIsKworICAgICAgICJQYXR0ZXJuIjogImEgYiBjIiwgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJOYXYg TWFyayBMb29rYmFjayI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICJTdG9yYWdlIjogIk1lbW9yeSIsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJNYXhpbXVtIFN0b3JhZ2UiOiAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICJORkEgU3RhdGVzIFBlYWsiOiAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIFRvdGFsIjogMTAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU3RhdGVzIE1l cmdlZCI6IDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICJORkEgQ29udGV4dHMgUGVhayI6IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgVG90YWwiOiAxMCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29u dGV4dHMgQWJzb3JiZWQiOiAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICJORkEgQ29udGV4dHMgU2tpcHBlZCI6IDEsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgQ29udGV4dHMgUHJ1bmVkIjog NSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJO RkEgTWF0Y2hlZCI6IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICJORkEgTWlzbWF0Y2hlZCI6IDIsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVuZ3Ro IE1pbiI6IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgICJORkEgTWF0Y2ggTGVuZ3RoIE1heCI6IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWF0Y2ggTGVuZ3RoIEF2ZyI6IDMuMCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWlzbWF0 Y2ggTGVuZ3RoIE1pbiI6IDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICAgICJORkEgTWlzbWF0Y2ggTGVuZ3RoIE1heCI6IDMsICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgTWlzbWF0Y2ggTGVuZ3RoIEF2ZyI6 IDMuMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEg U2tpcHBlZCBMZW5ndGggTWluIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGggTWF4IjogMSwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICJORkEgU2tpcHBlZCBMZW5ndGgg QXZnIjogMS4wLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAg ICJQbGFucyI6IFsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKworICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiTm9kZSBUeXBl IjogIlZhbHVlcyBTY2FuIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICAiUGFyZW50IFJlbGF0aW9uc2hpcCI6ICJPdXRlciIsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiUGFyYWxsZWwgQXdhcmUiOiBmYWxzZSwg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQXN5 bmMgQ2FwYWJsZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgICAgICAiQWxpYXMiOiAiKlZBTFVFUyoiLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAiQWN0dWFsIFJvd3MiOiA5LjAw LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAg ICAiQWN0dWFsIExvb3BzIjogMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgICAgICAiRGlzYWJsZWQiOiBmYWxzZSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgfSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAg ICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICB9LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAiVHJpZ2dlcnMiOiBb ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KworICAgICBdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworIF0KKygxIHJvdykK KworLS0gSlNPTiBmb3JtYXQgd2l0aCBza2lwcGVkIGNvbnRleHQgc3RhdGlzdGljcworLS0gQWx0 ZXJuYXRpb24gcGF0dGVybiB3aXRoIFNLSVAgUEFTVCBMQVNUIFJPVyBjYXVzZXMgbWFueSBjb250 ZXh0cyB0byBiZSBza2lwcGVkCitDUkVBVEUgVklFVyBycHJfZXZfanNvbl9za2lwIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSAoQSB8 IEIpIChBIHwgQikpCisgICAgREVGSU5FIEEgQVMgdiAlIDIgPSAxLCBCIEFTIHYgJSAyID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2pzb25fc2tpcCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQ QVRURVJOICgoYSB8IGIpIChhIHwgYikgKGEgfCBiKSAoYSB8IGIpIChhIHwgYikgKGEgfCBiKSAo YSB8IGIpIChhIHwgYikpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGLCBGT1JNQVQgSlNPTikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEEgfCBCKSAoQSB8IEIp IChBIHwgQikgKEEgfCBCKSAoQSB8IEIpIChBIHwgQikgKEEgfCBCKSkKKyAgICBERUZJTkUgQSBB UyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispJyk7CisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgWyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICB7ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICJQbGFuIjogeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5vZGUgVHlwZSI6ICJXaW5kb3dBZ2ci LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIlBh cmFsbGVsIEF3YXJlIjogZmFsc2UsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgIkFzeW5jIENhcGFibGUiOiBmYWxzZSwgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIkFjdHVhbCBSb3dzIjogMTAw LjAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgIkFjdHVhbCBMb29wcyI6IDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgIkRpc2FibGVkIjogZmFsc2UsICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIldpbmRvdyI6ICJ3 IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpIiwr CisgICAgICAgIlBhdHRlcm4iOiAiKGEgfCBiKXs4fSIsICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5hdiBNYXJrIExvb2tiYWNrIjogMCwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIlN0b3Jh Z2UiOiAiTWVtb3J5IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgIk1heGltdW0gU3RvcmFnZSI6IDAsICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBTdGF0ZXMgUGVhayI6IDE3 LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg Ik5GQSBTdGF0ZXMgVG90YWwiOiA5OTUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgIk5GQSBTdGF0ZXMgTWVyZ2VkIjogMCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBDb250ZXh0cyBQ ZWFrIjogOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgIk5GQSBDb250ZXh0cyBUb3RhbCI6IDEwMSwgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBDb250ZXh0cyBBYnNvcmJlZCI6IDAsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBDb250 ZXh0cyBTa2lwcGVkIjogODQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgIk5GQSBDb250ZXh0cyBQcnVuZWQiOiAxLCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNYXRjaGVkIjogMTIsICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5G QSBNaXNtYXRjaGVkIjogMywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgIk5GQSBNYXRjaCBMZW5ndGggTWluIjogOCwgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNYXRjaCBMZW5ndGgg TWF4IjogOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgIk5GQSBNYXRjaCBMZW5ndGggQXZnIjogOC4wLCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNaXNtYXRjaCBMZW5ndGggTWluIjogMiwgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBNaXNtYXRj aCBMZW5ndGggTWF4IjogNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgIk5GQSBNaXNtYXRjaCBMZW5ndGggQXZnIjogMy4wLCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBTa2lwcGVkIExlbmd0aCBNaW4iOiAx LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIk5GQSBT a2lwcGVkIExlbmd0aCBNYXgiOiA3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICArCisgICAgICAgIk5GQSBTa2lwcGVkIExlbmd0aCBBdmciOiA0LjAsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgIlBsYW5zIjogWyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgICJOb2RlIFR5cGUiOiAiRnVuY3Rpb24gU2NhbiIsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJQYXJlbnQgUmVs YXRpb25zaGlwIjogIk91dGVyIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgICAgICJQYXJhbGxlbCBBd2FyZSI6IGZhbHNlLCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJBc3luYyBDYXBhYmxlIjogZmFsc2UsICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJGdW5j dGlvbiBOYW1lIjogImdlbmVyYXRlX3NlcmllcyIsICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgICAgICJBbGlhcyI6ICJzIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgICJBY3R1YWwgUm93cyI6IDEwMC4w MCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAg ICJBY3R1YWwgTG9vcHMiOiAxLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgICAgICAgICJEaXNhYmxlZCI6IGZhbHNlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICB9ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgIH0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICJUcmlnZ2VycyI6IFsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgIF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgXQorKDEgcm93KQor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIFhNTCBGb3JtYXQgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gWE1MIGZvcm1hdCBvdXRw dXQKK0NSRUFURSBWSUVXIHJwcl9ldl94bWxfYmFzaWMgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERF RklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl94bWxfYmFzaWMn KSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgbGluZSAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiKSAKKygxIHJvdykKKwor U0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9G RiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRiwgRk9STUFUIFhNTCkKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyknKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDxleHBs YWluIHhtbG5zPSJodHRwOi8vd3d3LnBvc3RncmVzcWwub3JnLzIwMDkvZXhwbGFpbiI+ICAgICAg ICAgICAgICAgICAgICAgICsKKyAgIDxRdWVyeT4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgIDxQbGFuPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKworICAgICAgIDxOb2RlLVR5cGU+V2luZG93QWdnPC9Ob2RlLVR5cGU+ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8UGFyYWxsZWwtQXdh cmU+ZmFsc2U8L1BhcmFsbGVsLUF3YXJlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICArCisgICAgICAgPEFzeW5jLUNhcGFibGU+ZmFsc2U8L0FzeW5jLUNhcGFibGU+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxBY3R1YWwtUm93cz4zMC4wMDwv QWN0dWFsLVJvd3M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAg ICAgICA8QWN0dWFsLUxvb3BzPjE8L0FjdHVhbC1Mb29wcz4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPERpc2FibGVkPmZhbHNlPC9EaXNhYmxlZD4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxX aW5kb3c+dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKTwvV2luZG93PisKKyAgICAgICA8UGF0dGVybj5hIGI8L1BhdHRlcm4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5hdi1NYXJr LUxvb2tiYWNrPjA8L05hdi1NYXJrLUxvb2tiYWNrPiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKworICAgICAgIDxTdG9yYWdlPk1lbW9yeTwvU3RvcmFnZT4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8TWF4aW11bS1TdG9yYWdl PjA8L01heGltdW0tU3RvcmFnZT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAr CisgICAgICAgPE5GQS1TdGF0ZXMtUGVhaz4yPC9ORkEtU3RhdGVzLVBlYWs+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxORkEtU3RhdGVzLVRvdGFsPjMxPC9O RkEtU3RhdGVzLVRvdGFsPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAg ICA8TkZBLVN0YXRlcy1NZXJnZWQ+MDwvTkZBLVN0YXRlcy1NZXJnZWQ+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1Db250ZXh0cy1QZWFrPjI8L05GQS1Db250 ZXh0cy1QZWFrPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxORkEt Q29udGV4dHMtVG90YWw+MzE8L05GQS1Db250ZXh0cy1Ub3RhbD4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsKKyAgICAgICA8TkZBLUNvbnRleHRzLUFic29yYmVkPjA8L05GQS1Db250ZXh0 cy1BYnNvcmJlZD4gICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1Db250ZXh0 cy1Ta2lwcGVkPjE1PC9ORkEtQ29udGV4dHMtU2tpcHBlZD4gICAgICAgICAgICAgICAgICAgICAg ICAgKworICAgICAgIDxORkEtQ29udGV4dHMtUHJ1bmVkPjA8L05GQS1Db250ZXh0cy1QcnVuZWQ+ ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8TkZBLU1hdGNoZWQ+MTU8L05G QS1NYXRjaGVkPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisg ICAgICAgPE5GQS1NaXNtYXRjaGVkPjA8L05GQS1NaXNtYXRjaGVkPiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxORkEtTWF0Y2gtTGVuZ3RoLU1pbj4yPC9O RkEtTWF0Y2gtTGVuZ3RoLU1pbj4gICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICA8 TkZBLU1hdGNoLUxlbmd0aC1NYXg+MjwvTkZBLU1hdGNoLUxlbmd0aC1NYXg+ICAgICAgICAgICAg ICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1NYXRjaC1MZW5ndGgtQXZnPjIuMDwvTkZBLU1h dGNoLUxlbmd0aC1Bdmc+ICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgIDxORkEtU2tp cHBlZC1MZW5ndGgtTWluPjE8L05GQS1Ta2lwcGVkLUxlbmd0aC1NaW4+ICAgICAgICAgICAgICAg ICAgICAgICsKKyAgICAgICA8TkZBLVNraXBwZWQtTGVuZ3RoLU1heD4xPC9ORkEtU2tpcHBlZC1M ZW5ndGgtTWF4PiAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgPE5GQS1Ta2lwcGVkLUxl bmd0aC1Bdmc+MS4wPC9ORkEtU2tpcHBlZC1MZW5ndGgtQXZnPiAgICAgICAgICAgICAgICAgICAg KworICAgICAgIDxQbGFucz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgIDxQbGFuPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAg ICAgICAgIDxOb2RlLVR5cGU+RnVuY3Rpb24gU2NhbjwvTm9kZS1UeXBlPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICA8UGFyZW50LVJlbGF0aW9uc2hpcD5PdXRl cjwvUGFyZW50LVJlbGF0aW9uc2hpcD4gICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAg PFBhcmFsbGVsLUF3YXJlPmZhbHNlPC9QYXJhbGxlbC1Bd2FyZT4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICArCisgICAgICAgICAgIDxBc3luYy1DYXBhYmxlPmZhbHNlPC9Bc3luYy1DYXBh YmxlPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICA8RnVuY3Rp b24tTmFtZT5nZW5lcmF0ZV9zZXJpZXM8L0Z1bmN0aW9uLU5hbWU+ICAgICAgICAgICAgICAgICAg ICAgICsKKyAgICAgICAgICAgPEFsaWFzPnM8L0FsaWFzPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAgICAgIDxBY3R1YWwtUm93cz4z MC4wMDwvQWN0dWFsLVJvd3M+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKwor ICAgICAgICAgICA8QWN0dWFsLUxvb3BzPjE8L0FjdHVhbC1Mb29wcz4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgICAgICAgPERpc2FibGVkPmZhbHNlPC9EaXNh YmxlZD4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArCisgICAgICAg ICA8L1BsYW4+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKworICAgICAgIDwvUGxhbnM+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsKKyAgICAgPC9QbGFuPiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICArCisgICAgIDxUcmlnZ2Vycz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICA8L1RyaWdnZXJzPiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICsKKyAgIDwvUXVlcnk+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICArCisgPC9leHBsYWluPgorKDEgcm93KQorCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIE11bHRpcGxlIFBhcnRpdGlvbnMgVGVzdHMKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gU3RhdGlzdGljcyBh Y3Jvc3MgbXVsdGlwbGUgcGFydGl0aW9ucworQ1JFQVRFIFZJRVcgcnByX2V2X3BhcnRfbXVsdGkg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gKAorICAgIFNFTEVDVCBwLCB2CisgICAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgcCwKKyAgICAgICAgIGdlbmVyYXRlX3Nlcmllcygx LCAzMCkgdgorKSB0CitXSU5ET1cgdyBBUyAoCisgICAgUEFSVElUSU9OIEJZIHAKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBB IEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcGFydF9tdWx0aScpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitT RUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZG LCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSAoCisgICAgU0VMRUNUIHAsIHYKKyAgICBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAzKSBwLAorICAgICAgICAgZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSB2CispIHQKK1dJTkRPVyB3 IEFTICgKKyAgICBQQVJUSVRJT04gQlkgcAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2 ICUgNSA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhw bGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9OTAuMDAgbG9vcHM9MSkK KyAgIFdpbmRvdzogdyBBUyAoUEFSVElUSU9OIEJZIHAucCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2IE1h cmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IK KyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMTY1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAyIHBlYWssIDkzIHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAxOCBtYXRjaGVkIChsZW4g NS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiA1NCBhYnNvcmJlZCAobGVuIDEvMS8xLjAp LCAxOCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBTb3J0IChhY3R1YWwgcm93cz05MC4w MCBsb29wcz0xKQorICAgICAgICAgU29ydCBLZXk6IHAucAorICAgICAgICAgU29ydCBNZXRob2Q6 IHF1aWNrc29ydCAgTWVtb3J5OiBOa0IKKyAgICAgICAgIC0+ICBOZXN0ZWQgTG9vcCAoYWN0dWFs IHJvd3M9OTAuMDAgbG9vcHM9MSkKKyAgICAgICAgICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IGdlbmVyYXRlX3NlcmllcyBwIChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisgICAgICAgICAg ICAgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgdiAoYWN0dWFsIHJvd3M9 MzAuMDAgbG9vcHM9MykKKygxNSByb3dzKQorCistLSBEaWZmZXJlbnQgcGF0dGVybiBiZWhhdmlv ciBwZXIgcGFydGl0aW9uCitDUkVBVEUgVklFVyBycHJfZXZfcGFydF9kaWZmIEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QKKyAgICAgICAgQ0FTRSBXSEVOIHYg PD0gMjUgVEhFTiAxIEVMU0UgMiBFTkQgQVMgcCwKKyAgICAgICAgdiAlIDEwIEFTIHZhbAorICAg IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAgICBQ QVJUSVRJT04gQlkgcAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdmFsIDwgNSwgQiBBUyB2YWwgPj0gNQorKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X3BhcnRfZGlmZicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK KyAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEr IGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisgICAgU0VMRUNUCisgICAgICAgIENBU0Ug V0hFTiB2IDw9IDI1IFRIRU4gMSBFTFNFIDIgRU5EIEFTIHAsCisgICAgICAgIHYgJSAxMCBBUyB2 YWwKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgdgorKSB0CitXSU5ET1cgdyBBUyAo CisgICAgUEFSVElUSU9OIEJZIHAKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHZhbCA8IDUsIEIgQVMgdmFsID49IDUK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwLjAw IGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFBBUlRJVElPTiBCWSAoQ0FTRSBXSEVOICh2LnYg PD0gMjUpIFRIRU4gMSBFTFNFIDIgRU5EKSBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBT dGF0ZXM6IDMgcGVhaywgNzcgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVh aywgNTIgdG90YWwsIDIxIHBydW5lZAorICAgTkZBOiA1IG1hdGNoZWQgKGxlbiA1LzYvNS44KSwg MCBtaXNtYXRjaGVkCisgICBORkE6IDE5IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDUgc2tpcHBl ZCAobGVuIDEvMS8xLjApCisgICAtPiAgU29ydCAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkK KyAgICAgICAgIFNvcnQgS2V5OiAoQ0FTRSBXSEVOICh2LnYgPD0gMjUpIFRIRU4gMSBFTFNFIDIg RU5EKQorICAgICAgICAgU29ydCBNZXRob2Q6IHF1aWNrc29ydCAgTWVtb3J5OiBOa0IKKyAgICAg ICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyB2IChhY3R1YWwgcm93cz01 MC4wMCBsb29wcz0xKQorKDEzIHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRWRnZSBDYXNlcworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBFbXB0eSByZXN1bHQgc2V0CitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eSBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEEgQikKKyAgICBERUZJTkUgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMgorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2VkZ2VfZW1wdHknKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgbGluZSAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiKSAK KygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpF LCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBIEIpCisgICAgREVGSU5FIEEgQVMgdiA9IDEsIEIgQVMgdiA9IDIKKyk7Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MC4wMCBsb29wcz0x KQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisg ICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MC4w MCBsb29wcz0xKQorKDUgcm93cykKKworLS0gRW1wdHkgbWF0Y2hlcyAobGVuZ3RoIDApOiBtaXJy b3IgdGhlIHRlc3RfNzI4XyogY2FzZXMgaW4gcnByX25mYS5zcWwuCistLSBXaW5kb3cgYWdncmVn YXRlcyBvdmVyIGEgbGVuZ3RoLTAgZnJhbWUgcmV0dXJuIDAgLyBOVUxMLCBzbyB0aGUgU0VMRUNU CistLSByZXN1bHQgYWxvbmUgY2Fubm90IGRpc3Rpbmd1aXNoICJubyBtYXRjaCIgZnJvbSAiZW1w dHkgbWF0Y2giOyB0aGUKKy0tICJORkE6IE4gbWF0Y2hlZCAobGVuIDAvMC8wLjApIiBsaW5lIGlu IEVYUExBSU4gaXMgdGhlIG9ubHkgb2JzZXJ2YWJsZQorLS0gcHJvb2YgdGhhdCB0aGUgZW1wdHkg bWF0Y2hlcyB3ZXJlIGZvdW5kLgorLS0gKEE/KXswLDN9OiBtaW49MCwgQSBuZXZlciBtYXRjaGVz IC0+IDMgbGVuZ3RoLTAgbWF0Y2hlcworQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0 Y2hfbWluMCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOICgoQT8pezAsM30pCisgICAgREVGSU5FIEEgQVMgRkFMU0UKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9lZGdlX2VtcHR5X21hdGNoX21pbjAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgUEFUVEVSTiAoKGE/KXswLDN9KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9l eHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDMpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXswLDN9KQorICAgIERFRklORSBB IEFTIEZBTFNFCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2Zp bHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXswLDN9 CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA4IHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiAyIHBlYWssIDQgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDMgbWF0Y2hl ZCAobGVuIDAvMC8wLjApLCAwIG1pc21hdGNoZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdl bmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCist LSAoQT8pezEsM306IG1pbj0xLCBvbmUgZW1wdHkgaXRlcmF0aW9uIHNhdGlzZmllcyBtaW4gLT4g MyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9t aW4xIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAz KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKChBPyl7MSwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsKK1NFTEVD VCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2 X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQ QVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOICgoYT8pezEsM30pIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezEsM30pCisgICAgREVGSU5FIEEgQVMg RkFMU0UKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVy ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0 dWFsIHJvd3M9My4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezAsM30KKyAg IE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFn ZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDggdG90YWwsIDAgbWVyZ2VkCisgICBORkEg Q29udGV4dHM6IDIgcGVhaywgNCB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMyBtYXRjaGVkIChs ZW4gMC8wLzAuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJh dGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIChB Pyl7MiwzfTogbWluPTIgKElTTy9JRUMgMTkwNzUtNSA3LjIuOCBTVFIwNiA9IFNUUkUgU1RSRSkg LT4gMyBsZW5ndGgtMCBtYXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eV9tYXRj aF9taW4yIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBERUZJTkUgQSBBUyBGQUxTRQorKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWluMicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICBQQVRURVJOICgoYT8pezIsM30pIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4 cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYs IFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBn ZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQT8pezIsM30pCisgICAgREVGSU5FIEEg QVMgRkFMU0UKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAo YWN0dWFsIHJvd3M9My4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezAsM30K KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3Rv cmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDggdG90YWwsIDAgbWVyZ2VkCisgICBO RkEgQ29udGV4dHM6IDIgcGVhaywgNCB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMyBtYXRjaGVk IChsZW4gMC8wLzAuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2Vu ZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0t IChBPyl7MiwzfSBtaXhlZDogcm93cyAxLTIgbWF0Y2ggQSAocmVhbCksIHJvd3MgMy00IGZhbGwg YmFjayB0byBlbXB0eQorQ1JFQVRFIFZJRVcgcnByX2V2X2VkZ2VfZW1wdHlfbWF0Y2hfbWl4ZWQg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQpIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIHYgPD0gMgorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2Vk Z2VfZW1wdHlfbWF0Y2hfbWl4ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFU VEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoKGE/KXsyLDN9KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDQpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/KXsyLDN9KQorICAgIERFRklORSBBIEFTIHYg PD0gMgorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1 YWwgcm93cz00LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7MCwzfQorICAg TmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdl OiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgMTMgdG90YWwsIDAgbWVyZ2VkCisgICBORkEg Q29udGV4dHM6IDQgcGVhaywgNSB0b3RhbCwgMSBwcnVuZWQKKyAgIE5GQTogMyBtYXRjaGVkIChs ZW4gMC8yLzEuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJh dGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTQuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIChB PyBCPyl7MiwzfTogcHVyZSBlbXB0eSBtdWx0aS1lbGVtZW50IGJvZHkgLT4gMyBsZW5ndGgtMCBt YXRjaGVzCitDUkVBVEUgVklFVyBycHJfZXZfZWRnZV9lbXB0eV9tYXRjaF9tdWx0aSBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMykgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO ICgoQT8gQj8pezIsM30pCisgICAgREVGSU5FIEEgQVMgRkFMU0UsIEIgQVMgRkFMU0UKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9lZGdlX2VtcHR5X21hdGNoX211bHRpJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhPyBiPyl7MiwzfSkgCisoMSByb3cpCisKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyBCPyl7MiwzfSkK KyAgICBERUZJTkUgQSBBUyBGQUxTRSwgQiBBUyBGQUxTRQorKTsnKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zLjAwIGxvb3BzPTEpCisgICBX aW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykKKyAgIFBhdHRlcm46IChhPyBiPyl7MiwzfQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAK KyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6 IDYgcGVhaywgMjAgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNCB0 b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMyBtYXRjaGVkIChsZW4gMC8wLzAuMCksIDAgbWlzbWF0 Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCBy b3dzPTMuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIFNpbmdsZSByb3cKK0NSRUFURSBWSUVX IHJwcl9ldl9lZGdlX3NpbmdsZV9yb3cgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDEpIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFRS VUUKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9lZGdlX3NpbmdsZV9yb3cnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICBsaW5lICAgICAgCistLS0tLS0tLS0tLS0tLS0tCisgICBQ QVRURVJOIChhKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKQorICAgIERFRklORSBBIEFTIFRSVUUKKyk7Jyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MS4wMCBsb29wcz0xKQor ICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3Rv cmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFr LCAyIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDIgdG90YWwsIDAg cHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDEvMS8xLjApLCAwIG1pc21hdGNoZWQKKyAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0xLjAw IGxvb3BzPTEpCisoOSByb3dzKQorCistLSBQYXR0ZXJuIGxvbmdlciB0aGFuIGRhdGEKK0NSRUFU RSBWSUVXIHJwcl9ldl9lZGdlX3BhdHRlcm5fbG9uZ2VyIEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFIEYg RyBIIEkgSikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ID0gMSwgQiBBUyB2ID0gMiwgQyBB UyB2ID0gMywgRCBBUyB2ID0gNCwgRSBBUyB2ID0gNSwKKyAgICAgICAgRiBBUyB2ID0gNiwgRyBB UyB2ID0gNywgSCBBUyB2ID0gOCwgSSBBUyB2ID0gOSwgSiBBUyB2ID0gMTAKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9l ZGdlX3BhdHRlcm5fbG9uZ2VyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiIGMgZCBlIGYgZyBoIGkgaikgCiso MSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1KSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSBCIEMgRCBFIEYgRyBIIEkgSikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyB2ID0gMSwgQiBB UyB2ID0gMiwgQyBBUyB2ID0gMywgRCBBUyB2ID0gNCwgRSBBUyB2ID0gNSwKKyAgICAgICAgRiBB UyB2ID0gNiwgRyBBUyB2ID0gNywgSCBBUyB2ID0gOCwgSSBBUyB2ID0gOSwgSiBBUyB2ID0gMTAK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJv d3M9NS4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIgYyBkIGUgZiBnIGgg aSBqCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMiBwZWFrLCA2IHRvdGFsLCAwIG1lcmdlZAor ICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDYgdG90YWwsIDQgcHJ1bmVkCisgICBORkE6IDAgbWF0 Y2hlZCwgMSBtaXNtYXRjaGVkIChsZW4gNS81LzUuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01LjAwIGxvb3BzPTEpCisoOSByb3dzKQor CistLSBBbGwgcm93cyBtYXRjaCBhcyBzaW5nbGUgbWF0Y2gKK0NSRUFURSBWSUVXIHJwcl9ldl9l ZGdlX3NpbmdsZV9tYXRjaCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBUUlVFCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfZWRnZV9zaW5nbGVfbWF0Y2gnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUg fiAnUEFUVEVSTic7CisgICAgICBsaW5lICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBB VFRFUk4gKGErKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgVFJVRQorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGErIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAK KyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6 IDMgcGVhaywgMTAxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDUx IHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiAxIG1hdGNoZWQgKGxlbiA1MC81MC81MC4wKSwgMCBt aXNtYXRjaGVkCisgICBORkE6IDQ5IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDAgc2tpcHBlZAor ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUw LjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDb21wbGV4IFBhdHRlcm4gVGVz dHMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gTmVzdGVkIGdyb3VwcworQ1JFQVRFIFZJRVcgcnByX2V2X2NweF9uZXN0 ZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKChBIEIpIEMpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIg QVMgdiAlIDMgPSAyLCBDIEFTIHYgJSAzID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2NweF9uZXN0ZWQnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoKGEgYikgYykr KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFM WVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NF TEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoKChBIEIpIEMpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDEsIEIgQVMgdiAlIDMg PSAyLCBDIEFTIHYgJSAzID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnBy X2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMg KFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IChhJyBiJyBjJykrIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgODEg dG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDQgcGVhaywgNjEgdG90YWwsIDIwIHBy dW5lZAorICAgTkZBOiAxIG1hdGNoZWQgKGxlbiA2MC82MC82MC4wKSwgMCBtaXNtYXRjaGVkCisg ICBORkE6IDE5IGFic29yYmVkIChsZW4gMy8zLzMuMCksIDIwIHNraXBwZWQgKGxlbiAxLzEvMS4w KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dz PTYwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gTXVsdGlwbGUgYWx0ZXJuYXRpb25zCitD UkVBVEUgVklFVyBycHJfZXZfY3B4X211bHRpX2FsdCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChDIHwgRCB8IEUpKQorICAgIERFRklO RQorICAgICAgICBBIEFTIGNhdCA9ICdBJywgQiBBUyBjYXQgPSAnQicsIEMgQVMgY2F0ID0gJ0Mn LAorICAgICAgICBEIEFTIGNhdCA9ICdEJywgRSBBUyBjYXQgPSAnRScKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9jcHhf bXVsdGlfYWx0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAg ICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKSAoYyB8IGQgfCBlKSkgCisoMSByb3cpCisK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVzdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikgKEMgfCBEIHwgRSkpCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0ID0gJydCJycsIEMgQVMg Y2F0ID0gJydDJycsCisgICAgICAgIEQgQVMgY2F0ID0gJydEJycsIEUgQVMgY2F0ID0gJydFJycK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0x MDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiKSAoYyB8IGQgfCBl KQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBT dG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgNDIzIHRvdGFsLCAwIG1lcmdlZAor ICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDEwMSB0b3RhbCwgNDAgcHJ1bmVkCisgICBORkE6IDIw IG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwgMjAgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisgICBO RkE6IDAgYWJzb3JiZWQsIDIwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9uZmFfdGVzdCAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykK KworLS0gT3B0aW9uYWwgZWxlbWVudHMKK0NSRUFURSBWSUVXIHJwcl9ldl9jcHhfb3B0aW9uYWwg QVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisg ICAgUEFUVEVSTiAoQSBCPyBDKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMSwgQiBBUyB2ICUg NCA9IDIsIEMgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X29wdGlvbmFsJyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYj8gYykgCisoMSByb3cpCisKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQj8gQykKKyAg ICBERUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMwor KTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCBy b3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYj8gYworICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgNjQgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMgcGVhaywgNTEgdG90YWwsIDI1IHBydW5lZAorICAgTkZBOiAxMiBtYXRjaGVkIChs ZW4gMy8zLzMuMCksIDEgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisgICBORkE6IDAgYWJzb3Ji ZWQsIDEyIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2Vu ZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKwor LS0gQm91bmRlZCBxdWFudGlmaWVycworQ1JFQVRFIFZJRVcgcnByX2V2X2NweF9ib3VuZGVkIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBezIsNX0gQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgPD4gMCwgQiBBUyB2 ICUgMTAgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBn X2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X2JvdW5kZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGF7Miw1fSBiKSAKKygxIHJvdykKKworU0VMRUNUIHJw cl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMg T0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Miw1fSBCKQorICAgIERF RklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9IDAKKyk7Jyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29w cz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhezIsNX0gYgorICAgTmF2IE1hcmsgTG9va2Jh Y2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBT dGF0ZXM6IDkgcGVhaywgMzExIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiA3IHBl YWssIDEwMSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTogMTAgbWF0Y2hlZCAobGVuIDYvNi82LjAp LCA0MCBtaXNtYXRjaGVkIChsZW4gNi82LzYuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgNTAgc2tp cHBlZCAobGVuIDEvNS8zLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJp ZXMgcyAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gU3RhciBx dWFudGlmaWVyCitDUkVBVEUgVklFVyBycHJfZXZfY3B4X3N0YXIgQVMKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKiBD KQorICAgIERFRklORSBBIEFTIHYgJSAxMCA9IDEsIEIgQVMgdiAlIDEwIElOICgyLDMsNCw1LDYs Nyw4KSwgQyBBUyB2ICUgMTAgPSA5CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfY3B4X3N0YXInKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSBiKiBjKSAKKygxIHJvdykKKworU0VMRUNU IHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09T VFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKiBDKQorICAgIERF RklORSBBIEFTIHYgJSAxMCA9IDEsIEIgQVMgdiAlIDEwIElOICgyLDMsNCw1LDYsNyw4KSwgQyBB UyB2ICUgMTAgPSA5CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog YSBiKiBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhp bXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA5MSB0b3RhbCwgMCBtZXJn ZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA1MSB0b3RhbCwgNDAgcHJ1bmVkCisgICBORkE6 IDUgbWF0Y2hlZCAobGVuIDkvOS85LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJl ZCwgNSBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVy YXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0t ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0gUmVhbC13b3JsZCBQYXR0ZXJuIEV4YW1wbGVzCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFN0b2NrIHBy aWNlIHBhdHRlcm4gLSBWLXNoYXBlIChkb3duIHRoZW4gdXApCitDUkVBVEUgVklFVyBycHJfZXZf cmVhbF92c2hhcGUgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV9jb21w bGV4CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAg UEFUVEVSTiAoRCsgVSspCisgICAgREVGSU5FIEQgQVMgdHJlbmQgPSAnRCcsIFUgQVMgdHJlbmQg PSAnVScKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9yZWFsX3ZzaGFwZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoZCsgdSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX2Nv bXBsZXgKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChEKyBVKykKKyAgICBERUZJTkUgRCBBUyB0cmVuZCA9ICcnRCcnLCBVIEFTIHRy ZW5kID0gJydVJycKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBkKyIgdSsK KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3Rv cmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA0IHBlYWssIDU4IHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiAzIHBlYWssIDMxIHRvdGFsLCAzIHBydW5lZAorICAgTkZBOiAzIG1hdGNo ZWQgKGxlbiAzLzE0LzguMCksIDEgbWlzbWF0Y2hlZCAobGVuIDMvMy8zLjApCisgICBORkE6IDkg YWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMTQgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAg U2VxIFNjYW4gb24gcnByX25mYV9jb21wbGV4IChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQor KDEwIHJvd3MpCisKKy0tIFN0b2NrIHByaWNlIHBhdHRlcm4gLSBwZWFrICh1cCwgc3RhYmxlLCBk b3duKQorQ1JFQVRFIFZJRVcgcnByX2V2X3JlYWxfcGVhayBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBycHJfbmZhX2NvbXBsZXgKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChVKyBTKiBEKykKKyAgICBERUZJTkUgVSBB UyB0cmVuZCA9ICdVJywgUyBBUyB0cmVuZCA9ICdTJywgRCBBUyB0cmVuZCA9ICdEJworKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X3JlYWxfcGVhaycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK KyAgICAgICAgIGxpbmUgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFU VEVSTiAodSsgcyogZCspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcK K0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNV TU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX2NvbXBsZXgK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChVKyBTKiBEKykKKyAgICBERUZJTkUgVSBBUyB0cmVuZCA9ICcnVScnLCBTIEFTIHRyZW5k ID0gJydTJycsIEQgQVMgdHJlbmQgPSAnJ0QnJworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IHUrIiBzKiBkKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVhaywgNzYg dG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMzEgdG90YWwsIDEgcHJ1 bmVkCisgICBORkE6IDQgbWF0Y2hlZCAobGVuIDMvMTEvNy4yKSwgMCBtaXNtYXRjaGVkCisgICBO RkE6IDEyIGFic29yYmVkIChsZW4gMS8xLzEuMCksIDEzIHNraXBwZWQgKGxlbiAxLzEvMS4wKQor ICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9uZmFfY29tcGxleCAoYWN0dWFsIHJvd3M9MzAuMDAgbG9v cHM9MSkKKygxMCByb3dzKQorCistLSBDb25zZWN1dGl2ZSBpbmNyZWFzaW5nIHZhbHVlcyAodXNp bmcgUFJFVikKK0NSRUFURSBWSUVXIHJwcl9ldl9yZWFsX2luY3JlYXNpbmcgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QXszLH0pCisgICAgREVGSU5FIEEgQVMgdiA+IFBSRVYodikgT1IgUFJFVih2KSBJUyBOVUxMCisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfcmVhbF9pbmNyZWFzaW5nJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICBQQVRURVJOIChhezMsfSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myx9KQorICAgIERFRklORSBBIEFTIHYgPiBQUkVWKHYp IE9SIFBSRVYodikgSVMgTlVMTAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnBy X2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMg KFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IGF7Myx9IgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgIFN0b3JhZ2U6IE1lbW9y eSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgOTkgdG90YWws IDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisg ICBORkE6IDEgbWF0Y2hlZCAobGVuIDUwLzUwLzUwLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTog NDkgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMCBza2lwcGVkCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCBy b3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIFBlcmZvcm1hbmNlLW9yaWVudGVkIFRlc3RzCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IExhcmdlIGRhdGFzZXQgd2l0aCBzaW1wbGUgcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX2V2X3Bl cmZfbGFyZ2Vfc2ltcGxlIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAxMDAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORSBBIEFTIHYgJSAy ID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9wZXJmX2xhcmdlX3NpbXBsZScpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIpIAorKDEgcm93KQorCitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJ TkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworICAgICAgICAgICAgICAg ICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTEwMDAuMDAgbG9vcHM9 MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAor ICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczog MiBwZWFrLCAxMDAxIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDEw MDEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDUwMCBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDAg bWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCA1MDAgc2tpcHBlZCAobGVuIDEvMS8xLjAp CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9 MTAwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIExhcmdlIGRhdGFzZXQgd2l0aCBhYnNv cnB0aW9uCitDUkVBVEUgVklFVyBycHJfZXZfcGVyZl9sYXJnZV9hYnNvcmIgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEwMDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMDAgPD4gMCwgQiBBUyB2ICUgMTAwID0gMAor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X3BlcmZfbGFyZ2VfYWJzb3JiJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQor ICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIo JworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwg U1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAxMDAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAwIDw+ IDAsIEIgQVMgdiAlIDEwMCA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICBy cHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwMC4wMCBsb29wcz0xKQorICAgV2luZG93 OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMTk5 MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAxMDAxIHRvdGFsLCAw IHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gMTAwLzEwMC8xMDAuMCksIDAgbWlzbWF0 Y2hlZAorICAgTkZBOiA5ODAgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgMTAgc2tpcHBlZCAobGVu IDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0 dWFsIHJvd3M9MTAwMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIEhpZ2ggc3RhdGUgbWVy Z2UgcmF0aW8KK0NSRUFURSBWSUVXIHJwcl9ldl9wZXJmX2hpZ2hfbWVyZ2UgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4g KChBIHwgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwg QyBBUyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJy YXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9wZXJmX2hpZ2hfbWVyZ2UnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8IGIpKyBjKSAKKygxIHJv dykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChB IHwgQikrIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBB UyB2ICUgMyA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5k b3dBZ2cgKGFjdHVhbCByb3dzPTUwMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiAoYSB8IGIpKyBjCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogOSBwZWFrLCAzMDA2IHRvdGFs LCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDUwMSB0b3RhbCwgMSBwcnVuZWQK KyAgIE5GQTogMTY2IG1hdGNoZWQgKGxlbiAzLzMvMy4wKSwgMSBtaXNtYXRjaGVkIChsZW4gMi8y LzIuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgMzMyIHNraXBwZWQgKGxlbiAxLzIvMS41KQorICAg LT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwMC4w MCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gSU5JVElBTCB2cyBubyBJTklUSUFM IGNvbXBhcmlzb24KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQorLS0gV2l0aCBJTklUSUFMIGtleXdvcmQKK0NSRUFURSBWSUVX IHJwcl9ldl9pbml0aWFsX3dpdGggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAorICAgIFBBVFRFUk4gKEErIEIpCisgICAg REVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9pbml0aWFs X3dpdGgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAg bGluZSAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiKSAKKygx IHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgSU5JVElBTAor ICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUg NSA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRl ciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgOTEgdG90YWwsIDAgbWVyZ2VkCisgICBO RkEgQ29udGV4dHM6IDIgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNo ZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDMwIGFic29yYmVkIChsZW4g MS8xLzEuMCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93 cykKKworLS0gV2l0aG91dCBJTklUSUFMIGtleXdvcmQgKHNhbWUgYmVoYXZpb3IgY3VycmVudGx5 KQorQ1JFQVRFIFZJRVcgcnByX2V2X2luaXRpYWxfd2l0aG91dCBBUworU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQor ICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxp bmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfaW5p dGlhbF93aXRob3V0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor ICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsg YikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAK Kyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAg ICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwg cm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgOTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDIgcGVhaywgNTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxl biA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDMwIGFic29yYmVkIChsZW4gMS8xLzEu MCksIDEwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2Vu ZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBRdWFudGlmaWVyIFZhcmlhdGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gUGx1cyBxdWFudGlm aWVyCitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfcGx1cyBBUworU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUgQSBBUyB2ICUgNCA8PiAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5n X3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfcXVhbnRfcGx1cycpLCBFJ1xuJykpIEFT IGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgIGxpbmUgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNDApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2ICUg NCA8PiAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0 ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAo YWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiCisg ICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3Jh Z2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA3MSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5G QSBDb250ZXh0czogMyBwZWFrLCA0MSB0b3RhbCwgMTAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNo ZWQgKGxlbiAzLzMvMy4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDIwIGFic29yYmVkIChsZW4g MS8xLzEuMCksIDAgc2tpcHBlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2Vy aWVzIHMgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gU3RhciBx dWFudGlmaWVyICh6ZXJvIG9yIG1vcmUpCitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfc3RhciBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKiBCKQorICAgIERFRklORSBBIEFTIHYgJSA0IElOICgxLCAyKSwgQiBBUyB2 ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdf Z2V0X3ZpZXdkZWYoJ3Jwcl9ldl9xdWFudF9zdGFyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoYSogYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEqIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgSU4g KDEsIDIpLCBCIEFTIHYgJSA0ID0gMworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IGEqIiBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVt b3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNCBwZWFrLCAxMDIgdG90 YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgNDEgdG90YWwsIDEwIHBydW5l ZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gMy8zLzMuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZB OiAxMCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCAxMCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4w MCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFF1ZXN0aW9uIG1hcmsgKHplcm8gb3Igb25lKQor Q1JFQVRFIFZJRVcgcnByX2V2X3F1YW50X3F1ZXN0aW9uIEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEE/IEIgQykKKyAg ICBERUZJTkUgQSBBUyB2ICUgNCA9IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMwor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X3F1YW50X3F1ZXN0aW9uJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyAgIFBBVFRFUk4gKGE/IGIgYykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0 ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9G RiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEE/IEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9 IDEsIEIgQVMgdiAlIDQgPSAyLCBDIEFTIHYgJSA0ID0gMworKTsnKTsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3BzPTEpCisg ICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORykKKyAgIFBhdHRlcm46IGE/IGIgYworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAg IFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQg cGVhaywgODIgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNDEgdG90 YWwsIDEwIHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gMy8zLzMuMCksIDAgbWlzbWF0 Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAyMCBza2lwcGVkIChsZW4gMS8yLzEuNSkKKyAgIC0+ ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBs b29wcz0xKQorKDEwIHJvd3MpCisKKy0tIEV4YWN0IGNvdW50IHtufQorQ1JFQVRFIFZJRVcgcnBy X2V2X3F1YW50X2V4YWN0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7M30gQikKKyAgICBERUZJTkUgQSBBUyB2ICUg NSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmlu Z190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3F1YW50X2V4YWN0JyksIEUnXG4nKSkg QVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAgICAgCist LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGF7M30gYikgCisoMSByb3cpCisKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7M30gQikKKyAg ICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGF7M30gYgorICAgTmF2IE1hcmsgTG9va2JhY2s6 IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0 ZXM6IDQgcGVhaywgNTEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDUgcGVhaywg NTEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxlbiA0LzQvNC4wKSwgMTAg bWlzbWF0Y2hlZCAobGVuIDQvNC80LjApCisgICBORkE6IDAgYWJzb3JiZWQsIDMwIHNraXBwZWQg KGxlbiAxLzMvMi4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMg KGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gUmFuZ2Uge24sbX0K K0NSRUFURSBWSUVXIHJwcl9ldl9xdWFudF9yYW5nZSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezIsNH0gQikKKyAg ICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3F1YW50 X3JhbmdlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAg ICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChh ezIsNH0gYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKEF7Miw0fSBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMg diAlIDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYXsy LDR9IGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGlt dW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA3IHBlYWssIDEwMSB0b3RhbCwgMCBtZXJn ZWQKKyAgIE5GQSBDb250ZXh0czogNSBwZWFrLCA1MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5GQTog MTAgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJl ZCwgNDAgc2tpcHBlZCAobGVuIDEvNC8yLjUpCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCist LSBBdCBsZWFzdCB7bix9CitDUkVBVEUgVklFVyBycHJfZXZfcXVhbnRfYXRsZWFzdCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBezMsfSBCKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8PiAwLCBCIEFTIHYgJSAxMCA9 IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9xdWFudF9hdGxlYXN0JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoYXszLH0gYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEF7Myx9IEIpCisgICAgREVGSU5FIEEgQVMg diAlIDEwIDw+IDAsIEIgQVMgdiAlIDEwID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGF7Myx9IiBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3Rv cmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFr LCA4NiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCA1MSB0b3RhbCwg MCBwcnVuZWQKKyAgIE5GQTogNSBtYXRjaGVkIChsZW4gMTAvMTAvMTAuMCksIDAgbWlzbWF0Y2hl ZAorICAgTkZBOiA0MCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCA1IHNraXBwZWQgKGxlbiAxLzEv MS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCBy b3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBSZWdyZXNzaW9uIFRl c3RzIGZvciBTdGF0aXN0aWNzIEFjY3VyYWN5CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSBzdGF0ZSBjb3Vu dCBhY2N1cmFjeQorLS0gUGF0dGVybiBBKyBCIHdpdGggMjAgcm93cyBzaG91bGQgc2hvdyBwcmVk aWN0YWJsZSBzdGF0ZSBiZWhhdmlvcgorQ1JFQVRFIFZJRVcgcnByX2V2X3JlZ19zdGF0ZV9jb3Vu dCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAl IDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfcmVnX3N0YXRlX2NvdW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVS RSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUg PD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJw cl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFT IChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQ YXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9y eSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgMzcgdG90YWws IDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVhaywgMjEgdG90YWwsIDAgcHJ1bmVkCisg ICBORkE6IDQgbWF0Y2hlZCAobGVuIDUvNS81LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTIg YWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29w cz0xKQorKDEwIHJvd3MpCisKKy0tIFZlcmlmeSBjb250ZXh0IGNvdW50IHdpdGgga25vd24gYWJz b3JwdGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X3JlZ19jdHhfYWJzb3JiIEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IEIgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgSU4gKDEsMiwzLDQsNSw2LDcpLCBCIEFTIHYg JSAxMCA9IDgsIEMgQVMgdiAlIDEwID0gOQorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0 cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3JlZ19jdHhfYWJzb3JiJyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICBsaW5lICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIgYykgCisoMSByb3cp CisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcg QVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIg QykKKyAgICBERUZJTkUgQSBBUyB2ICUgMTAgSU4gKDEsMiwzLDQsNSw2LDcpLCBCIEFTIHYgJSAx MCA9IDgsIEMgQVMgdiAlIDEwID0gOQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg cnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcg QVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAg IFBhdHRlcm46IGErIiBiIGMKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBN ZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDUyIHRv dGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDMxIHRvdGFsLCA2IHBydW5l ZAorICAgTkZBOiAzIG1hdGNoZWQgKGxlbiA5LzkvOS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6 IDE4IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDMgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAt PiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MzAuMDAg bG9vcHM9MSkKKygxMCByb3dzKQorCistLSBWZXJpZnkgbWF0Y2ggbGVuZ3RoIHdpdGggZml4ZWQt bGVuZ3RoIHBhdHRlcm4KK0NSRUFURSBWSUVXIHJwcl9ldl9yZWdfbWF0Y2hsZW4gQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBB UyB2ICUgMyA9IDAKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXko cGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9yZWdfbWF0Y2hsZW4nKSwgRSdcbicpKSBBUyBsaW5lIFdI RVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYiBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FIEEgQVMg diAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7Jyk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zMC4wMCBsb29w cz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIgYworICAgTmF2IE1hcmsgTG9va2JhY2s6 IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0 ZXM6IDIgcGVhaywgMzEgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywg MzEgdG90YWwsIDEwIHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gMy8zLzMuMCksIDAg bWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAxMCBza2lwcGVkIChsZW4gMS8xLzEuMCkK KyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0z MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQWx0ZXJuYXRpb24gUGF0dGVy biBUZXN0cworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBTaW1wbGUgYWx0ZXJuYXRpb24KK0NSRUFURSBWSUVXIHJwcl9l dl9hbHRfc2ltcGxlIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIHJwcl9uZmFfdGVz dAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBB VFRFUk4gKChBIHwgQikgQykKKyAgICBERUZJTkUgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0ID0g J0InLCBDIEFTIGNhdCA9ICdDJworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9zaW1wbGUnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgbGluZSAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgfCBiKSBjKSAKKygxIHJvdykK KworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJT IE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCKSBDKQorICAgIERFRklORSBB IEFTIGNhdCA9ICcnQScnLCBCIEFTIGNhdCA9ICcnQicnLCBDIEFTIGNhdCA9ICcnQycnCispOycp OworICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MTAwLjAw IGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYikgYworICAgTmF2IE1hcmsg TG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAg IE5GQSBTdGF0ZXM6IDQgcGVhaywgMzAzIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRz OiAzIHBlYWssIDEwMSB0b3RhbCwgNDAgcHJ1bmVkCisgICBORkE6IDIwIG1hdGNoZWQgKGxlbiAy LzIvMi4wKSwgMjAgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisgICBORkE6IDAgYWJzb3JiZWQs IDIwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9uZmFfdGVz dCAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gTXVsdGlwbGUg aXRlbXMgaW4gYWx0ZXJuYXRpb24KK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfbXVsdGlfaXRlbSBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBycHJfbmZhX3Rlc3QKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIg fCBDIHwgRCkgRSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyBjYXQgPSAnQScsIEIgQVMgY2F0 ID0gJ0InLCBDIEFTIGNhdCA9ICdDJywKKyAgICAgICAgRCBBUyBjYXQgPSAnRCcsIEUgQVMgY2F0 ID0gJ0UnCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfYWx0X211bHRpX2l0ZW0nKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIHwgYiB8IGMgfCBk KSBlKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChB TkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gcnByX25mYV90ZXN0CitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgfCBCIHwg QyB8IEQpIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgY2F0ID0gJydBJycsIEIgQVMgY2F0 ID0gJydCJycsIEMgQVMgY2F0ID0gJydDJycsCisgICAgICAgIEQgQVMgY2F0ID0gJydEJycsIEUg QVMgY2F0ID0gJydFJycKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn IChhY3R1YWwgcm93cz0xMDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEg fCBiIHwgYyB8IGQpIGUKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1v cnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWssIDUwNSB0b3Rh bCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAxMDEgdG90YWwsIDAgcHJ1bmVk CisgICBORkE6IDIwIG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwgNjAgbWlzbWF0Y2hlZCAobGVuIDIv Mi8yLjApCisgICBORkE6IDAgYWJzb3JiZWQsIDIwIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAg LT4gIFNlcSBTY2FuIG9uIHJwcl9uZmFfdGVzdCAoYWN0dWFsIHJvd3M9MTAwLjAwIGxvb3BzPTEp CisoMTAgcm93cykKKworLS0gQWx0ZXJuYXRpb24gd2l0aCBxdWFudGlmaWVycworQ1JFQVRFIFZJ RVcgcnByX2V2X2FsdF93aXRoX3F1YW50IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1B VENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikrIEMpCisgICAgREVG SU5FIEEgQVMgdiAlIDMgPSAxLCBCIEFTIHYgJSAzID0gMiwgQyBBUyB2ICUgMyA9IDAKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9hbHRfd2l0aF9xdWFudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRU RVJOJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgIFBBVFRFUk4gKChhIHwgYikrIGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgNTApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpKyBDKQorICAgIERFRklORSBB IEFTIHYgJSAzID0gMSwgQiBBUyB2ICUgMyA9IDIsIEMgQVMgdiAlIDMgPSAwCispOycpOworICAg ICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NTAuMDAg bG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGEgfCBiKSsgYworICAgTmF2IE1hcmsg TG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAg IE5GQSBTdGF0ZXM6IDkgcGVhaywgMzA2IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRz OiAzIHBlYWssIDUxIHRvdGFsLCAxIHBydW5lZAorICAgTkZBOiAxNiBtYXRjaGVkIChsZW4gMy8z LzMuMCksIDEgbWlzbWF0Y2hlZCAobGVuIDIvMi8yLjApCisgICBORkE6IDAgYWJzb3JiZWQsIDMy IHNraXBwZWQgKGxlbiAxLzIvMS41KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gTXVs dGlwbGUgYWx0ZXJuYXRpdmVzICg0KykKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZm91cl9wbHVz IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMDAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIHwgQiB8IEMgfCBEIHwgRSkKKyAg ICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwg RCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2ZvdXJfcGx1cycp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAg bGluZSAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoYSB8IGIgfCBjIHwgZCB8IGUpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSB8 IEIgfCBDIHwgRCB8IEUpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0g MSwgQyBBUyB2ICUgNSA9IDIsIEQgQVMgdiAlIDUgPSAzLCBFIEFTIHYgJSA1ID0gNAorKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9 MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYiB8IGMgfCBkIHwg ZSkKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA3IHBlYWssIDYwNiB0b3RhbCwgMCBtZXJnZWQK KyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAxMDEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEw MCBtYXRjaGVkIChsZW4gMS8xLzEuMCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNj YW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkg cm93cykKKworLS0gQWx0ZXJuYXRpb24gYXQgc3RhcnQKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRf YXRfc3RhcnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVz KDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSBDIEQpCisg ICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIs IEQgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2Fy cmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2F0X3N0YXJ0JyksIEUnXG4nKSkgQVMgbGlu ZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSB8IGIpIGMgZCkgCisoMSBy b3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVG RkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKChBIHwgQikgQyBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0g MCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTYw LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYikgYyBkCisgICBOYXYg TWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5r QgorICAgTkZBIFN0YXRlczogNCBwZWFrLCAxODMgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMgcGVhaywgNjEgdG90YWwsIDE2IHBydW5lZAorICAgTkZBOiAxNSBtYXRjaGVkIChs ZW4gMy8zLzMuMCksIDE0IG1pc21hdGNoZWQgKGxlbiAyLzIvMi4wKQorICAgTkZBOiAwIGFic29y YmVkLCAxNSBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdl bmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisK Ky0tIE11bHRpcGxlIHNlcXVlbnRpYWwgYWx0ZXJuYXRpb25zCitDUkVBVEUgVklFVyBycHJfZXZf YWx0X3NlcXVlbnRpYWwgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDEwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIHwgQikg QyAoRCB8IEUpIEYpCisgICAgREVGSU5FIEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwg QyBBUyB2ICUgNiA9IDIsIEQgQVMgdiAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUg NiA9IDUKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfc2VxdWVudGlhbCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAKKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIHwgYikgYyAo ZCB8IGUpIGYpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTAw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSBDIChEIHwgRSkgRikK KyAgICBERUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0g MiwgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2ID0gNQorKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9 MTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYikgYyAoZCB8IGUp IGYKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDMzNyB0b3RhbCwgMCBtZXJnZWQK KyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAxMDEgdG90YWwsIDY3IHBydW5lZAorICAgTkZBOiAw IG1hdGNoZWQsIDMzIG1pc21hdGNoZWQgKGxlbiAyLzQvMy4wKQorICAgLT4gIEZ1bmN0aW9uIFNj YW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTEwMC4wMCBsb29wcz0xKQorKDkg cm93cykKKworLS0gUXVhbnRpZmllZCBhbHRlcm5hdGl2ZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9h bHRfcXVhbnRpZmllZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSsgfCBCKykg QykKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAz ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRf dmlld2RlZigncnByX2V2X2FsdF9xdWFudGlmaWVkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSsgfCBiKykgYykgCisoMSByb3cpCisKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKChBKyB8IEIrKSBDKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2 ICUgMyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAg ICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzog dyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgUGF0dGVybjogKGErIiB8IGIrIikgYworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0 b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDUgcGVh aywgMjIzIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDYxIHRvdGFs LCAxIHBydW5lZAorICAgTkZBOiAyMCBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDE5IG1pc21hdGNo ZWQgKGxlbiAyLzIvMi4wKQorICAgTkZBOiAwIGFic29yYmVkLCAyMCBza2lwcGVkIChsZW4gMS8x LzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwg cm93cz02MC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIEFsdGVybmF0aW9uIGF0IGVuZAor Q1JFQVRFIFZJRVcgcnByX2V2X2FsdF9hdF9lbmQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFU VEVSTiAoQSBCIChDIHwgRCkpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0 ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X2F0X2Vu ZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAg bGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAo YSBiIChjIHwgZCkpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VY UExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIgKEMgfCBEKSkKKyAgICBE RUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBB UyB2ICUgNCA9IDMKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWlu X2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93 QWdnIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBh IGIgKGMgfCBkKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAg TWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgODkgdG90YWwsIDAg bWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNjEgdG90YWwsIDMyIHBydW5lZAorICAg TkZBOiAxNCBtYXRjaGVkIChsZW4gMy8zLzMuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFi c29yYmVkLCAxNCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorKDEwIHJvd3Mp CisKKy0tIE5lc3RlZCBBTFQgYXQgc3RhcnQgb2YgYnJhbmNoIGluc2lkZSBvdXRlciBBTFQKKy0t IFBhdHRlcm46IChBICgoQiB8IEMpIEQgfCBFKSkgLSBwcmVjZWRpbmcgVkFSICsgaW5uZXIgQUxU IGFzIGZpcnN0IGJyYW5jaCBlbGVtZW50CitDUkVBVEUgVklFVyBycHJfZXZfYWx0X25lc3RlZF9z dGFydCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBICgoQiB8IEMpIEQgfCBFKSkK KyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAlIDUgPSAxLCBDIEFTIHYgJSA1ID0g MiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0CispOworU0VMRUNUIGxpbmUgRlJPTSB1 bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfYWx0X25lc3RlZF9z dGFydCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg ICAgICAgbGluZSAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoYSAoKGIgfCBjKSBkIHwgZSkpIAorKDEgcm93KQorCitTRUxFQ1QgcnBy X2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBP RkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJO IChBICgoQiB8IEMpIEQgfCBFKSkKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA9IDAsIEIgQVMgdiAl IDUgPSAxLCBDIEFTIHYgJSA1ID0gMiwgRCBBUyB2ICUgNSA9IDMsIEUgQVMgdiAlIDUgPSA0Cisp OycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJv d3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSAoKGIgfCBjKSBkIHwg ZSkKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0g U3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA0IHBlYWssIDM3IHRvdGFsLCAwIG1lcmdlZAor ICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAxNyBwcnVuZWQKKyAgIE5GQTogMCBt YXRjaGVkLCAzIG1pc21hdGNoZWQgKGxlbiAzLzMvMy4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoOSByb3dz KQorCistLSBOZXN0ZWQgQUxUIGF0IGVuZCBvZiBicmFuY2ggaW5zaWRlIG91dGVyIEFMVAorLS0g UGF0dGVybjogKEMgKEEgfCBCKSB8IEQpIC0gaW5uZXIgQUxUIGlzIGxhc3QgZWxlbWVudCBpbiBv dXRlciBicmFuY2gKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfbmVzdGVkX2VuZCBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBQQVRURVJOIChDIChBIHwgQikgfCBEKQorICAgIERFRklORSBBIEFTIHYg JSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMwor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2FsdF9uZXN0ZWRfZW5kJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4g J1BBVFRFUk4nOworICAgICAgICAgICAgbGluZSAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYyAoYSB8IGIpIHwgZCkgCisoMSByb3cpCisKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEMgKEEgfCBCKSB8IEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFT IHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGMgKGEgfCBiKSB8IGQpCisgICBOYXYgTWFy ayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgor ICAgTkZBIFN0YXRlczogNSBwZWFrLCA3MyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0 czogMyBwZWFrLCAyMSB0b3RhbCwgMTAgcHJ1bmVkCisgICBORkE6IDUgbWF0Y2hlZCAobGVuIDEv MS8xLjApLCA1IG1pc21hdGNoZWQgKGxlbiAyLzIvMi4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoOSByb3dz KQorCistLSBRdWFudGlmaWVkIGdyb3VwIGFzIHRoZSBmaXJzdCBhbHRlcm5hdGlvbiBicmFuY2gK Ky0tIFBhdHRlcm46ICgoQSBCKSsgfCBDKSAtIGxlYWRpbmcgZ3JvdXAgYnJhbmNoIG11c3Qgb3Bl biB0aGUgZW5jbG9zaW5nIHBhcmVuCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9maXJzdCBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKSsgfCBDKQorICAgIERFRklORSBB IEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOworU0VMRUNU IGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZf YWx0X2dycF9maXJzdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsK KyAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKChhIGIpKyB8IGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKSsgfCBD KQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQg PSAyCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0 dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChhJyBiJykr IiB8IGMpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhp bXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBwZWFrLCA2NyB0b3RhbCwgMCBtZXJn ZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgNyBwcnVuZWQKKyAgIE5GQTog OSBtYXRjaGVkIChsZW4gMS8yLzEuNCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVk LCA0IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJh dGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0g UXVhbnRpZmllZCBncm91cCBhcyB0aGUgbGFzdCBhbHRlcm5hdGlvbiBicmFuY2gKKy0tIFBhdHRl cm46IChDIHwgKEEgQikrKSAtIHRyYWlsaW5nIGdyb3VwIGJyYW5jaCwgbm8gc2VwYXJhdG9yIGZv bGxvd3MKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX2xhc3QgQVMKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBB UyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQyB8IChBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIg QVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0 KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfbGFzdCcpLCBF J1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICBsaW5lICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGMgfCAoYSBi KSspIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFO QUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChDIHwgKEEgQikrKQorICAgIERFRklORSBBIEFT IHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyCispOycpOworICAgICAg ICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9v cHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGMgfCAoYScgYicpKyIpCisgICBOYXYgTWFy ayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgor ICAgTkZBIFN0YXRlczogNSBwZWFrLCA2NyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0 czogMyBwZWFrLCAyMSB0b3RhbCwgNyBwcnVuZWQKKyAgIE5GQTogOSBtYXRjaGVkIChsZW4gMS8y LzEuNCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCA0IHNraXBwZWQgKGxlbiAx LzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVh bCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gUXVhbnRpZmllZCBncm91cCBh cyB0aGUgbWlkZGxlIGJyYW5jaCBvZiBhIHRocmVlLXdheSBhbHRlcm5hdGlvbgorLS0gUGF0dGVy bjogKEMgfCAoQSBCKSsgfCBEKSAtIHNlcGFyYXRvciBiZWZvcmUgRCBtdXN0IHN1cnZpdmUgdGhl IGdyb3VwIGJyYW5jaAorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfbWlkIEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEMgfCAoQSBCKSsgfCBEKQorICAgIERFRklORSBBIEFTIHYg JSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMwor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2FsdF9ncnBfbWlkJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChjIHwgKGEgYikrIHwgZCkgCisoMSByb3cpCisKK1NF TEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYs IENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEMgfCAoQSBCKSsgfCBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBB UyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsnKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAwIGxv b3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChjIHwgKGEnIGInKSsiIHwgZCkKKyAgIE5h diBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTog TmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWssIDg4IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENv bnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAyIHBydW5lZAorICAgTkZBOiAxNCBtYXRjaGVkIChs ZW4gMS8yLzEuMyksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCA0IHNraXBwZWQg KGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMg KGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gUXVhbnRpZmllZCBn cm91cCBhcyB0aGUgZmlyc3QgYnJhbmNoIG9mIGEgdGhyZWUtd2F5IGFsdGVybmF0aW9uCistLSBQ YXR0ZXJuOiAoKEEgQikrIHwgQyB8IEQpIC0gbGVhZGluZyBncm91cCBicmFuY2ggd2l0aCB0d28g Zm9sbG93aW5nIGJyYW5jaGVzCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9maXJzdDMgQVMK K1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBz KHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikrIHwgQyB8IEQpCisgICAgREVGSU5F IEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAl IDQgPSAzCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dl dF92aWV3ZGVmKCdycHJfZXZfYWx0X2dycF9maXJzdDMnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJF IGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICBsaW5lICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIGIpKyB8IGMgfCBkKSAKKygx IHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikrIHwgQyB8IEQpCisgICAgREVGSU5FIEEgQVMgdiAl IDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCisp OycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJv d3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChhJyBiJykrIiB8IGMg fCBkKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11 bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgODggdG90YWwsIDAgbWVyZ2Vk CisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDIgcHJ1bmVkCisgICBORkE6IDE0 IG1hdGNoZWQgKGxlbiAxLzIvMS4zKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQs IDQgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBC b3VuZGVkLXF1YW50aWZpZXIgZ3JvdXAgYXMgdGhlIGZpcnN0IGFsdGVybmF0aW9uIGJyYW5jaAor LS0gUGF0dGVybjogKChBIEIpezJ9IHwgQykgLSBsZWFkaW5nIGdyb3VwIGJyYW5jaCB3aXRoIGEg cmFuZ2UgcXVhbnRpZmllcgorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfYm91bmRlZCBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKXsyfSB8IEMpCisgICAgREVGSU5FIEEg QVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9h bHRfZ3JwX2JvdW5kZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CisgICAgICAgICAgIGxpbmUgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoKGEgYil7Mn0gfCBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBs YWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBU SU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2Vu ZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEg Qil7Mn0gfCBDKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMg QVMgdiAlIDQgPSAyCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog KChhIGIpezJ9IHwgYykKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1v cnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA0IHBlYWssIDYzIHRvdGFs LCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAxMSBwcnVuZWQK KyAgIE5GQTogNSBtYXRjaGVkIChsZW4gMS8xLzEuMCksIDQgbWlzbWF0Y2hlZCAobGVuIDMvMy8z LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJv d3M9MjAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0tIFR3byBxdWFudGlmaWVkIGdyb3VwcyBp biBvbmUgYWx0ZXJuYXRpb24KKy0tIFBhdHRlcm46ICgoQSBCKSsgfCAoQyBEKSspIC0gYm90aCBi cmFuY2hlcyBhcmUgZ3JvdXBzCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9ib3RoIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpKyB8IChDIEQpKykKKyAgICBERUZJTkUg QSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUg NCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0 X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX2JvdGgnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxp bmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKGEgYikrIHwgKGMgZCkrKSAKKygx IHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBC VUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoKEEgQikrIHwgKEMgRCkrKQorICAgIERFRklORSBBIEFTIHYg JSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMwor KTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCBy b3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoYScgYicpKyIgfCAo YycgZCcpKyIpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBwZWFrLCA3MiB0b3RhbCwgMCBt ZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgMiBwcnVuZWQKKyAgIE5G QTogOSBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29y YmVkLCA5IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2Vu ZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKwor LS0gTGVhZGluZyBncm91cCBicmFuY2ggaW4gYW4gYWx0ZXJuYXRpb24gbmVzdGVkIGluIGEgc2Vx dWVuY2UKKy0tIFBhdHRlcm46ICgoKEEgQikrIHwgQykgRCkgLSBpbm5lciBhbHRlcm5hdGlvbiBv cGVucyB3aXRoIGEgZ3JvdXAgYnJhbmNoCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF9zZXFf aGVhZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg MjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEgQikrIHwgQykgRCkKKyAg ICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwg RCBBUyB2ICUgNCA9IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJy YXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX3NlcV9oZWFkJyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgbGluZSAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoKGEgYikrIHwg YykgZCkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAo QU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYp CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSBCKSsgfCBDKSBEKQorICAgIERFRklO RSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYg JSA0ID0gMworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoYScg YicpKyIgfCBjKSBkCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBwZWFrLCA2NyB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgNiBwcnVuZWQKKyAg IE5GQTogNSBtYXRjaGVkIChsZW4gMi8yLzIuMCksIDQgbWlzbWF0Y2hlZCAobGVuIDMvMy8zLjAp CisgICBORkE6IDAgYWJzb3JiZWQsIDUgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVu Y3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9 MSkKKygxMCByb3dzKQorCistLSBUcmFpbGluZyBncm91cCBicmFuY2ggaW4gYW4gYWx0ZXJuYXRp b24gbmVzdGVkIGluIGEgc2VxdWVuY2UKKy0tIFBhdHRlcm46ICgoQyB8IChBIEIpKykgRCkgLSBn cm91cCBhcyBsYXN0IGJyYW5jaCwgdGhlbiBhIHNlcXVlbmNlIGVsZW1lbnQKK0NSRUFURSBWSUVX IHJwcl9ldl9hbHRfZ3JwX3NlcV90YWlsIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9N IGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4g KChDIHwgKEEgQikrKSBEKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9 IDEsIEMgQVMgdiAlIDQgPSAyLCBEIEFTIHYgJSA0ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBfc2Vx X3RhaWwnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAg ICAgICBsaW5lICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKChjIHwgKGEgYikrKSBkKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWlu X2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1J TkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJh dGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEMgfCAo QSBCKSspIEQpCisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBB UyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAzCispOycpOworICAgICAgICAgICAgICAgICAgICAg ICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRv dzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H KQorICAgUGF0dGVybjogKGMgfCAoYScgYicpKyIpIGQKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAw CisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVz OiA1IHBlYWssIDY3IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIx IHRvdGFsLCA2IHBydW5lZAorICAgTkZBOiA1IG1hdGNoZWQgKGxlbiAyLzIvMi4wKSwgNCBtaXNt YXRjaGVkIChsZW4gMy8zLzMuMCkKKyAgIE5GQTogMCBhYnNvcmJlZCwgNSBza2lwcGVkIChsZW4g MS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1 YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFF1YW50aWZpZWQgYWx0ZXJu YXRpb24gd2hvc2UgZmlyc3QgYnJhbmNoIGlzIGEgcXVhbnRpZmllZCBncm91cAorLS0gUGF0dGVy bjogKCgoQSBCKXsyfSB8IEMpKykgLSBzaW5nbGUtQUxUIGdyb3VwIHdyYXBzIGEgbGVhZGluZyBn cm91cCBicmFuY2gKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX3F1YW50IEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKCgoQSBCKXsyfSB8IEMpKykKKyAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9n cnBfcXVhbnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAg ICAgICAgICAgbGluZSAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorICAgUEFUVEVSTiAoKChhIGIpezJ9IHwgYykrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9l eHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo KChBIEIpezJ9IHwgQykrKQorICAgIERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9 IDEsIEMgQVMgdiAlIDQgPSAyCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJf ZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogKChhIGIpezJ9IHwgYykrCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCA3 OCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgMTEg cHJ1bmVkCisgICBORkE6IDUgbWF0Y2hlZCAobGVuIDEvMS8xLjApLCA0IG1pc21hdGNoZWQgKGxl biAzLzMvMy4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFj dHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCistLSBVbml0ICgxLDEpIGdyb3Vw IGFzIGFuIGFsdGVybmF0aW9uIGJyYW5jaCAoZW1pdHMgbm8gQkVHSU4vRU5EKQorLS0gUGF0dGVy bjogKChBIEIpIHwgQykgLSBjb250cm9sOiB0YWtlcyB0aGUgdmFyaWFibGUgcGF0aCwgbm90IGRl cGFyc2VfcnByX2dyb3VwCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X2dycF91bml0IEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIEIpIHwgQykKKyAgICBERUZJTkUgQSBBUyB2ICUg NCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZS T00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9ncnBf dW5pdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAg ICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgo YSBiKSB8IGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExB SU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkg T0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjAp IEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSBCKSB8IEMpCisgICAgREVGSU5F IEEgQVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSBiIHwgYykKKyAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisg ICBORkEgU3RhdGVzOiA0IHBlYWssIDYzIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRz OiAyIHBlYWssIDIxIHRvdGFsLCA3IHBydW5lZAorICAgTkZBOiA5IG1hdGNoZWQgKGxlbiAxLzIv MS40KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDQgc2tpcHBlZCAobGVuIDEv MS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFs IHJvd3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBRdWFudGlmaWVkIHZhcmlhYmxl IGFzIHRoZSBmaXJzdCBhbHRlcm5hdGlvbiBicmFuY2gKKy0tIFBhdHRlcm46IChBKyB8IEMpIC0g Y29udHJvbDogZGVwYXJzZV9ycHJfdmFyIGFscmVhZHkgb3BlbnMgdGhlIGxlYWRpbmcgcGFyZW4K K0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfdmFyX2ZpcnN0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEErIHwgQykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEMgQVMgdiAlIDQg PSAyCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfYWx0X3Zhcl9maXJzdCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGlu ZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgICBQQVRURVJOIChhKyB8IGMpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5f ZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlO RyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0 ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKyB8IEMp CisgICAgREVGSU5FIEEgQVMgdiAlIDQgPSAwLCBDIEFTIHYgJSA0ID0gMgorKTsnKTsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAg ICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAwIGxv b3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhKyIgfCBjKQorICAgTmF2IE1hcmsgTG9v a2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5G QSBTdGF0ZXM6IDUgcGVhaywgNjggdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMg cGVhaywgMjEgdG90YWwsIDEwIHBydW5lZAorICAgTkZBOiAxMCBtYXRjaGVkIChsZW4gMS8xLzEu MCksIDAgbWlzbWF0Y2hlZAorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVz IHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCistLSBRdWFudGlmaWVk IGdyb3VwIGFzIHRoZSBsYXN0IGJyYW5jaCBvZiBhIHRocmVlLXdheSBhbHRlcm5hdGlvbgorLS0g UGF0dGVybjogKEMgfCBEIHwgKEEgQikrKSAtIGNvbnRyb2w6IHRyYWlsaW5nIGdyb3VwIG5lZWRz IG5vIHNlcGFyYXRvcgorQ1JFQVRFIFZJRVcgcnByX2V2X2FsdF9ncnBfbGFzdDMgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQyB8IEQgfCAoQSBCKSspCisgICAgREVGSU5FIEEgQVMg diAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMSwgQyBBUyB2ICUgNCA9IDIsIEQgQVMgdiAlIDQgPSAz CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3 ZGVmKCdycHJfZXZfYWx0X2dycF9sYXN0MycpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKKyAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYyB8IGQgfCAoYSBiKSspIAorKDEgcm93KQor CitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMg T0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCop IE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFT ICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBQQVRURVJOIChDIHwgRCB8IChBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAs IEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYyB8IGQgfCAoYScgYicpKyIpCisg ICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3Jh Z2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCA4OCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5G QSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgMiBwcnVuZWQKKyAgIE5GQTogMTQgbWF0Y2hl ZCAobGVuIDEvMi8xLjMpLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgNCBza2lw cGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nlcmll cyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIEFsdGVybmF0 aW9uIG5lc3RlZCBpbiBhIGxlYWRpbmcgYnJhbmNoIG11c3Qgbm90IHN3YWxsb3cgdGhlIHRyYWls aW5nIGJyYW5jaAorLS0gUGF0dGVybjogKEQgKEEgfCBCKSB8IEUpIC0gaW5oZXJpdGVkIGxpbWl0 IGJvdW5kcyB0aGUgaW5uZXIgYWx0ZXJuYXRpb24KK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfaW5u ZXJfYm91bmRlZCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChEIChBIHwgQikgfCBF KQorICAgIERFRklORSBBIEFTIHYgJSA1ID0gMCwgQiBBUyB2ICUgNSA9IDEsIEQgQVMgdiAlIDUg PSAyLCBFIEFTIHYgJSA1ID0gMworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF9pbm5lcl9ib3VuZGVkJyksIEUnXG4n KSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgbGluZSAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoZCAoYSB8 IGIpIHwgZSkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJ TiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBP RkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEQgKEEgfCBCKSB8IEUpCisgICAgREVG SU5FIEEgQVMgdiAlIDUgPSAwLCBCIEFTIHYgJSA1ID0gMSwgRCBBUyB2ICUgNSA9IDIsIEUgQVMg diAlIDUgPSAzCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9m aWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZyAoYWN0dWFsIHJvd3M9MjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKGQg KGEgfCBiKSB8IGUpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5 ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBwZWFrLCA3MSB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgMTIgcHJ1bmVkCisg ICBORkE6IDQgbWF0Y2hlZCAobGVuIDEvMS8xLjApLCA0IG1pc21hdGNoZWQgKGxlbiAyLzIvMi4w KQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dz PTIwLjAwIGxvb3BzPTEpCisoOSByb3dzKQorCistLSBHcm91cCBtaWQtYnJhbmNoIGZvbGxvd2Vk IGJ5IGEgc2VxdWVuY2UgZWxlbWVudCBuZWVkcyBubyBzZXBhcmF0b3IgYmVmb3JlIGl0CistLSBQ YXR0ZXJuOiAoQyB8IChBIEIpKyBEKSAtIHJlbGF0aXZlLW5leHQgYmxvY2tzIGEgc3B1cmlvdXMg c2VwYXJhdG9yIGF0IEQKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfZ3JwX3RoZW5fc2VxIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEMgfCAoQSBCKSsgRCkKKyAgICBERUZJTkUgQSBB UyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9 IDMKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3Zp ZXdkZWYoJ3Jwcl9ldl9hbHRfZ3JwX3RoZW5fc2VxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBs aW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGMgfCAoYSBiKSsgZCkgCisoMSByb3cpCisK K1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBP RkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikg T1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEMgfCAoQSBCKSsgRCkKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIg QVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMiwgRCBBUyB2ICUgNCA9IDMKKyk7Jyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYyB8IChhJyBiJykrIiBkKQorICAgTmF2 IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBO a0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgODggdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDYgcHJ1bmVkCisgICBORkE6IDEwIG1hdGNoZWQgKGxl biAxLzEvMS4wKSwgNCBtaXNtYXRjaGVkIChsZW4gMy8zLzMuMCkKKyAgIC0+ICBGdW5jdGlvbiBT Y2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDkg cm93cykKKworLS0gUXVhbnRpZmllZCBncm91cCB3cmFwcGluZyBhIGxvbmUgYWx0ZXJuYXRpb246 IHRoZSBBTFQgc3VwcGxpZXMgdGhlIHBhcmVucworLS0gUGF0dGVybjogKChBIHwgQikrKSAtIGxv bmVBbHQgcGF0aCwgc2luZ2xlIHBhaXIgb2YgcGFyZW5zCitDUkVBVEUgVklFVyBycHJfZXZfZ3Jw X2xvbmVfYWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmll cygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIHwgQikrKQorICAg IERFRklORSBBIEFTIHYgJSA0ID0gMCwgQiBBUyB2ICUgNCA9IDEKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBfbG9u ZV9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAg ICBsaW5lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChh IHwgYikrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlO IChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9G RikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBB UyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKSspCisgICAgREVGSU5FIEEg QVMgdiAlIDQgPSAwLCBCIEFTIHYgJSA0ID0gMQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IChhIHwgYikrCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3Rv cmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFr LCA5MyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwg MTAgcHJ1bmVkCisgICBORkE6IDYgbWF0Y2hlZCAobGVuIDEvMi8xLjcpLCAwIG1pc21hdGNoZWQK KyAgIE5GQTogMCBhYnNvcmJlZCwgNCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5j dGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0x KQorKDEwIHJvd3MpCisKKy0tIFF1YW50aWZpZWQgZ3JvdXAgd3JhcHBpbmcgYSBzZXF1ZW5jZSB3 aG9zZSBsYXN0IGVsZW1lbnQgaXMgYW4gYWx0ZXJuYXRpb24KKy0tIFBhdHRlcm46ICgoQSAoQiB8 IEMpKSspIC0gZ3JvdXAgcGFyZW4gcGx1cyBhIG5lc3RlZCBhbHRlcm5hdGlvbiBwYXJlbgorQ1JF QVRFIFZJRVcgcnByX2V2X2dycF9zZXFfYWx0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitG Uk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRF Uk4gKChBIChCIHwgQykpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQg PSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9zZXFfYWx0JyksIEUnXG4nKSkgQVMg bGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIChiIHwgYykpKykg CisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFla RSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIChCIHwgQykpKykKKyAgICBERUZJTkUgQSBBUyB2 ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIChiIHwgYykpKworICAgTmF2IE1hcmsgTG9v a2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5G QSBTdGF0ZXM6IDMgcGVhaywgMzUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMg cGVhaywgMjEgdG90YWwsIDEyIHBydW5lZAorICAgTkZBOiA0IG1hdGNoZWQgKGxlbiAyLzIvMi4w KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDQgc2tpcHBlZCAobGVuIDEvMS8x LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJv d3M9MjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBRdWFudGlmaWVkIGdyb3VwIHdyYXBw aW5nIGEgc2VxdWVuY2Ugd2hvc2UgZmlyc3QgZWxlbWVudCBpcyBhbiBhbHRlcm5hdGlvbgorLS0g UGF0dGVybjogKCgoQSB8IEIpIEMpKykgLSBsZWFkaW5nIG5lc3RlZCBhbHRlcm5hdGlvbiBpbnNp ZGUgYSBncm91cCBzZXF1ZW5jZQorQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9hbHRfc2VxIEFTCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSB8IEIpIEMpKykKKyAgICBERUZJTkUgQSBB UyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYgJSA0ID0gMgorKTsKK1NFTEVDVCBs aW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dy cF9hbHRfc2VxJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAg ICAgICAgICBsaW5lICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg IFBBVFRFUk4gKCgoYSB8IGIpIGMpKykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9m aWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5H IE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRl X3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSB8IEIp IEMpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgNCA9IDAsIEIgQVMgdiAlIDQgPSAxLCBDIEFTIHYg JSA0ID0gMgorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoYSB8 IGIpIGMpKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4 aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDYgcGVhaywgNzggdG90YWwsIDAgbWVy Z2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDYgcHJ1bmVkCisgICBORkE6 IDUgbWF0Y2hlZCAobGVuIDIvMi8yLjApLCA0IG1pc21hdGNoZWQgKGxlbiAyLzIvMi4wKQorICAg TkZBOiAwIGFic29yYmVkLCA1IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9u IFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCiso MTAgcm93cykKKworLS0gQWx0ZXJuYXRpb24gbm9uLWxhc3QgaW4gYSBub24tbGFzdCBicmFuY2gs IHN0YWNrZWQgdGhyZWUgZGVlcDogZWFjaCBsZXZlbCdzCistLSBpbmhlcml0ZWQgbGltaXQgbXVz dCBib3VuZCB0aGUgaW5uZXIgYWx0ZXJuYXRpb24gYWdhaW5zdCB0aGUgbmV4dCBicmFuY2gKKy0t IFBhdHRlcm46ICgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpIC0gdGhyZWUgbmVzdGVkIGluaGVyaXRl ZC1saW1pdCBib3VuZGFyaWVzCitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3N0YWNrMyBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpCisgICAgREVG SU5FIEEgQVMgdiAlIDYgPSAwLCBCIEFTIHYgJSA2ID0gMSwgQyBBUyB2ICUgNiA9IDIsCisgICAg ICAgICAgIEQgQVMgdiAlIDYgPSAzLCBFIEFTIHYgJSA2ID0gNCwgRiBBUyB2ICUgNiA9IDUKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl9hbHRfc3RhY2szJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKCgoYSB8IGIpIGMgfCBkKSBlIHwg ZikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoQSB8IEIpIEMgfCBEKSBFIHwgRikKKyAgICBE RUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwKKyAg ICAgICAgICAgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2ID0gNQor KTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAg ICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCBy b3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoKGEgfCBiKSBjIHwg ZCkgZSB8IGYpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNiBwZWFrLCAxNDcgdG90YWwsIDAg bWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDQgcHJ1bmVkCisgICBO RkE6IDYgbWF0Y2hlZCAobGVuIDEvMi8xLjUpLCA3IG1pc21hdGNoZWQgKGxlbiAyLzMvMi40KQor ICAgTkZBOiAwIGFic29yYmVkLCAzIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0 aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEp CisoMTAgcm93cykKKworLS0gU2FtZSBpbnRlcmFjdGlvbiBzdGFja2VkIGZvdXIgZGVlcCwgdG8g ZXhlcmNpc2UgdGhlIGluZHVjdGlvbiBvbmUgc3RlcCBmdXJ0aGVyCistLSBQYXR0ZXJuOiAoKCgo QSB8IEIpIEMgfCBEKSBFIHwgRikgRyB8IEgpIC0gZm91ciBuZXN0ZWQgaW5oZXJpdGVkLWxpbWl0 IGJvdW5kYXJpZXMKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfc3RhY2s0IEFTCitTRUxFQ1QgY291 bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKCgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpIEcgfCBIKQorICAgIERF RklORSBBIEFTIHYgJSA4ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMgdiAlIDggPSAyLCBEIEFT IHYgJSA4ID0gMywKKyAgICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAlIDggPSA1LCBH IEFTIHYgJSA4ID0gNiwgSCBBUyB2ICUgOCA9IDcKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfc3RhY2s0JyksIEUn XG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgICAgICAgICAgICAg ICBsaW5lICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoKChhIHwgYikgYyB8IGQpIGUgfCBmKSBnIHwg aCkgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5B TFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKCgoKEEgfCBCKSBDIHwgRCkgRSB8IEYpIEcgfCBI KQorICAgIERFRklORSBBIEFTIHYgJSA4ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMgdiAlIDgg PSAyLCBEIEFTIHYgJSA4ID0gMywKKyAgICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAl IDggPSA1LCBHIEFTIHYgJSA4ID0gNiwgSCBBUyB2ICUgOCA9IDcKKyk7Jyk7CisgICAgICAgICAg ICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAg ICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0x KQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKCgoYSB8IGIpIGMgfCBkKSBlIHwgZikgZyB8IGgp CisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0 b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNyBwZWFrLCAxODkgdG90YWwsIDAgbWVyZ2VkCisg ICBORkEgQ29udGV4dHM6IDMgcGVhaywgMjEgdG90YWwsIDYgcHJ1bmVkCisgICBORkE6IDQgbWF0 Y2hlZCAobGVuIDEvMi8xLjUpLCA4IG1pc21hdGNoZWQgKGxlbiAyLzMvMi42KQorICAgTkZBOiAw IGFic29yYmVkLCAyIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93 cykKKworLS0gVGhyZWUtZGVlcCBzdGFjayB3aG9zZSBpbm5lcm1vc3QgYnJhbmNoIGlzIGEgcXVh bnRpZmllZCBncm91cDogdGhlIGdyb3VwJ3MKKy0tIHNraXAtdGFyZ2V0IGp1bXAgbXVzdCBub3Qg YmUgbWlzdGFrZW4gZm9yIGEgYnJhbmNoIHNlcGFyYXRvciBhdCBhbnkgZGVwdGgKKy0tIFBhdHRl cm46ICgoKEEgfCBCKSsgQyB8IEQpIEUgfCBGKSAtIGluaGVyaXRlZCBsaW1pdCBwbHVzIGxvbmVB bHQgYXQgdGhlIGJhc2UKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfc3RhY2szX2dycCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKEEgfCBCKSsgQyB8IEQpIEUgfCBGKQorICAgIERF RklORSBBIEFTIHYgJSA2ID0gMCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYgPSAyLAorICAg ICAgICAgICBEIEFTIHYgJSA2ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMgdiAlIDYgPSA1Cisp OworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVm KCdycHJfZXZfYWx0X3N0YWNrM19ncnAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAn UEFUVEVSTic7CisgICAgICAgICAgICAgICAgbGluZSAgICAgICAgICAgICAgICAgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoKGEgfCBiKSsgYyB8 IGQpIGUgfCBmKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIHwgQikrIEMgfCBEKSBFIHwg RikKKyAgICBERUZJTkUgQSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2 ID0gMiwKKyAgICAgICAgICAgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYg JSA2ID0gNQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmls dGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cg KGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoKGEg fCBiKSsgYyB8IGQpIGUgfCBmKQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDExIHBlYWssIDE3 NyB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNCBwZWFrLCAyMSB0b3RhbCwgNCBw cnVuZWQKKyAgIE5GQTogNiBtYXRjaGVkIChsZW4gMS8yLzEuNSksIDcgbWlzbWF0Y2hlZCAobGVu IDIvNC8zLjEpCisgICBORkE6IDAgYWJzb3JiZWQsIDMgc2tpcHBlZCAobGVuIDEvMS8xLjApCisg ICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MjAu MDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBBbHRlcm5hdGlvbiB0cmFpbGluZyBhIHBhcmVu LWxlc3Mgc2VxdWVuY2UgKGxhc3QgZWxlbWVudCBvZiBhIG5vbi1sYXN0CistLSBicmFuY2gsIG5v IHNhbWUtZGVwdGggc2libGluZyB0byBib3VuZCBpdCksIG5lc3RlZCB0aHJlZSBkZWVwCistLSBQ YXR0ZXJuOiAoQSAoQiAoQyB8IEQpIHwgRSkgfCBGKSAtIGVhY2ggaW5uZXIgYWx0ZXJuYXRpb24g aXMgYnJhbmNoLXRhaWwKK0NSRUFURSBWSUVXIHJwcl9ldl9hbHRfdGFpbDMgQVMKK1NFTEVDVCBj b3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSAoQiAoQyB8IEQpIHwgRSkgfCBGKQorICAgIERFRklORSBB IEFTIHYgJSA2ID0gMCwgQiBBUyB2ICUgNiA9IDEsIEMgQVMgdiAlIDYgPSAyLAorICAgICAgICAg ICBEIEFTIHYgJSA2ID0gMywgRSBBUyB2ICUgNiA9IDQsIEYgQVMgdiAlIDYgPSA1CispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXZfYWx0X3RhaWwzJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor ICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgKGIgKGMgfCBkKSB8IGUpIHwgZikgCiso MSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwg QlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIFBBVFRFUk4gKEEgKEIgKEMgfCBEKSB8IEUpIHwgRikKKyAgICBERUZJTkUg QSBBUyB2ICUgNiA9IDAsIEIgQVMgdiAlIDYgPSAxLCBDIEFTIHYgJSA2ID0gMiwKKyAgICAgICAg ICAgRCBBUyB2ICUgNiA9IDMsIEUgQVMgdiAlIDYgPSA0LCBGIEFTIHYgJSA2ID0gNQorKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIw LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIChiIChjIHwgZCkgfCBlKSB8 IGYpCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVt IFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNSBwZWFrLCA3NSB0b3RhbCwgMCBtZXJnZWQK KyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgMTEgcHJ1bmVkCisgICBORkE6IDYg bWF0Y2hlZCAobGVuIDEvMy8yLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwg MyBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRl X3NlcmllcyBzIChhY3R1YWwgcm93cz0yMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tIFNh bWUgYnJhbmNoLXRhaWwgYWx0ZXJuYXRpb24gbmVzdGVkIGZvdXIgZGVlcAorLS0gUGF0dGVybjog KEEgKEIgKEMgKEQgfCBFKSB8IEYpIHwgRykgfCBIKSAtIGJyYW5jaC10YWlsIGFsdGVybmF0aW9u IHg0CitDUkVBVEUgVklFVyBycHJfZXZfYWx0X3RhaWw0IEFTCitTRUxFQ1QgY291bnQoKikgT1ZF UiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IFBBVFRFUk4gKEEgKEIgKEMgKEQgfCBFKSB8IEYpIHwgRykgfCBIKQorICAgIERFRklORSBBIEFT IHYgJSA4ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMgdiAlIDggPSAyLCBEIEFTIHYgJSA4ID0g MywKKyAgICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAlIDggPSA1LCBHIEFTIHYgJSA4 ID0gNiwgSCBBUyB2ICUgOCA9IDcKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdf dG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfdGFpbDQnKSwgRSdcbicpKSBBUyBs aW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICAgICAgICAgIGxpbmUgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyAgIFBBVFRFUk4gKGEgKGIgKGMgKGQgfCBlKSB8IGYpIHwgZykgfCBoKSAKKygxIHJv dykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZG RVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3Vu dCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDIwKSBBUyBzKHYpCitXSU5ET1cg dyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgUEFUVEVSTiAoQSAoQiAoQyAoRCB8IEUpIHwgRikgfCBHKSB8IEgpCisgICAgREVG SU5FIEEgQVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUgOCA9IDIsIEQgQVMg diAlIDggPSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2ICUgOCA9IDUsIEcg QVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IChhIChiIChjIChkIHwgZSkgfCBmKSB8IGcpIHwgaCkKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiA1IHBlYWssIDc1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAzIHBlYWssIDIxIHRvdGFsLCAxNCBwcnVuZWQKKyAgIE5GQTogNCBtYXRjaGVkIChsZW4g MS80LzIuNSksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAyIHNraXBwZWQgKGxl biAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFj dHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gQSBuZXN0ZWQgYWx0ZXJu YXRpb24gdGFpbCBuZWlnaGJvdXJpbmcgYSBtdWx0aS1lbGVtZW50IHNlcXVlbmNlIGJyYW5jaDog dGhlCistLSBicmFuY2ggYm91bmRhcnkgbXVzdCBzcGxpdCAiLi4uYnJhbmNoLXRhaWwgQUxUIiBm cm9tIGEgcGxhaW4gIkcgQSIgc2VxdWVuY2UKKy0tIFBhdHRlcm46IChBIChCIChDIChEIHwgRSkg fCBGKSB8IEcgQSkgfCBIKSAtIHNlcSBicmFuY2ggYmVzaWRlIGFuIEFMVCB0YWlsCitDUkVBVEUg VklFVyBycHJfZXZfYWx0X3RhaWxfc2VxYnJhbmNoIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEEgKEIgKEMgKEQgfCBFKSB8IEYpIHwgRyBBKSB8IEgpCisgICAgREVGSU5FIEEgQVMg diAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwgQyBBUyB2ICUgOCA9IDIsIEQgQVMgdiAlIDggPSAz LAorICAgICAgICAgICBFIEFTIHYgJSA4ID0gNCwgRiBBUyB2ICUgOCA9IDUsIEcgQVMgdiAlIDgg PSA2LCBIIEFTIHYgJSA4ID0gNworKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190 b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2FsdF90YWlsX3NlcWJyYW5jaCcpLCBFJ1xu JykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgICAgICAgICAgICAg IGxpbmUgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgKGIgKGMgKGQgfCBlKSB8IGYpIHwgZyBh KSB8IGgpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4g KEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZG KQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMjApIEFT IHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIChCIChDIChEIHwgRSkgfCBGKSB8IEcg QSkgfCBIKQorICAgIERFRklORSBBIEFTIHYgJSA4ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMg diAlIDggPSAyLCBEIEFTIHYgJSA4ID0gMywKKyAgICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYg QVMgdiAlIDggPSA1LCBHIEFTIHYgJSA4ID0gNiwgSCBBUyB2ICUgOCA9IDcKKyk7Jyk7CisgICAg ICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0yMC4wMCBs b29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoYSAoYiAoYyAoZCB8IGUpIHwgZikgfCBn IGEpIHwgaCkKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1h eGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA1IHBlYWssIDc1IHRvdGFsLCAwIG1l cmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDIxIHRvdGFsLCAxNCBwcnVuZWQKKyAgIE5G QTogNCBtYXRjaGVkIChsZW4gMS80LzIuNSksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29y YmVkLCAyIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2Vu ZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKwor LS0gQSBuZXN0ZWQgYWx0ZXJuYXRpb24gdGhhdCBpcyBzaWJsaW5nLWJvdW5kZWQgYnkgYSB0cmFp bGluZyBzZXF1ZW5jZSBlbGVtZW50CistLSBhdCB0aGUgb3V0ZXIgbGV2ZWwgKHRoZSBBTFQgaXMg bm90IHRoZSBicmFuY2ggdGFpbDsgRyBmb2xsb3dzIGl0IGluLWJyYW5jaCkKKy0tIFBhdHRlcm46 ICgoQSAoQiAoQyB8IEQpIHwgRSkgfCBGKSBHIHwgSCkgLSBBTFQgYm91bmRlZCBieSBhIGZvbGxv d2luZyBlbGVtZW50CitDUkVBVEUgVklFVyBycHJfZXZfYWx0X21pZF9zZXF0YWlsIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAyMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKChBIChCIChDIHwgRCkgfCBFKSB8IEYpIEcgfCBIKQor ICAgIERFRklORSBBIEFTIHYgJSA4ID0gMCwgQiBBUyB2ICUgOCA9IDEsIEMgQVMgdiAlIDggPSAy LCBEIEFTIHYgJSA4ID0gMywKKyAgICAgICAgICAgRSBBUyB2ICUgOCA9IDQsIEYgQVMgdiAlIDgg PSA1LCBHIEFTIHYgJSA4ID0gNiwgSCBBUyB2ICUgOCA9IDcKKyk7CitTRUxFQ1QgbGluZSBGUk9N IHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9hbHRfbWlkX3Nl cXRhaWwnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAg ICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKChhIChiIChjIHwgZCkgfCBl KSB8IGYpIGcgfCBoKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDIwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgKEIgKEMgfCBEKSB8IEUp IHwgRikgRyB8IEgpCisgICAgREVGSU5FIEEgQVMgdiAlIDggPSAwLCBCIEFTIHYgJSA4ID0gMSwg QyBBUyB2ICUgOCA9IDIsIEQgQVMgdiAlIDggPSAzLAorICAgICAgICAgICBFIEFTIHYgJSA4ID0g NCwgRiBBUyB2ICUgOCA9IDUsIEcgQVMgdiAlIDggPSA2LCBIIEFTIHYgJSA4ID0gNworKTsnKTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTIw LjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46ICgoYSAoYiAoYyB8IGQpIHwgZSkg fCBmKSBnIHwgaCkKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkg IE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA2IHBlYWssIDExMyB0b3RhbCwg MCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCAyMSB0b3RhbCwgMTIgcHJ1bmVkCisg ICBORkE6IDQgbWF0Y2hlZCAobGVuIDEvMi8xLjUpLCAyIG1pc21hdGNoZWQgKGxlbiA0LzQvNC4w KQorICAgTkZBOiAwIGFic29yYmVkLCAyIHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1 bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTIwLjAwIGxvb3Bz PTEpCisoMTAgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBHcm91cCBQYXR0ZXJuIFRlc3RzCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFNpbXBsZSBncm91cAorQ1JFQVRFIFZJRVcgcnByX2V2X2dycF9zaW1wbGUgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoKEEgQikrKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7 CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYo J3Jwcl9ldl9ncnBfc2ltcGxlJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRF Uk4nOworICAgICAgICBsaW5lICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBB VFRFUk4gKChhIGIpKykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJwor RVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VN TUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCA0MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKChBIEIpKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIg QVMgdiAlIDIgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog KGEnIGInKSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBN YXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogNCBwZWFrLCA2MSB0b3RhbCwgMCBt ZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMyBwZWFrLCA0MSB0b3RhbCwgMCBwcnVuZWQKKyAgIE5G QTogMSBtYXRjaGVkIChsZW4gNDAvNDAvNDAuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAxOSBh YnNvcmJlZCAobGVuIDIvMi8yLjApLCAyMCBza2lwcGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz00MC4wMCBsb29w cz0xKQorKDEwIHJvd3MpCisKKy0tIEdyb3VwIHdpdGggYm91bmRlZCBxdWFudGlmaWVyCitDUkVB VEUgVklFVyBycHJfZXZfZ3JwX2JvdW5kZWQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQil7Miw0fSkKKyAgICBE RUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX2JvdW5k ZWQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAg bGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgo YSBiKXsyLDR9KSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitFWFBM QUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1NQVJZ IE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDQw KSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9X CisgICAgUEFUVEVSTiAoKEEgQil7Miw0fSkKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIg QVMgdiAlIDIgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjog KGEgYil7Miw0fQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAg TWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDQgcGVhaywgNTEgdG90YWwsIDAg bWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDMgcGVhaywgNDEgdG90YWwsIDUgcHJ1bmVkCisgICBO RkE6IDUgbWF0Y2hlZCAobGVuIDgvOC84LjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNv cmJlZCwgMzAgc2tpcHBlZCAobGVuIDEvMi8xLjUpCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQor CistLSBOZXN0ZWQgZ3JvdXBzCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX25lc3RlZCBBUworU0VM RUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOICgoKEEgQil7Mn0pKykKKyAgICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIg PSAwCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92 aWV3ZGVmKCdycHJfZXZfZ3JwX25lc3RlZCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ ICdQQVRURVJOJzsKKyAgICAgICAgICAgbGluZSAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgUEFUVEVSTiAoKChhIGIpezJ9KSspIAorKDEgcm93KQorCitTRUxFQ1Qg cnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NU UyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdwor RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgQil7Mn0pKykKKyAg ICBERUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOycpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9 MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogKChhJyBiJyl7Mn0nKSsiCisgICBOYXYgTWFyayBM b29rYmFjazogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAg TkZBIFN0YXRlczogNSBwZWFrLCA3NiB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czog NCBwZWFrLCA2MSB0b3RhbCwgMTUgcHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDYwLzYw LzYwLjApLCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTQgYWJzb3JiZWQgKGxlbiA0LzQvNC4wKSwg MzAgc2tpcHBlZCAobGVuIDEvMi8xLjUpCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBE ZWVwIG5lc3RpbmcgKDMrIGxldmVscykKK0NSRUFURSBWSUVXIHJwcl9ldl9ncnBfZGVlcCBBUwor U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNDApIEFTIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoKChBIHwgQikrKSspKykKKyAgICBERUZJTkUg QSBBUyB2ICUgMiA9IDAsIEIgQVMgdiAlIDIgPSAxCispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfZ3JwX2RlZXAnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAgICBsaW5lICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKCgo KGEgfCBiKSspKykrKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDQwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKCgoQSB8IEIpKykrKSspCisg ICAgREVGSU5FIEEgQVMgdiAlIDIgPSAwLCBCIEFTIHYgJSAyID0gMQorKTsnKTsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTQwLjAwIGxvb3Bz PTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IChhIHwgYikrCisgICBOYXYgTWFyayBMb29rYmFj azogMAorICAgU3RvcmFnZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0 YXRlczogNiBwZWFrLCAyNDMgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIgcGVh aywgNDEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDEgbWF0Y2hlZCAobGVuIDQwLzQwLzQwLjAp LCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMCBhYnNvcmJlZCwgMzkgc2tpcHBlZCAobGVuIDEvMS8x LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJv d3M9NDAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBCb3VuZGVkIHF1YW50aWZpZXIgb24g YWx0ZXJuYXRpb24KK0NSRUFURSBWSUVXIHJwcl9ldl9ncnBfYm91bmRlZF9hbHQgQVMKK1NFTEVD VCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKEEgfCBCKXsyLDN9IEMpCisgICAgREVGSU5FIEEgQVMg diAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7CitTRUxFQ1QgbGlu ZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9ncnBf Ym91bmRlZF9hbHQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7Cisg ICAgICAgICAgICBsaW5lICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgIFBBVFRFUk4gKChhIHwgYil7MiwzfSBjKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9l eHBsYWluX2ZpbHRlcignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZG LCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo KEEgfCBCKXsyLDN9IEMpCisgICAgREVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0g MSwgQyBBUyB2ICUgMyA9IDIKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9l eHBsYWluX2ZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg V2luZG93QWdnIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0 ZXJuOiAoYSB8IGIpezIsM30gYworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6 IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDggcGVhaywgMzIw IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDYxIHRvdGFsLCAyIHBy dW5lZAorICAgTkZBOiAxOSBtYXRjaGVkIChsZW4gMy8zLzMuMCksIDEgbWlzbWF0Y2hlZCAobGVu IDIvMi8yLjApCisgICBORkE6IDAgYWJzb3JiZWQsIDM4IHNraXBwZWQgKGxlbiAxLzIvMS41KQor ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTYw LjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gTmVzdGVkIGdyb3VwcyB3aXRoIHF1YW50aWZp ZXJzCitDUkVBVEUgVklFVyBycHJfZXZfZ3JwX25lc3RlZF9xdWFudCBBUworU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNjApIEFTIHModikKK1dJTkRPVyB3 IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBQQVRURVJOICgoKEEgQikrIEMpKikKKyAgICBERUZJTkUgQSBBUyB2ICUgMyA9IDAs IEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5u ZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X2dycF9uZXN0ZWRfcXVh bnQnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7CisgICAgICAgICAg IGxpbmUgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4g KCgoYSBiKSsgYykqKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRlcignCitF WFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZGLCBTVU1N QVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDYwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoKChBIEIpKyBDKSopCisgICAg REVGSU5FIEEgQVMgdiAlIDMgPSAwLCBCIEFTIHYgJSAzID0gMSwgQyBBUyB2ICUgMyA9IDIKKyk7 Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAg ICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93 cz02MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiAoKGEnIGInKSsiIGMpKgor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDkgcGVhaywgMTc4IHRvdGFsLCAwIG1lcmdlZAorICAg TkZBIENvbnRleHRzOiA0IHBlYWssIDYxIHRvdGFsLCAyMCBwcnVuZWQKKyAgIE5GQTogMyBtYXRj aGVkIChsZW4gMC81Ny8xOS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAgYWJzb3JiZWQsIDM3 IHNraXBwZWQgKGxlbiAxLzMvMi4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVf c2VyaWVzIHMgKGFjdHVhbCByb3dzPTYwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gUGFy dGlhbCBuZXN0ZWQgcXVhbnRpZmljYXRpb24KK0NSRUFURSBWSUVXIHJwcl9ldl9ncnBfcGFydGlh bF9xdWFudCBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMo MSwgNjApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOICgoQSAoQiBDKSspKikKKyAg ICBERUZJTkUgQSBBUyB2ICUgMyA9IDAsIEIgQVMgdiAlIDMgPSAxLCBDIEFTIHYgJSAzID0gMgor KTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2Rl ZigncnByX2V2X2dycF9wYXJ0aWFsX3F1YW50JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5l IH4gJ1BBVFRFUk4nOworICAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICBQQVRURVJOICgoYSAoYiBjKSspKikgCisoMSByb3cpCisKK1NFTEVD VCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENP U1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA2MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKChBIChCIEMpKykqKQorICAgIERFRklORSBBIEFTIHYgJSAzID0gMCwgQiBBUyB2ICUg MyA9IDEsIEMgQVMgdiAlIDMgPSAyCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBy cHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9NjAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBB UyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogKGEgKGIgYykrKSoKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdl OiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiA3IHBlYWssIDE2 MCB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogNCBwZWFrLCA2MSB0b3RhbCwgMjAg cHJ1bmVkCisgICBORkE6IDMgbWF0Y2hlZCAobGVuIDAvNTcvMTkuMCksIDAgbWlzbWF0Y2hlZAor ICAgTkZBOiAwIGFic29yYmVkLCAzNyBza2lwcGVkIChsZW4gMS8zLzIuMCkKKyAgIC0+ICBGdW5j dGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1YWwgcm93cz02MC4wMCBsb29wcz0x KQorKDEwIHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gV2luZG93IEZ1bmN0aW9uIENvbWJpbmF0aW9ucwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBjb3VudCgqKSB3aXRoIHBhdHRlcm4KK0NSRUFURSBWSUVXIHJwcl9ldl93Zm5f Y291bnQgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFT IHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X3dmbl9jb3VudCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUg bGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmls dGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBP RkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+ IDAsIEIgQVMgdiAlIDUgPSAwCispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJf ZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogYSsiIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkg IE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVzOiAzIHBlYWssIDU1IHRvdGFsLCAw IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDMxIHRvdGFsLCAwIHBydW5lZAorICAg TkZBOiA2IG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDE4IGFi c29yYmVkIChsZW4gMS8xLzEuMCksIDYgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVu Y3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9 MSkKKygxMCByb3dzKQorCistLSBmaXJzdF92YWx1ZSB3aXRoIHBhdHRlcm4KK0NSRUFURSBWSUVX IHJwcl9ldl93Zm5fZmlyc3RfdmFsdWUgQVMKK1NFTEVDVCBmaXJzdF92YWx1ZSh2KSBPVkVSIHcK K0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJ TkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00g dW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X3dmbl9maXJzdF92 YWx1ZScpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBs aW5lICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEg cm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGZp cnN0X3ZhbHVlKHYpIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBKyBCKQorICAgIERFRklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCisp OycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJv d3M9MzAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiAzIHBlYWssIDU1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAyIHBlYWssIDMxIHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiA2IG1hdGNoZWQgKGxlbiA1 LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDE4IGFic29yYmVkIChsZW4gMS8xLzEuMCks IDYgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSBs YXN0X3ZhbHVlIHdpdGggcGF0dGVybgorQ1JFQVRFIFZJRVcgcnByX2V2X3dmbl9sYXN0X3ZhbHVl IEFTCitTRUxFQ1QgbGFzdF92YWx1ZSh2KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEs IDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBBUyB2ICUgNSA8PiAwLCBCIEFT IHYgJSA1ID0gMAorKTsKK1NFTEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShw Z19nZXRfdmlld2RlZigncnByX2V2X3dmbl9sYXN0X3ZhbHVlJyksIEUnXG4nKSkgQVMgbGluZSBX SEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFp bl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElN SU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QgbGFzdF92YWx1ZSh2KSBPVkVSIHcKK0ZST00g Z2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUgQSBB UyB2ICUgNSA8PiAwLCBCIEFTIHYgJSA1ID0gMAorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTMwLjAwIGxvb3BzPTEpCisgICBXaW5k b3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgIFBhdHRlcm46IGErIiBiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgU3RvcmFn ZTogTWVtb3J5ICBNYXhpbXVtIFN0b3JhZ2U6IE5rQgorICAgTkZBIFN0YXRlczogMyBwZWFrLCA1 NSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czogMiBwZWFrLCAzMSB0b3RhbCwgMCBw cnVuZWQKKyAgIE5GQTogNiBtYXRjaGVkIChsZW4gNS81LzUuMCksIDAgbWlzbWF0Y2hlZAorICAg TkZBOiAxOCBhYnNvcmJlZCAobGVuIDEvMS8xLjApLCA2IHNraXBwZWQgKGxlbiAxLzEvMS4wKQor ICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTMw LjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gTXVsdGlwbGUgd2luZG93IGZ1bmN0aW9ucwor Q1JFQVRFIFZJRVcgcnByX2V2X3dmbl9tdWx0aSBBUworU0VMRUNUCisgICAgY291bnQoKikgT1ZF UiB3LAorICAgIGZpcnN0X3ZhbHVlKHYpIE9WRVIgdywKKyAgICBsYXN0X3ZhbHVlKHYpIE9WRVIg dworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERF RklORSBBIEFTIHYgJSA1IDw+IDAsIEIgQVMgdiAlIDUgPSAwCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfd2ZuX211bHRp JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOworICAgICAgIGxpbmUg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVSTiAoYSsgYikgCisoMSByb3cp CisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQTEFJTiAoQU5BTFlaRSwgQlVGRkVS UyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFSWSBPRkYpCitTRUxFQ1QKKyAgICBj b3VudCgqKSBPVkVSIHcsCisgICAgZmlyc3RfdmFsdWUodikgT1ZFUiB3LAorICAgIGxhc3RfdmFs dWUodikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IEIpCisgICAgREVGSU5FIEEgQVMgdiAlIDUgPD4gMCwgQiBBUyB2ICUgNSA9IDAKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0zMC4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgorICAgTmF2IE1hcmsgTG9v a2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5G QSBTdGF0ZXM6IDMgcGVhaywgNTUgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29udGV4dHM6IDIg cGVhaywgMzEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDYgbWF0Y2hlZCAobGVuIDUvNS81LjAp LCAwIG1pc21hdGNoZWQKKyAgIE5GQTogMTggYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNiBza2lw cGVkIChsZW4gMS8xLzEuMCkKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nlcmll cyBzIChhY3R1YWwgcm93cz0zMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g REVGSU5FIEV4cHJlc3Npb24gVmFyaWF0aW9ucworLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDb21wbGV4IGJvb2xlYW4g ZXhwcmVzc2lvbnMKK0NSRUFURSBWSUVXIHJwcl9ldl9kZWZfY29tcGxleF9ib29sIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRF Uk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgKHYgJSA1IDw+IDApIEFORCAodiAl IDMgPD4gMCksCisgICAgICAgIEIgQVMgKHYgJSA1ID0gMCkgT1IgKHYgJSAzID0gMCkKKyk7CitT RUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jw cl9ldl9kZWZfY29tcGxleF9ib29sJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BB VFRFUk4nOworICAgICAgIGxpbmUgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFU VEVSTiAoYSsgYikgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1 MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgKHYgJSA1IDw+ IDApIEFORCAodiAlIDMgPD4gMCksCisgICAgICAgIEIgQVMgKHYgJSA1ID0gMCkgT1IgKHYgJSAz ID0gMCkKKyk7Jyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRl ciAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChh Y3R1YWwgcm93cz01MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIgYgor ICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9y YWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgNzggdG90YWwsIDAgbWVyZ2VkCisgICBO RkEgQ29udGV4dHM6IDIgcGVhaywgNTEgdG90YWwsIDYgcHJ1bmVkCisgICBORkE6IDE3IG1hdGNo ZWQgKGxlbiAyLzMvMi42KSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDEwIGFic29yYmVkIChsZW4g MS8xLzEuMCksIDE3IHNraXBwZWQgKGxlbiAxLzEvMS4wKQorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMgKGFjdHVhbCByb3dzPTUwLjAwIGxvb3BzPTEpCisoMTAgcm93 cykKKworLS0gVXNpbmcgUFJFViBmdW5jdGlvbgorQ1JFQVRFIFZJRVcgcnByX2V2X2RlZl9wcmV2 IEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMCkg QVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVwor ICAgIFBBVFRFUk4gKFMgVSsgRCspCisgICAgREVGSU5FCisgICAgICAgIFMgQVMgVFJVRSwKKyAg ICAgICAgVSBBUyB2ID4gUFJFVih2KSwKKyAgICAgICAgRCBBUyB2IDwgUFJFVih2KQorKTsKK1NF TEVDVCBsaW5lIEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnBy X2V2X2RlZl9wcmV2JyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk4nOwor ICAgICAgICAgbGluZSAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgUEFUVEVS TiAocyB1KyBkKykgCisoMSByb3cpCisKK1NFTEVDVCBycHJfZXhwbGFpbl9maWx0ZXIoJworRVhQ TEFJTiAoQU5BTFlaRSwgQlVGRkVSUyBPRkYsIENPU1RTIE9GRiwgVElNSU5HIE9GRiwgU1VNTUFS WSBPRkYpCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAz MCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJP VworICAgIFBBVFRFUk4gKFMgVSsgRCspCisgICAgREVGSU5FCisgICAgICAgIFMgQVMgVFJVRSwK KyAgICAgICAgVSBBUyB2ID4gUFJFVih2KSwKKyAgICAgICAgRCBBUyB2IDwgUFJFVih2KQorKTsn KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5fZmlsdGVyICAgICAgICAg ICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dz PTMwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IHMgdSsgZCsKKyAgIE5hdiBN YXJrIExvb2tiYWNrOiAxCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtC CisgICBORkEgU3RhdGVzOiA2MCBwZWFrLCA0NjYgdG90YWwsIDAgbWVyZ2VkCisgICBORkEgQ29u dGV4dHM6IDMxIHBlYWssIDMxIHRvdGFsLCAxIHBydW5lZAorICAgTkZBOiAwIG1hdGNoZWQsIDI5 IG1pc21hdGNoZWQgKGxlbiAyLzMwLzE2LjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5l cmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKyg5IHJvd3MpCisKKy0t IFVzaW5nIDEtYXJnIFBSRVYgKGltcGxpY2l0IG9mZnNldCAxKQorQ1JFQVRFIFZJRVcgcnByX2V2 X25hdl9wcmV2MSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1Qg TEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTIFRS VUUsCisgICAgICAgIEIgQVMgdiA+IFBSRVYodikKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVz dChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9uYXZfcHJldjEnKSwgRSdc bicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJTkV8UFJFVnxORVhUJzsKKyAg ICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBB VFRFUk4gKGEgYispIAorICAgREVGSU5FCisgICBiIEFTICh2ID4gUFJFVih2KSkgKTsKKygzIHJv d3MpCisKKy0tIFVzaW5nIDEtYXJnIE5FWFQgKGltcGxpY2l0IG9mZnNldCAxKQorQ1JFQVRFIFZJ RVcgcnByX2V2X25hdl9uZXh0MSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5l cmF0ZV9zZXJpZXMoMSwgMzApIEFTIHModikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAg ICBBIEFTIFRSVUUsCisgICAgICAgIEIgQVMgdiA8IE5FWFQodikKKyk7CitTRUxFQ1QgbGluZSBG Uk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9uYXZfbmV4 dDEnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTnxERUZJTkV8UFJFVnxO RVhUJzsKKyAgICAgICAgICBsaW5lICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgIFBBVFRFUk4gKGEgYispIAorICAgREVGSU5FCisgICBiIEFTICh2IDwgTkVYVCh2KSkg KTsKKygzIHJvd3MpCisKKy0tIFVzaW5nIDItYXJnIFBSRVYgKGV4cGxpY2l0IG9mZnNldCkKK0NS RUFURSBWSUVXIHJwcl9ldl9uYXZfcHJldjIgQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZS T00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyBUUlVFLAorICAgICAgICBCIEFTIHYgPiBQUkVWKHYsIDIpCispOworU0VM RUNUIGxpbmUgRlJPTSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJf ZXZfbmF2X3ByZXYyJyksIEUnXG4nKSkgQVMgbGluZSBXSEVSRSBsaW5lIH4gJ1BBVFRFUk58REVG SU5FfFBSRVZ8TkVYVCc7CisgICAgICAgICAgICAgICAgIGxpbmUgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIFBBVFRFUk4gKGEgYisp IAorICAgREVGSU5FCisgICBiIEFTICh2ID4gUFJFVih2LCAoMik6OmJpZ2ludCkpICk7CisoMyBy b3dzKQorCistLSBVc2luZyAyLWFyZyBORVhUIChleHBsaWNpdCBvZmZzZXQpCitDUkVBVEUgVklF VyBycHJfZXZfbmF2X25leHQyIEFTCitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVy YXRlX3NlcmllcygxLCAzMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgVFJVRSwKKyAgICAgICAgQiBBUyB2IDwgTkVYVCh2LCAyKQorKTsKK1NFTEVDVCBsaW5l IEZST00gdW5uZXN0KHN0cmluZ190b19hcnJheShwZ19nZXRfdmlld2RlZigncnByX2V2X25hdl9u ZXh0MicpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOfERFRklORXxQUkVW fE5FWFQnOworICAgICAgICAgICAgICAgICBsaW5lICAgICAgICAgICAgICAgICAKKy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIrKSAKKyAgIERF RklORQorICAgYiBBUyAodiA8IE5FWFQodiwgKDIpOjpiaWdpbnQpKSApOworKDMgcm93cykKKwor LS0gVXNpbmcgTlVMTCBjb21wYXJpc29ucworQ1JFQVRFIFZJRVcgcnByX2V2X2RlZl9udWxsIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NICgKKyAgICBTRUxFQ1QgQ0FTRSBXSEVOIHYg JSA1ID0gMCBUSEVOIE5VTEwgRUxTRSB2IEVORCBBUyB2CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwgMzApIHYKKykgdAorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FIEEgQVMgdiBJUyBOT1QgTlVM TCwgQiBBUyB2IElTIE5VTEwKKyk7CitTRUxFQ1QgbGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9f YXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9kZWZfbnVsbCcpLCBFJ1xuJykpIEFTIGxpbmUg V0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICBsaW5lICAgICAgICAKKy0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgIFBBVFRFUk4gKGErIGIpIAorKDEgcm93KQorCitTRUxFQ1QgcnByX2V4cGxh aW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJVRkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJ TUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSAoCisg ICAgU0VMRUNUIENBU0UgV0hFTiB2ICUgNSA9IDAgVEhFTiBOVUxMIEVMU0UgdiBFTkQgQVMgdgor ICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwKSB2CispIHQKK1dJTkRPVyB3IEFTICgKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBB RlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERF RklORSBBIEFTIHYgSVMgTk9UIE5VTEwsIEIgQVMgdiBJUyBOVUxMCispOycpOworICAgICAgICAg ICAgICAgICAgICAgICAgICBycHJfZXhwbGFpbl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZyAoYWN0dWFsIHJvd3M9MzAuMDAgbG9vcHM9 MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiIGIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAw CisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBORkEgU3RhdGVz OiAzIHBlYWssIDU1IHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAyIHBlYWssIDMx IHRvdGFsLCAwIHBydW5lZAorICAgTkZBOiA2IG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNt YXRjaGVkCisgICBORkE6IDE4IGFic29yYmVkIChsZW4gMS8xLzEuMCksIDYgc2tpcHBlZCAobGVu IDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgdiAoYWN0 dWFsIHJvd3M9MzAuMDAgbG9vcHM9MSkKKygxMCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIExhcmdlIFNj YWxlIFN0YXRpc3RpY3MgVmVyaWZpY2F0aW9uCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIDUwMCByb3dzIC0gdmVyaWZ5 IHN0YXRpc3RpY3Mgc2NhbGUgY29ycmVjdGx5CitDUkVBVEUgVklFVyBycHJfZXZfc2NhbGVfNTAw cm93cyBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwg NTAwKSBBUyBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQSsgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8IDcsIEIg QVMgdiAlIDEwID0gNywgQyBBUyB2ICUgMTAgPSA4CispOworU0VMRUNUIGxpbmUgRlJPTSB1bm5l c3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc2NhbGVfNTAwcm93cycp LCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAgICAgbGluZSAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhKyBiIGMpIAorKDEg cm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSsgQiBDKQorICAgIERFRklORSBBIEFTIHYgJSAxMCA8IDcsIEIgQVMgdiAlIDEwID0gNywgQyBB UyB2ICUgMTAgPSA4CispOycpOworICAgICAgICAgICAgICAgICAgICAgICAgICBycHJfZXhwbGFp bl9maWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2lu ZG93QWdnIChhY3R1YWwgcm93cz01MDAuMDAgbG9vcHM9MSkKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogYSsiIGIgYworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAg TWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDMgcGVhaywgODUxIHRvdGFsLCAw IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDUwMSB0b3RhbCwgMTAxIHBydW5lZAor ICAgTkZBOiA1MCBtYXRjaGVkIChsZW4gOC85LzkuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAy OTkgYWJzb3JiZWQgKGxlbiAxLzEvMS4wKSwgNTAgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAt PiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAwLjAw IGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gSGlnaCBtYXRjaCBjb3VudCBzY2VuYXJpbworQ1JF QVRFIFZJRVcgcnByX2V2X3NjYWxlX2hpZ2hfbWF0Y2ggQVMKK1NFTEVDVCBjb3VudCgqKSBPVkVS IHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAor ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg IEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBE RUZJTkUgQSBBUyB2ICUgMiA9IDEsIEIgQVMgdiAlIDIgPSAwCispOworU0VMRUNUIGxpbmUgRlJP TSB1bm5lc3Qoc3RyaW5nX3RvX2FycmF5KHBnX2dldF92aWV3ZGVmKCdycHJfZXZfc2NhbGVfaGln aF9tYXRjaCcpLCBFJ1xuJykpIEFTIGxpbmUgV0hFUkUgbGluZSB+ICdQQVRURVJOJzsKKyAgICAg ICBsaW5lICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tCisgICBQQVRURVJOIChhIGIpIAorKDEg cm93KQorCitTRUxFQ1QgcnByX2V4cGxhaW5fZmlsdGVyKCcKK0VYUExBSU4gKEFOQUxZWkUsIEJV RkZFUlMgT0ZGLCBDT1NUUyBPRkYsIFRJTUlORyBPRkYsIFNVTU1BUlkgT0ZGKQorU0VMRUNUIGNv dW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgNTAwKSBBUyBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo QSBCKQorICAgIERFRklORSBBIEFTIHYgJSAyID0gMSwgQiBBUyB2ICUgMiA9IDAKKyk7Jyk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgIHJwcl9leHBsYWluX2ZpbHRlciAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cgKGFjdHVhbCByb3dzPTUw MC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIKKyAgIE5hdiBNYXJrIExv b2tiYWNrOiAwCisgICBTdG9yYWdlOiBNZW1vcnkgIE1heGltdW0gU3RvcmFnZTogTmtCCisgICBO RkEgU3RhdGVzOiAyIHBlYWssIDUwMSB0b3RhbCwgMCBtZXJnZWQKKyAgIE5GQSBDb250ZXh0czog MiBwZWFrLCA1MDEgdG90YWwsIDAgcHJ1bmVkCisgICBORkE6IDI1MCBtYXRjaGVkIChsZW4gMi8y LzIuMCksIDAgbWlzbWF0Y2hlZAorICAgTkZBOiAwIGFic29yYmVkLCAyNTAgc2tpcHBlZCAobGVu IDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0 dWFsIHJvd3M9NTAwLjAwIGxvb3BzPTEpCisoMTAgcm93cykKKworLS0gSGlnaCBza2lwIGNvdW50 IHNjZW5hcmlvCitDUkVBVEUgVklFVyBycHJfZXZfc2NhbGVfaGlnaF9za2lwIEFTCitTRUxFQ1Qg Y291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCA1MDApIEFTIHModikKK1dJ TkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO IChBIEIgQyBEIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgdiAlIDEwMCA9IDEsCisgICAg ICAgIEIgQVMgdiAlIDEwMCA9IDIsCisgICAgICAgIEMgQVMgdiAlIDEwMCA9IDMsCisgICAgICAg IEQgQVMgdiAlIDEwMCA9IDQsCisgICAgICAgIEUgQVMgdiAlIDEwMCA9IDUKKyk7CitTRUxFQ1Qg bGluZSBGUk9NIHVubmVzdChzdHJpbmdfdG9fYXJyYXkocGdfZ2V0X3ZpZXdkZWYoJ3Jwcl9ldl9z Y2FsZV9oaWdoX3NraXAnKSwgRSdcbicpKSBBUyBsaW5lIFdIRVJFIGxpbmUgfiAnUEFUVEVSTic7 CisgICAgICAgICAgbGluZSAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg UEFUVEVSTiAoYSBiIGMgZCBlKSAKKygxIHJvdykKKworU0VMRUNUIHJwcl9leHBsYWluX2ZpbHRl cignCitFWFBMQUlOIChBTkFMWVpFLCBCVUZGRVJTIE9GRiwgQ09TVFMgT0ZGLCBUSU1JTkcgT0ZG LCBTVU1NQVJZIE9GRikKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2Vy aWVzKDEsIDUwMCkgQVMgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFT VCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSkKKyAgICBERUZJTkUKKyAgICAgICAg QSBBUyB2ICUgMTAwID0gMSwKKyAgICAgICAgQiBBUyB2ICUgMTAwID0gMiwKKyAgICAgICAgQyBB UyB2ICUgMTAwID0gMywKKyAgICAgICAgRCBBUyB2ICUgMTAwID0gNCwKKyAgICAgICAgRSBBUyB2 ICUgMTAwID0gNQorKTsnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcnByX2V4cGxhaW5f ZmlsdGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZyAoYWN0dWFsIHJvd3M9NTAwLjAwIGxvb3BzPTEpCisgICBXaW5kb3c6IHcgQVMgKFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46 IGEgYiBjIGQgZQorICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIFN0b3JhZ2U6IE1lbW9yeSAg TWF4aW11bSBTdG9yYWdlOiBOa0IKKyAgIE5GQSBTdGF0ZXM6IDIgcGVhaywgNTAxIHRvdGFsLCAw IG1lcmdlZAorICAgTkZBIENvbnRleHRzOiAzIHBlYWssIDUwMSB0b3RhbCwgNDkwIHBydW5lZAor ICAgTkZBOiA1IG1hdGNoZWQgKGxlbiA1LzUvNS4wKSwgMCBtaXNtYXRjaGVkCisgICBORkE6IDAg YWJzb3JiZWQsIDUgc2tpcHBlZCAobGVuIDEvMS8xLjApCisgICAtPiAgRnVuY3Rpb24gU2NhbiBv biBnZW5lcmF0ZV9zZXJpZXMgcyAoYWN0dWFsIHJvd3M9NTAwLjAwIGxvb3BzPTEpCisoMTAgcm93 cykKKworLS0KKy0tIFBsYW5uZXIgb3B0aW1pemF0aW9uOiBvcHRpbWl6ZV93aW5kb3dfY2xhdXNl cyBtdXN0IG5vdCBhbHRlciBSUFIgZnJhbWUKKy0tCistLSBvcHRpbWl6ZV93aW5kb3dfY2xhdXNl cygpIHJlcGxhY2VzIGZyYW1lIG9wdGlvbnMgdmlhIHByb3N1cHBvcnQgZnVuY3Rpb25zLgorLS0g QWZmZWN0ZWQgZnVuY3Rpb25zOiByb3dfbnVtYmVyLCByYW5rLCBkZW5zZV9yYW5rLCBwZXJjZW50 X3JhbmssIGN1bWVfZGlzdCwKKy0tIG50aWxlLiAgQWxsIHdvdWxkIGNoYW5nZSB0aGUgZnJhbWUg dG8gUk9XUyBVTkJPVU5ERUQgUFJFQ0VESU5HLCBicmVha2luZworLS0gUlBSJ3MgcmVxdWlyZWQg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HLgorLS0gVGVz dCB3aXRoIHJvd19udW1iZXIoKSBhcyByZXByZXNlbnRhdGl2ZSBjYXNlLgorLS0KKy0tIFdpdGhv dXQgUlBSOiByb3dfbnVtYmVyKCkgZnJhbWUgaXMgb3B0aW1pemVkIHRvIFJPV1MgVU5CT1VOREVE IFBSRUNFRElORworQ1JFQVRFIFZJRVcgcnByX2V2X29wdF9ub19ycHIgQVMKK1NFTEVDVCByb3df bnVtYmVyKCkgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgQVMgcyh2KQorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIHYKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyk7CitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gcnByX2V2X29wdF9ub19ycHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9u IHJwcl9ldl9vcHRfbm9fcnByCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcg QVMgKE9SREVSIEJZIHMudiBST1dTIFVOQk9VTkRFRCBQUkVDRURJTkcpCisgICAgICAgICAtPiAg U29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHMudgorICAgICAgICAgICAgICAgLT4gIEZ1 bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg2IHJvd3MpCisKKy0tIFdpdGggUlBS OiBmcmFtZSBtdXN0IHJlbWFpbiBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKK0NSRUFURSBWSUVXIHJwcl9ldl9vcHRfd2l0aF9ycHIgQVMKK1NFTEVDVCBy b3dfbnVtYmVyKCkgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgQVMgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIHYKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORQorICAgICAgICBCIEFTIHYgPiBQ UkVWKHYpCispOworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIHJwcl9ldl9vcHRf d2l0aF9ycHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIHJwcl9ldl9vcHRfd2l0aF9ycHIKKyAg IC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgcy52IFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBh dHRlcm46IGEgYisKKyAgICAgICAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAgICAgICAtPiAg U29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHMudgorICAgICAgICAgICAgICAgLT4gIEZ1 bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg4IHJvd3MpCisKKy0tCistLSBQbGFu bmVyIG9wdGltaXphdGlvbjogbm9uLVJQUiBhbmQgUlBSIHdpbmRvd3MgdGhhdCBzaGFyZSB0aGUg c2FtZSBiYXNlIGZyYW1lCistLSBhZnRlciBmcmFtZSBvcHRpbWl6YXRpb24gYXJlIGtlcHQgYXMg c2VwYXJhdGUgV2luZG93QWdnIG5vZGVzLgorLS0KK0NSRUFURSBWSUVXIHJwcl9ldl9vcHRfbWl4 ZWQgQVMKK1NFTEVDVAorICAgIHJvd19udW1iZXIoKSBPVkVSIHdfbm9ybWFsIEFTIHJuX25vcm1h bCwKKyAgICByb3dfbnVtYmVyKCkgT1ZFUiB3X3JwciBBUyBybl9ycHIKK0ZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDUpIEFTIHModikKK1dJTkRPVworICAgIHdfbm9ybWFsIEFTIChPUkRFUiBCWSB2 IFJBTkdFIEJFVFdFRU4gVU5CT1VOREVEIFBSRUNFRElORyBBTkQgQ1VSUkVOVCBST1cpLAorICAg IHdfcnByIEFTICgKKyAgICAgICAgT1JERVIgQlkgdgorICAgICAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisg ICAgICAgIERFRklORSBBIEFTIHYgPiAxCisgICAgKTsKK0VYUExBSU4gKENPU1RTIE9GRikgU0VM RUNUICogRlJPTSBycHJfZXZfb3B0X21peGVkOworICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2Fu IG9uIHJwcl9ldl9vcHRfbWl4ZWQKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzog d19ycHIgQVMgKE9SREVSIEJZIHMudiBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICAgICAgICBQYXR0ZXJuOiBhKyIKKyAgICAgICAgIE5hdiBNYXJr IExvb2tiYWNrOiAwCisgICAgICAgICAtPiAgV2luZG93QWdnCisgICAgICAgICAgICAgICBXaW5k b3c6IHdfbm9ybWFsIEFTIChPUkRFUiBCWSBzLnYgUk9XUyBVTkJPVU5ERUQgUFJFQ0VESU5HKQor ICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBz LnYKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBzCisoMTAgcm93cykKKworLS0KKy0tIFBsYW5uZXIgb3B0aW1pemF0aW9uOiBmaW5kX3dp bmRvd19ydW5fY29uZGl0aW9ucyBtdXN0IG5vdCBwdXNoIGRvd24KKy0tIFJQUiB3aW5kb3cgZnVu Y3Rpb24gcmVzdWx0cyBhcyBSdW4gQ29uZGl0aW9ucy4KKy0tCistLSBmaW5kX3dpbmRvd19ydW5f Y29uZGl0aW9ucygpIHB1c2hlcyBXSEVSRSBmaWx0ZXJzIG9uIG1vbm90b25pYyB3aW5kb3cKKy0t IGZ1bmN0aW9ucyBpbnRvIFdpbmRvd0FnZyBhcyBSdW4gQ29uZGl0aW9ucyBmb3IgZWFybHkgdGVy bWluYXRpb24uCistLSBXaXRoIFJQUidzIHJlcXVpcmVkIGZyYW1lIChST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRAorLS0gRk9MTE9XSU5HKSwgdGhlIG1vbm90b25pYyBkaXJl Y3Rpb24gZGV0ZXJtaW5lcyB3aGljaCBvcGVyYXRvcnMgdHJpZ2dlcgorLS0gUnVuIENvbmRpdGlv biBwdXNoZG93bjoKKy0tICAgSU5DUkVBU0lORyAoPD0pOiByb3dfbnVtYmVyLCByYW5rLCBkZW5z ZV9yYW5rLCBwZXJjZW50X3JhbmssCistLSAgICAgICAgICAgICAgICAgICAgY3VtZV9kaXN0LCBu dGlsZQorLS0gICBERUNSRUFTSU5HICg+KTogIGNvdW50KCopICh2aWEgaW50OGluYywgRU5EX1VO Qk9VTkRFRF9GT0xMT1dJTkcpCistLSBSUFIgd2luZG93IGZ1bmN0aW9uIHJlc3VsdHMgYXJlIG1h dGNoLWRlcGVuZGVudCwgbm90IG1vbm90b25pYy4KKy0tIFRlc3Qgd2l0aCBjb3VudCgqKSA+IDAg YXMgcmVwcmVzZW50YXRpdmUgY2FzZS4KKy0tCistLSBXaXRob3V0IFJQUjogY291bnQoKikgPiAw IGlzIHB1c2hlZCBkb3duIGFzIFJ1biBDb25kaXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NF TEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJP TSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFTIHModikKKyAgICBXSU5ET1cgdyBBUyAoCisgICAg ICAgIE9SREVSIEJZIHYKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgKQorKSB0IFdIRVJFIGNudCA+IDA7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVy eSBTY2FuIG9uIHQKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoT1JE RVIgQlkgcy52IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RykKKyAgICAgICAgIFJ1biBDb25kaXRpb246IChjb3VudCgqKSBPVkVSIHcgPiAwKQorICAgICAg ICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgIFNvcnQgS2V5OiBzLnYKKyAgICAgICAgICAgICAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNyByb3dzKQorCistLSBX aXRoIFJQUjogY291bnQoKikgPiAwIG11c3Qgbm90IGJlIHB1c2hlZCBkb3duIGFzIFJ1biBDb25k aXRpb24KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCAqIEZST00gKAorICAgIFNFTEVDVCBj b3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTApIEFT IHModikKKyAgICBXSU5ET1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIHYKKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIEFG VEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgICAgICBQQVRURVJOIChBIEIrKQorICAg ICAgICBERUZJTkUKKyAgICAgICAgICAgIEIgQVMgdiA+IFBSRVYodikKKyAgICApCispIHQgV0hF UkUgY250ID4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdAorICAgRmlsdGVyOiAodC5jbnQg PiAwKQorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBz LnYgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg ICAgICAgUGF0dGVybjogYSBiKworICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgICAg ICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogcy52CisgICAgICAgICAgICAg ICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDkgcm93cykKKworLS0g PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLSBOYXYgTWFyayBMb29rYmFjay9Mb29rYWhlYWQgVGVzdHMKKy0tIFZlcmlmaWVzIHBs YW5uZXItY29tcHV0ZWQgbmF2aWdhdGlvbiBvZmZzZXRzIGZvciB0dXBsZXN0b3JlIHRyaW0uCist LSBMb29rYmFjazogaG93IGZhciBiYWNrIGZyb20gY3VycmVudHBvcyAoUFJFViwgTEFTVCwgY29t cG91bmQgUFJFVl9MQVNUL05FWFRfTEFTVCkuCistLSBMb29rYWhlYWQ6IGhvdyBmYXIgZm9yd2Fy ZCBmcm9tIG1hdGNoX3N0YXJ0IChGSVJTVCwgY29tcG91bmQgUFJFVl9GSVJTVC9ORVhUX0ZJUlNU KS4KKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gUHJlcGFyZSBzdGF0ZW1lbnQgZm9yIGhvc3QgdmFyaWFibGUgb2Zmc2V0 IHRlc3QgYmVsb3cKK1BSRVBBUkUgcnByX25hdl9vZmZzZXRfcHJlcChpbnQ4KSBBUworU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgPiBQUkVWKHYsICQxKQor KTsKKy0tIE5vIG5hdmlnYXRpb24gZnVuY3Rpb246IG9mZnNldCAwCitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyB2ID4gMAor KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0 dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgLT4gIEZ1bmN0aW9uIFNjYW4g b24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg1IHJvd3MpCisKKy0tIE5FWFQgb25seTogbm8gYmFja3dh cmQgbmF2aWdhdGlvbiwgb2Zmc2V0IDAKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50 KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMg KAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgPCBORVhUKHYpCispOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIK KyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0 ZV9zZXJpZXMgcworKDUgcm93cykKKworLS0gUFJFVih2KTogaW1wbGljaXQgb2Zmc2V0IDEKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHYgPiBQUkVWKHYpCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0Fn ZworICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisg ICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykKKworLS0g UFJFVih2LCAzKTogZXhwbGljaXQgY29uc3RhbnQgb2Zmc2V0IDMKK0VYUExBSU4gKENPU1RTIE9G RikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIHYgPiBQUkVW KHYsIDMpCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93 OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAzCisgICAtPiAgRnVuY3Rp b24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykKKworLS0gVHdvIFBSRVYgd2l0 aCBkaWZmZXJlbnQgb2Zmc2V0czogbWF4KDEsIDUpID0gNQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBT RUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitX SU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVih2LCAxKSA8 IHYgQU5EIFBSRVYodiwgNSkgPCB2CispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRv d0FnZworICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiA1 CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykKKwor LS0gSG9zdCB2YXJpYWJsZSBvZmZzZXQ6IGN1c3RvbSBwbGFuIHJlc29sdmVzICQxPTIgdG8gY29u c3RhbnQgMgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHJwcl9uYXZfb2Zmc2V0X3ByZXAo Mik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMg KFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBh dHRlcm46IGErIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDIKKyAgIC0+ICBGdW5jdGlvbiBTY2Fu IG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCistLSBGb3JjZSBnZW5lcmljIHBsYW46 IG9mZnNldCBiZWNvbWVzICJydW50aW1lIiAoUGFyYW0gbm9kZSkKK1NFVCBwbGFuX2NhY2hlX21v ZGUgPSBmb3JjZV9nZW5lcmljX3BsYW47CitFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgcnBy X25hdl9vZmZzZXRfcHJlcCgyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsiCisgICBOYXYgTWFyayBMb29rYmFjazogcnVudGlt ZQorICAgLT4gIEZ1bmN0aW9uIFNjYW4gb24gZ2VuZXJhdGVfc2VyaWVzIHMKKyg1IHJvd3MpCisK K1JFU0VUIHBsYW5fY2FjaGVfbW9kZTsKK0RFQUxMT0NBVEUgcnByX25hdl9vZmZzZXRfcHJlcDsK Ky0tIEZJUlNUKHYpOiByZXRhaW4gYWxsIChyZWZlcmVuY2VzIG1hdGNoX3N0YXJ0IHJvdykKK0VY UExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklO RSBBIEFTIHYgPiBGSVJTVCh2KQorKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dB Z2cKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisg ICBOYXYgTWFyayBMb29rYWhlYWQ6IDAKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRl X3NlcmllcyBzCisoNiByb3dzKQorCistLSBMQVNUKHYsIDEpOiBiYWNrd2FyZCByZWFjaCAxLCBz YW1lIGFzIFBSRVYodiwgMSkKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9W RVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBB VFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIExBU1QodiwgMSkgPiAwCispOworICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKworICAg TmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3Nl cmllcyBzCisoNSByb3dzKQorCistLSBMQVNUKHYpIHdpdGhvdXQgb2Zmc2V0ICsgUFJFVih2KTog bm8gbWF0Y2hfc3RhcnQgZGVwZW5kZW5jeSwgb2Zmc2V0IDEKK0VYUExBSU4gKENPU1RTIE9GRikg U0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQor V0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIExBU1QodikgPiBQ UkVWKHYpCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93 OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhKyIKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAtPiAgRnVuY3Rp b24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykKKworLS0gQ29tcG91bmQgUFJF VihGSVJTVCh2YWwsIDEpLCAyKTogbG9va2JhY2sgZnJvbSBtYXRjaF9zdGFydCwgZmlyc3RPZmZz ZXQgPSAxLTIgPSAtMQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihGSVJTVCh2LCAxKSwgMikgPiAwCispOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBh KworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIE5hdiBNYXJrIExvb2thaGVhZDogLTEKKyAg IC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNiByb3dzKQorCistLSBD b21wb3VuZCBORVhUKEZJUlNUKHZhbCksIDMpOiBmaXJzdE9mZnNldCA9IDArMyA9IDMKK0VYUExB SU4gKENPU1RTIE9GRikgU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJp ZXMoMSwxMCkgcyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBB IEFTIE5FWFQoRklSU1QodiksIDMpID4gMAorKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBX aW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsKKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAwCisgICBOYXYgTWFyayBMb29rYWhlYWQ6IDMKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdl bmVyYXRlX3NlcmllcyBzCisoNiByb3dzKQorCistLSBDb21wb3VuZCBQUkVWKExBU1QodmFsKSwg Mik6IGxvb2tiYWNrID0gMCsyID0gMgorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQo KikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAo CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHYpLCAyKSA+IDAKKyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRl cm46IGErIgorICAgTmF2IE1hcmsgTG9va2JhY2s6IDIKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9u IGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCistLSBDb21wb3VuZCBORVhUKExBU1QodmFs LCAxKSwgMyk6IGxvb2tiYWNrID0gbWF4KDEtMywgMCkgPSAwCitFWFBMQUlOIChDT1NUUyBPRkYp IFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikK K1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBORVhUKExBU1Qo diwgMSksIDMpID4gMAorKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAg IFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgUGF0dGVybjogYSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAtPiAg RnVuY3Rpb24gU2NhbiBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykKKworLS0gQ29tcG91 bmQgUFJFVihMQVNUKHZhbCwgTiksIE0pOiBjb25zdGFudCBuZWFyLW92ZXJmbG93IChOK00ganVz dCBmaXRzIGludDY0KQorRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgY291bnQoKikgT1ZFUiB3 CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5ET1cgdyBBUyAoCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVihMQVNUKHYsIDQ2MTE2ODYwMTg0MjczODc5MDMp LCA0NjExNjg2MDE4NDI3Mzg3OTAzKSBJUyBOT1QgTlVMTAorKTsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQg Uk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSsKKyAgIE5hdiBNYXJr IExvb2tiYWNrOiA5MjIzMzcyMDM2ODU0Nzc1ODA2CisgICAtPiAgRnVuY3Rpb24gU2NhbiBvbiBn ZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykKKworLS0gQ29tcG91bmQgUFJFVihMQVNUKHZhbCwg TiksIE0pOiBjb25zdGFudCBvdmVyZmxvdyAtPiByZXRhaW4gYWxsCitFWFBMQUlOIChDT1NUUyBP RkYpIFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHMo dikKK1dJTkRPVyB3IEFTICgKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKExB U1QodiwgNDYxMTY4NjAxODQyNzM4NzkwNCksIDQ2MTE2ODYwMTg0MjczODc5MDQpIElTIE5PVCBO VUxMCispOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3 IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiBhKworICAgTmF2IE1hcmsgTG9va2JhY2s6IHJldGFpbiBhbGwKKyAgIC0+ICBG dW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNSByb3dzKQorCistLSBDb21wb3Vu ZCBORVhUKEZJUlNUKHZhbCwgTiksIE0pOiBjb25zdGFudCBsb29rYWhlYWQgb3ZlcmZsb3cgLT4g aW5maW5pdGUKKy0tIE4gKyBNIG92ZXJmbG93cyBpbnQ2NDsgZm9yd2FyZCByZWFjaCBpcyB1bmJv dW5kZWQsIGRpc3BsYXllZCBhcyBpbmZpbml0ZS4KK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU IGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2KQorV0lORE9X IHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIE5FWFQoRklSU1QodiwgNDYx MTY4NjAxODQyNzM4NzkwNCksIDQ2MTE2ODYwMTg0MjczODc5MDQpIElTIE5PVCBOVUxMCispOwor ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiBhKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIE5hdiBNYXJrIExvb2thaGVhZDogaW5m aW5pdGUKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzCisoNiByb3dz KQorCistLSBDb21wb3VuZCBQUkVWKExBU1QodmFsLCAkMSksICQyKTogcGFyYW1ldGVyIGxvb2ti YWNrIG92ZXJmbG93IC0+IHJldGFpbiBhbGwKKy0tIEVYUExBSU4gc2hvd3MgInJ1bnRpbWUiIChw bGFuLWxldmVsKTsgRVhQTEFJTiBBTkFMWVpFIHNob3dzICJyZXRhaW4gYWxsIgorLS0gKGV4ZWN1 dG9yLXJlc29sdmVkKS4KK1BSRVBBUkUgdGVzdF9vdmVyZmxvd19sb29rYmFjayhpbnQ4LCBpbnQ4 KSBBUworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkg cyh2KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYo TEFTVCh2LCAkMSksICQyKSBJUyBOT1QgTlVMTAorKTsKK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBm b3JjZV9nZW5lcmljX3BsYW47CitFWFBMQUlOIChDT1NUUyBPRkYpIEVYRUNVVEUgdGVzdF9vdmVy Zmxvd19sb29rYmFjayg0NjExNjg2MDE4NDI3Mzg3OTA0LCA0NjExNjg2MDE4NDI3Mzg3OTA0KTsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAoUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgUGF0dGVy bjogYSsKKyAgIE5hdiBNYXJrIExvb2tiYWNrOiBydW50aW1lCisgICAtPiAgRnVuY3Rpb24gU2Nh biBvbiBnZW5lcmF0ZV9zZXJpZXMgcworKDUgcm93cykKKworRVhQTEFJTiAoQ09TVFMgT0ZGLCBB TkFMWVpFLCBUSU1JTkcgT0ZGLCBTVU1NQVJZIE9GRikKKyAgICBFWEVDVVRFIHRlc3Rfb3ZlcmZs b3dfbG9va2JhY2soNDYxMTY4NjAxODQyNzM4NzkwNCwgNDYxMTY4NjAxODQyNzM4NzkwNCk7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMC4w MCBsb29wcz0xKQorICAgV2luZG93OiB3IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhKworICAgTmF2IE1hcmsgTG9va2Jh Y2s6IHJldGFpbiBhbGwKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiAxN2tC CisgICBORkEgU3RhdGVzOiAxIHBlYWssIDExIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAyIHBlYWssIDExIHRvdGFsLCAxMCBwcnVuZWQKKyAgIE5GQTogMCBtYXRjaGVkLCAwIG1p c21hdGNoZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1 YWwgcm93cz0xMC4wMCBsb29wcz0xKQorKDkgcm93cykKKworUkVTRVQgcGxhbl9jYWNoZV9tb2Rl OworREVBTExPQ0FURSB0ZXN0X292ZXJmbG93X2xvb2tiYWNrOworLS0gQ29tcG91bmQgTkVYVChG SVJTVCh2YWwsICQxKSwgJDIpOiBwYXJhbWV0ZXIgbG9va2FoZWFkIG92ZXJmbG93IC0+IGluZmlu aXRlCitQUkVQQVJFIHRlc3Rfb3ZlcmZsb3dfbG9va2FoZWFkKGludDgsIGludDgpIEFTCitTRUxF Q1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYpCitXSU5E T1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgTkVYVChGSVJTVCh2LCAk MSksICQyKSBJUyBOT1QgTlVMTAorKTsKK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9nZW5l cmljX3BsYW47CitFWFBMQUlOIChDT1NUUyBPRkYsIEFOQUxZWkUsIFRJTUlORyBPRkYsIFNVTU1B UlkgT0ZGKQorICAgIEVYRUNVVEUgdGVzdF9vdmVyZmxvd19sb29rYWhlYWQoNDYxMTY4NjAxODQy NzM4NzkwNCwgNDYxMTY4NjAxODQyNzM4NzkwNCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCisgV2luZG93QWdnIChhY3R1YWwgcm93cz0xMC4wMCBsb29wcz0xKQorICAgV2luZG93OiB3 IEFTIChST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisg ICBQYXR0ZXJuOiBhKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDAKKyAgIE5hdiBNYXJrIExvb2th aGVhZDogaW5maW5pdGUKKyAgIFN0b3JhZ2U6IE1lbW9yeSAgTWF4aW11bSBTdG9yYWdlOiAxN2tC CisgICBORkEgU3RhdGVzOiAxIHBlYWssIDExIHRvdGFsLCAwIG1lcmdlZAorICAgTkZBIENvbnRl eHRzOiAyIHBlYWssIDExIHRvdGFsLCAxMCBwcnVuZWQKKyAgIE5GQTogMCBtYXRjaGVkLCAwIG1p c21hdGNoZWQKKyAgIC0+ICBGdW5jdGlvbiBTY2FuIG9uIGdlbmVyYXRlX3NlcmllcyBzIChhY3R1 YWwgcm93cz0xMC4wMCBsb29wcz0xKQorKDEwIHJvd3MpCisKK1JFU0VUIHBsYW5fY2FjaGVfbW9k ZTsKK0RFQUxMT0NBVEUgdGVzdF9vdmVyZmxvd19sb29rYWhlYWQ7CistLSBQUkVWKHYpICsgUFJF Vih2LCAkMSk6IE5FRURTX0VWQUwgcGF0aCBtdXN0IGFjY291bnQgZm9yIGltcGxpY2l0IGxvb2ti YWNrPTEKKy0tIFByZXZpb3VzbHksIGV2YWxfbmF2X21heF9vZmZzZXRfd2Fsa2VyIHNraXBwZWQg UFJFVih2KSB3aGVuIG9mZnNldF9hcmcgd2FzCistLSBOVUxMLCBjYXVzaW5nIG1heE9mZnNldD0w IHdoZW4gJDE9MCwgd2hpY2ggd291bGQgdHJpbSB0aGUgcm93IG5lZWRlZCBieQorLS0gUFJFVih2 KS4gIFZlcmlmeSB0aGlzIGV4ZWN1dGVzIHdpdGhvdXQgImNhbm5vdCBmZXRjaCByb3cgYmVmb3Jl IG1hcmsiIGVycm9yLgorUFJFUEFSRSB0ZXN0X3ByZXZfaW1wbGljaXRfb2Zmc2V0KGludDgpIEFT CitTRUxFQ1QgY291bnQoKikgT1ZFUiB3CitGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBzKHYp CitXSU5ET1cgdyBBUyAoCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FIEEgQVMgUFJFVih2KSBJ UyBOT1QgTlVMTCBBTkQgUFJFVih2LCAkMSkgSVMgTk9UIE5VTEwKKyk7CitFWEVDVVRFIHRlc3Rf cHJldl9pbXBsaWNpdF9vZmZzZXQoMCk7CisgY291bnQgCistLS0tLS0tCisgICAgIDAKKyAgICAg OQorICAgICAwCisgICAgIDAKKyAgICAgMAorICAgICAwCisgICAgIDAKKyAgICAgMAorICAgICAw CisgICAgIDAKKygxMCByb3dzKQorCitERUFMTE9DQVRFIHRlc3RfcHJldl9pbXBsaWNpdF9vZmZz ZXQ7CistLSBSdW50aW1lIGVycm9yOiBuZWdhdGl2ZSBvZmZzZXQgYXQgZXhlY3V0aW9uIHRpbWUK K1BSRVBBUkUgdGVzdF9ydW50aW1lX25lZ19vZmZzZXQoaW50OCkgQVMKK1NFTEVDVCBjb3VudCgq KSBPVkVSIHcKK0ZST00gZ2VuZXJhdGVfc2VyaWVzKDEsMTApIHModikKK1dJTkRPVyB3IEFTICgK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBQQVRURVJOIChBKykKKyAgICBERUZJTkUgQSBBUyBQUkVWKHYsICQxKSBJUyBOT1QgTlVMTAor KTsKK0VYRUNVVEUgdGVzdF9ydW50aW1lX25lZ19vZmZzZXQoLTEpOworRVJST1I6ICByb3cgcGF0 dGVybiBuYXZpZ2F0aW9uIG9mZnNldCBtdXN0IG5vdCBiZSBuZWdhdGl2ZQorREVBTExPQ0FURSB0 ZXN0X3J1bnRpbWVfbmVnX29mZnNldDsKKy0tIFJ1bnRpbWUgZXJyb3I6IG51bGwgb2Zmc2V0IGF0 IGV4ZWN1dGlvbiB0aW1lCitQUkVQQVJFIHRlc3RfcnVudGltZV9udWxsX29mZnNldChpbnQ4KSBB UworU0VMRUNUIGNvdW50KCopIE9WRVIgdworRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMCkgcyh2 KQorV0lORE9XIHcgQVMgKAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORSBBIEFTIFBSRVYodiwg JDEpIElTIE5PVCBOVUxMCispOworRVhFQ1VURSB0ZXN0X3J1bnRpbWVfbnVsbF9vZmZzZXQoTlVM TCk7CitFUlJPUjogIHJvdyBwYXR0ZXJuIG5hdmlnYXRpb24gb2Zmc2V0IG11c3Qgbm90IGJlIG51 bGwKK0RFQUxMT0NBVEUgdGVzdF9ydW50aW1lX251bGxfb2Zmc2V0OwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0IGIvc3JjL3Rlc3QvcmVn cmVzcy9leHBlY3RlZC9ycHJfaW50ZWdyYXRpb24ub3V0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi44MGEzMmNjYTlhYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX2ludGVncmF0aW9uLm91dApAQCAtMCwwICsxLDE1MjEgQEAK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gUlBSIEludGVncmF0aW9uIFRlc3RzCistLSBQbGFubmVyIG9wdGltaXphdGlv biBpbnRlcmFjdGlvbiB0ZXN0cyBmb3IgUm93IFBhdHRlcm4gUmVjb2duaXRpb24KKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0KKy0tIFZlcmlmaWVzIHRoYXQgZWFjaCBwbGFubmVyIG9wdGltaXphdGlvbiBjb3JyZWN0bHkg aGFuZGxlcyBSUFIgd2luZG93cy4KKy0tIEV2ZW4gaWYgaW5kaXZpZHVhbCBvcHRpbWl6YXRpb25z IGFyZSB0ZXN0ZWQgZWxzZXdoZXJlLCB0aGlzIGZpbGUKKy0tIHByb3ZpZGVzIGEgc2luZ2xlIGNo ZWNrcG9pbnQgZm9yIGFsbCBwbGFubmVyL1JQUiBpbnRlcmFjdGlvbnMuCistLQorLS0gQS4gUGxh bm5lciBPcHRpbWl6YXRpb24gUHJvdGVjdGlvbiBUZXN0cworLS0gICAgQTEuIEZyYW1lIG9wdGlt aXphdGlvbiBieXBhc3MKKy0tICAgIEEyLiBSdW4gY29uZGl0aW9uIHB1c2hkb3duIGJ5cGFzcwor LS0gICAgQTMuIFdpbmRvdyBkZWR1cCBwcmV2ZW50aW9uIChSUFIgdnMgbm9uLVJQUikKKy0tICAg IEE0LiBXaW5kb3cgZGVkdXAgcHJldmVudGlvbiAoc2FtZSBQQVRURVJOLCBkaWZmZXJlbnQgREVG SU5FKQorLS0gICAgQTUuIFVudXNlZCB3aW5kb3cgcmVtb3ZhbCBwcmV2ZW50aW9uCistLSAgICBB Ni4gSW52ZXJzZSB0cmFuc2l0aW9uIGJ5cGFzcworLS0gICAgQTcuIENvc3QgZXN0aW1hdGlvbiBS UFIgYXdhcmVuZXNzCistLSAgICBBOC4gU3VicXVlcnkgZmxhdHRlbmluZyBwcmV2ZW50aW9uCist LSAgICBBOS4gREVGSU5FIGV4cHJlc3Npb24gbm9uLXByb3BhZ2F0aW9uCistLSAgICBBMTAuIFJQ UiArIExJTUlUCistLQorLS0gQi4gSW50ZWdyYXRpb24gU2NlbmFyaW8gVGVzdHMKKy0tICAgIEIx LiBSUFIgKyBDVEUKKy0tICAgIEIyLiBSUFIgKyBKT0lOCistLSAgICBCMy4gUlBSICsgU2V0IG9w ZXJhdGlvbnMKKy0tICAgIEI0LiBSUFIgKyBQcmVwYXJlZCBzdGF0ZW1lbnRzCistLSAgICBCNS4g UlBSICsgUGFydGl0aW9uZWQgdGFibGUKKy0tICAgIEI2LiBSUFIgKyBMQVRFUkFMCistLSAgICBC Ny4gUlBSICsgUmVjdXJzaXZlIENURQorLS0gICAgQjguIFJQUiArIEluY3JlbWVudGFsIHNvcnQK Ky0tICAgIEI5LiBSUFIgKyBWb2xhdGlsZSBmdW5jdGlvbiBpbiBERUZJTkUKKy0tICAgIEIxMC4g UlBSICsgQ29ycmVsYXRlZCBzdWJxdWVyeQorLS0KK0NSRUFURSBUQUJMRSBycHJfaW50ZWcgKGlk IElOVCwgdmFsIElOVCk7CitJTlNFUlQgSU5UTyBycHJfaW50ZWcgVkFMVUVTCisgICAgKDEsIDEw KSwgKDIsIDIwKSwgKDMsIDE1KSwgKDQsIDI1KSwgKDUsIDUpLAorICAgICg2LCAzMCksICg3LCAz NSksICg4LCAyMCksICg5LCA0MCksICgxMCwgNDUpOworLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBBMS4gRnJhbWUgb3B0 aW1pemF0aW9uIGJ5cGFzcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBvcHRpbWl6ZV93aW5kb3df Y2xhdXNlcygpIGRvZXMgbm90IGFwcGx5IGZyYW1lCistLSBvcHRpbWl6YXRpb24gdG8gUlBSIHdp bmRvd3MuICBCb3RoIHF1ZXJpZXMgYmVsb3cgdXNlIHRoZSBzYW1lIGlucHV0CistLSBmcmFtZSAo Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSB3aXRoCist LSByb3dfbnVtYmVyKCksIHdob3NlIHByb3N1cHBvcnQgaGFuZGxlcworLS0gU3VwcG9ydFJlcXVl c3RPcHRpbWl6ZVdpbmRvd0NsYXVzZSBhbmQgdHJpZ2dlcnMgZnJhbWUgcmV3cml0aW5nLgorLS0g SW4gdGhlIG5vbi1SUFIgYmFzZWxpbmUgdGhlIHBsYW5uZXIgcmV3cml0ZXMgdGhlIGZyYW1lIHRv IFJPV1MKKy0tIFVOQk9VTkRFRCBQUkVDRURJTkcsIHdoaWxlIGluIHRoZSBSUFIgY2FzZSB0aGUg Z3VhcmQgaW4KKy0tIG9wdGltaXplX3dpbmRvd19jbGF1c2VzKCkgYmxvY2tzIHRoZSByZXdyaXRl IGFuZCB0aGUgZnJhbWUgaXMKKy0tIHByZXNlcnZlZCBhcyBzcGVjaWZpZWQuCistLSBOb24tUlBS IGJhc2VsaW5lOiB0aGUgcGxhbm5lciByZXdyaXRlcyB0aGUgZnJhbWUgdG8gUk9XUyBVTkJPVU5E RUQgUFJFQ0VESU5HLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIHJvd19udW1iZXIoKSBP VkVSIHcgRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORyk7CisgICAgICAgICAg ICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdn CisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgVU5CT1VOREVEIFBSRUNFRElORykK KyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBycHJfaW50ZWcKKyg1IHJvd3MpCisKKy0tIFJQUiBjYXNlOiB0aGUgZnJhbWUgaXMgcHJl c2VydmVkIGFzIHNwZWNpZmllZC4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCByb3dfbnVt YmVyKCkgT1ZFUiB3IEZST00gcnByX2ludGVnCitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQ QVRURVJOIChBIEIrKQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSk7CisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBX aW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORykKKyAgIFBhdHRlcm46IGEgYisKKyAgIE5hdiBNYXJrIExvb2tiYWNr OiAxCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX2ludGVnCisoNyByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEEyLiBSdW4gY29uZGl0 aW9uIHB1c2hkb3duIGJ5cGFzcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBmaW5kX3dpbmRvd19y dW5fY29uZGl0aW9ucygpIGRvZXMgbm90IHB1c2ggYSBtb25vdG9uaWMKKy0tIGZpbHRlciBkb3du IGFzIGEgUnVuIENvbmRpdGlvbiBvbiBSUFIgd2luZG93cy4gIFJQUiBtYXRjaCBjb3VudHMgYXJl CistLSBkZXRlcm1pbmVkIGJ5IHBhdHRlcm4gbWF0Y2hpbmcgcmF0aGVyIHRoYW4gYnkgYSBtb25v dG9uaWMKKy0tIGFjY3VtdWxhdGlvbiBvdmVyIHRoZSBmcmFtZSwgc28gYSBmaWx0ZXIgc3VjaCBh cyAiY250ID4gMCIgY2Fubm90IGJlCistLSB1c2VkIHRvIHN0b3AgZXZhbHVhdGluZyB0aGUgd2lu ZG93IGZ1bmN0aW9uIGVhcmx5LgorLS0gTm9uLVJQUiBiYXNlbGluZTogdGhlIGZpbHRlciBpcyBl eHBlY3RlZCB0byBhcHBlYXIgYXMgYSBSdW4gQ29uZGl0aW9uLgorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUICogRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAg ICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCispIHQgV0hF UkUgY250ID4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFV RVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdAor ICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBycHJfaW50 ZWcuaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgICAgICAgUnVuIENvbmRpdGlvbjogKGNvdW50KCopIE9WRVIgdyA+IDApCisgICAgICAgICAt PiAgU29ydAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHJwcl9pbnRlZy5pZAorICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZworKDcgcm93cykKKworLS0gUlBSIGNhc2U6 IHRoZSBmaWx0ZXIgbXVzdCBhcHBlYXIgYXMgYSBGaWx0ZXIgYWJvdmUgdGhlIFdpbmRvd0FnZywK Ky0tIG5vdCBhcyBhIFJ1biBDb25kaXRpb24uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qg KiBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnBy X2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChB IEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQgV0hFUkUgY250 ID4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFN1YnF1ZXJ5IFNjYW4gb24gdAorICAgRmls dGVyOiAodC5jbnQgPiAwKQorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBycHJfaW50ZWcuaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVybjogYSBiKworICAgICAgICAgTmF2IE1h cmsgTG9va2JhY2s6IDEKKyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtl eTogcnByX2ludGVnLmlkCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVn CisoOSByb3dzKQorCistLSBWZXJpZnkgdGhhdCB0aGUgUlBSIHF1ZXJ5IHN0aWxsIHJldHVybnMg ZXZlcnkgcm93IHdob3NlIG1hdGNoIGNvdW50IGlzCistLSBncmVhdGVyIHRoYW4gemVybywgY29u ZmlybWluZyB0aGUgZmlsdGVyIGlzIGV2YWx1YXRlZCBhYm92ZSB0aGUKKy0tIFdpbmRvd0FnZyBy YXRoZXIgdGhhbiBjdXR0aW5nIG9mZiBwYXR0ZXJuIG1hdGNoaW5nIHByZW1hdHVyZWx5LgorU0VM RUNUICogRlJPTSAoCisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQK KyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQor KSB0IFdIRVJFIGNudCA+IDAKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0tLSst LS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDMgfCAgMTUgfCAgIDIKKyAgNSB8ICAgNSB8 ICAgMworICA4IHwgIDIwIHwgICAzCisoNCByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEEzLiBXaW5kb3cg ZGVkdXAgcHJldmVudGlvbiAoUlBSIHZzIG5vbi1SUFIpCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0 IFBvc3RncmVTUUwgZG9lcyBub3QgbWVyZ2UgYW4gUlBSIHdpbmRvdyB3aXRoIGEgbm9uLVJQUgor LS0gd2luZG93IGV2ZW4gd2hlbiBib3RoIHNoYXJlIHRoZSBzYW1lIE9SREVSIEJZIGFuZCBmcmFt ZQorLS0gc3BlY2lmaWNhdGlvbi4gIFJQUiBwYXR0ZXJuIG1hdGNoaW5nIHByb2R1Y2VzIHJlc3Vs dHMgdGhhdCBhcmUKKy0tIHNlbWFudGljYWxseSBkaWZmZXJlbnQgZnJvbSBhIHBsYWluIGZyYW1l LWJhc2VkIGFnZ3JlZ2F0ZSwgc28gdGhlCistLSB0d28gd2luZG93cyBtdXN0IHJlbWFpbiBhcyBz ZXBhcmF0ZSBXaW5kb3dBZ2cgbm9kZXMuICBJbmxpbmUgd2luZG93CistLSBzcGVjcyBhcmUgdXNl ZCB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiBiZWNhdXNlIG9ubHkgaW5saW5lIHdpbmRvd3MKKy0t IGFyZSBzdWJqZWN0IHRvIHRoZSBkZWR1cCBwYXRoOyBkaXN0aW5jdCBuYW1lZCB3aW5kb3dzIGFy ZSBhbHdheXMKKy0tIGtlcHQgc2VwYXJhdGUgcmVnYXJkbGVzcyBvZiBlcXVpdmFsZW5jZS4KKy0t IE5vbi1SUFIgYmFzZWxpbmU6IHR3byBpbmxpbmUgd2luZG93cyB3aXRoIGlkZW50aWNhbCBzcGVj IGFyZQorLS0gZGVkdXBlZCBieSB0aGUgcGxhbm5lciBpbnRvIGEgc2luZ2xlIFdpbmRvd0FnZyBu b2RlLCBjb25maXJtaW5nCistLSB0aGF0IHRoZSBkZWR1cCBwYXRoIGlzIGFjdGl2ZSBmb3Igbm9u LVJQUiB3aW5kb3dzLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUCisgICAgY291bnQoKikg T1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HKSBBUyBjbnQsCisgICAgc3VtKHZhbCkgIE9WRVIgKE9SREVSIEJZ IGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORykgQVMgdG90YWwKK0ZST00gcnByX2ludGVnOworICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcxIEFTIChP UkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcpCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAtPiAgU2Vx IFNjYW4gb24gcnByX2ludGVnCisoNSByb3dzKQorCistLSBBbiBpbmxpbmUgUlBSIHdpbmRvdyBh bmQgYW4gaW5saW5lIG5vbi1SUFIgd2luZG93IHNoYXJlIHRoZSBzYW1lCistLSBPUkRFUiBCWSBh bmQgZnJhbWUgYnV0IG11c3QgcmVtYWluIGFzIGRpc3RpbmN0IFdpbmRvd0FnZyBub2Rlcy4KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVAorICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVW KHZhbCkpIEFTIHJwcl9jbnQsCisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKSBBUyBu b3JtYWxfY250CitGUk9NIHJwcl9pbnRlZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3 MiBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HKQorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgV2luZG93OiB3MSBBUyAoT1JE RVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H KQorICAgICAgICAgUGF0dGVybjogYSBiKworICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6IDEK KyAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAg ICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfaW50ZWcKKyg5IHJvd3MpCisKKy0tIFZlcmlmeSB0 aGF0IHRoZSB0d28gd2luZG93cyByZXR1cm4gaW5kZXBlbmRlbnQgY291bnRzIHBlciByb3csCist LSBjb25maXJtaW5nIHRoZXkgd2VyZSBub3QgbWVyZ2VkIGludG8gYSBzaW5nbGUgV2luZG93QWdn LgorU0VMRUNUCisgICAgaWQsIHZhbCwKKyAgICBjb3VudCgqKSBPVkVSIChPUkRFUiBCWSBpZAor ICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2 YWwpKSBBUyBycHJfY250LAorICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAgICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykgQVMgbm9y bWFsX2NudAorRlJPTSBycHJfaW50ZWcKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgcnByX2Nu dCB8IG5vcm1hbF9jbnQgCistLS0tKy0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgMSB8 ICAxMCB8ICAgICAgIDIgfCAgICAgICAgIDEwCisgIDIgfCAgMjAgfCAgICAgICAwIHwgICAgICAg ICAgOQorICAzIHwgIDE1IHwgICAgICAgMiB8ICAgICAgICAgIDgKKyAgNCB8ICAyNSB8ICAgICAg IDAgfCAgICAgICAgICA3CisgIDUgfCAgIDUgfCAgICAgICAzIHwgICAgICAgICAgNgorICA2IHwg IDMwIHwgICAgICAgMCB8ICAgICAgICAgIDUKKyAgNyB8ICAzNSB8ICAgICAgIDAgfCAgICAgICAg ICA0CisgIDggfCAgMjAgfCAgICAgICAzIHwgICAgICAgICAgMworICA5IHwgIDQwIHwgICAgICAg MCB8ICAgICAgICAgIDIKKyAxMCB8ICA0NSB8ICAgICAgIDAgfCAgICAgICAgICAxCisoMTAgcm93 cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLSBBNC4gV2luZG93IGRlZHVwIHByZXZlbnRpb24gKHNhbWUgUEFUVEVS TiwgZGlmZmVyZW50IERFRklORSkKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgaW5saW5lLXdpbmRv dyBkZWR1cCBkb2VzIG5vdCBtZXJnZSB0d28gUlBSIHdpbmRvd3MKKy0tIHRoYXQgc2hhcmUgdGhl IHNhbWUgUEFUVEVSTiBzdHJ1Y3R1cmUgYnV0IGhhdmUgZGlmZmVyZW50IERFRklORQorLS0gY29u ZGl0aW9ucy4gIEV2ZW4gdGhvdWdoIHRoZSBPUkRFUiBCWSwgZnJhbWUsIGFuZCBQQVRURVJOIGNv aW5jaWRlLAorLS0gdGhlIGRpZmZlcmluZyBERUZJTkUgZXhwcmVzc2lvbnMgY2xhc3NpZnkgcm93 cyBkaWZmZXJlbnRseSBhbmQKKy0tIG11c3QgdGhlcmVmb3JlIHlpZWxkIHR3byBzZXBhcmF0ZSBX aW5kb3dBZ2cgbm9kZXMuICBJbmxpbmUgc3BlY3MKKy0tIGFyZSB1c2VkIGhlcmUgYmVjYXVzZSBk ZWR1cCBvbmx5IGFwcGxpZXMgdG8gaW5saW5lIHdpbmRvd3MuCistLSBCYXNlbGluZTogdHdvIGlu bGluZSBSUFIgd2luZG93cyB0aGF0IGFyZSBzdHJ1Y3R1cmFsbHkgaWRlbnRpY2FsCistLSAoc2Ft ZSBPUkRFUiBCWSwgZnJhbWUsIFBBVFRFUk4sIGFuZCBERUZJTkUpIGFyZSBkZWR1cGVkIGJ5IHRo ZQorLS0gcGFyc2VyIGludG8gYSBzaW5nbGUgV2luZG93QWdnIG5vZGUsIGNvbmZpcm1pbmcgdGhh dCBwYXJzZXItbGV2ZWwKKy0tIGRlZHVwIGlzIGFjdGl2ZSBmb3IgUlBSIHdpbmRvd3Mgd2hvc2Ug REVGSU5FIG1hdGNoZXMuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QKKyAgICBjb3VudCgq KSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVG SU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKSBBUyBjbnQsCisgICAgc3VtKHZhbCkgIE9WRVIgKE9S REVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2 YWwgPiBQUkVWKHZhbCkpIEFTIHRvdGFsCitGUk9NIHJwcl9pbnRlZzsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93 OiB3MSBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HKQorICAgUGF0dGVybjogYSBiKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDEK KyAgIC0+ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBycHJfaW50ZWcKKyg3IHJvd3MpCisKKy0tIFR3byBpbmxpbmUgUlBSIHdpbmRvd3Mgd2l0 aCB0aGUgc2FtZSBQQVRURVJOIGJ1dCBvcHBvc2l0ZSBERUZJTkUKKy0tIGNvbmRpdGlvbnMgbXVz dCByZW1haW4gYXMgc2VwYXJhdGUgV2luZG93QWdnIG5vZGVzLgorRVhQTEFJTiAoQ09TVFMgT0ZG KQorU0VMRUNUCisgICAgY291bnQoKikgT1ZFUiAoT1JERVIgQlkgaWQKKyAgICAgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBBVFRF Uk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkgQVMgY250X3Vw LAorICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIr KQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPCBQUkVWKHZhbCkpIEFTIGNudF9kb3duCitGUk9N IHJwcl9pbnRlZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3MiBBUyAoT1JERVIgQlkg aWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAg UGF0dGVybjogYSBiKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgIC0+ICBXaW5kb3dBZ2cK KyAgICAgICAgIFdpbmRvdzogdzEgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGEgYisKKyAg ICAgICAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAg ICAgICAgU29ydCBLZXk6IGlkCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2lu dGVnCisoMTEgcm93cykKKworLS0gVmVyaWZ5IHRoYXQgdGhlIHR3byB3aW5kb3dzIHJldHVybiBk aWZmZXJlbnQgY291bnRzIHBlciByb3csCistLSBjb25maXJtaW5nIHRoZSBERUZJTkUgY29uZGl0 aW9ucyB3ZXJlIG5vdCBjb2xsYXBzZWQgYnkgZGVkdXAuCitTRUxFQ1QKKyAgICBpZCwgdmFsLAor ICAgIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQor ICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpIEFTIGNudF91cCwKKyAgICBjb3Vu dCgqKSBPVkVSIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAg REVGSU5FIEIgQVMgdmFsIDwgUFJFVih2YWwpKSBBUyBjbnRfZG93bgorRlJPTSBycHJfaW50ZWcK K09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250X3VwIHwgY250X2Rvd24gCistLS0tKy0tLS0t Ky0tLS0tLS0tKy0tLS0tLS0tLS0KKyAgMSB8ICAxMCB8ICAgICAgMiB8ICAgICAgICAwCisgIDIg fCAgMjAgfCAgICAgIDAgfCAgICAgICAgMgorICAzIHwgIDE1IHwgICAgICAyIHwgICAgICAgIDAK KyAgNCB8ICAyNSB8ICAgICAgMCB8ICAgICAgICAyCisgIDUgfCAgIDUgfCAgICAgIDMgfCAgICAg ICAgMAorICA2IHwgIDMwIHwgICAgICAwIHwgICAgICAgIDAKKyAgNyB8ICAzNSB8ICAgICAgMCB8 ICAgICAgICAyCisgIDggfCAgMjAgfCAgICAgIDMgfCAgICAgICAgMAorICA5IHwgIDQwIHwgICAg ICAwIHwgICAgICAgIDAKKyAxMCB8ICA0NSB8ICAgICAgMCB8ICAgICAgICAwCisoMTAgcm93cykK KworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CistLSBBNS4gVW51c2VkIHdpbmRvdyByZW1vdmFsIHByZXZlbnRpb24KKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gVmVyaWZ5IHRoYXQgcmVtb3ZlX3VudXNlZF9zdWJxdWVyeV9vdXRwdXRzKCkgZG9lcyBu b3QgZHJvcCBhbiBSUFIKKy0tIHdpbmRvdyBmdW5jdGlvbiBldmVuIHdoZW4gdGhlIG91dGVyIHF1 ZXJ5IGRvZXMgbm90IHJlZmVyZW5jZSBpdHMKKy0tIHJlc3VsdC4gIFRoZSBSUFIgV2luZG93QWdn IG5vZGUgaXMgcmVzcG9uc2libGUgZm9yIHBlcmZvcm1pbmcgcGF0dGVybgorLS0gbWF0Y2hpbmcs IHNvIHJlbW92aW5nIHRoZSB3aW5kb3cgZnVuY3Rpb24gd291bGQgc2lsZW50bHkgc2tpcCB0aGUK Ky0tIHBhdHRlcm4gbWF0Y2ggZXZlbiB0aG91Z2ggdGhlIHN1cnJvdW5kaW5nIHF1ZXJ5IHN0aWxs IGRlcGVuZHMgb24KKy0tIFJQUiBzZW1hbnRpY3MuCistLSBUaGUgb3V0ZXIgcXVlcnkgaWdub3Jl cyB0aGUgcGVyLXJvdyB3aW5kb3cgcmVzdWx0LCB5ZXQgcGF0dGVybgorLS0gbWF0Y2hpbmcgbXVz dCBzdGlsbCBleGVjdXRlLiAgVGhlIHBsYW4gbXVzdCBzdGlsbCBjb250YWluIGEKKy0tIFdpbmRv d0FnZyBub2RlIGJlbG93IHRoZSBvdXRlciBBZ2dyZWdhdGU7IGlmIHRoZSB3aW5kb3cgd2VyZQor LS0gcmVtb3ZlZCwgb25seSBBZ2dyZWdhdGUgKyBTZXEgU2NhbiB3b3VsZCBhcHBlYXIuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSAoCisgICAgU0VMRUNUIGNvdW50 KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTICgKKyAgICAgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgICAgIFBB VFRFUk4gKEErKQorICAgICAgICBERUZJTkUgQSBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQ7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgQWdncmVnYXRlCisgICAtPiAgV2lu ZG93QWdnCisgICAgICAgICBXaW5kb3c6IHcgQVMgKFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGErIgorICAgICAgICAg TmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfaW50ZWcK Kyg2IHJvd3MpCisKK1NFTEVDVCBjb3VudCgqKSBGUk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikg T1ZFUiB3IEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVS TiAoQSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdDsKKyBjb3Vu dCAKKy0tLS0tLS0KKyAgICAxMAorKDEgcm93KQorCistLSBUaGUgREVGSU5FIGV4cHJlc3Npb24g cmVmZXJlbmNlcyBQUkVWKHZhbCksIHNvIHRoZSB3aW5kb3cgbXVzdCBiZQorLS0gcHJlc2VydmVk IGV2ZW4gaWYgdGhlIG91dGVyIHF1ZXJ5IG9ubHkgYWdncmVnYXRlcyBvdmVyIHRoZSBjb3VudC4K Ky0tIFRoZSBwbGFuIG11c3Qgc3RpbGwgY29udGFpbiBhIFdpbmRvd0FnZyB3aXRoIHRoZSBQQVRU RVJOL0RFRklORQorLS0gaW50YWN0LgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIGNvdW50 KCopLCBzdW0oYykgRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBjIEZST00g cnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAg ICAgIERFRklORSBBIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdDsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAg IFdpbmRvdzogdyBBUyAoUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HKQorICAgICAgICAgUGF0dGVybjogYSsiCisgICAgICAgICBOYXYgTWFyayBMb29rYmFj azogMQorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZworKDYgcm93cykKKworU0VM RUNUIGNvdW50KCopLCBzdW0oYykgRlJPTSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBB UyBjIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAo QSspCisgICAgICAgIERFRklORSBBIEFTIHZhbCA+IFBSRVYodmFsKSkKKykgdDsKKyBjb3VudCB8 IHN1bSAKKy0tLS0tLS0rLS0tLS0KKyAgICAxMCB8ICAgNgorKDEgcm93KQorCistLSBUaGUgREVG SU5FIGV4cHJlc3Npb24gY29udGFpbnMgbm8gbmF2aWdhdGlvbiwgYnV0IHRoZSBSUFIgd2luZG93 CistLSBtdXN0IHN0aWxsIGJlIHByZXNlcnZlZCBiZWNhdXNlIHRoZSBtYXRjaCBzdHJ1Y3R1cmUg aXRzZWxmIGFmZmVjdHMKKy0tIHRoZSBjb3VudC4gIFRoZSBwbGFuIG11c3QgcmV0YWluIHRoZSBX aW5kb3dBZ2cuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgY291bnQoKiksIHN1bShjKSBG Uk9NICgKKyAgICBTRUxFQ1QgY291bnQoKikgT1ZFUiB3IEFTIGMgRlJPTSBycHJfaW50ZWcKKyAg ICBXSU5ET1cgdyBBUyAoCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBKykKKyAgICAgICAgREVGSU5FIEEg QVMgVFJVRSkKKykgdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFO ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dy ZWdhdGUKKyAgIC0+ICBXaW5kb3dBZ2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgUGF0dGVy bjogYSsiCisgICAgICAgICBOYXYgTWFyayBMb29rYmFjazogMAorICAgICAgICAgLT4gIFNlcSBT Y2FuIG9uIHJwcl9pbnRlZworKDYgcm93cykKKworU0VMRUNUIGNvdW50KCopLCBzdW0oYykgRlJP TSAoCisgICAgU0VMRUNUIGNvdW50KCopIE9WRVIgdyBBUyBjIEZST00gcnByX2ludGVnCisgICAg V0lORE9XIHcgQVMgKAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSspCisgICAgICAgIERFRklORSBBIEFT IFRSVUUpCispIHQ7CisgY291bnQgfCBzdW0gCistLS0tLS0tKy0tLS0tCisgICAgMTAgfCAgMTAK KygxIHJvdykKKworLS0gWFhYOiAidmFsIiBpcyBub24tcmVzanVuayBpbiB0aGUgc3VicXVlcnkg b3V0cHV0IGFuZCBpcyBub3QKKy0tIHJlZmVyZW5jZWQgYnkgdGhlIG91dGVyIHF1ZXJ5LiAgV2l0 aG91dCBhIGd1YXJkLAorLS0gcmVtb3ZlX3VudXNlZF9zdWJxdWVyeV9vdXRwdXRzKCkgd291bGQg cmVwbGFjZSBpdCB3aXRoIE5VTEwgaW4KKy0tIHRoZSBzdWJxdWVyeSBvdXRwdXQsIGFuZCB0aGF0 IHJlcGxhY2VtZW50IHByb3BhZ2F0ZXMgdG8gdGhlCistLSBzY2FuJ3MgdGFyZ2V0bGlzdCAtLSBE RUZJTkUgd291bGQgdGhlbiBldmFsdWF0ZSB3aXRoIE5VTEwKKy0tIGlucHV0cy4gIFRoZSB0YXJn ZXRsaXN0IGhhcyBubyB3YXkgdG8gZGlzdGluZ3Vpc2ggImV4cG9zZWQgdG8KKy0tIHRoZSBvdXRl ciBxdWVyeSIgZnJvbSAicmVmZXJlbmNlZCBvbmx5IGJ5IERFRklORSIsIHNvIHRoZQorLS0gb3B0 aW1pemF0aW9uIGNhbm5vdCBiZSBhcHBsaWVkIHNlbGVjdGl2ZWx5LiAgVGhlIGNvbHVtbiBndWFy ZAorLS0gaW4gYWxscGF0aHMuYyBibG9ja3MgdGhpcyByZXBsYWNlbWVudCBmb3IgYW55IGNvbHVt biByZWZlcmVuY2VkCistLSBieSBhbiBSUFIgREVGSU5FIGNsYXVzZSwga2VlcGluZyB0aGUgV2lu ZG93QWdnIHdpdGggREVGSU5FCistLSBhY3RpdmUgaW4gdGhlIHBsYW4uCitFWFBMQUlOIChDT1NU UyBPRkYpCitTRUxFQ1QgY291bnQoKikgRlJPTSAoCisgICAgU0VMRUNUIHZhbCwgY291bnQoKikg T1ZFUiB3IEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkp CispIHQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIC0+ICBXaW5kb3dB Z2cKKyAgICAgICAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgcnByX2ludGVnLmlkIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRl cm46IGEgYisKKyAgICAgICAgIE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAgICAgICAtPiAgU29y dAorICAgICAgICAgICAgICAgU29ydCBLZXk6IHJwcl9pbnRlZy5pZAorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZworKDggcm93cykKKworU0VMRUNUIGNvdW50KCopIEZS T00gKAorICAgIFNFTEVDVCB2YWwsIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAg IFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAg ICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSB0OworIGNvdW50IAorLS0tLS0tLQor ICAgIDEwCisoMSByb3cpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTYuIEludmVyc2UgdHJhbnNpdGlvbiBieXBh c3MKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgUlBSIHdpbmRvd3MgZG8gbm90IHVzZSB0aGUgbW92 aW5nIGFnZ3JlZ2F0ZSAoaW52ZXJzZQorLS0gdHJhbnNpdGlvbikgb3B0aW1pemF0aW9uLiAgTW92 aW5nIGFnZ3JlZ2F0ZXMgbWFpbnRhaW4gc3RhdGUgYnkKKy0tIGFkZGluZyBhcnJpdmluZyByb3dz IGFuZCBzdWJ0cmFjdGluZyBsZWF2aW5nIHJvd3MsIGJ1dCBhbiBSUFIKKy0tIHJlZHVjZWQgZnJh bWUgaXMgbm90IGEgc2xpZGluZyB3aW5kb3c7IHRoZSBzZXQgb2Ygcm93cyBpbmNsdWRlZCBpbgor LS0gdGhlIGZyYW1lIGlzIGRldGVybWluZWQgYnkgcGF0dGVybiBtYXRjaGluZyBhbmQgY2Fubm90 IGJlIGRlcml2ZWQKKy0tIGluY3JlbWVudGFsbHkgZnJvbSB0aGUgcHJldmlvdXMgZnJhbWUuCist LSBzdW0oKSB3b3VsZCBub3JtYWxseSBiZSBlbGlnaWJsZSBmb3IgdGhlIG1vdmluZyBhZ2dyZWdh dGUKKy0tIG9wdGltaXphdGlvbjsgdW5kZXIgUlBSIGl0IG11c3QgYmUgY29tcHV0ZWQgZnJvbSBz Y3JhdGNoIG92ZXIgZWFjaAorLS0gcmVkdWNlZCBmcmFtZSwgYW5kIHRoZSByZXR1cm5lZCB2YWx1 ZXMgbXVzdCBtYXRjaCB0aGUgcGF0dGVybi4KKy0tIE5vdGU6IGludmVyc2UtdHJhbnNpdGlvbiBz ZWxlY3Rpb24gaXMgbm90IGV4cG9zZWQgaW4gdGhlIHBsYW4sIHNvCistLSB0aGVyZSBpcyBubyBk aXJlY3QgRVhQTEFJTiBhc3NlcnRpb24gZm9yIGl0LiAgVGhlIHN0cnVjdHVyYWwKKy0tIGd1YXJh bnRlZSBpcyB0aGF0IFJQUiB1c2VzIGl0cyBvd24gbmF2aWdhdGlvbiBtYXJrLCBkaXN0aW5jdCBm cm9tCistLSB0aGUgbW92aW5nLWFnZ3JlZ2F0ZSBtYXJrLCBzbyB0aGUgaW52ZXJzZS10cmFuc2l0 aW9uIHBhdGggaXMKKy0tIG5ldmVyIHJlYWNoZWQgb24gdGhlIFJQUiBzaWRlLiAgVGhpcyB0ZXN0 IHZlcmlmaWVzIHRoYXQKKy0tIHNlcGFyYXRpb24gaW5kaXJlY3RseTogaWYgaW52ZXJzZSB0cmFu c2l0aW9uIGxlYWtlZCBpbnRvIHRoZSBSUFIKKy0tIHBhdGgsIHN0YXRlIHdvdWxkIG1peCBhY3Jv c3MgbWF0Y2ggYm91bmRhcmllcyBhbmQgcGF0dGVybl9zdW0KKy0tIHdvdWxkIGRpdmVyZ2UgZnJv bSB0aGUgZXhwZWN0ZWQgb3V0cHV0LCBmYWlsaW5nIHRoZSByZWdyZXNzaW9uLgorU0VMRUNUIGlk LCB2YWwsCisgICAgc3VtKHZhbCkgT1ZFUiB3IEFTIHBhdHRlcm5fc3VtCitGUk9NIHJwcl9pbnRl ZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUg QiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IHBhdHRlcm5f c3VtIAorLS0tLSstLS0tLSstLS0tLS0tLS0tLS0tCisgIDEgfCAgMTAgfCAgICAgICAgICAzMAor ICAyIHwgIDIwIHwgICAgICAgICAgICAKKyAgMyB8ICAxNSB8ICAgICAgICAgIDQwCisgIDQgfCAg MjUgfCAgICAgICAgICAgIAorICA1IHwgICA1IHwgICAgICAgICAgNzAKKyAgNiB8ICAzMCB8ICAg ICAgICAgICAgCisgIDcgfCAgMzUgfCAgICAgICAgICAgIAorICA4IHwgIDIwIHwgICAgICAgICAx MDUKKyAgOSB8ICA0MCB8ICAgICAgICAgICAgCisgMTAgfCAgNDUgfCAgICAgICAgICAgIAorKDEw IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gQTcuIENvc3QgZXN0aW1hdGlvbiBSUFIgYXdhcmVuZXNzCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIGNvc3Rfd2luZG93YWdnKCkgbXVzdCBhY2NvdW50IGZvciBERUZJTkUgZXhwcmVz c2lvbiBldmFsdWF0aW9uIGNvc3QuCistLSBWZXJpZnkgUlBSIFdpbmRvd0FnZyBjb3N0ID4gbm9u LVJQUiBXaW5kb3dBZ2cgY29zdC4KK0NSRUFURSBGVU5DVElPTiBnZXRfd2luZG93YWdnX2Nvc3Qo cXVlcnkgdGV4dCkgUkVUVVJOUyBudW1lcmljIEFTICQkCitERUNMQVJFCisgICAgcGxhbiBqc29u OworICAgIGNvc3QgbnVtZXJpYzsKK0JFR0lOCisgICAgRVhFQ1VURSAnRVhQTEFJTiAoRk9STUFU IEpTT04pICcgfHwgcXVlcnkgSU5UTyBwbGFuOworICAgIGNvc3QgOj0gKHBsYW4tPjAtPidQbGFu Jy0+PidUb3RhbCBDb3N0Jyk6Om51bWVyaWM7CisgICAgUkVUVVJOIGNvc3Q7CitFTkQ7CiskJCBM QU5HVUFHRSBwbHBnc3FsOworU0VMRUNUIGdldF93aW5kb3dhZ2dfY29zdCgKKyAgICAnU0VMRUNU IGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgICBXSU5ET1cgdyBBUyAoT1JERVIg QlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgICAgICAgICAgICAgICBQQVRURVJOIChBIEIrIEMrKSBERUZJTkUgQiBBUyB2YWwgPiBQUkVW KHZhbCksIEMgQVMgdmFsIDwgUFJFVih2YWwpKScpCisgICAgPgorICAgIGdldF93aW5kb3dhZ2df Y29zdCgKKyAgICAnU0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIHJwcl9pbnRlZworICAgICBX SU5ET1cgdyBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HKScpCisgICAgQVMgcnByX2Nvc3RfaXNfaGlnaGVyOworIHJwcl9jb3N0 X2lzX2hpZ2hlciAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgdAorKDEgcm93KQorCitEUk9QIEZV TkNUSU9OIGdldF93aW5kb3dhZ2dfY29zdCh0ZXh0KTsKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTguIFN1YnF1ZXJ5 IGZsYXR0ZW5pbmcgcHJldmVudGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBhIHN1YnF1ZXJ5 IGNvbnRhaW5pbmcgYW4gUlBSIHdpbmRvdyBpcyBub3QgZmxhdHRlbmVkCistLSBpbnRvIHRoZSBv dXRlciBxdWVyeS4gIGlzX3NpbXBsZV9zdWJxdWVyeSgpIGFscmVhZHkgYmxvY2tzIHB1bGx1cAor LS0gZm9yIHN1YnF1ZXJpZXMgd2l0aCB3aW5kb3cgZnVuY3Rpb25zIGluIGdlbmVyYWw7IHRoaXMg dGVzdCBjb25maXJtcworLS0gdGhlIHJ1bGUgY29udGludWVzIHRvIGFwcGx5IHRvIFJQUiB3aW5k b3dzLCBzbyBFWFBMQUlOIG11c3Qgc3RpbGwKKy0tIHNob3cgYSBTdWJxdWVyeSBTY2FuIGFib3Zl IHRoZSBSUFIgV2luZG93QWdnLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUICogRlJPTSAo CisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJw cl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAo QSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKSBzdWIKK1dIRVJF IGNudCA+IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVS WSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTdWJxdWVyeSBTY2FuIG9uIHN1Ygor ICAgRmlsdGVyOiAoc3ViLmNudCA+IDApCisgICAtPiAgV2luZG93QWdnCisgICAgICAgICBXaW5k b3c6IHcgQVMgKE9SREVSIEJZIHJwcl9pbnRlZy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICBQYXR0ZXJuOiBhIGIrCisgICAgICAg ICBOYXYgTWFyayBMb29rYmFjazogMQorICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAg IFNvcnQgS2V5OiBycHJfaW50ZWcuaWQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBy cHJfaW50ZWcKKyg5IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gQTkuIERFRklORSBleHByZXNzaW9uIG5v bi1wcm9wYWdhdGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBERUZJTkUgZXhwcmVzc2lvbnMg YXJlIG5vdCBwcm9wYWdhdGVkIGludG8gdGhlCistLSB0YXJnZXRsaXN0IG9mIGFueSB1cHBlciBX aW5kb3dBZ2cgbm9kZS4gIE9ubHkgdGhlIGNvbHVtbiByZWZlcmVuY2VzCistLSBjb25zdW1lZCBi eSBERUZJTkUgc2hvdWxkIGJlIHBhc3NlZCB1cDsgdGhlIGZ1bGwgREVGSU5FIGV4cHJlc3Npb24K Ky0tIGlzIG1lYW5pbmdmdWwgb25seSBpbnNpZGUgdGhlIFJQUiBXaW5kb3dBZ2cgdGhhdCBvd25z IGl0LgorLS0gRVhQTEFJTiBWRVJCT1NFIGlzIHRoZXJlZm9yZSBleHBlY3RlZCB0byBzaG93IGEg Y2xlYW4gdGFyZ2V0bGlzdCBvbgorLS0gdGhlIG91dGVyIFdpbmRvd0FnZywgd2l0aCBubyBERUZJ TkUtZGVyaXZlZCBleHByZXNzaW9uIGxlYWtpbmcgaW4uCistLSBOb3RlOiBjb2x1bW5zIHJlZmVy ZW5jZWQgYnkgREVGSU5FIChlLmcuLCAidmFsIikgbWF5IGFwcGVhciBhcworLS0gcmVzanVuayBl bnRyaWVzIGluIHVwcGVyIFdpbmRvd0FnZyB0YXJnZXRsaXN0cyAtLSB0aGF0IGlzIGEKKy0tIGhh cm1sZXNzIGJ5cHJvZHVjdCBvZiB0aGUgY29sdW1uIGd1YXJkJ3MgYnJvYWQgc2NvcGUgYW5kIGRv ZXMgbm90CistLSBhZmZlY3QgY2xpZW50IG91dHB1dC4gIFRoZSBjbGFpbSBoZXJlIGlzIGxpbWl0 ZWQgdG8gdGhlIGZ1bGwKKy0tIERFRklORSBib29sZWFuIGV4cHJlc3Npb24uCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHdfcnByIEFTIHJw cl9jbnQsCisgICAgY291bnQoKikgT1ZFUiB3X25vcm1hbCBBUyBub3JtYWxfY250CitGUk9NIHJw cl9pbnRlZworV0lORE9XCisgICAgd19ycHIgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpLAorICAgIHdf bm9ybWFsIEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K KyBXaW5kb3dBZ2cKKyAgIE91dHB1dDogKGNvdW50KCopIE9WRVIgd19ycHIpLCBjb3VudCgqKSBP VkVSIHdfbm9ybWFsLCBpZCwgdmFsCisgICBXaW5kb3c6IHdfbm9ybWFsIEFTIChPUkRFUiBCWSBy cHJfaW50ZWcuaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgT3V0cHV0OiBpZCwgdmFsLCBjb3VudCgq KSBPVkVSIHdfcnByCisgICAgICAgICBXaW5kb3c6IHdfcnByIEFTIChPUkRFUiBCWSBycHJfaW50 ZWcuaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQor ICAgICAgICAgUGF0dGVybjogYSBiKworICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAg ICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICBPdXRwdXQ6IGlkLCB2YWwKKyAgICAgICAg ICAgICAgIFNvcnQgS2V5OiBycHJfaW50ZWcuaWQKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBwdWJsaWMucnByX2ludGVnCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IGlkLCB2 YWwKKygxMyByb3dzKQorCistLSBFeGVjdXRpbmcgdGhlIHNhbWUgcXVlcnkgc2hvd3MgdGhlIGNs aWVudCByZXN1bHQgaXMgbGltaXRlZCB0bworLS0gdGhlIHR3byBwcm9qZWN0ZWQgY29sdW1uczsg ImlkIiBhbmQgInZhbCIgdGhhdCBhcHBlYXJlZCBpbiB0aGUKKy0tIHVwcGVyIFdpbmRvd0FnZyBP dXRwdXQgbGluZSBhcmUgcmVzanVuay1vbmx5IGFuZCBkbyBub3QgcmVhY2gKKy0tIHRoZSBjbGll bnQuCitTRUxFQ1QKKyAgICBjb3VudCgqKSBPVkVSIHdfcnByIEFTIHJwcl9jbnQsCisgICAgY291 bnQoKikgT1ZFUiB3X25vcm1hbCBBUyBub3JtYWxfY250CitGUk9NIHJwcl9pbnRlZworV0lORE9X CisgICAgd19ycHIgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAg ICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpLAorICAgIHdfbm9ybWFsIEFTIChPUkRF UiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCitPUkRFUiBCWSBycHJfY250IERFU0MsIG5vcm1hbF9jbnQgREVTQzsKKyBycHJf Y250IHwgbm9ybWFsX2NudCAKKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0KKyAgICAgICAzIHwgICAg ICAgICAgNgorICAgICAgIDMgfCAgICAgICAgICAzCisgICAgICAgMiB8ICAgICAgICAgMTAKKyAg ICAgICAyIHwgICAgICAgICAgOAorICAgICAgIDAgfCAgICAgICAgICA5CisgICAgICAgMCB8ICAg ICAgICAgIDcKKyAgICAgICAwIHwgICAgICAgICAgNQorICAgICAgIDAgfCAgICAgICAgICA0Cisg ICAgICAgMCB8ICAgICAgICAgIDIKKyAgICAgICAwIHwgICAgICAgICAgMQorKDEwIHJvd3MpCisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gQTEwLiBSUFIgKyBMSU1JVAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBMSU1JVCBtdXN0IG5vdCBp bnRlcmZlcmUgd2l0aCBSUFIgcGF0dGVybiBtYXRjaGluZy4gIFRoZSBMaW1pdAorLS0gbm9kZSBt dXN0IHNpdCBhYm92ZSB0aGUgV2luZG93QWdnIHNvIHRoYXQgcGF0dGVybiBtYXRjaGluZyBydW5z CistLSBvbiB0aGUgZnVsbCBwYXJ0aXRpb24gZmlyc3Q7IHRoZSByZXN1bHQgaXMgdGhlbiBhIHBy ZWZpeCBvZiB0aGUKKy0tIHVuLUxJTUlUZWQgb3V0cHV0LiAgUHVzaGluZyBMaW1pdCBiZWxvdyB0 aGUgV2luZG93QWdnIHdvdWxkCistLSB0cnVuY2F0ZSBpbnB1dCBiZWZvcmUgbWF0Y2hpbmcgYW5k IHNpbGVudGx5IGRyb3AgdmFsaWQgbWF0Y2hlcy4KK0VYUExBSU4gKENPU1RTIE9GRikKK1NFTEVD VCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9X IHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwg PiBQUkVWKHZhbCkpCitMSU1JVCA1OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIExpbWl0CisgICAtPiAgV2luZG93QWdnCisgICAg ICAgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgIFBhdHRlcm46IGEgYisKKyAgICAgICAg IE5hdiBNYXJrIExvb2tiYWNrOiAxCisgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAgICAg U29ydCBLZXk6IGlkCisgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4gb24gcnByX2ludGVnCiso OCByb3dzKQorCistLSBSZWZlcmVuY2U6IHVuLUxJTUlUZWQgcmVzdWx0IGFnYWluc3Qgd2hpY2gg dGhlIExJTUlUIDUgcmVzdWx0IGlzCistLSBjb21wYXJlZC4KK1NFTEVDVCBpZCwgdmFsLCBjb3Vu dCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitP UkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAx MCB8ICAgMgorICAyIHwgIDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAg MAorICA1IHwgICA1IHwgICAzCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4 IHwgIDIwIHwgICAzCisgIDkgfCAgNDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAgMAorKDEwIHJvd3Mp CisKKy0tIExJTUlUIDUgY2FzZTsgdGhlIGZpcnN0IGZpdmUgcm93cyBtdXN0IG1hdGNoIHRoZSBy ZWZlcmVuY2UgYWJvdmUuCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAor RlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQisp CisgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorTElNSVQgNTsKKyBpZCB8IHZhbCB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAw CisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgICA1IHwgICAzCisoNSBy b3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KKy0tIEIxLiBSUFIgKyBDVEUKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQg YW4gUlBSIHdpbmRvdyBlbWJlZGRlZCBpbnNpZGUgYSBDVEUgYmVoYXZlcyB0aGUgc2FtZSBhcwor LS0gYSBkaXJlY3QgUlBSIHF1ZXJ5OgorLS0gICAoMSkgQSBzaW5nbGUtcmVmZXJlbmNlIENURSBp cyBpbmxpbmVkIGJ5IHRoZSBwbGFubmVyIGFuZCB5aWVsZHMKKy0tICAgICAgIHBlci1yb3cgcmVz dWx0cyBpZGVudGljYWwgdG8gdGhlIGRpcmVjdCBSUFIgcXVlcnkuCistLSAgICgyKSBBIG11bHRp LXJlZmVyZW5jZSBDVEUgaXMgbWF0ZXJpYWxpemVkIChDVEUgU2NhbiBhcHBlYXJzIGluCistLSAg ICAgICB0aGUgcGxhbikgc28gcGF0dGVybiBtYXRjaGluZyBydW5zIG9uY2UsIGFuZCBldmVyeSBy ZWZlcmVuY2UKKy0tICAgICAgIG9ic2VydmVzIHRoZSBzYW1lIG1hdGNoIHJlc3VsdHMuCistLSBC YXNlbGluZTogZGlyZWN0IFJQUiBwcm9kdWNlcyB0aGUgcGVyLXJvdyByZWZlcmVuY2Ugb3V0cHV0 LgorU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKK0ZST00gcnByX2ludGVn CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIrKQorICAgIERFRklORSBC IEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOworIGlkIHwgdmFsIHwgY250IAorLS0t LSstLS0tLSstLS0tLQorICAxIHwgIDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAx NSB8ICAgMgorICA0IHwgIDI1IHwgICAwCisgIDUgfCAgIDUgfCAgIDMKKyAgNiB8ICAzMCB8ICAg MAorICA3IHwgIDM1IHwgICAwCisgIDggfCAgMjAgfCAgIDMKKyAgOSB8ICA0MCB8ICAgMAorIDEw IHwgIDQ1IHwgICAwCisoMTAgcm93cykKKworLS0gU2luZ2xlLXJlZmVyZW5jZSBDVEU6IHBsYW4g aGFzIG5vICJDVEUgcnByX3Jlc3VsdCIgc2NvcGUsIHNob3dpbmcKKy0tIHRoZSBDVEUgd2FzIGlu bGluZWQgaW50byB0aGUgc3Vycm91bmRpbmcgcXVlcnkuCitFWFBMQUlOIChDT1NUUyBPRkYpCitX SVRIIHJwcl9yZXN1bHQgQVMgKAorICAgIFNFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcg QVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQK KyAgICAgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYo dmFsKSkKKykKK1NFTEVDVCBpZCwgdmFsLCBjbnQgRlJPTSBycHJfcmVzdWx0IE9SREVSIEJZIGlk OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgV2luZG93QWdnCisgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIHJwcl9p bnRlZy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcp CisgICBQYXR0ZXJuOiBhIGIrCisgICBOYXYgTWFyayBMb29rYmFjazogMQorICAgLT4gIFNvcnQK KyAgICAgICAgIFNvcnQgS2V5OiBycHJfaW50ZWcuaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfaW50ZWcKKyg3IHJvd3MpCisKKy0tIFJlc3VsdCBtdXN0IG1hdGNoIHRoZSBiYXNlbGlu ZSByb3ctZm9yLXJvdy4KK1dJVEggcnByX3Jlc3VsdCBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWws IGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3 IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5F IEIgQVMgdmFsID4gUFJFVih2YWwpKQorKQorU0VMRUNUIGlkLCB2YWwsIGNudCBGUk9NIHJwcl9y ZXN1bHQgT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisg IDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAyCisgIDQgfCAg MjUgfCAgIDAKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAg IDAKKyAgOCB8ICAyMCB8ICAgMworICA5IHwgIDQwIHwgICAwCisgMTAgfCAgNDUgfCAgIDAKKygx MCByb3dzKQorCistLSBNdWx0aS1yZWZlcmVuY2UgQ1RFIChzZWxmLWpvaW4pOiBwbGFuIGhhcyBh ICJDVEUgcnByX3Jlc3VsdCIgc2NvcGUKKy0tIGFuZCBDVEUgU2NhbiBub2RlcyBvbiBib3RoIHNp ZGVzLCBzaG93aW5nIHRoZSBDVEUgd2FzIG1hdGVyaWFsaXplZAorLS0gYW5kIHBhdHRlcm4gbWF0 Y2hpbmcgcmFuIG9ubHkgb25jZS4KK0VYUExBSU4gKENPU1RTIE9GRikKK1dJVEggcnByX3Jlc3Vs dCBBUyAoCisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQKKyAgICBG Uk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgUEFU VEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQorKQorU0VM RUNUIHIxLmlkLCByMS5jbnQKK0ZST00gcnByX3Jlc3VsdCByMQorSk9JTiBycHJfcmVzdWx0IHIy IE9OIHIxLmlkID0gcjIuaWQgQU5EIHIxLmNudCA9IHIyLmNudAorV0hFUkUgcjEuY250ID4gMAor T1JERVIgQlkgcjEuaWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgTWVyZ2UgSm9pbgor ICAgTWVyZ2UgQ29uZDogKChyMi5pZCA9IHIxLmlkKSBBTkQgKHIyLmNudCA9IHIxLmNudCkpCisg ICBDVEUgcnByX3Jlc3VsdAorICAgICAtPiAgV2luZG93QWdnCisgICAgICAgICAgIFdpbmRvdzog dyBBUyAoT1JERVIgQlkgcnByX2ludGVnLmlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQg VU5CT1VOREVEIEZPTExPV0lORykKKyAgICAgICAgICAgUGF0dGVybjogYSBiKworICAgICAgICAg ICBOYXYgTWFyayBMb29rYmFjazogMQorICAgICAgICAgICAtPiAgU29ydAorICAgICAgICAgICAg ICAgICBTb3J0IEtleTogcnByX2ludGVnLmlkCisgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2Nh biBvbiBycHJfaW50ZWcKKyAgIC0+ICBJbmNyZW1lbnRhbCBTb3J0CisgICAgICAgICBTb3J0IEtl eTogcjIuaWQsIHIyLmNudAorICAgICAgICAgUHJlc29ydGVkIEtleTogcjIuaWQKKyAgICAgICAg IC0+ICBDVEUgU2NhbiBvbiBycHJfcmVzdWx0IHIyCisgICAtPiAgU29ydAorICAgICAgICAgU29y dCBLZXk6IHIxLmlkLCByMS5jbnQKKyAgICAgICAgIC0+ICBDVEUgU2NhbiBvbiBycHJfcmVzdWx0 IHIxCisgICAgICAgICAgICAgICBGaWx0ZXI6IChjbnQgPiAwKQorKDE4IHJvd3MpCisKKy0tIFJl c3VsdDogYm90aCByZWZlcmVuY2VzIHNlZSB0aGUgc2FtZSBtYXRjaCBjb3VudHMsIHNvIHRoZSBz ZWxmLWpvaW4KKy0tIHByZXNlcnZlcyBhbGwgbWF0Y2hlZCByb3dzIGZyb20gdGhlIGJhc2VsaW5l LgorV0lUSCBycHJfcmVzdWx0IEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZF UiB3IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZ IGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQ UkVWKHZhbCkpCispCitTRUxFQ1QgcjEuaWQsIHIxLmNudAorRlJPTSBycHJfcmVzdWx0IHIxCitK T0lOIHJwcl9yZXN1bHQgcjIgT04gcjEuaWQgPSByMi5pZCBBTkQgcjEuY250ID0gcjIuY250CitX SEVSRSByMS5jbnQgPiAwCitPUkRFUiBCWSByMS5pZDsKKyBpZCB8IGNudCAKKy0tLS0rLS0tLS0K KyAgMSB8ICAgMgorICAzIHwgICAyCisgIDUgfCAgIDMKKyAgOCB8ICAgMworKDQgcm93cykKKwor LS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CistLSBCMi4gUlBSICsgSk9JTgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBhbiBSUFIg c3VicXVlcnkgY2FuIGJlIGpvaW5lZCB3aXRoIGFub3RoZXIgcmVsYXRpb24uCistLSBUd28gYXNw ZWN0cyBhcmUgY2hlY2tlZCBhZ2FpbnN0IGEgbm9uLVJQUiBiYXNlbGluZToKKy0tICAgKDEpIEZs YXR0ZW5pbmc6IGEgbm9uLVJQUiBzdWJxdWVyeSBpcyBwdWxsZWQgdXAgYnkgdGhlIHBsYW5uZXIK Ky0tICAgICAgIChubyBTdWJxdWVyeSBTY2FuIGluIHRoZSBwbGFuKTsgYW4gUlBSIHN1YnF1ZXJ5 IGlzIGtlcHQKKy0tICAgICAgIHVuLWZsYXR0ZW5lZCAoU3VicXVlcnkgU2NhbiBhYm92ZSBXaW5k b3dBZ2cpLgorLS0gICAoMikgSm9pbiBjb3JyZWN0bmVzczogdGhlIGpvaW4gYWxpZ25zIGVhY2gg UlBSIG1hdGNoIHJvdyB3aXRoCistLSAgICAgICB0aGUgZGltZW5zaW9uLXRhYmxlIHJvdyBvbiB0 aGUgc2FtZSBrZXkuCitDUkVBVEUgVEFCTEUgcnByX2ludGVnMiAoaWQgSU5ULCBsYWJlbCBURVhU KTsKK0lOU0VSVCBJTlRPIHJwcl9pbnRlZzIgVkFMVUVTCisgICAgKDEsICdhJyksICgyLCAnYicp LCAoMywgJ2MnKSwgKDQsICdkJyksICg1LCAnZScpLAorICAgICg2LCAnZicpLCAoNywgJ2cnKSwg KDgsICdoJyksICg5LCAnaScpLCAoMTAsICdqJyk7CistLSBCYXNlbGluZTogYSBub24tUlBSIHN1 YnF1ZXJ5IGlzIGZsYXR0ZW5lZCBieSB0aGUgcGxhbm5lci4gIE5vCistLSBTdWJxdWVyeSBTY2Fu IG5vZGUgYXBwZWFyczsgdGhlIGlubmVyIFNFTEVDVCBpcyBtZXJnZWQgaW50byB0aGUKKy0tIG91 dGVyIGpvaW4uCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgci5pZCwgci52YWwsIGoubGFi ZWwKK0ZST00gKFNFTEVDVCBpZCwgdmFsIEZST00gcnByX2ludGVnKSByCitKT0lOIHJwcl9pbnRl ZzIgaiBPTiByLmlkID0gai5pZAorT1JERVIgQlkgci5pZDsKKyAgICAgICAgICAgICAgUVVFUlkg UExBTiAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIE1lcmdlIEpvaW4KKyAgIE1lcmdlIENvbmQ6IChqLmlkID0gcnByX2ludGVnLmlkKQorICAg LT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBqLmlkCisgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcnByX2ludGVnMiBqCisgICAtPiAgU29ydAorICAgICAgICAgU29ydCBLZXk6IHJwcl9pbnRl Zy5pZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZworKDggcm93cykKKworLS0g UlBSIHN1YnF1ZXJ5IEpPSU46IHRoZSBTdWJxdWVyeSBTY2FuIGlzIHByZXNlcnZlZCBhYm92ZSB0 aGUKKy0tIFdpbmRvd0FnZywgY29uZmlybWluZyB0aGUgUlBSIHN1YnF1ZXJ5IGlzIG5vdCBmbGF0 dGVuZWQuCitFWFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1Qgci5pZCwgci5jbnQsIGoubGFiZWwK K0ZST00gKAorICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00g cnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJO IChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHIKK0pPSU4g cnByX2ludGVnMiBqIE9OIHIuaWQgPSBqLmlkCitXSEVSRSByLmNudCA+IDAKK09SREVSIEJZIHIu aWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBNZXJnZSBKb2luCisgICBN ZXJnZSBDb25kOiAoci5pZCA9IGouaWQpCisgICAtPiAgU3VicXVlcnkgU2NhbiBvbiByCisgICAg ICAgICBGaWx0ZXI6IChyLmNudCA+IDApCisgICAgICAgICAtPiAgV2luZG93QWdnCisgICAgICAg ICAgICAgICBXaW5kb3c6IHcgQVMgKE9SREVSIEJZIHJwcl9pbnRlZy5pZCBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICAgICAgICBQYXR0 ZXJuOiBhIGIrCisgICAgICAgICAgICAgICBOYXYgTWFyayBMb29rYmFjazogMQorICAgICAgICAg ICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBycHJfaW50ZWcu aWQKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfaW50ZWcKKyAgIC0+ ICBTb3J0CisgICAgICAgICBTb3J0IEtleTogai5pZAorICAgICAgICAgLT4gIFNlcSBTY2FuIG9u IHJwcl9pbnRlZzIgagorKDE0IHJvd3MpCisKKy0tIFJlc3VsdDogbWF0Y2hlZCBSUFIgcm93cyBh bGlnbiB3aXRoIGRpbWVuc2lvbiByb3dzIG9uIGlkLCBzaG93aW5nCistLSB0aGUgam9pbiBjb3Jy ZWN0bHkgcGFpcnMgcGVyLXJvdyBtYXRjaCBjb3VudHMgd2l0aCB0aGVpciBsYWJlbHMuCitTRUxF Q1Qgci5pZCwgci5jbnQsIGoubGFiZWwKK0ZST00gKAorICAgIFNFTEVDVCBpZCwgY291bnQoKikg T1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVS IEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwg PiBQUkVWKHZhbCkpCispIHIKK0pPSU4gcnByX2ludGVnMiBqIE9OIHIuaWQgPSBqLmlkCitXSEVS RSByLmNudCA+IDAKK09SREVSIEJZIHIuaWQ7CisgaWQgfCBjbnQgfCBsYWJlbCAKKy0tLS0rLS0t LS0rLS0tLS0tLQorICAxIHwgICAyIHwgYQorICAzIHwgICAyIHwgYworICA1IHwgICAzIHwgZQor ICA4IHwgICAzIHwgaAorKDQgcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBCMy4gUlBSICsgU2V0IG9wZXJh dGlvbnMKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gVmVyaWZ5IHRoYXQgUlBSIHJlc3VsdHMgY29tYmluZSBjb3JyZWN0 bHkgd2l0aCBub24tUlBSIHJlc3VsdHMKKy0tIHVuZGVyIGEgVU5JT04gQUxMLiAgVGhlIHBsYW4g bXVzdCBzaG93IGFuIEFwcGVuZCBub2RlIHdpdGggdHdvCistLSBpbmRlcGVuZGVudCBjaGlsZCBw bGFuczogdGhlIFJQUiBicmFuY2ggd2l0aCBQYXR0ZXJuL0RFRklORSBhY3RpdmUsCistLSBhbmQg dGhlIG5vbi1SUFIgYnJhbmNoIHdpdGggYSBwbGFpbiBXaW5kb3dBZ2cuICBFYWNoIGNoaWxkIHNj YW5zCistLSB0aGUgYmFzZSByZWxhdGlvbiBvbiBpdHMgb3duIGFuZCBjb250cmlidXRlcyBpdHMg cm93cyB0byB0aGUKKy0tIHVuaW9uZWQgb3V0cHV0LgorLS0gUGxhbjogQXBwZW5kIHdpdGggdHdv IGluZGVwZW5kZW50IGNoaWxkcmVuLiAgVGhlIFJQUiBicmFuY2ggaGFzIGEKKy0tIFdpbmRvd0Fn ZyBjYXJyeWluZyBQYXR0ZXJuL05hdiBNYXJrIExvb2tiYWNrOyB0aGUgbm9uLVJQUiBicmFuY2gK Ky0tIGhhcyBhIHBsYWluIFdpbmRvd0FnZyB3aXRoIG5vIHBhdHRlcm4gbWV0YWRhdGEuCitFWFBM QUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgaWQsIGNudCwgJ3JwcicgQVMgc291cmNlIEZST00gKAor ICAgIFNFTEVDVCBpZCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICAgIEZST00gcnByX2ludGVn CisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIrKQor ICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHQgV0hFUkUgY250ID4gMAor VU5JT04gQUxMCitTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgKE9SREVSIEJZIGlkKSBBUyBjbnQs ICdub3JtYWwnIEFTIHNvdXJjZQorRlJPTSBycHJfaW50ZWcKK09SREVSIEJZIHNvdXJjZSwgaWQ7 CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBTb3J0Cisg ICBTb3J0IEtleTogKCdycHInOjp0ZXh0KSwgdC5pZAorICAgLT4gIEFwcGVuZAorICAgICAgICAg LT4gIFN1YnF1ZXJ5IFNjYW4gb24gdAorICAgICAgICAgICAgICAgRmlsdGVyOiAodC5jbnQgPiAw KQorICAgICAgICAgICAgICAgLT4gIFdpbmRvd0FnZworICAgICAgICAgICAgICAgICAgICAgV2lu ZG93OiB3IEFTIChPUkRFUiBCWSBycHJfaW50ZWcuaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorICAgICAgICAgICAgICAgICAgICAgUGF0dGVybjog YSBiKworICAgICAgICAgICAgICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgICAgICAg ICAgICAgICAgICAgIC0+ICBTb3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0IEtl eTogcnByX2ludGVnLmlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiAgU2VxIFNjYW4g b24gcnByX2ludGVnCisgICAgICAgICAtPiAgV2luZG93QWdnCisgICAgICAgICAgICAgICBXaW5k b3c6IHcxIEFTIChPUkRFUiBCWSBycHJfaW50ZWdfMS5pZCkKKyAgICAgICAgICAgICAgIC0+ICBT b3J0CisgICAgICAgICAgICAgICAgICAgICBTb3J0IEtleTogcnByX2ludGVnXzEuaWQKKyAgICAg ICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfaW50ZWcgcnByX2ludGVnXzEKKygx NyByb3dzKQorCistLSBSZXN1bHQ6IHJvd3MgZnJvbSBib3RoIGJyYW5jaGVzIGFyZSBwcmVzZW50 IGluIHRoZSB1bmlvbmVkIG91dHB1dC4KKy0tIFRoZSBSUFIgYnJhbmNoIGVtaXRzIG9ubHkgbWF0 Y2hlZCByb3dzIChjbnQgPiAwKSwgd2hpbGUgdGhlCistLSBub24tUlBSIGJyYW5jaCBlbWl0cyBh bGwgcm93cyB3aXRoIGl0cyBvd24gY291bnQgdmFsdWVzLgorU0VMRUNUIGlkLCBjbnQsICdycHIn IEFTIHNvdXJjZSBGUk9NICgKKyAgICBTRUxFQ1QgaWQsIGNvdW50KCopIE9WRVIgdyBBUyBjbnQK KyAgICBGUk9NIHJwcl9pbnRlZworICAgIFdJTkRPVyB3IEFTIChPUkRFUiBCWSBpZAorICAgICAg ICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAg ICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgREVGSU5FIEIgQVMgdmFsID4gUFJFVih2YWwpKQor KSB0IFdIRVJFIGNudCA+IDAKK1VOSU9OIEFMTAorU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIChP UkRFUiBCWSBpZCkgQVMgY250LCAnbm9ybWFsJyBBUyBzb3VyY2UKK0ZST00gcnByX2ludGVnCitP UkRFUiBCWSBzb3VyY2UsIGlkOworIGlkIHwgY250IHwgc291cmNlIAorLS0tLSstLS0tLSstLS0t LS0tLQorICAxIHwgICAxIHwgbm9ybWFsCisgIDIgfCAgIDIgfCBub3JtYWwKKyAgMyB8ICAgMyB8 IG5vcm1hbAorICA0IHwgICA0IHwgbm9ybWFsCisgIDUgfCAgIDUgfCBub3JtYWwKKyAgNiB8ICAg NiB8IG5vcm1hbAorICA3IHwgICA3IHwgbm9ybWFsCisgIDggfCAgIDggfCBub3JtYWwKKyAgOSB8 ICAgOSB8IG5vcm1hbAorIDEwIHwgIDEwIHwgbm9ybWFsCisgIDEgfCAgIDIgfCBycHIKKyAgMyB8 ICAgMiB8IHJwcgorICA1IHwgICAzIHwgcnByCisgIDggfCAgIDMgfCBycHIKKygxNCByb3dzKQor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEI0LiBSUFIgKyBQcmVwYXJlZCBzdGF0ZW1lbnRzCistLSA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZl cmlmeSB0aGF0IFJQUiBxdWVyaWVzIHN1cnZpdmUgdGhlIHByZXBhcmVkLXN0YXRlbWVudCBwYXRo IGJ5CistLSBleGVyY2lzaW5nIGJvdGggcGxhbmNhY2hlIG1vZGVzIHdpdGggYSBwYXJhbWV0ZXIg dGhhdCBmZWVkcyBpbnRvCistLSBSUFIncyBuYXZpZ2F0aW9uIG9mZnNldCAoUFJFVih2YWwsICQx KSkuICBUaGUgcGFyYW1ldGVyIHN1cmZhY2VzCistLSB0aGUgUlBSLXNwZWNpZmljIHBsYW5jYWNo ZSBkaWZmZXJlbmNlOgorLS0gICAtIGN1c3RvbSBwbGFuOiAiTmF2IE1hcmsgTG9va2JhY2siIGlz IHJlc29sdmVkIHRvIHRoZSBsaXRlcmFsCistLSAgICAgcGFyYW1ldGVyIHZhbHVlIGF0IHBsYW4g dGltZSAoZS5nLiwgIk5hdiBNYXJrIExvb2tiYWNrOiAxIikuCistLSAgIC0gZ2VuZXJpYyBwbGFu OiAiTmF2IE1hcmsgTG9va2JhY2siIGlzIGRlZmVycmVkIHRvIGV4ZWN1dGlvbiBhbmQKKy0tICAg ICBhcHBlYXJzIGFzICJOYXYgTWFyayBMb29rYmFjazogcnVudGltZSIgaW4gdGhlIHBsYW4uCist LSBUaGUgcmVzdWx0IG11c3QgYmUgaWRlbnRpY2FsIHVuZGVyIGJvdGggbW9kZXMuCistLSBSZWdp c3RlciB0aGUgcHJlcGFyZWQgc3RhdGVtZW50OyBERUZJTkUgdXNlcyBQUkVWKHZhbCwgJDEpIHNv IHRoZQorLS0gcGFyYW1ldGVyIHJlYWNoZXMgUlBSJ3MgbmF2aWdhdGlvbiBtYWNoaW5lcnkuCitQ UkVQQVJFIHJwcl9wcmV2KGludCkgQVMKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcg QVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCwgJDEpKQorT1JERVIgQlkg aWQ7CistLSBDdXN0b20gcGxhbjogTmF2IE1hcmsgTG9va2JhY2sgcmVzb2x2ZWQgdG8gdGhlIGxp dGVyYWwgMS4KK1NFVCBwbGFuX2NhY2hlX21vZGUgPSBmb3JjZV9jdXN0b21fcGxhbjsKK0VYUExB SU4gKENPU1RTIE9GRikgRVhFQ1VURSBycHJfcHJldigxKTsKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cKKyAgIFdpbmRvdzogdyBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HKQorICAgUGF0dGVybjogYSBiKworICAgTmF2IE1hcmsgTG9va2JhY2s6IDEKKyAgIC0+ICBT b3J0CisgICAgICAgICBTb3J0IEtleTogaWQKKyAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJf aW50ZWcKKyg3IHJvd3MpCisKK0VYRUNVVEUgcnByX3ByZXYoMSk7CisgaWQgfCB2YWwgfCBjbnQg CistLS0tKy0tLS0tKy0tLS0tCisgIDEgfCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAz IHwgIDE1IHwgICAyCisgIDQgfCAgMjUgfCAgIDAKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgIDMw IHwgICAwCisgIDcgfCAgMzUgfCAgIDAKKyAgOCB8ICAyMCB8ICAgMworICA5IHwgIDQwIHwgICAw CisgMTAgfCAgNDUgfCAgIDAKKygxMCByb3dzKQorCistLSBHZW5lcmljIHBsYW46IE5hdiBNYXJr IExvb2tiYWNrIGRlZmVycmVkIHRvIGV4ZWN1dGlvbiwgc2hvd24gYXMKKy0tICJydW50aW1lIiBp biB0aGUgcGxhbi4gIFJlc3VsdCBtdXN0IG1hdGNoIHRoZSBjdXN0b20tcGxhbiByZXN1bHQKKy0t IGV4YWN0bHkuCitTRVQgcGxhbl9jYWNoZV9tb2RlID0gZm9yY2VfZ2VuZXJpY19wbGFuOworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBFWEVDVVRFIHJwcl9wcmV2KDEpOworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcpCisgICBQYXR0ZXJuOiBhIGIrCisgICBOYXYgTWFyayBMb29rYmFjazogcnVudGltZQor ICAgLT4gIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5OiBpZAorICAgICAgICAgLT4gIFNlcSBTY2Fu IG9uIHJwcl9pbnRlZworKDcgcm93cykKKworRVhFQ1VURSBycHJfcHJldigxKTsKKyBpZCB8IHZh bCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwg ICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgICA1IHwgICAzCisg IDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDIwIHwgICAzCisgIDkgfCAg NDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAgMAorKDEwIHJvd3MpCisKK1JFU0VUIHBsYW5fY2FjaGVf bW9kZTsKK0RFQUxMT0NBVEUgcnByX3ByZXY7CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEI1LiBSUFIgKyBQYXJ0aXRp b25lZCB0YWJsZQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBSUFIgcGF0dGVybiBtYXRjaGluZyB3 b3JrcyBjb3JyZWN0bHkgd2hlbiB0aGUgc291cmNlCistLSByZWxhdGlvbiBpcyBwYXJ0aXRpb25l ZC4gIFRoZSBwbGFubmVyIG11c3QgZ2F0aGVyIHJvd3MgZnJvbSBldmVyeQorLS0gcGFydGl0aW9u IGludG8gYSBzaW5nbGUgb3JkZXJlZCBzdHJlYW0gYmVmb3JlIFJQUiBjYW4gc2VlIHRoZW0sCist LSBiZWNhdXNlIHBhdHRlcm4gbWF0Y2hpbmcgaXMgc2VxdWVudGlhbCBhY3Jvc3MgdGhlIGVudGly ZQorLS0gcGFydGl0aW9uLWJ5IGdyb3VwIGFuZCBjYW5ub3QgYmUgcGVyZm9ybWVkIGluZGVwZW5k ZW50bHkgb24gZWFjaAorLS0gdGFibGUgcGFydGl0aW9uLgorQ1JFQVRFIFRBQkxFIHJwcl9wYXJ0 IChpZCBJTlQsIHZhbCBJTlQpIFBBUlRJVElPTiBCWSBSQU5HRSAoaWQpOworQ1JFQVRFIFRBQkxF IHJwcl9wYXJ0XzEgUEFSVElUSU9OIE9GIHJwcl9wYXJ0IEZPUiBWQUxVRVMgRlJPTSAoMSkgVE8g KDYpOworQ1JFQVRFIFRBQkxFIHJwcl9wYXJ0XzIgUEFSVElUSU9OIE9GIHJwcl9wYXJ0IEZPUiBW QUxVRVMgRlJPTSAoNikgVE8gKDExKTsKK0lOU0VSVCBJTlRPIHJwcl9wYXJ0IFNFTEVDVCBpZCwg dmFsIEZST00gcnByX2ludGVnOworLS0gUGxhbjogcGFydGl0aW9uIHNjYW5zIGFyZSBjb21iaW5l ZCB3aXRoIEFwcGVuZCAob3IgTWVyZ2UgQXBwZW5kKSwKKy0tIHNvcnRlZCBpbnRvIGEgc2luZ2xl IG9yZGVyZWQgc3RyZWFtLCBhbmQgZmVkIGludG8gb25lIFdpbmRvd0FnZworLS0gdGhhdCBwZXJm b3JtcyBSUFIgcGF0dGVybiBtYXRjaGluZyBhY3Jvc3MgdGhlIGNvbWJpbmVkIHN0cmVhbS4KK0VY UExBSU4gKENPU1RTIE9GRikKK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMgY250 CitGUk9NIHJwcl9wYXJ0CitXSU5ET1cgdyBBUyAoT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBQQVRURVJOIChBIEIr KQorICAgIERFRklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSkKK09SREVSIEJZIGlkOworICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIFdpbmRvd0FnZworICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBycHJfcGFydC5pZCBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJu OiBhIGIrCisgICBOYXYgTWFyayBMb29rYmFjazogMQorICAgLT4gIFNvcnQKKyAgICAgICAgIFNv cnQgS2V5OiBycHJfcGFydC5pZAorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAg LT4gIFNlcSBTY2FuIG9uIHJwcl9wYXJ0XzEKKyAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBv biBycHJfcGFydF8yCisoOSByb3dzKQorCistLSBCYXNlbGluZTogdGhlIHNhbWUgcXVlcnkgYWdh aW5zdCB0aGUgbm9uLXBhcnRpdGlvbmVkIHJwcl9pbnRlZworLS0gcHJvZHVjZXMgdGhlIHBlci1y b3cgcmVmZXJlbmNlIG91dHB1dC4KK1NFTEVDVCBpZCwgdmFsLCBjb3VudCgqKSBPVkVSIHcgQVMg Y250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAo QSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsKKyBp ZCB8IHZhbCB8IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwg IDIwIHwgICAwCisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgICA1IHwg ICAzCisgIDYgfCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDIwIHwgICAzCisg IDkgfCAgNDAgfCAgIDAKKyAxMCB8ICA0NSB8ICAgMAorKDEwIHJvd3MpCisKKy0tIFJlc3VsdCBh Z2FpbnN0IHRoZSBwYXJ0aXRpb25lZCB0YWJsZSBtdXN0IG1hdGNoIHRoZSBiYXNlbGluZQorLS0g cm93LWZvci1yb3cuCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJP TSBycHJfcGFydAorV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAg ICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRFUiBCWSBpZDsKKyBpZCB8IHZhbCB8 IGNudCAKKy0tLS0rLS0tLS0rLS0tLS0KKyAgMSB8ICAxMCB8ICAgMgorICAyIHwgIDIwIHwgICAw CisgIDMgfCAgMTUgfCAgIDIKKyAgNCB8ICAyNSB8ICAgMAorICA1IHwgICA1IHwgICAzCisgIDYg fCAgMzAgfCAgIDAKKyAgNyB8ICAzNSB8ICAgMAorICA4IHwgIDIwIHwgICAzCisgIDkgfCAgNDAg fCAgIDAKKyAxMCB8ICA0NSB8ICAgMAorKDEwIHJvd3MpCisKK0RST1AgVEFCTEUgcnByX3BhcnQ7 CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEI2LiBSUFIgKyBMQVRFUkFMCistLSA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFJQUiBpbnNpZGUgYSBM QVRFUkFMIHN1YnF1ZXJ5LiAgUXVhbGlmaWVkIGNvbHVtbiByZWZlcmVuY2VzIGZyb20KKy0tIHRo ZSBvdXRlciBxdWVyeSBhcmUgbm90IHlldCBzdXBwb3J0ZWQgaW4gREVGSU5FLCBzbyB0aGlzIHRl c3RzCistLSB0aGUgYmFzaWMgY2FzZSB3aGVyZSBMQVRFUkFMIHByb3ZpZGVzIHRoZSBjb3JyZWxh dGlvbiBmaWx0ZXIKKy0tIChXSEVSRSBpZCA8PSBvLmlkKSBhbmQgREVGSU5FIHVzZXMgb25seSBs b2NhbCBjb2x1bW5zLiAgVGhlIHBsYW4KKy0tIG11c3Qgc2hvdyBhIE5lc3RlZCBMb29wIGRyaXZp bmcgdGhlIG91dGVyIHJlbGF0aW9uIGludG8gdGhlIGlubmVyCistLSBzdWJxdWVyeSBzY2FuLCB3 aXRoIHRoZSBSUFIgV2luZG93QWdnIHJlLWV4ZWN1dGVkIGZvciBlYWNoIG91dGVyCistLSByb3cg YW5kIHRoZSBjb3JyZWxhdGlvbiBzdXJmYWNpbmcgYXMgYSBzY2FuLWxldmVsIEZpbHRlciBvbgor LS0gImlkIDw9IG8uaWQiLgorLS0gUGxhbjogTmVzdGVkIExvb3Agd2l0aCB0aGUgUlBSIFdpbmRv d0FnZyBpbiB0aGUgaW5uZXIgbGVnLCBkcml2ZW4KKy0tIGJ5IHRoZSBmaWx0ZXJlZCBvdXRlciBy b3dzIChvLmlkIElOICg1LCAxMCkpLgorRVhQTEFJTiAoQ09TVFMgT0ZGKQorU0VMRUNUIG8uaWQg QVMgb3V0ZXJfaWQsIHIuaWQsIHIuY250CitGUk9NIHJwcl9pbnRlZyBvLAorTEFURVJBTCAoCisg ICAgU0VMRUNUIGlkLCBjb3VudCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcK KyAgICBXSEVSRSBpZCA8PSBvLmlkCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAg ICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAg ICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkp CispIHIKK1dIRVJFIHIuY250ID4gMCBBTkQgby5pZCBJTiAoNSwgMTApCitPUkRFUiBCWSBvLmlk LCByLmlkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg UVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg U29ydAorICAgU29ydCBLZXk6IG8uaWQsIHIuaWQKKyAgIC0+ICBOZXN0ZWQgTG9vcAorICAgICAg ICAgLT4gIFNlcSBTY2FuIG9uIHJwcl9pbnRlZyBvCisgICAgICAgICAgICAgICBGaWx0ZXI6IChp ZCA9IEFOWSAoJ3s1LDEwfSc6OmludGVnZXJbXSkpCisgICAgICAgICAtPiAgU3VicXVlcnkgU2Nh biBvbiByCisgICAgICAgICAgICAgICBGaWx0ZXI6IChyLmNudCA+IDApCisgICAgICAgICAgICAg ICAtPiAgV2luZG93QWdnCisgICAgICAgICAgICAgICAgICAgICBXaW5kb3c6IHcgQVMgKE9SREVS IEJZIHJwcl9pbnRlZy5pZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcpCisgICAgICAgICAgICAgICAgICAgICBQYXR0ZXJuOiBhIGIrCisgICAgICAgICAg ICAgICAgICAgICBOYXYgTWFyayBMb29rYmFjazogMQorICAgICAgICAgICAgICAgICAgICAgLT4g IFNvcnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnQgS2V5OiBycHJfaW50ZWcuaWQK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBycHJfaW50ZWcKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlcjogKGlkIDw9IG8uaWQpCisoMTUg cm93cykKKworLS0gUmVzdWx0OiBmb3IgZWFjaCBvZiB0aGUgdHdvIG91dGVyIGlkcyAoNSBhbmQg MTApLCB0aGUgTEFURVJBTAorLS0gc3VicXVlcnkgcHJvZHVjZXMgUlBSIG1hdGNoIGNvdW50cyBv dmVyIHRoZSByZXN0cmljdGVkIGlucHV0LgorU0VMRUNUIG8uaWQgQVMgb3V0ZXJfaWQsIHIuaWQs IHIuY250CitGUk9NIHJwcl9pbnRlZyBvLAorTEFURVJBTCAoCisgICAgU0VMRUNUIGlkLCBjb3Vu dCgqKSBPVkVSIHcgQVMgY250CisgICAgRlJPTSBycHJfaW50ZWcKKyAgICBXSEVSRSBpZCA8PSBv LmlkCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRURVJOIChBIEIr KQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCispIHIKK1dIRVJFIHIuY250 ID4gMCBBTkQgby5pZCBJTiAoNSwgMTApCitPUkRFUiBCWSBvLmlkLCByLmlkOworIG91dGVyX2lk IHwgaWQgfCBjbnQgCistLS0tLS0tLS0tKy0tLS0rLS0tLS0KKyAgICAgICAgNSB8ICAxIHwgICAy CisgICAgICAgIDUgfCAgMyB8ICAgMgorICAgICAgIDEwIHwgIDEgfCAgIDIKKyAgICAgICAxMCB8 ICAzIHwgICAyCisgICAgICAgMTAgfCAgNSB8ICAgMworICAgICAgIDEwIHwgIDggfCAgIDMKKyg2 IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gQjcuIFJQUiArIFJlY3Vyc2l2ZSBDVEUKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g VmVyaWZ5IHRoYXQgUlBSIGlzIHJlamVjdGVkIGluc2lkZSBhIHJlY3Vyc2l2ZSBxdWVyeS4KKy0t IElTTy9JRUMgMTkwNzUtNSA2LjE3LjUgKFIwMjApIGFuZCA0LjE4LjUgKFIwMTApIGNpdGUgQ1JF QVRFCistLSBSRUNVUlNJVkUgVklFVyBleGFtcGxlcyBhbmQgc3RhdGUgdGhhdCAicm93IHBhdHRl cm4gbWF0Y2hpbmcKKy0tIGlzIHByb2hpYml0ZWQgaW4gcmVjdXJzaXZlIHF1ZXJpZXMiLiAgVGhl IGZvcm1hbCBydWxlIGxpdmVzIGluCistLSBJU08vSUVDIDkwNzUtMjoyMDE2IDcuMTcgU3ludGF4 IFJ1bGUgMylmKTogYSBwb3RlbnRpYWxseQorLS0gcmVjdXJzaXZlIDx3aXRoIGxpc3QgZWxlbWVu dD4gc2hhbGwgbm90IGNvbnRhaW4gYSA8cm93IHBhdHRlcm4KKy0tIG1lYXN1cmVzPiBvciA8cm93 IHBhdHRlcm4gY29tbW9uIHN5bnRheD4uICBQZXIgMyllKSwgZXZlcnkKKy0tIDx3aXRoIGxpc3Qg ZWxlbWVudD4gdW5kZXIgV0lUSCBSRUNVUlNJVkUgaXMgInBvdGVudGlhbGx5CistLSByZWN1cnNp dmUiLCBzbyB0aGUgcmVqZWN0aW9uIGNvdmVycyB0aGUgYmFzZSAobm9uLXJlY3Vyc2l2ZSkKKy0t IGxlZyB0b28sIG5vdCBqdXN0IHRoZSBzZWxmLXJlZmVyZW5jaW5nIGxlZy4KKy0tIFdJVEggUkVD VVJTSVZFOiBSUFIgaW4gdGhlIGJhc2UgbGVnIGlzIHJlamVjdGVkIGV2ZW4gdGhvdWdoIHRoZQor LS0gYmFzZSBsZWcgbmV2ZXIgcmVmZXJlbmNlcyB0aGUgcmVjdXJzaXZlIENURSBuYW1lLgorV0lU SCBSRUNVUlNJVkUgc2VxIEFTICgKKyAgICBTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3 IEFTIGNudAorICAgIEZST00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlk CisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVW KHZhbCkpCisgICAgVU5JT04gQUxMCisgICAgU0VMRUNUIGlkICsgMTAwLCB2YWwsIGNudCBGUk9N IHNlcSBXSEVSRSBpZCA8IDMKKykKK1NFTEVDVCBpZCwgdmFsLCBjbnQgRlJPTSBzZXEgT1JERVIg QlkgaWQ7CitFUlJPUjogIGNhbm5vdCB1c2Ugcm93IHBhdHRlcm4gcmVjb2duaXRpb24gaW4gYSBy ZWN1cnNpdmUgcXVlcnkKK0xJTkUgNjogICAgICAgICBQQVRURVJOIChBIEIrKQorICAgICAgICAg ICAgICAgIF4KKy0tIENSRUFURSBSRUNVUlNJVkUgVklFVzogcmV3cml0dGVuIGJ5IG1ha2VSZWN1 cnNpdmVWaWV3U2VsZWN0KCkKKy0tIGludG8gV0lUSCBSRUNVUlNJVkUsIHNvIHRoZSBzYW1lIHJl amVjdGlvbiBhcHBsaWVzLiAgVGhpcyBpcworLS0gdGhlIGZvcm0gSVNPL0lFQyAxOTA3NS01IDYu MTcuNSBjaXRlcyB2ZXJiYXRpbS4KK0NSRUFURSBSRUNVUlNJVkUgVklFVyBycHJfcmVjdihpZCwg dmFsLCBjbnQpIEFTCisgICAgU0VMRUNUIGlkLCB2YWwsIGNvdW50KCopIE9WRVIgdworICAgIEZS T00gcnByX2ludGVnCisgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgIFJPV1Mg QkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBQQVRU RVJOIChBIEIrKQorICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpOworRVJST1I6 ICBjYW5ub3QgdXNlIHJvdyBwYXR0ZXJuIHJlY29nbml0aW9uIGluIGEgcmVjdXJzaXZlIHF1ZXJ5 CitMSU5FIDY6ICAgICAgICAgUEFUVEVSTiAoQSBCKykKKyAgICAgICAgICAgICAgICBeCistLSA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KKy0tIEI4LiBSUFIgKyBJbmNyZW1lbnRhbCBzb3J0CistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFZlcmlmeSB0aGF0 IFJQUiBwYXR0ZXJuIG1hdGNoaW5nIHdvcmtzIGNvcnJlY3RseSB3aGVuIHRoZSBpbnB1dAorLS0g dG8gV2luZG93QWdnIGFycml2ZXMgdmlhIGFuIGluY3JlbWVudGFsIHNvcnQuICBUaGUgaW5kZXgg b24gKGlkKQorLS0gcHJvdmlkZXMgcHJlc29ydGVkIGlucHV0IGZvciB0aGUgZmlyc3QgT1JERVIg Qlkga2V5LCBzbworLS0gIk9SREVSIEJZIGlkLCB2YWwiIGxldHMgdGhlIHBsYW5uZXIgdXNlIElu Y3JlbWVudGFsIFNvcnQgdG8gb3JkZXIKKy0tIG9ubHkgb24gdGhlIHNlY29uZCBrZXkuICBUaGUg cGxhbiBtdXN0IHNob3cgSW5jcmVtZW50YWwgU29ydAorLS0gYmVsb3cgdGhlIFJQUiBXaW5kb3dB Z2csIGFuZCBSUFIgbXVzdCBwcm9kdWNlIHRoZSBzYW1lIHBlci1yb3cKKy0tIG1hdGNoIGNvdW50 cyBhcyBpdCB3b3VsZCB3aXRoIGEgcGxhaW4gU29ydC4KK0NSRUFURSBJTkRFWCBycHJfaW50ZWdf aWRfaWR4IE9OIHJwcl9pbnRlZyAoaWQpOworU0VUIGVuYWJsZV9zZXFzY2FuID0gb2ZmOworLS0g UGxhbjogUlBSIFdpbmRvd0FnZyBhYm92ZSBhbiBJbmNyZW1lbnRhbCBTb3J0IGFib3ZlIGFuIElu ZGV4IFNjYW4uCistLSBUaGUgSW5jcmVtZW50YWwgU29ydCBkZWNsYXJlcyAiUHJlc29ydGVkIEtl eTogaWQiIGFuZCBzb3J0cyBvbmx5CistLSBvbiB2YWwgd2l0aGluIGVhY2ggaWQgZ3JvdXAuCitF WFBMQUlOIChDT1NUUyBPRkYpCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNu dAorRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCwgdmFsCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVS TiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpOworICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBXaW5kb3dBZ2cK KyAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaWQsIHZhbCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICBQYXR0ZXJuOiBhIGIrCisgICBOYXYgTWFy ayBMb29rYmFjazogMQorICAgLT4gIEluY3JlbWVudGFsIFNvcnQKKyAgICAgICAgIFNvcnQgS2V5 OiBpZCwgdmFsCisgICAgICAgICBQcmVzb3J0ZWQgS2V5OiBpZAorICAgICAgICAgLT4gIEluZGV4 IFNjYW4gdXNpbmcgcnByX2ludGVnX2lkX2lkeCBvbiBycHJfaW50ZWcKKyg4IHJvd3MpCisKKy0t IFJlc3VsdDogUlBSIG92ZXIgdGhlIGluY3JlbWVudGFsbHkgc29ydGVkIHN0cmVhbSBwcm9kdWNl cyBtYXRjaAorLS0gY291bnRzIHBlciByb3cuCitTRUxFQ1QgaWQsIHZhbCwgY291bnQoKikgT1ZF UiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcKK1dJTkRPVyB3IEFTIChPUkRFUiBCWSBpZCwgdmFs CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCitPUkRF UiBCWSBpZCwgdmFsOworIGlkIHwgdmFsIHwgY250IAorLS0tLSstLS0tLSstLS0tLQorICAxIHwg IDEwIHwgICAyCisgIDIgfCAgMjAgfCAgIDAKKyAgMyB8ICAxNSB8ICAgMgorICA0IHwgIDI1IHwg ICAwCisgIDUgfCAgIDUgfCAgIDMKKyAgNiB8ICAzMCB8ICAgMAorICA3IHwgIDM1IHwgICAwCisg IDggfCAgMjAgfCAgIDMKKyAgOSB8ICA0MCB8ICAgMAorIDEwIHwgIDQ1IHwgICAwCisoMTAgcm93 cykKKworUkVTRVQgZW5hYmxlX3NlcXNjYW47CitEUk9QIElOREVYIHJwcl9pbnRlZ19pZF9pZHg7 CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEI5LiBSUFIgKyBWb2xhdGlsZSBmdW5jdGlvbiBpbiBERUZJTkUKKy0tID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQorLS0gVm9sYXRpbGUgZnVuY3Rpb25zIGluIERFRklORSBhcmUgcmVqZWN0ZWQgaW4gdGhlIHBs YW5uZXIuICBVbmRlcgorLS0gUlBSJ3MgTkZBIGVuZ2luZSB0aGUgc2FtZSByb3cncyBERUZJTkUg cHJlZGljYXRlIG1heSBiZSBldmFsdWF0ZWQKKy0tIG11bHRpcGxlIHRpbWVzIChiYWNrdHJhY2tp bmcsIFBSRVYvTkVYVCBuYXZpZ2F0aW9uKSwgc28gYSB2b2xhdGlsZQorLS0gcmVzdWx0IHdvdWxk IG1ha2UgcGF0dGVybiBtYXRjaGluZyBub24tZGV0ZXJtaW5pc3RpYy4gIFNUQUJMRSBhbmQKKy0t IElNTVVUQUJMRSBjYWxsZWVzIGFyZSBhY2NlcHRlZC4KKy0tIEJhc2VsaW5lOiBTVEFCTEUgKHRv X2NoYXIpIGFuZCBJTU1VVEFCTEUgKGxlbmd0aCkgY2FsbGVlcyBhcmUgYWNjZXB0ZWQuCitTRUxF Q1QgaWQsIHZhbCwgY291bnQoKikgT1ZFUiB3IEFTIGNudAorRlJPTSBycHJfaW50ZWcKK1dJTkRP VyB3IEFTIChPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIFBBVFRFUk4gKEEgQispCisgICAgREVGSU5FIEIgQVMgdmFs ID4gUFJFVih2YWwpCisgICAgICAgICAgICAgICAgQU5EIGxlbmd0aCgneCcpID0gMQorICAgICAg ICAgICAgICAgIEFORCB0b19jaGFyKGRhdGUgJzIwMjYtMDEtMDEnLCAnWVlZWScpID0gJzIwMjYn KQorT1JERVIgQlkgaWQ7CisgaWQgfCB2YWwgfCBjbnQgCistLS0tKy0tLS0tKy0tLS0tCisgIDEg fCAgMTAgfCAgIDIKKyAgMiB8ICAyMCB8ICAgMAorICAzIHwgIDE1IHwgICAyCisgIDQgfCAgMjUg fCAgIDAKKyAgNSB8ICAgNSB8ICAgMworICA2IHwgIDMwIHwgICAwCisgIDcgfCAgMzUgfCAgIDAK KyAgOCB8ICAyMCB8ICAgMworICA5IHwgIDQwIHwgICAwCisgMTAgfCAgNDUgfCAgIDAKKygxMCBy b3dzKQorCistLSBWb2xhdGlsZSAocmFuZG9tKSBpcyByZWplY3RlZC4KK1NFTEVDVCBpZCwgdmFs LCBjb3VudCgqKSBPVkVSIHcgQVMgY250CitGUk9NIHJwcl9pbnRlZworV0lORE9XIHcgQVMgKE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZh bCkgQU5EIHJhbmRvbSgpID49IDAuMCkKK09SREVSIEJZIGlkOworRVJST1I6ICB2b2xhdGlsZSBm dW5jdGlvbnMgYXJlIG5vdCBhbGxvd2VkIGluIERFRklORSBjbGF1c2UKK0xJTkUgNjogICAgIERF RklORSBCIEFTIHZhbCA+IFBSRVYodmFsKSBBTkQgcmFuZG9tKCkgPj0gMC4wKQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEIxMC4gUlBS ICsgQ29ycmVsYXRlZCBzdWJxdWVyeSBpbiBXSEVSRQorLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJpZnkgdGhhdCBh biBSUFIgd2luZG93IHBsYWNlZCBpbnNpZGUgYSBjb3JyZWxhdGVkIHNjYWxhcgorLS0gc3VicXVl cnkgaXMgZXhlY3V0ZWQgb25jZSBwZXIgb3V0ZXIgcm93LiAgREVGSU5FIHN0aWxsIHJlZmVyZW5j ZXMKKy0tIG9ubHkgbG9jYWwgY29sdW1ucyAocXVhbGlmaWVkIHJlZnMgZnJvbSB0aGUgb3V0ZXIg cXVlcnkgYXJlIG5vdAorLS0gc3VwcG9ydGVkIGluIERFRklORSk7IHRoZSBjb3JyZWxhdGlvbiBs aXZlcyBpbiB0aGUgc3VicXVlcnkncworLS0gV0hFUkUgY2xhdXNlIGFzICJpLmlkIDw9IG8uaWQi LiAgVGhlIHBsYW4gbXVzdCBzaG93IGEgU3ViUGxhbgorLS0gYXR0YWNoZWQgdG8gdGhlIG91dGVy IHNjYW4sIHdpdGggdGhlIFJQUiBXaW5kb3dBZ2cgZHJpdmVuIGJ5IGEKKy0tIHBlci1yb3cgc2Nh biBmaWx0ZXIgY2FycnlpbmcgdGhlIGNvcnJlbGF0aW9uIHByZWRpY2F0ZS4KKy0tIFBsYW46IFN1 YlBsYW4gYXR0YWNoZWQgdG8gdGhlIG91dGVyIFNlcSBTY2FuOyB0aGUgaW5uZXIgc2NhbgorLS0g Y2FycmllcyAiRmlsdGVyOiAoaWQgPD0gby5pZCkiLCBjb25maXJtaW5nIHRoZSBjb3JyZWxhdGlv biBpcworLS0gZXZhbHVhdGVkIHBlciBvdXRlciByb3cuCitFWFBMQUlOIChDT1NUUyBPRkYpCitT RUxFQ1Qgby5pZCwgby52YWwsCisgICAgKFNFTEVDVCBjb3VudCgqKSBPVkVSIHcKKyAgICAgRlJP TSBycHJfaW50ZWcgaQorICAgICBXSEVSRSBpLmlkIDw9IG8uaWQKKyAgICAgV0lORE9XIHcgQVMg KE9SREVSIEJZIGlkCisgICAgICAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICAgICAgIFBBVFRFUk4gKEEgQispCisgICAgICAgICBERUZJTkUg QiBBUyB2YWwgPiBQUkVWKHZhbCkpCisgICAgIE9SREVSIEJZIGlkCisgICAgIExJTUlUIDEpIEFT IGZpcnN0X2NudAorRlJPTSBycHJfaW50ZWcgbworT1JERVIgQlkgby5pZDsKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIFNvcnQgS2V5OiBvLmlkCisgICAtPiAg U2VxIFNjYW4gb24gcnByX2ludGVnIG8KKyAgICAgICAgIFN1YlBsYW4gZXhwcl8xCisgICAgICAg ICAgIC0+ICBMaW1pdAorICAgICAgICAgICAgICAgICAtPiAgV2luZG93QWdnCisgICAgICAgICAg ICAgICAgICAgICAgIFdpbmRvdzogdyBBUyAoT1JERVIgQlkgaS5pZCBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICAgICAgICAgICAgICAg IFBhdHRlcm46IGEgYisKKyAgICAgICAgICAgICAgICAgICAgICAgTmF2IE1hcmsgTG9va2JhY2s6 IDEKKyAgICAgICAgICAgICAgICAgICAgICAgLT4gIFNvcnQKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgU29ydCBLZXk6IGkuaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLT4g IFNlcSBTY2FuIG9uIHJwcl9pbnRlZyBpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEZpbHRlcjogKGlkIDw9IG8uaWQpCisoMTMgcm93cykKKworLS0gUmVzdWx0OiBlYWNoIG91 dGVyIHJvdyByZWNlaXZlcyB0aGUgZmlyc3RfY250IGZyb20gaXRzIG93bgorLS0gY29ycmVsYXRl ZCBSUFIgc3VicXVlcnkuCitTRUxFQ1Qgby5pZCwgby52YWwsCisgICAgKFNFTEVDVCBjb3VudCgq KSBPVkVSIHcKKyAgICAgRlJPTSBycHJfaW50ZWcgaQorICAgICBXSEVSRSBpLmlkIDw9IG8uaWQK KyAgICAgV0lORE9XIHcgQVMgKE9SREVSIEJZIGlkCisgICAgICAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgIFBBVFRFUk4gKEEgQisp CisgICAgICAgICBERUZJTkUgQiBBUyB2YWwgPiBQUkVWKHZhbCkpCisgICAgIE9SREVSIEJZIGlk CisgICAgIExJTUlUIDEpIEFTIGZpcnN0X2NudAorRlJPTSBycHJfaW50ZWcgbworT1JERVIgQlkg by5pZDsKKyBpZCB8IHZhbCB8IGZpcnN0X2NudCAKKy0tLS0rLS0tLS0rLS0tLS0tLS0tLS0KKyAg MSB8ICAxMCB8ICAgICAgICAgMAorICAyIHwgIDIwIHwgICAgICAgICAyCisgIDMgfCAgMTUgfCAg ICAgICAgIDIKKyAgNCB8ICAyNSB8ICAgICAgICAgMgorICA1IHwgICA1IHwgICAgICAgICAyCisg IDYgfCAgMzAgfCAgICAgICAgIDIKKyAgNyB8ICAzNSB8ICAgICAgICAgMgorICA4IHwgIDIwIHwg ICAgICAgICAyCisgIDkgfCAgNDAgfCAgICAgICAgIDIKKyAxMCB8ICA0NSB8ICAgICAgICAgMgor KDEwIHJvd3MpCisKKy0tIEEgY29sdW1uIHJlZmVyZW5jZWQgb25seSBieSBERUZJTkUgbXVzdCBu b3Qga2VlcCBhbiB1bnJlbGF0ZWQgY29sdW1uIHRoYXQKKy0tIG1lcmVseSBzaGFyZXMgaXRzIGF0 dHJpYnV0ZSBudW1iZXIuICBERUZJTkUgcmVmZXJlbmNlcyBhIChycHJfb3ZlcjEpOyBjCistLSAo cnByX292ZXIyKSBoYXMgdGhlIHNhbWUgYXR0bm8gYnV0IGlzIHVudXNlZCwgc28gaXQgbXVzdCBi ZSBkcm9wcGVkLgorQ1JFQVRFIFRBQkxFIHJwcl9vdmVyMSAoYSBpbnQpOworQ1JFQVRFIFRBQkxF IHJwcl9vdmVyMiAoYyBpbnQpOworSU5TRVJUIElOVE8gcnByX292ZXIxIFZBTFVFUyAoMSksKDIp LCgzKTsKK0lOU0VSVCBJTlRPIHJwcl9vdmVyMiBWQUxVRVMgKDEpLCgyKSwoMyk7CitFWFBMQUlO IChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgY250IEZST00gKAorICBTRUxFQ1QgYSBBUyBv YSwgYyBBUyBvYywgY291bnQoKikgT1ZFUiB3IEFTIGNudAorICBGUk9NIHJwcl9vdmVyMSBDUk9T UyBKT0lOIHJwcl9vdmVyMgorICBXSU5ET1cgdyBBUyAoT1JERVIgQlkgYSBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgICAgICAgIFBBVFRF Uk4gKFgrKSBERUZJTkUgWCBBUyBhID4gMCkKKykgczsKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBT dWJxdWVyeSBTY2FuIG9uIHMKKyAgIE91dHB1dDogcy5jbnQKKyAgIC0+ICBXaW5kb3dBZ2cKKyAg ICAgICAgIE91dHB1dDogcnByX292ZXIxLmEsIE5VTEw6OmludGVnZXIsIGNvdW50KCopIE9WRVIg dworICAgICAgICAgV2luZG93OiB3IEFTIChPUkRFUiBCWSBycHJfb3ZlcjEuYSBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcpCisgICAgICAgICBQYXR0ZXJu OiB4KyIKKyAgICAgICAgIE5hdiBNYXJrIExvb2tiYWNrOiAwCisgICAgICAgICAtPiAgU29ydAor ICAgICAgICAgICAgICAgT3V0cHV0OiBycHJfb3ZlcjEuYQorICAgICAgICAgICAgICAgU29ydCBL ZXk6IHJwcl9vdmVyMS5hCisgICAgICAgICAgICAgICAtPiAgTmVzdGVkIExvb3AKKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogcnByX292ZXIxLmEKKyAgICAgICAgICAgICAgICAgICAgIC0+ ICBTZXEgU2NhbiBvbiBwdWJsaWMucnByX292ZXIxCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHJwcl9vdmVyMS5hCisgICAgICAgICAgICAgICAgICAgICAtPiAgTWF0ZXJpYWxp emUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0+ICBTZXEgU2NhbiBvbiBwdWJsaWMucnBy X292ZXIyCisoMTYgcm93cykKKworRFJPUCBUQUJMRSBycHJfb3ZlcjEsIHJwcl9vdmVyMjsKKy0t IENsZWFudXAKK0RST1AgVEFCTEUgcnByX2ludGVnOworRFJPUCBUQUJMRSBycHJfaW50ZWcyOwpk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dCBiL3NyYy90 ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnByX25mYS5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwMDAuLjFmYzg1YTM2NWY2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9ycHJfbmZhLm91dApAQCAtMCwwICsxLDQ5MTYgQEAKKy0tID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQor LS0gUlBSIE5GQSBUZXN0cworLS0gVGVzdHMgZm9yIFJvdyBQYXR0ZXJuIFJlY29nbml0aW9uIE5G QSBSdW50aW1lIEV4ZWN1dGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLQorLS0gVGhpcyB0ZXN0IHN1aXRlIHZhbGlk YXRlcyB0aGUgTkZBIChOb24tZGV0ZXJtaW5pc3RpYyBGaW5pdGUKKy0tIEF1dG9tYXRvbikgcnVu dGltZSBleGVjdXRpb24gZW5naW5lIGluIG5vZGVXaW5kb3dBZ2cuYywKKy0tIGZvY3VzaW5nIG9u IHVwZGF0ZV9yZWR1Y2VkX2ZyYW1lIGFuZCByZWxhdGVkIGZ1bmN0aW9ucy4KKy0tCistLSBUZXN0 IFN0cmF0ZWd5OgorLS0gICBEaWFnb25hbCBwYXR0ZXJuIHN0eWxlIHVzaW5nIEFSUkFZIGZsYWdz IHRvIGV4cGxpY2l0bHkKKy0tICAgY29udHJvbCB3aGljaCBwYXR0ZXJuIHZhcmlhYmxlcyBtYXRj aCBhdCBlYWNoIHJvdy4KKy0tCistLSBUZXN0IENvdmVyYWdlOgorLS0gICBCYXNpYyBORkEgRmxv dyAobWF0Y2gtPmFic29yYi0+YWR2YW5jZSkKKy0tICAgQWJzb3JwdGlvbiBPcHRpbWl6YXRpb24K Ky0tICAgQ29udGV4dCBMaWZlY3ljbGUgTWFuYWdlbWVudAorLS0gICBBZHZhbmNlIFBoYXNlIChF cHNpbG9uIFRyYW5zaXRpb25zKQorLS0gICBNYXRjaCBQaGFzZSAoVmFyaWFibGUgTWF0Y2hpbmcp CistLSAgIEZyYW1lIEJvdW5kYXJ5IEhhbmRsaW5nCistLSAgIFN0YXRlIE1hbmFnZW1lbnQgKERl ZHVwbGljYXRpb24pCistLSAgIFN0YXRpc3RpY3MgYW5kIERpYWdub3N0aWNzCistLSAgIFF1YW50 aWZpZXIgUnVudGltZSBCZWhhdmlvcgorLS0gICBQYXRob2xvZ2ljYWwgUGF0dGVybiBQcm90ZWN0 aW9uCistLSAgIEFsdGVybmF0aW9uIFJ1bnRpbWUgQmVoYXZpb3IKKy0tICAgRGVlcCBOZXN0ZWQg R3JvdXBzCistLSAgIFNLSVAgT3B0aW9ucyAoUnVudGltZSkKKy0tICAgSU5JVElBTCBNb2RlIChS dW50aW1lKQorLS0gICBGcmFtZSBCb3VuZGFyeSBWYXJpYXRpb25zCistLSAgIFNwZWNpYWwgUGFy dGl0aW9uIENhc2VzCistLSAgIERFRklORSBTcGVjaWFsIENhc2VzCistLSAgIEFic29ycHRpb24g RHluYW1pYyBGbGFncworLS0gICBaZXJvLUNvbnN1bXB0aW9uIEN5Y2xlIERldGVjdGlvbgorLS0K Ky0tIFJlc3BvbnNpYmlsaXR5OgorLS0gICAtIE5GQSBydW50aW1lIGV4ZWN1dGlvbiBwYXRocwor LS0gICAtIENvbnRleHQvU3RhdGUgbGlmZWN5Y2xlIG1hbmFnZW1lbnQKKy0tICAgLSBSdW50aW1l IGJvdW5kYXJ5IGNvbmRpdGlvbnMgYW5kIHByb3RlY3Rpb25zCistLQorLS0gTk9UIHRlc3RlZCBo ZXJlIChjb3ZlcmVkIGluIG90aGVyIGZpbGVzKToKKy0tICAgLSBQYXR0ZXJuIHBhcnNpbmcvb3B0 aW1pemF0aW9uIChycHJfYmFzZS5zcWwpCistLSAgIC0gRVhQTEFJTiBvdXRwdXQgKHJwcl9leHBs YWluLnNxbCkKKy0tICAgLSBQUkVWL05FWFQgc2VtYW50aWNzIChycHIuc3FsKQorLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIEJhc2ljIE5GQSBGbG93CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNpbXBsZSBzZXF1ZW50aWFsIHBh dHRlcm4KK1dJVEggdGVzdF9zZXF1ZW50aWFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisg ICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLAorICAgICAg ICAoNSwgQVJSQVlbJ18nXSkgIC0tIE5vIG1hdGNoCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykK K1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3Rfc2VxdWVudGlhbAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0Qn ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0R9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge199ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorKDUgcm93cykKKworLS0gUXVhbnRpZmllZCBwYXR0ZXJuIChBKyBCKyBDKykKK1dJ VEggdGVzdF9xdWFudGlmaWVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgz LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJS QVlbJ0InXSksCisgICAgICAgICg2LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDcsIEFSUkFZWydD J10pLAorICAgICAgICAoOCwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQor U0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00g dGVzdF9xdWFudGlmaWVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQisgQyspCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8 IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDcKKyAgMiB8IHtB fSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDcKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMg fCAgICAgICAgIDcKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtDfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg OCB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg4IHJvd3MpCisKKy0tIE9wdGlv bmFsIHBhdHRlcm4gKEEgQj8gQykKK1dJVEggdGVzdF9vcHRpb25hbCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydDJ10pLCAgLS0gQiBza2lwcGVkCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSksICAtLSBCIG1hdGNo ZWQKKyAgICAgICAgKDYsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3Rfb3B0aW9uYWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEI/IEMpCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtDfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAg ICAgIDUKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtDfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtffSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyg2IHJvd3MpCisKKy0tIEFsdGVybmF0aW9uIHBhdHRlcm4gKEEgKEJ8QykgRCkK K1dJVEggdGVzdF9hbHRlcm5hdGlvbiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLCAgLS0gRmly c3QgYnJhbmNoCisgICAgICAgICgzLCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDQsIEFSUkFZWydB J10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSksICAtLSBTZWNvbmQgYnJhbmNoCisgICAgICAg ICg2LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDcsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfYWx0ZXJuYXRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIChCIHwg QykgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA2CisgIDUgfCB7Q30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDcgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNyByb3dzKQor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIEFic29ycHRpb24gT3B0aW1pemF0aW9uCistLSA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEFic29yYmFi bGUgcGF0dGVybiAoQSspCitXSVRIIHRlc3RfYWJzb3JiYWJsZSBBUyAoCisgICAgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NF TEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfYWJzb3JiYWJsZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErKQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwg bWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8 IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAgIHwgICAgICAgICAg IDIgfCAgICAgICAgIDQKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAg NCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDQKKyAgNSB8IHtffSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIE1peGVkIGFic29yYmFibGUvbm9uLWFi c29yYmFibGUgKChBKykgfCBCKQorV0lUSCB0ZXN0X21peGVkX2Fic29ycHRpb24gQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X21peGVkX2Fic29ycHRpb24KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSspIHwg QikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB fSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIg fCAgICAgICAgIDMKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDMKKyAgNCB8 IHtCfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDQKKyAgNSB8IHtffSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIFN0YXRlIGNvdmVyYWdlIChzYW1lIGVsZW1J ZHgsIGRpZmZlcmVudCBjb3VudCkKK1dJVEggdGVzdF9zdGF0ZV9jb3ZlcmFnZSBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFn cykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3Rfc3RhdGVfY292ZXJhZ2UKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBezIsfSBCKQor ICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMg J0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9l bmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAg fCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAg ICAgICAgNAorICAzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0J9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge199ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorKDUgcm93cykKKworLS0gUmVsdWN0YW50IHBhdHRlcm4gKEErPykgLSBub3Qg YWJzb3JiYWJsZQorLS0gQ29tcGFyZSB3aXRoIGdyZWVkeSBBKyBhYm92ZTogcmVsdWN0YW50IGV4 Y2x1ZGVkIGZyb20gYWJzb3JwdGlvbi4KKy0tIEVhY2ggY29udGV4dCBwcm9kdWNlcyBtaW5pbXVt IG1hdGNoIGluZGVwZW5kZW50bHkuCitXSVRIIHRlc3RfcmVsdWN0YW50X2Fic29ycHRpb24gQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9hYnNvcnB0aW9uCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQSs/KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAg IDEKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDIKKyAgMyB8IHtBfSAgIHwg ICAgICAgICAgIDMgfCAgICAgICAgIDMKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAg ICAgIDQKKyAgNSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisK Ky0tIEFic29ycHRpb24gd2l0aCBmaXhlZCBzdWZmaXg6IEErIEIKK1dJVEggdGVzdF9hYnNvcmJf c3VmZml4IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ1gnXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X2Fic29yYl9zdWZmaXgKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAg IERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAg ICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAg ICAgNAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNAorICA0IHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge1h9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorKDUgcm93cykKKworLS0gUGVyLWJyYW5jaCBhYnNvcnB0aW9uIHdpdGggQUxUOiBC KyBDIHwgQisgRAorV0lUSCB0ZXN0X2Fic29yYl9hbHQgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisg ICAgICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiX2FsdAorV0lORE9X IHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFO RCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVwor ICAgIFBBVFRFUk4gKEIrIEMgfCBCKyBEKQorICAgIERFRklORQorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBB UyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNo X2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7Qn0g ICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAyIHwg ICAgICAgICA0CisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7 RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7WH0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBOb24tYWJzb3JiYWJsZTogQSBCKyAodW5ib3Vu ZGVkIG5vdCBpbiBmaXJzdCBwb3NpdGlvbikKK1dJVEggdGVzdF9ub19hYnNvcmIgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwg QVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNo X3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfbm9f YWJzb3JiCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAg IDQKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNSB8IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisK Ky0tIEdST1VQIG1lcmdlIGVuYWJsZXMgYWJzb3JwdGlvbjogKEEgQikgKEEgQikrIG9wdGltaXpl ZCB0byAoQSBCKXsyLH0KK1dJVEggdGVzdF9hYnNvcmJfZ3JvdXAgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0In XSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pLAor ICAgICAgICAoNywgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl9ncm91cAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKChBIEIpIChBIEIpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQg fCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDYK KyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDYKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyg3IHJvd3MpCisKKy0tIFR3byBjb25zZWN1dGl2ZSB1bmJvdW5kZWQgZ3JvdXBzOiAo QSBCKSsgKEMgRCkrCistLSBUaGUgbGVhZGluZyBncm91cCAoQSBCKSsgaXMgYWJzb3JiYWJsZSAo dW5ib3VuZGVkIG11bHRpLWVsZW1lbnQpOyAoQyBEKSsgaXMKKy0tIGEgZGlzdGluY3Qgc2libGlu ZyBncm91cCB0aGF0IGRvZXMgbm90IG1lcmdlIHdpdGggaXQuICBXaGVuIHRoZSBsZWFkaW5nIGdy b3VwCistLSBleGl0cyBpbnRvIHRoZSBzaWJsaW5nLCBpdHMgYm9keSBsZWFmLVZBUiBjb3VudCBt dXN0IGJlIGNsZWFyZWQgc28gaXQgZG9lcworLS0gbm90IGxlYWsgaW50byB0aGUgc2libGluZydz IHNoYXJlZCBkZXB0aCBzbG90LgorV0lUSCB0ZXN0X2Fic29yYl90d29fZ3JvdXBzIEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQs IEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydDJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0Qn XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl90d29fZ3JvdXBzCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJO ICgoQSBCKSsgKEMgRCkrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBB TlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFn cyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgIDgKKyAgNiB8IHtCfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgOCB8IHtEfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg4IHJvd3MpCisKKy0tIEZp eGVkLWxlbmd0aCBncm91cCBhYnNvcnB0aW9uOiAoQSBCezJ9KSsgQworLS0gQnsyfSBoYXMgbWlu ID09IG1heCwgZXF1aXZhbGVudCB0byB1bnJvbGxpbmcgdG8gKEEgQiBCKSsgQworV0lUSCB0ZXN0 X2Fic29yYl9maXhlZGxlbiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCAgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCAgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCAgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCAg QVJSQVlbJ0InXSksCisgICAgICAgICg2LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCAgQVJS QVlbJ0EnXSksCisgICAgICAgICg4LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg5LCAgQVJSQVlb J0InXSksCisgICAgICAgICgxMCwgQVJSQVlbJ0MnXSksCisgICAgICAgICgxMSwgQVJSQVlbJ1gn XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl9maXhlZGxlbgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KEEgQnsyfSkrIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShm bGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAg IDEgfCAgICAgICAgMTAKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtBfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgNiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgOCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgOSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMCB8IHtDfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMSB8IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKygxMSByb3dzKQorCistLSBDb25zZWN1dGl2ZSB2YXJzIG1lcmdlZCB0byBmaXhlZC1s ZW5ndGg6IChBIEIgQikrIC0+IChBIEJ7Mn0pKworV0lUSCB0ZXN0X2Fic29yYl9jb25zZWN1dGl2 ZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCAgQVJSQVlbJ0En XSksCisgICAgICAgICgyLCAgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCAgQVJSQVlbJ0InXSks CisgICAgICAgICg0LCAgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCAgQVJSQVlbJ0InXSksCisg ICAgICAgICg2LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg3LCAgQVJSQVlbJ0EnXSksCisgICAg ICAgICg4LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg5LCAgQVJSQVlbJ0InXSksCisgICAgICAg ICgxMCwgQVJSQVlbJ1gnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl9jb25zZWN1dGl2ZQorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoKEEgQiBCKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwg ZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA5Cisg IDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDUgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDggfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTAgfCB7WH0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisoMTAgcm93cykKKworLS0gTmVzdGVkIGZpeGVkLWxlbmd0aCBncm91cCBhYnNvcnB0 aW9uOiAoQSAoQiBDKXsyfSBEKSsgRQorLS0gSW5uZXIgZ3JvdXAgezJ9IGhhcyBtaW4gPT0gbWF4 OyBhYnNvcmJhYmxlIHZpYSByZWN1cnNpdmUgY2hlY2sKKy0tIHN0ZXBfc2l6ZSA9IDEgKyAoMSsx KSoyICsgMSA9IDYKK1dJVEggdGVzdF9hYnNvcmJfbmVzdGVkX2ZpeGVkbGVuIEFTICgKKyAgICBT RUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsICBBUlJBWVsnQSddKSwKKyAgICAgICAg KDIsICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsICBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQs ICBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsICBBUlJBWVsnQyddKSwKKyAgICAgICAgKDYsICBB UlJBWVsnRCddKSwKKyAgICAgICAgKDcsICBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsICBBUlJB WVsnQiddKSwKKyAgICAgICAgKDksICBBUlJBWVsnQyddKSwKKyAgICAgICAgKDEwLCBBUlJBWVsn QiddKSwKKyAgICAgICAgKDExLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDEyLCBBUlJBWVsnRCdd KSwKKyAgICAgICAgKDEzLCBBUlJBWVsnRSddKSwKKyAgICAgICAgKDE0LCBBUlJBWVsnWCddKQor ICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfYWJzb3JiX25lc3RlZF9maXhlZGxlbgorV0lORE9XIHcgQVMgKAorICAg IE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVS TiAoKEEgKEIgQyl7Mn0gRCkrIEUpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5Z KGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdD JyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg RSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1h dGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7 QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgIDEzCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDYgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDggfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgMTAgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTEgfCB7Q30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgMTIgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgMTMgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTQgfCB7WH0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMTQgcm93cykKKworLS0gRG91Ymx5IG5lc3RlZCBm aXhlZC1sZW5ndGggZ3JvdXAgYWJzb3JwdGlvbjogKEEgKChCIEN7M30pezJ9IEQpezJ9IEUpKyBG CistLSBzdGVwX3NpemUgPSAxICsgKCgxKzMpKjIrMSkqMiArIDEgPSAyMDsgMiBpdGVyYXRpb25z ICsgRiA9IDQxIHJvd3MKK1dJVEggdGVzdF9hYnNvcmJfZG91Ymx5X25lc3RlZCBBUyAoCisgICAg U0VMRUNUIHYgQVMgaWQsIEFSUkFZWworICAgICAgICBDQVNFCisgICAgICAgICAgICBXSEVOIHYg JSA0MSBJTiAoMSwgMjEpICBUSEVOICdBJworICAgICAgICAgICAgV0hFTiB2ICUgNDEgSU4gKDIs IDYsIDExLCAxNSwgMjIsIDI2LCAzMSwgMzUpIFRIRU4gJ0InCisgICAgICAgICAgICBXSEVOIHYg JSA0MSBJTiAoMyw0LDUsIDcsOCw5LCAxMiwxMywxNCwgMTYsMTcsMTgsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgMjMsMjQsMjUsIDI3LDI4LDI5LCAzMiwzMywzNCwgMzYsMzcsMzgpIFRI RU4gJ0MnCisgICAgICAgICAgICBXSEVOIHYgJSA0MSBJTiAoMTAsIDE5LCAzMCwgMzkpIFRIRU4g J0QnCisgICAgICAgICAgICBXSEVOIHYgJSA0MSBJTiAoMjAsIDQwKSBUSEVOICdFJworICAgICAg ICAgICAgV0hFTiB2ICUgNDEgPSAwIFRIRU4gJ0YnCisgICAgICAgICAgICBFTFNFICdYJworICAg ICAgICBFTkQKKyAgICBdIEFTIGZsYWdzCisgICAgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgODIp IEFTIHModikKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9hYnNvcmJfZG91Ymx5X25lc3RlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgKChCIEMgQyBD KXsyfSBEKXsyfSBFKSsgRikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFT ICdFJyA9IEFOWShmbGFncyksCisgICAgICAgIEYgQVMgJ0YnID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICA0 MQorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA4IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5IHwge0N9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEwIHwge0R9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorIDExIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEyIHwg e0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEzIHwge0N9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDE0IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDE1 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDE2IHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorIDE3IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor IDE4IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDE5IHwge0R9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorIDIwIHwge0V9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorIDIxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDIyIHwge0J9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorIDIzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorIDI0IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDI1IHwge0N9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDI2IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorIDI3IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDI4IHwge0N9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDI5IHwge0N9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorIDMwIHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDMxIHwg e0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDMyIHwge0N9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDMzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDM0 IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDM1IHwge0J9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorIDM2IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor IDM3IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDM4IHwge0N9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorIDM5IHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorIDQwIHwge0V9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDQxIHwge0Z9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorIDQyIHwge0F9ICAgfCAgICAgICAgICA0MiB8ICAgICAg ICA4MgorIDQzIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDQ0IHwge0N9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDQ1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorIDQ2IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDQ3IHwge0J9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDQ4IHwge0N9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorIDQ5IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDUwIHwg e0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDUxIHwge0R9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDUyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDUz IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDU0IHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorIDU1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor IDU2IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDU3IHwge0N9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorIDU4IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorIDU5IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDYwIHwge0R9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorIDYxIHwge0V9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorIDYyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDYzIHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDY0IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorIDY1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDY2IHwge0N9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDY3IHwge0J9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorIDY4IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDY5IHwg e0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDcwIHwge0N9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDcxIHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDcy IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDczIHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorIDc0IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor IDc1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDc2IHwge0J9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorIDc3IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorIDc4IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDc5IHwge0N9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorIDgwIHwge0R9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorIDgxIHwge0V9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDgyIHwge0Z9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDgyIHJvd3MpCisKKy0tIDMtbGV2ZWwgRU5EIGNo YWluOiAoKEEgKEIgQyl7Mn0pezJ9KSsKKy0tIFRlc3RzIEVORChCQ3syfSkgLT4gRU5EKEEuLnsy fSkgLT4gRU5EKCspIGNoYWluaW5nCistLSAyIGl0ZXJhdGlvbnMgb2YgKywgZWFjaCAxMCByb3dz OiAoQSBCIEMgQiBDKShBIEIgQyBCIEMpCitXSVRIIHRlc3RfYWJzb3JiXzNsZXZlbF9lbmQgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgIEFSUkFZWydBJ10pLCAg LS0gMXN0ICsgaXRlciwgMXN0IHsyfSwgQQorICAgICAgICAoMiwgIEFSUkFZWydCJ10pLAorICAg ICAgICAoMywgIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgIEFSUkFZWydCJ10pLAorICAgICAg ICAoNSwgIEFSUkFZWydDJ10pLCAgLS0gMXN0IChCQyl7Mn0gZG9uZQorICAgICAgICAoNiwgIEFS UkFZWydBJ10pLCAgLS0gMXN0ICsgaXRlciwgMm5kIHsyfSwgQQorICAgICAgICAoNywgIEFSUkFZ WydCJ10pLAorICAgICAgICAoOCwgIEFSUkFZWydDJ10pLAorICAgICAgICAoOSwgIEFSUkFZWydC J10pLAorICAgICAgICAoMTAsIEFSUkFZWydDJ10pLCAgLS0gMm5kIChCQyl7Mn0gZG9uZSwgMXN0 IHsyfSBkb25lLCAxc3QgKyBpdGVyIGRvbmUKKyAgICAgICAgKDExLCBBUlJBWVsnQSddKSwgIC0t IDJuZCArIGl0ZXIsIDFzdCB7Mn0sIEEKKyAgICAgICAgKDEyLCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDEzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDE0LCBBUlJBWVsnQiddKSwKKyAgICAgICAg KDE1LCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDE2LCBBUlJBWVsnQSddKSwgIC0tIDJuZCArIGl0 ZXIsIDJuZCB7Mn0sIEEKKyAgICAgICAgKDE3LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDE4LCBB UlJBWVsnQyddKSwKKyAgICAgICAgKDE5LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIwLCBBUlJB WVsnQyddKSwgIC0tIDJuZCArIGl0ZXIgZG9uZQorICAgICAgICAoMjEsIEFSUkFZWydYJ10pICAg LS0gbm8gbWF0Y2gsICsgZW5kcworICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWJzb3JiXzNsZXZlbF9lbmQKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNU IFJPVworICAgIFBBVFRFUk4gKCgoQSAoQiBDKXsyfSl7Mn0pKykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hf c3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAyMAorICAyIHwge0J9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0N9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA3IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4IHwge0N9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5IHwge0J9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorIDEwIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDExIHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEyIHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDEzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDE0 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDE1IHwge0N9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorIDE2IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor IDE3IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDE4IHwge0N9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorIDE5IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorIDIwIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDIxIHwge1h9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorKDIxIHJvd3MpCisKKy0tIE11bHRpcGxlIHVuYm91bmRl ZDogQSsgQisgKGZpcnN0IGVsZW1lbnQgdW5ib3VuZGVkIGVuYWJsZXMgYWJzb3JwdGlvbikKK1dJ VEggdGVzdF9tdWx0aV91bmJvdW5kZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1 LCBBUlJBWVsnWCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbXVsdGlfdW5ib3VuZGVkCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoQSsgQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdz KSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRj aF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8 ICAgICAgICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7WH0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIENvbnRl eHQgTGlmZWN5Y2xlCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KKy0tIE11bHRpcGxlIG92ZXJsYXBwaW5nIGNvbnRleHRzIChT S0lQIFRPIE5FWFQgUk9XKQorV0lUSCB0ZXN0X292ZXJsYXBwaW5nX2NvbnRleHRzIEFTICgKKyAg ICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAg ICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQs IEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9vdmVybGFwcGluZ19jb250ZXh0cworV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEr IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1h dGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7 QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAy IHwgICAgICAgICA0CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7X30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBGYWlsZWQgY29udGV4dCBjbGVhbnVwIChl YXJseSBmYWlsdXJlKQorV0lUSCB0ZXN0X2NvbnRleHRfY2xlYW51cCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnXyddKSwgIC0tIFBydW5lZCBhdCBm aXJzdCByb3cKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ18n XSksICAtLSBNaXNtYXRjaGVkIGFmdGVyIHJvdyAyCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDUsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf Y29udGV4dF9jbGVhbnVwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge199ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICAyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwg e199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0F9ICAgfCAgICAgICAgICAg NCB8ICAgICAgICAgNQorICA1IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUg cm93cykKKworLS0gUGFydGl0aW9uIGVuZCAoaW5jb21wbGV0ZSBjb250ZXh0cykKK1dJVEggdGVz dF9wYXJ0aXRpb25fZW5kIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBB UlJBWVsnQSddKQorICAgICAgICAtLSBQYXR0ZXJuIHJlcXVpcmVzIEIsIGJ1dCBwYXJ0aXRpb24g ZW5kcworICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3BhcnRpdGlvbl9lbmQKK1dJTkRP VyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBB TkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cK KyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyIHwge0F9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorKDMgcm93cykKKworLS0gQ29tcGxldGVkIGNvbnRleHQgZW5jb3VudGVyZWQg ZHVyaW5nIHByb2Nlc3NpbmcKKy0tIFBhdHRlcm4gKEEgfCBCIEMgRCk6IEN0eDEgdGFrZXMgbG9u ZyBCLT5DLT5EIHBhdGgsIHdoaWxlIEN0eDIgdGFrZXMKKy0tIHNob3J0IEEgcGF0aCBhbmQgY29t cGxldGVzIGZpcnN0LiBOZXh0IHJvdyBzZWVzIEN0eDIKKy0tIHdpdGggc3RhdGVzPU5VTEwgYW5k IHNraXBzIGl0LgorV0lUSCB0ZXN0X2NvbXBsZXRlZF9jdHggQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InLCAnXyddKSwKKyAgICAgICAgKDIsIEFS UkFZWydDJywgJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnRCcsICdfJ10pLAorICAgICAgICAo NCwgQVJSQVlbJ18nLCAnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2NvbXBs ZXRlZF9jdHgKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIHwgQiBDIEQpCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5Z KGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0IsX30gfCAgICAgICAg ICAgMSB8ICAgICAgICAgMworICAyIHwge0MsQX0gfCAgICAgICAgICAgMiB8ICAgICAgICAgMgor ICAzIHwge0QsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge18sX30gfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gUmVsdWN0YW50IGNvbnRleHQgbGlm ZWN5Y2xlIChBKz8gQiB3aXRoIFNLSVAgVE8gTkVYVCBST1cpCistLSBBKz8gZXhpdHMgZWFybHkg YnV0IGlmIEIgbm90IGF2YWlsYWJsZSwgZmFsbHMgYmFjayB0byBsb29wLgorLS0gQ29udGV4dHMg bm90IGFic29yYmVkIChyZWx1Y3RhbnQpLCBzbyBtdWx0aXBsZSBzdXJ2aXZlLgorV0lUSCB0ZXN0 X3JlbHVjdGFudF9jb250ZXh0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgz LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBm bGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hf ZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X2NvbnRleHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKz8g QikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB fSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIg fCAgICAgICAgIDMKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8 IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g QWR2YW5jZSBQaGFzZSAoRXBzaWxvbiBUcmFuc2l0aW9ucykKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTmVzdGVkIGdy b3VwcyAoKEEgQikrKQorV0lUSCB0ZXN0X25lc3RlZF9ncm91cHMgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0In XSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pLAor ICAgICAgICAoNywgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9u ZXN0ZWRfZ3JvdXBzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8 ICAgICAgICAgNgorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwg e0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNgorICA0IHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAgNgorICA2 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA3IHwge199ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDcgcm93cykKKworLS0gTXVsdGlwbGUgYWx0ZXJuYXRpb24gYnJh bmNoZXMgKEEgKEJ8Q3xEKSBFKQorV0lUSCB0ZXN0X211bHRpX2FsdCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0UnXSksCisgICAgICAgICg0LCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0UnXSks CisgICAgICAgICg3LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDgsIEFSUkFZWydEJ10pLAorICAg ICAgICAoOSwgQVJSQVlbJ0UnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tdWx0 aV9hbHQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIChCIHwgQyB8IEQpIEUpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxh Z3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7RX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA2Cisg IDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7RX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7QX0gICB8ICAgICAgICAgICA3IHwgICAgICAgICA5 CisgIDggfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7RX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoOSByb3dzKQorCistLSBPcHRpb25hbCBWQVIgYXQgc3Rh cnQgKEE/IEIgQykKK1dJVEggdGVzdF9vcHRpb25hbF92YXIgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksICAtLSBBIHNraXBwZWQKKyAgICAg ICAgKDIsIEFSUkFZWydDJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksICAtLSBBIG1hdGNo ZWQKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0MnXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vcHRpb25hbF92YXIKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBPyBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShm bGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtCfSAgIHwgICAgICAgICAg IDEgfCAgICAgICAgIDIKKyAgMiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDUKKyAgNCB8IHtCfSAgIHwgICAgICAg ICAgIDQgfCAgICAgICAgIDUKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK Kyg1IHJvd3MpCisKKy0tIE5lc3RlZCBhbHRlcm5hdGlvbiAoKEF8QikgKEN8RCkpCitXSVRIIHRl c3RfbmVzdGVkX2FsdCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgx LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydDJ10pLCAgLS0gQSBDCisgICAgICAg ICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJ10pLCAgLS0gQSBECisgICAg ICAgICg1LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDYsIEFSUkFZWydDJ10pLCAgLS0gQiBDCisg ICAgICAgICg3LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDgsIEFSUkFZWydEJ10pICAgLS0gQiBE CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVkX2FsdAorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJP VU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBB VFRFUk4gKChBIHwgQikgKEMgfCBEKSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMg J0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlk IHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAy CisgIDIgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAg ICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDUgfCB7Qn0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA2CisgIDYgfCB7Q30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7Qn0gICB8ICAgICAgICAgICA3IHwgICAg ICAgICA4CisgIDggfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoOCByb3dzKQor CistLSBNaXhlZCBncmVlZHkvcmVsdWN0YW50IHNlcXVlbmNlOiBBKz8gQisgKHJlbHVjdGFudCBB LCBncmVlZHkgQikKKy0tIEEgZXhpdHMgYXMgZWFybHkgYXMgcG9zc2libGUsIEIgY29uc3VtZXMg dGhlIHJlc3QgZ3JlZWRpbHkKK1dJVEggdGVzdF9taXhlZF9yZWx1Y3RhbnQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDQs IEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9taXhlZF9yZWx1Y3RhbnQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBC WSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErPyBC KykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB fSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDUKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgMyB8IHtBLEJ9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIE9wdGlvbmFsIHJlbHVjdGFudCBncm91cDog KEEgQik/PyBDCistLSBSZWx1Y3RhbnQgZ3JvdXAgZW50cnkgdHJpZXMgc2tpcCBmaXJzdCwgYnV0 IHRoZSBza2lwIHBhdGggbmVlZHMgQworLS0gYXQgcm93IDEgd2hpY2ggaXMgQSAtPiBza2lwIGZh aWxzLiBFbnRlciBwYXRoIHN1Y2NlZWRzOiBBKDEpIEIoMikgQygzKS4KK1dJVEggdGVzdF9vcHRp b25hbF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFS UkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisg ICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3B0aW9uYWxfcmVsdWN0 YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBB U1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSBCKT8/IEMpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0 YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtCfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKygzIHJvd3MpCisKKy0tIE5vbi1sZWFkaW5nIHJlbHVjdGFudCBvcHRpb25hbCBWQVI6IChC IEE/PyBDKQorLS0gUmVsdWN0YW50IEE/PyBzaG91bGQgcHJlZmVyIHRvIHNraXAsIG1hdGNoaW5n IEIoMSkgQygyKSB3aXRoIEEgbGVmdAorLS0gdW5tYXRjaGVkIChtYXRjaF9lbmQgMikuICBUaGUg bGVhZGluZy9ncm91cCByZWx1Y3RhbnQgY2FzZXMgYWJvdmUgZ28gdGhyb3VnaAorLS0gdGhlIGJl Z2luIHBhdGg7IHRoaXMgZXhlcmNpc2VzIHRoZSBub24tbGVhZGluZyBza2lwIHBhdGgsCistLSB3 aGljaCBtdXN0IGhvbm9yIHJlbHVjdGFudCBvcmRlcmluZyB0b28uCitXSVRIIHRlc3Rfbm9ubGVh ZGluZ19yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsICdDJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFn cywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAg IGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ub25sZWFkaW5n X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQiBBPz8gQykKKyAgICBERUZJTkUKKyAg ICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFn cyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorICAxIHwge0J9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0EsQ30g fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorKDMgcm93cykKKworLS0gUmVsdWN0YW50IG91dGVyIHF1YW50aWZpZXIgb3ZlciBh IG51bGxhYmxlIHJlbHVjdGFudCBib2R5OiBTUUwvUlBSCistLSBzZW1hbnRpY3MgY2FsbCBmb3Ig dGhlIHNob3J0ZXN0IChlbXB0eSkgbWF0Y2guICBJbiB0aGUgY291bnQ8bWluIGNhc2UKKy0tIHRo ZSBlbmdpbmUgbXVzdCBwcmVmZXIgdGhlIGZhc3QtZm9yd2FyZCAoZXhpdCkgcGF0aCBmb3IgcmVs dWN0YW50CistLSBncm91cHMgYW5kIHN1cHByZXNzIGxvbmdlciBtYXRjaGVzIG9uY2UgZXhpdCBy ZWFjaGVzIEZJTiwgbWlycm9yaW5nIHRoZQorLS0gc2libGluZyBtaW48PWNvdW50PG1heCBicmFu Y2guICBUaGUgMi1sZXZlbCBncmVlZHkvcmVsdWN0YW50IG1hdHJpeCBwbHVzIGEKKy0tIG1pbj49 MiBib3VuZGFyeSBhbmQgc2luZ2xlLXF1YW50aWZpZXIgY29udHJvbHMgbG9jYWxpemUgdGhlIGJl aGF2aW91cjogb25seQorLS0gdGhlIGFsbC1yZWx1Y3RhbnQgY2FzZSAocnIpIHNob3VsZCBkaWZm ZXIuCitXSVRIIHQoaWQsIGlzYSkgQVMgKFZBTFVFUyAoMSwgdHJ1ZSksICgyLCB0cnVlKSwgKDMs IHRydWUpLCAoNCwgZmFsc2UpKQorU0VMRUNUIGlkLAorICAgICAgIGNvdW50KCopIE9WRVIgZ2cg IEFTIGdnLCAgICAgLS0gKEE/KSsgICAgICBncmVlZHkgLyBncmVlZHkKKyAgICAgICBjb3VudCgq KSBPVkVSIGdyICBBUyBnciwgICAgIC0tIChBPz8pKyAgICAgZ3JlZWR5IC8gcmVsdWN0YW50Cisg ICAgICAgY291bnQoKikgT1ZFUiByZyAgQVMgcmcsICAgICAtLSAoQT8pKz8gICAgIHJlbHVjdGFu dCAvIGdyZWVkeQorICAgICAgIGNvdW50KCopIE9WRVIgcnIgIEFTIHJyLCAgICAgLS0gKEE/Pykr PyAgICByZWx1Y3RhbnQgLyByZWx1Y3RhbnQKKyAgICAgICBjb3VudCgqKSBPVkVSIHJyMiBBUyBy cjIsICAgIC0tIChBPz8pezIsfT8gcmVsdWN0YW50LCBtaW4+PTIgYm91bmRhcnkKKyAgICAgICBj b3VudCgqKSBPVkVSIGNhICBBUyBjYSwgICAgIC0tIEE/PyAgICAgICAgc2luZ2xlIHJlbHVjdGFu dCBjb250cm9sCisgICAgICAgY291bnQoKikgT1ZFUiBjcyAgQVMgY3MgICAgICAtLSBBKj8gICAg ICAgIHNpbmdsZSByZWx1Y3RhbnQgY29udHJvbAorRlJPTSB0CitXSU5ET1cgZ2cgIEFTIChPUkRF UiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcg UEFUVEVSTiAoKEE/KSspICAgICAgREVGSU5FIEEgQVMgaXNhKSwKKyAgICAgICBnciAgQVMgKE9S REVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lO RyBQQVRURVJOICgoQT8/KSspICAgICBERUZJTkUgQSBBUyBpc2EpLAorICAgICAgIHJnICBBUyAo T1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HIFBBVFRFUk4gKChBPykrPykgICAgIERFRklORSBBIEFTIGlzYSksCisgICAgICAgcnIgIEFT IChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcgUEFUVEVSTiAoKEE/PykrPykgICAgREVGSU5FIEEgQVMgaXNhKSwKKyAgICAgICBycjIg QVMgKE9SREVSIEJZIGlkIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORyBQQVRURVJOICgoQT8/KXsyLH0/KSBERUZJTkUgQSBBUyBpc2EpLAorICAgICAgIGNh ICBBUyAoT1JERVIgQlkgaWQgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQg Rk9MTE9XSU5HIFBBVFRFUk4gKEE/PykgICAgICAgIERFRklORSBBIEFTIGlzYSksCisgICAgICAg Y3MgIEFTIChPUkRFUiBCWSBpZCBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcgUEFUVEVSTiAoQSo/KSAgICAgICAgREVGSU5FIEEgQVMgaXNhKQorT1JERVIg QlkgaWQ7CisgaWQgfCBnZyB8IGdyIHwgcmcgfCByciB8IHJyMiB8IGNhIHwgY3MgCistLS0tKy0t LS0rLS0tLSstLS0tKy0tLS0rLS0tLS0rLS0tLSstLS0tCisgIDEgfCAgMyB8ICAzIHwgIDEgfCAg MCB8ICAgMCB8ICAwIHwgIDAKKyAgMiB8ICAwIHwgIDAgfCAgMSB8ICAwIHwgICAwIHwgIDAgfCAg MAorICAzIHwgIDAgfCAgMCB8ICAxIHwgIDAgfCAgIDAgfCAgMCB8ICAwCisgIDQgfCAgMCB8ICAw IHwgIDAgfCAgMCB8ICAgMCB8ICAwIHwgIDAKKyg0IHJvd3MpCisKKy0tIE5vbi1sZWFkaW5nIHJl bHVjdGFudCBvcHRpb25hbCBHUk9VUCB3aXRoIGEgZm9sbG93ZXI6IChCIChBIFgpPz8gQykKKy0t IExpa2UgdGhlIFZBUiBjYXNlIGFib3ZlIGJ1dCBhIG11bHRpLWVsZW1lbnQgZ3JvdXA7IGl0IGdv ZXMgdGhyb3VnaCB0aGUKKy0tIGJlZ2luIHBhdGgsIHdoaWNoIGFscmVhZHkgaG9ub3JzIHJlbHVj dGFudCBvcmRlcmluZy4KKy0tIFJlbHVjdGFudCAoQSBYKT8/IHNob3VsZCBza2lwLCBtYXRjaGlu ZyBCKDEpIEMoMiksIHdpdGggdGhlIGdyb3VwIHNraXBwZWQKKy0tIHRvIHRoZSBmb2xsb3dpbmcg QyAobm90IHRvIEZJTikuCitXSVRIIHRlc3Rfbm9ubGVhZGluZ19yZWx1Y3RhbnRfZ3JvdXAgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSksCisg ICAgICAgICgyLCBBUlJBWVsnQScsICdDJ10pLAorICAgICAgICAoMywgQVJSQVlbJ1gnXSksCisg ICAgICAgICg0LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1Qg aWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQs CisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X25v bmxlYWRpbmdfcmVsdWN0YW50X2dyb3VwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChCIChBIFgpPz8g QykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBY IEFTICdYJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFy dCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg IDEgfCB7Qn0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7QSxDfSB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7WH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDQgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBH cmVlZHkvcmVsdWN0YW50IHNlcXVlbmNlOiBBKyBCKz8gKGdyZWVkeSBBLCByZWx1Y3RhbnQgQiBh dCBlbmQpCistLSBBIGNvbnN1bWVzIGdyZWVkaWx5LCBCKz8gZXhpdHMgdG8gRklOIGFmdGVyIG1p bmltdW0gbWF0Y2gKK1dJVEggdGVzdF9ncmVlZHlfdGhlbl9yZWx1Y3RhbnQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQs IEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3Ms CisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBs YXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZ3JlZWR5X3RoZW5f cmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKz8pCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3Mp CispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwg ICAgICAgICAzCisgIDIgfCB7QSxCfSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBSZWx1Y3RhbnQgb3B0aW9uYWwgZ3JvdXAgc2tp cC10by1GSU4KKy0tIFdoZW4gYSByZWx1Y3RhbnQgb3B0aW9uYWwgZ3JvdXAncyBza2lwIHBhdGgg cmVhY2hlcyBGSU4sIHRoZSBncm91cAorLS0gZW50cnkgcGF0aCBpcyBhYmFuZG9uZWQuCistLSBQ YXR0ZXJuOiBDIChBIEIpPz8gLS0gYWZ0ZXIgQyBtYXRjaGVzLCB0aGUgcmVsdWN0YW50IGdyb3Vw IChBIEIpPz8KKy0tIHByZWZlcnMgdG8gc2tpcC4gIFNraXAgZ29lcyB0byBGSU4gKGdyb3VwIGlz IGxhc3QgZWxlbWVudCksIHNvCistLSB0aGUgbWF0Y2ggY29tcGxldGVzIHdpdGgganVzdCBDLgor V0lUSCB0ZXN0X2JlZ2luX3NraXBfZmluIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMK KyAgICAgICAgKDEsIEFSUkFZWydDJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAg ICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydDJywnQSddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYmVnaW5f c2tpcF9maW4KK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VF TiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChDIChBIEIpPz8pCisgICAgREVGSU5FCisgICAg ICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtDfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEKKyAgMiB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNCB8IHtDLEF9IHwgICAgICAgICAgIDQgfCAgICAgICAgIDQKKyAgNSB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gTWF0Y2gg UGhhc2UKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorLS0gU2ltcGxlIFZBUiB3aXRoIEVORCBuZXh0IChBIEIgQyBhbGwgbWlu PW1heD0xKQorV0lUSCB0ZXN0X3NpbXBsZV92YXIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9zaW1wbGVfdmFyCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBG T0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAo QSBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykK Kyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDMKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtD fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtffSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIFZBUiBtYXggZXhjZWVkZWQgKEF7MiwzfSkKK1dJ VEggdGVzdF9tYXhfZXhjZWVkZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pLCAgLS0gTWF4ID0gMworICAgICAgICAoNCwgQVJSQVlbJ0EnXSksICAt LSBFeGNlZWRzIG1heCwgc3RhdGUgcmVtb3ZlZAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9tYXhfZXhjZWVkZWQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOIChBezIsM30gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8IHtBfSAgIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDUKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAg ICAgIDUKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIE5vbi1tYXRjaGluZyBW QVIgKERFRklORSBmYWxzZSkKK1dJVEggdGVzdF9ub25fbWF0Y2hpbmcgQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBB UlJBWVsnXyddKSwgIC0tIEIgbm90IG1hdGNoZWQgKERFRklORSBmYWxzZSkKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksICAtLSBCIG1hdGNoZWQKKyAg ICAgICAgKDUsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwK KyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfbm9u X21hdGNoaW5nCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0 YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8IHtffSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAg IDUKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtDfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRnJhbWUgQm91 bmRhcnkgSGFuZGxpbmcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gTGltaXRlZCBmcmFtZSAoUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCAzIEZPTExPV0lORykKK1dJVEggdGVzdF9saW1pdGVkX2ZyYW1lIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDQsIEFSUkFZWydCJ10pLCAgLS0gV2l0aGluIDMgRk9MTE9XSU5HCisgICAgICAgICg1LCBBUlJB WVsnQiddKSwgIC0tIEJleW9uZCAzIEZPTExPV0lORyBmcm9tIHJvdyAxCisgICAgICAgICg2LCBB UlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAor ICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFz dF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2xpbWl0ZWRfZnJhbWUK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgMyBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtBfSAg IHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAg ICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtC fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtffSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tIFVuYm91bmRlZCBmcmFtZSAoUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HKQorV0lUSCB0ZXN0X3VuYm91bmRl ZF9mcmFtZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0En XSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNiwgQVJSQVlbJ0InXSkgIC0tIEZhciBmcm9tIHN0YXJ0LCBidXQgdW5ib3VuZGVk CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfdW5ib3VuZGVkX2ZyYW1lCitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisg ICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDYKKyAgMiB8IHtBfSAg IHwgICAgICAgICAgIDIgfCAgICAgICAgIDYKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAg ICAgICAgIDYKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDYKKyAgNSB8IHtB fSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgIDYKKyAgNiB8IHtCfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tIE1hdGNoIGV4Y2VlZHMgZnJhbWUgYm91bmRhcnkK K1dJVEggdGVzdF9mcmFtZV9leGNlZWRlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0EnXSkKKyAgICAgICAgLS0gRnJhbWUgZW5kcyBhdCByb3cgMyAoMiBG T0xMT1dJTkcpLCBCIG5ldmVyIGFwcGVhcnMKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9mcmFtZV9leGNlZWRlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICAyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gRnJhbWUgYm91bmRhcnkg Zm9yY2VkIG1pc21hdGNoCistLSBMaW1pdGVkIGZyYW1lIHdpdGggZW5vdWdoIHJvd3Mgc28gdGhh dCBhIGNvbnRleHQncyBmcmFtZSBib3VuZGFyeQorLS0gaXMgZXhjZWVkZWQgd2hpbGUgc3RpbGwg cHJvY2Vzc2luZy4KK1dJVEggdGVzdF9mcmFtZV9ib3VuZGFyeSBBUyAoCisgICAgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9mcmFtZV9ib3VuZGFyeQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCAyIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB KyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0 IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNgorICA1IHwge0F9ICAgfCAgICAgICAg ICAgNSB8ICAgICAgICAgNgorICA2IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor KDYgcm93cykKKworLS0gUmVsdWN0YW50IHdpdGggbGltaXRlZCBmcmFtZSAoQSs/IEIgd2l0aCAy IEZPTExPV0lORykKKy0tIFJlbHVjdGFudCBleGl0cyBlYXJseSwgQiBtdXN0IGJlIHdpdGhpbiBm cmFtZSBib3VuZGFyeQorV0lUSCB0ZXN0X3JlbHVjdGFudF9mcmFtZSBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsn XyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3JlbHVjdGFudF9mcmFtZQorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCAyIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQ QVRURVJOIChBKz8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3Mp LAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNo X3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtBfSAgIHwg ICAgICAgICAgIDIgfCAgICAgICAgIDMKKyAgMyB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNCB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisK Ky0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0gU3RhdGUgTWFuYWdlbWVudAorLS0gPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBEdXBsaWNhdGUgc3RhdGUg Y3JlYXRpb24KK1dJVEggdGVzdF9kdXBsaWNhdGVfc3RhdGVzIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywgJ0InXSksICAtLSBCb3RoIEEgYW5k IEIgbWF0Y2ggKGNyZWF0ZXMgZHVwbGljYXRlIHN0YXRlcyB2aWEgZGlmZmVyZW50IHBhdGhzKQor ICAgICAgICAoMiwgQVJSQVlbJ0MnLCAnXyddKSwKKyAgICAgICAgKDMsIEFSUkFZWydEJywgJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9kdXBsaWNhdGVfc3RhdGVzCitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoKEEgfCBCKSBDIEQpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBD IEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsQn0gfCAgICAgICAgICAgMSB8ICAgICAg ICAgMworICAyIHwge0MsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0QsX30g fCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gUmVsdWN0YW50IGR1cGxp Y2F0ZSBzdGF0ZSBoYW5kbGluZworLS0gKEErPyB8IEIrPykgY3JlYXRlcyBleGl0IGFuZCBsb29w IHN0YXRlczsgZXhpdCBwYXRocyBtYXkgY29udmVyZ2UKK1dJVEggdGVzdF9yZWx1Y3RhbnRfZGVk dXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0En LCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMywgQVJSQVlb J18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAg ICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfZGVkdXAKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOICgoQSs/IHwgQis/KSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQg fCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLEJ9IHwgICAgICAgICAgIDEgfCAgICAgICAgIDEK KyAgMiB8IHtBLEJ9IHwgICAgICAgICAgIDIgfCAgICAgICAgIDIKKyAgMyB8IHtffSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKygzIHJvd3MpCisKKy0tIExhcmdlIHBhdHRlcm4gKHN0cmVz cyBmcmVlIGxpc3QpCitXSVRIIHRlc3RfbGFyZ2VfcGF0dGVybiBBUyAoCisgICAgU0VMRUNUICog RlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZ WydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnRCdd KSwKKyAgICAgICAgKDUsIEFSUkFZWydFJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0YnXSksCisg ICAgICAgICg3LCBBUlJBWVsnRyddKSwKKyAgICAgICAgKDgsIEFSUkFZWydIJ10pLAorICAgICAg ICAoOSwgQVJSQVlbJ0knXSksCisgICAgICAgICgxMCwgQVJSQVlbJ0onXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF9sYXJnZV9wYXR0ZXJuCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBC IEMgRCBFIEYgRyBIIEkgSikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxh Z3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpLAorICAgICAgICBFIEFT ICdFJyA9IEFOWShmbGFncyksCisgICAgICAgIEYgQVMgJ0YnID0gQU5ZKGZsYWdzKSwKKyAgICAg ICAgRyBBUyAnRycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBIIEFTICdIJyA9IEFOWShmbGFncyks CisgICAgICAgIEkgQVMgJ0knID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgSiBBUyAnSicgPSBBTlko ZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAg ICAxIHwgICAgICAgIDEwCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7RH0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDYgfCB7Rn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7R30gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDggfCB7SH0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDkgfCB7SX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTAgfCB7Sn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMTAgcm93cykKKworLS0gUmVkdWNlZCBmcmFtZSBt YXAgcmVhbGxvY2F0aW9uICg+IDEwMjQgcm93cykKK1dJVEggdGVzdF9tYXBfcmVhbGxvYyBBUyAo CisgICAgU0VMRUNUIGlkLCBDQVNFIFdIRU4gaWQgJSAyID0gMSBUSEVOIEFSUkFZWydBJ10gRUxT RSBBUlJBWVsnQiddIEVORCBBUyBmbGFncworICAgIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDEx MDApIEFTIGlkCispCitTRUxFQ1QgY291bnQoKiksIG1pbihtYXRjaF9zdGFydCksIG1heChtYXRj aF9lbmQpCitGUk9NICgKKyAgICBTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kCisgICAgRlJPTSB0ZXN0X21hcF9yZWFsbG9jCisgICAgV0lO RE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgICAgICBQQVRURVJOIChBIEIpCisgICAgICAgIERFRklORQorICAg ICAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpCisgICAgKQorKSBzdWI7CisgY291bnQgfCBtaW4gfCBtYXggIAorLS0tLS0tLSst LS0tLSstLS0tLS0KKyAgMTEwMCB8ICAgMSB8IDExMDAKKygxIHJvdykKKworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBT dGF0aXN0aWNzIGFuZCBEaWFnbm9zdGljcworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBNYXRjaGVkIGNvbnRleHRzCitX SVRIIHRlc3RfbWF0Y2hlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxh Z3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2Vu ZAorRlJPTSB0ZXN0X21hdGNoZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAg IFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFG VEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBIEIpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAg ICAxIHwgICAgICAgICAyCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBQcnVuZWQgY29udGV4dHMgKGZhaWxl ZCBhdCBmaXJzdCByb3cpCitXSVRIIHRlc3RfcHJ1bmVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydfJ10pLCAgLS0gUHJ1bmVkCisgICAgICAgICgy LCBBUlJBWVsnXyddKSwgIC0tIFBydW5lZAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQs IGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisg ICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3BydW5l ZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBO RVhUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScg PSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBm bGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0t LS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MiB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAg ICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK Kyg0IHJvd3MpCisKKy0tIE1pc21hdGNoZWQgY29udGV4dHMgKGZhaWxlZCBhZnRlciBtdWx0aXBs ZSByb3dzKQorV0lUSCB0ZXN0X21pc21hdGNoZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDMsIEFSUkFZWydfJ10pLCAgLS0gTWlzbWF0Y2hlZCBhZnRlciAyIHJvd3MKKyAg ICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0InXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9taXNtYXRjaGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsg QikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBC IEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgMyB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8 IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDUKKyAgNSB8IHtCfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIFJlbHVjdGFudCBub3QgYWJzb3JiZWQgKEEr PyB3aXRoIFNLSVAgVE8gTkVYVCBST1cpCistLSBDb21wYXJlIHdpdGggZ3JlZWR5IEErIGJlbG93 OiByZWx1Y3RhbnQgaXMgbm90IGFic29yYmFibGUsCistLSBzbyBhbGwgY29udGV4dHMgc3Vydml2 ZSBpbmRlcGVuZGVudGx5LgorV0lUSCB0ZXN0X3JlbHVjdGFudF9zdGF0cyBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3RfcmVsdWN0YW50X3N0YXRzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQK KyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAg ICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSs/KQorICAgIERF RklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDEKKyAgMiB8IHtBfSAg IHwgICAgICAgICAgIDIgfCAgICAgICAgIDIKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAg ICAgICAgIDMKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDQKKyAgNSB8IHtf fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIEFic29yYmVkIGNv bnRleHRzCitXSVRIIHRlc3RfYWJzb3JiZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAg ICg1LCBBUlJBWVsnXyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYmVk CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVO VCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5F WFQgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0g QU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCist LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAg ICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAg NAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNAorICA0IHwge0F9ICAgfCAg ICAgICAgICAgNCB8ICAgICAgICAgNAorICA1IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorKDUgcm93cykKKworLS0gU2tpcHBlZCBjb250ZXh0cyAoU0tJUCBUTyBORVhUIFJPVykK K1dJVEggdGVzdF9za2lwcGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgz LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pICAtLSBDb21wbGV0ZXMgbWF0 Y2ggc3RhcnRpbmcgYXQgcm93IDEKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9za2lw cGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSsgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQg fCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDQK KyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8IHtBfSAgIHwgICAg ICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyg0IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0gUXVhbnRpZmllciBSdW50aW1lIEJlaGF2aW9yCist LSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KKy0tIExhcmdlIGNvdW50IGhhbmRsaW5nIChBezEwMH0pCitXSVRIIHRlc3RfbGFyZ2Vf Y291bnQgQVMgKAorICAgIFNFTEVDVCBpIEFTIGlkLCBBUlJBWVsnQSddIEFTIGZsYWdzCisgICAg RlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMTA1KSBpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAg ICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2xhcmdlX2NvdW50CitXSU5E T1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cg QU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9X CisgICAgUEFUVEVSTiAoQXsxMDB9KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncykKKyk7CisgaWQgIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0t LS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAgMSB8IHtBfSAgIHwgICAg ICAgICAgIDEgfCAgICAgICAxMDAKKyAgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAg MTAxCisgICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgIDEwMgorICAgNCB8IHtBfSAg IHwgICAgICAgICAgIDQgfCAgICAgICAxMDMKKyAgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwg ICAgICAgMTA0CisgICA2IHwge0F9ICAgfCAgICAgICAgICAgNiB8ICAgICAgIDEwNQorICAgNyB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgIDggfCB7QX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgICA5IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICAxMCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMTEgfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDEyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICAxMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMTQgfCB7QX0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDE1IHwge0F9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICAxNiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMTcg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDE4IHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICAxOSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgMjAgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIxIHwge0F9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICAyMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgMjMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDI0IHwge0F9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyNSB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgMjYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDI3 IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyOCB8IHtBfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgMjkgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDMwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzMSB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMzIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDMzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzNCB8IHtB fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMzUgfCB7QX0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDM2IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAz NyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMzggfCB7QX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDM5IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA0MCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNDEgfCB7QX0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQyIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA0MyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNDQgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQ1IHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA0NiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NDcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQ4IHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorICA0OSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNTAgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUxIHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1MiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNTMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDU0IHwg e0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1NSB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNTYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDU3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1OCB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgNTkgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDYwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2MSB8IHtBfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNjIgfCB7QX0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDYzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA2NCB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNjUgfCB7QX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDY2IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICA2NyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNjggfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDY5IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICA3MCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNzEgfCB7QX0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDcyIHwge0F9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICA3MyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNzQg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDc1IHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorICA3NiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgNzcgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDc4IHwge0F9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA3OSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgODAgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDgxIHwge0F9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4MiB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgODMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDg0 IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4NSB8IHtBfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgODYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDg3IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA4OCB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgODkgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDkwIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5MSB8IHtB fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOTIgfCB7QX0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDkzIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5 NCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOTUgfCB7QX0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDk2IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAg IAorICA5NyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOTggfCB7QX0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDk5IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorIDEwMCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMDEgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTAyIHwge0F9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorIDEwMyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAx MDQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTA1IHwge0F9ICAgfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorKDEwNSByb3dzKQorCistLSBVbmxpbWl0ZWQgcXVhbnRpZmll ciAoQXsxMCx9KQorV0lUSCB0ZXN0X3VubGltaXRlZCBBUyAoCisgICAgU0VMRUNUIGkgQVMgaWQs IEFSUkFZWydBJ10gQVMgZmxhZ3MKKyAgICBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAxNSkgaQor ICAgIFVOSU9OIEFMTAorICAgIFNFTEVDVCAxNiwgQVJSQVlbJ0InXQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF91bmxpbWl0 ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8g TkVYVCBST1cKKyAgICBQQVRURVJOIChBezEwLH0gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAg MTYKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgMTYKKyAgMyB8IHtBfSAgIHwg ICAgICAgICAgIDMgfCAgICAgICAgMTYKKyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAg ICAgMTYKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgMTYKKyAgNiB8IHtBfSAg IHwgICAgICAgICAgIDYgfCAgICAgICAgMTYKKyAgNyB8IHtBfSAgIHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgOCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtB fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMCB8IHtBfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAxMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMiB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxMyB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAxNCB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAx NSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAxNiB8IHtCfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKygxNiByb3dzKQorCistLSBNaW4gYm91bmRhcnkgKEF7Myw1fSkK K1dJVEggdGVzdF9taW5fYm91bmRhcnkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLCAgLS0gTWluPTMgcmVhY2hlZCwgZXhpdCBwYXRoIGF2YWlsYWJs ZQorICAgICAgICAoNCwgQVJSQVlbJ0InXSksICAtLSBNYXRjaCBlbmRzIGF0IG1pbgorICAgICAg ICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDcs IEFSUkFZWydBJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg5LCBBUlJB WVsnQSddKSwgIC0tIENvdW50PTUsIG1heCByZWFjaGVkCisgICAgICAgICgxMCwgQVJSQVlbJ0In XSkgIC0tIE1hdGNoIGVuZHMgYXQgbWF4CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf bWluX2JvdW5kYXJ5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQXszLDV9IEIpCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxh Z3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0t LS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAx IHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgIDEwCisg IDYgfCB7QX0gICB8ICAgICAgICAgICA2IHwgICAgICAgIDEwCisgIDcgfCB7QX0gICB8ICAgICAg ICAgICA3IHwgICAgICAgIDEwCisgIDggfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDkgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgMTAgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoMTAgcm93cykKKworLS0gTWF4IGJvdW5kYXJ5IGV4Y2Vl ZGVkIChBezMsNX0pCitXSVRIIHRlc3RfbWF4X2JvdW5kYXJ5IEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0EnXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10p LAorICAgICAgICAoNSwgQVJSQVlbJ0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQSddKSwgIC0t IENvdW50PTYgPiBtYXg9NSwgcm93IDEgY29udGV4dCByZW1vdmVkCisgICAgICAgICg3LCBBUlJB WVsnQiddKSAgIC0tIFJvdyAxIGNvbnRleHQ6IG5vIG1hdGNoIChleGNlZWRlZCBtYXgpCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbWF4X2JvdW5kYXJ5CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoQXszLDV9IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7QX0gICB8ICAg ICAgICAgICAyIHwgICAgICAgICA3CisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAg ICA3CisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA3CisgIDUgfCB7QX0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDcgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNyByb3dzKQor CistLSBHcmVlZHkgdnMgcmVsdWN0YW50OiBBKyBtYXRjaGVzIGFsbCByb3dzLCBBKz8gbWF0Y2hl cyBtaW5pbXVtCitXSVRIIHRlc3RfZ3JlZWR5X3ZzX3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgy LCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgzLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAg ICg0LCBBUlJBWVsnQicsJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ncmVl ZHlfdnNfcmVsdWN0YW50CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0t LS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsX30gfCAgICAgICAgICAg MSB8ICAgICAgICAgNAorICAyIHwge0EsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAz IHwge0EsQn0gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0IsX30gfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gU2FtZSBkYXRhLCByZWx1Y3RhbnQgQSs/ IGV4aXRzIGF0IHJvdyAzIHdoZXJlIEIgaXMgZmlyc3QgYXZhaWxhYmxlCitXSVRIIHRlc3RfZ3Jl ZWR5X3ZzX3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQScsJ18nXSksCisgICAgICAgICgyLCBBUlJBWVsnQScsJ18nXSksCisgICAg ICAgICgzLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICg0LCBBUlJBWVsnQicsJ18nXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ncmVlZHlfdnNfcmVsdWN0YW50CitXSU5ET1cg dyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5E IFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cK KyAgICBQQVRURVJOIChBKz8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8 IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyAgMSB8IHtBLF99IHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtB LF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBLEJ9IHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNCB8IHtCLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJv d3MpCisKKy0tIFJlbHVjdGFudCBncm91cDogKEEgQikrPyBtYXRjaGVzIG1pbmltdW0gMSBpdGVy YXRpb24KK1dJVEggdGVzdF9yZWx1Y3RhbnRfZ3JvdXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfZ3JvdXAKK1dJTkRPVyB3IEFT ICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5C T1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAg IFBBVFRFUk4gKChBIEIpKz8pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBt YXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwg ICAgICAgICA0CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dz KQorCistLSBBKz8gQiAocmVsdWN0YW50IHBsdXMpOiBleGl0cyBBIGF0IGZpcnN0IEIgYXZhaWxh YmlsaXR5CistLSAoU2FtZSBzY2VuYXJpbyBhcyBncmVlZHktdnMtcmVsdWN0YW50IGNvbXBhcmlz b24gYWJvdmU7IHJldGFpbmVkIGZvcgorLS0gc3RhbmRhbG9uZSBxdWFudGlmaWVyIGNvdmVyYWdl IGFsb25nc2lkZSBBezEsM30/IGFuZCBBezIsM30/IGJlbG93KQorV0lUSCB0ZXN0X3JlbHVjdGFu dF9wbHVzIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZ WydBJywnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywnXyddKSwKKyAgICAgICAgKDMsIEFS UkFZWydBJywnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJywnXyddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRl c3RfcmVsdWN0YW50X3BsdXMKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJP V1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVS IE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErPyBCKQorICAgIERFRklO RQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5Z KGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0t Ky0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsX30gfCAgICAgICAg ICAgMSB8ICAgICAgICAgMworICAyIHwge0EsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAor ICAzIHwge0EsQn0gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0IsX30gfCAgICAg ICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gQXsxLDN9PyBCIChyZWx1Y3RhbnQg Ym91bmRlZCk6IHNhbWUgZGF0YSwgYm91bmRlZCBxdWFudGlmaWVyCitXSVRIIHRlc3RfcmVsdWN0 YW50X2JvdW5kZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwg QVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnLCdfJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9yZWx1Y3RhbnRfYm91bmRlZAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQXsxLDN9PyBC KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIg QVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRj aF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0Es X30gfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0EsX30gfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICAzIHwge0EsQn0gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwg e0IsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gQXszLDV9PyBC IChyZWx1Y3RhbnQgYm91bmRlZCBtaWQtYmFuZCk6IHRoZSBWQVItbGV2ZWwgY291bnQKKy0tIGN5 Y2xlcyB0aHJvdWdoIDMsIDQsIDUgd2l0aGluIGEgc2luZ2xlIG1hdGNoIGF0dGVtcHQuICBFeGVy Y2lzZXMKKy0tIGEgcmVsdWN0YW50IGJvdW5kZWQgcXVhbnRpZmllciB0aGF0IGFic29yYmFiaWxp dHkgYW5hbHlzaXMgZXhjbHVkZXMKKy0tIChyZWx1Y3RhbnQgcXVhbnRpZmllcnMgYXJlIG5ldmVy IGFic29yYmFibGUsIHNvIEEgc3RheXMKKy0tIG5vbi1hYnNvcmJhYmxlKS4KK1dJVEggdGVzdF9y ZWx1Y3RhbnRfbWlkX2JhbmQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAg ICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMs IEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3RfcmVsdWN0YW50X21pZF9iYW5kCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBezMsNX0/ IEIpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1h dGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7 QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA2CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQg fCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCiso NiByb3dzKQorCistLSBOZXN0ZWQgcXVhbnRpZmllciBmbGF0dGVuaW5nIG11c3Qgbm90IHdpZGVu IHRoZSBtYXRjaGluZyBsYW5ndWFnZSAoSC0xKS4KKy0tIChBe2ssfSkqIHdpdGggayA+PSAyIHJl YWNoZXMgcmVwZXRpdGlvbiBjb3VudHMgezB9IFVOSU9OIFtrLCBJTkYpOyB0aGUgZ2FwCistLSAx Li5rLTEgaXMgdW5yZWFjaGFibGUsIHNvIGl0IG11c3QgTk9UIGNvbGxhcHNlIHRvIEEqLiAgQW4g aXNvbGF0ZWQgc2luZ2xlIEEKKy0tIG11c3QgeWllbGQgYW4gRU1QVFkgbWF0Y2ggKGNvdW50IDAp LCBub3QgYSBsZW5ndGgtMSBtYXRjaC4KK1dJVEggdGVzdF9uZXN0ZWRfcXVhbnRfdmFyIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLCAgLS0g aXNvbGF0ZWQgQTogKEF7Mix9KSogbWF0Y2hlcyBlbXB0eSBoZXJlLCBub3QgMQorICAgICAgICAo MiwgQVJSQVlbJ18nXSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFS UkFZWydBJ10pLCAgLS0gcnVuIG9mIDI6IG1hdGNoZWQKKyAgICAgICAgKDUsIEFSUkFZWydfJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kLAorICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBtYXRjaF9j b3VudAorRlJPTSB0ZXN0X25lc3RlZF9xdWFudF92YXIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKChB ezIsfSkqKQorICAgIERFRklORSBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFn cyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIHwgbWF0Y2hfY291bnQgCistLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIDAKKyAgMiB8IHtffSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgMAorICAzIHwge0F9ICAgfCAgICAgICAgICAg MyB8ICAgICAgICAgNCB8ICAgICAgICAgICAyCisgIDQgfCB7QX0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgIHwgICAgICAgICAgIDAKKyAgNSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAgfCAgICAgICAgICAgMAorKDUgcm93cykKKworLS0gU2FtZSBmb3IgYSBHUk9VUCBjaGls ZDogKChBIEIpezIsfSkqIG11c3Qgbm90IGNvbGxhcHNlIHRvIChBIEIpKi4KKy0tIEFuIGlzb2xh dGVkIHNpbmdsZSAoQSBCKSBwYWlyIG11c3QgeWllbGQgYW4gRU1QVFkgbWF0Y2ggKGNvdW50IDAp LgorV0lUSCB0ZXN0X25lc3RlZF9xdWFudF9ncm91cCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwgIC0tIGlzb2xhdGVkIChBIEIpIHBhaXI6 IG1hdGNoZXMgZW1wdHkgaGVyZQorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgz LCBBUlJBWVsnXyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJS QVlbJ0InXSksCisgICAgICAgICg2LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDcsIEFSUkFZWydC J10pLCAgLS0gcnVuIG9mIDIgcGFpcnM6IG1hdGNoZWQKKyAgICAgICAgKDgsIEFSUkFZWydfJ10p CisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmly c3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfZW5kLAorICAgICAgIGNvdW50KCopIE9WRVIgdyBBUyBtYXRjaF9j b3VudAorRlJPTSB0ZXN0X25lc3RlZF9xdWFudF9ncm91cAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KChBIEIpezIsfSkqKQorICAgIERFRklORSBBIEFTICdBJyA9IEFOWShmbGFncyksIEIgQVMgJ0In ID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg fCBtYXRjaF9jb3VudCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAg ICAgICAgMAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAg ICAwCisgIDMgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIDAK KyAgNCB8IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDcgfCAgICAgICAgICAgNAorICA1 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAwCisgIDYgfCB7 QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICAgICAgICAgIDAKKyAgNyB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgICAgICAgICAgMAorICA4IHwge199ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgICB8ICAgICAgICAgICAwCisoOCByb3dzKQorCistLSA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ky0tIFBhdGhvbG9naWNhbCBQYXR0ZXJuIFJ1bnRpbWUgUHJvdGVjdGlvbgorLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBD b21wbGV4IG5lc3RlZCBudWxsYWJsZSAoKEEqIEIqKSopIC0gUnVudGltZSBwcm90ZWN0aW9uCitX SVRIIHRlc3RfY29tcGxleF9uZXN0ZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1 LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAg bGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2NvbXBsZXhfbmVz dGVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VS UkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRP IE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEqIEIqKSopCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOwor IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAg ICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7Qn0gICB8 ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICA0IHwgICAg ICAgICA0CisgIDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQor CistLSBOZXN0ZWQgbnVsbGFibGUgd2l0aCBxdWFudGlmaWVyICgoQXswLDN9KSopCitXSVRIIHRl c3RfbmVzdGVkX3F1YW50aWZpZXIgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9lbmQKK0ZST00gdGVzdF9uZXN0ZWRfcXVhbnRpZmllcgorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChB ezAsM30pKikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOwor IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAg ICAzCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAzCisgIDMgfCB7QX0gICB8 ICAgICAgICAgICAzIHwgICAgICAgICAzCisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisoNCByb3dzKQorCistLSBSZWx1Y3RhbnQgbnVsbGFibGU6IEEqPyAocHJlZmVycyAw IG1hdGNoZXMpCistLSBBKj8gYWx3YXlzIHRha2VzIHNraXAgcGF0aCAoMCBpdGVyYXRpb25zIHBy ZWZlcnJlZCkKK1dJVEggdGVzdF9yZWx1Y3RhbnRfbnVsbGFibGUgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18n XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1Y3RhbnRfbnVsbGFibGUKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBQQVRURVJOIChBKj8gQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBB TlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFn cyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMiB8 IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNCB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0 IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gQWx0ZXJuYXRpb24gUnVudGltZSBCZWhhdmlvcgorLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBNdWx0aS1icmFuY2ggYWx0ZXJuYXRpb24gKEEgKEJ8Q3xEfEUpIEYpCitXSVRIIHRlc3Rf bXVsdGlfYnJhbmNoIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEs IEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJB WVsnRiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0Mn XSksCisgICAgICAgICg2LCBBUlJBWVsnRiddKSwKKyAgICAgICAgKDcsIEFSUkFZWydBJ10pLAor ICAgICAgICAoOCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg5LCBBUlJBWVsnRiddKSwKKyAgICAg ICAgKDEwLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDExLCBBUlJBWVsnRSddKSwKKyAgICAgICAg KDEyLCBBUlJBWVsnRiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X211bHRpX2Jy YW5jaAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgKEIgfCBDIHwgRCB8IEUpIEYpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0Qn ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBG IEFTICdGJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0 Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtB fSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDMKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgMyB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8 IHtBfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDYKKyAgNSB8IHtDfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNiB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NyB8IHtBfSAgIHwgICAgICAgICAgIDcgfCAgICAgICAgIDkKKyAgOCB8IHtEfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgOSB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAxMCB8IHtBfSAgIHwgICAgICAgICAgMTAgfCAgICAgICAgMTIKKyAxMSB8IHtFfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAxMiB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKygxMiByb3dzKQorCistLSBBbHRlcm5hdGlvbiB3aXRoIHF1YW50aWZpZXJzIChBKyB8IEIr IHwgQyspCitXSVRIIHRlc3RfYWx0X3F1YW50aWZpZXJzIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0En XSksCisgICAgICAgICgzLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAor ICAgICAgICAoNSwgQVJSQVlbJ0InXSksCisgICAgICAgICg2LCBBUlJBWVsnQyddKSwKKyAgICAg ICAgKDcsIEFSUkFZWydDJ10pLAorICAgICAgICAoOCwgQVJSQVlbJ0MnXSksCisgICAgICAgICg5 LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAg bGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9xdWFudGlm aWVycworV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENV UlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBU TyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIHwgQisgfCBDKykKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hf c3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0F9ICAgfCAg ICAgICAgICAgMiB8ICAgICAgICAgMworICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAg ICAgMworICA0IHwge0J9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNQorICA1IHwge0J9ICAg fCAgICAgICAgICAgNSB8ICAgICAgICAgNQorICA2IHwge0N9ICAgfCAgICAgICAgICAgNiB8ICAg ICAgICAgOQorICA3IHwge0N9ICAgfCAgICAgICAgICAgNyB8ICAgICAgICAgOQorICA4IHwge0N9 ICAgfCAgICAgICAgICAgOCB8ICAgICAgICAgOQorICA5IHwge0N9ICAgfCAgICAgICAgICAgOSB8 ICAgICAgICAgOQorKDkgcm93cykKKworLS0gYWx0UHJpb3JpdHkgcmVwbGFjZW1lbnQgKEEgQiBD IHwgRCkKKy0tIEQgYnJhbmNoIChoaWdoZXIgYWx0UHJpb3JpdHkpIG1hdGNoZXMgZmlyc3QgYXQg cm93IDEsCistLSB0aGVuIEEgQiBDIGJyYW5jaCAobG93ZXIgYWx0UHJpb3JpdHkpIHJlcGxhY2Vz IGl0IGF0IHJvdyAzLgorV0lUSCB0ZXN0X2FsdF9yZXBsYWNlIEFTICgKKyAgICBTRUxFQ1QgKiBG Uk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJywgJ0QnXSksCisgICAgICAgICgyLCBB UlJBWVsnQicsICdfJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnLCAnXyddKSwKKyAgICAgICAg KDQsIEFSUkFZWydfJywgJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRf cmVwbGFjZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVO IENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIHwgRCkKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlko ZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxEfSB8ICAgICAgICAg ICAxIHwgICAgICAgICAzCisgIDIgfCB7QixffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDMgfCB7QyxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7XyxffSB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSBBTFQgbGV4aWNhbCBvcmRlciB0YWtl cyBwcmlvcml0eSBvdmVyIGdyZWVkeSAobG9uZ2VyIG1hdGNoKS4KKy0tIFJvdyAxIG1hdGNoZXMg Ym90aCBBIGFuZCBCOyBBIHdpbnMgYnkgbGV4aWNhbCBvcmRlciAobWF0Y2ggMS0xKS4KK1dJVEgg dGVzdF9hbHRfbGV4aWNhbF9vcmRlciBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisg ICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksICAtLSBBIGFuZCBCIGJvdGggbWF0Y2gKKyAgICAg ICAgKDIsIEFSUkFZWydfJywnQyddKSAgIC0tIG9ubHkgQyBtYXRjaGVzICh3b3VsZCBjb250aW51 ZSBCIEMpCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X2xleGljYWxfb3JkZXIK K1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5U IFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBM QVNUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQiBDKSspCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0 IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAg MSB8IHtBLEJ9IHwgICAgICAgICAgIDEgfCAgICAgICAgIDEKKyAgMiB8IHtfLEN9IHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKygyIHJvd3MpCisKKy0tIEFMVCB3aXRoIHJlbHVjdGFudDogKEEr PyB8IEIrKSAtIEEgYnJhbmNoIGlzIHJlbHVjdGFudCwgQiBpcyBncmVlZHkuCistLSBSb3cgMSBt YXRjaGVzIGJvdGggQSBhbmQgQi4gQSs/IGV4aXRzIGltbWVkaWF0ZWx5IChtYXRjaCAxLTEpLgor V0lUSCB0ZXN0X2FsdF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0InLCdfJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0InLCdfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykK K1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRj aF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9N IHRlc3RfYWx0X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEErPyB8IEIrKSkKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLEJ9IHwg ICAgICAgICAgIDEgfCAgICAgICAgIDEKKyAgMiB8IHtCLF99IHwgICAgICAgICAgIDIgfCAgICAg ICAgIDMKKyAgMyB8IHtCLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygzIHJvd3MpCisK Ky0tIE9wdGlvbmFsIGZpcnN0IGJyYW5jaCBpbiBBTFQgd2l0aCBxdWFudGlmaWVyOiAoQT8gfCBC KXsxLDJ9CistLSBGaXJzdCBicmFuY2ggQT8gZXhpdCBwYXRoIG1heSBsb29wIGJhY2sgdG8gQUxU IGFuZCB0cmlnZ2VyIGN5Y2xlCistLSBkZXRlY3Rpb24gZHVyaW5nIERGUy4gIEFsbCBicmFuY2hl cyBtdXN0IHJlY2VpdmUgY29ycmVjdCBjb3VudHMuCitXSVRIIHRlc3RfYWx0X29wdF9maXJzdCBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRfb3B0X2ZpcnN0CitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVS TiAoKChBPyB8IEIpezEsMn0pKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0J9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0J9 ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMworICAzIHwge0J9ICAgfCAgICAgICAgICAgMyB8 ICAgICAgICAgMworKDMgcm93cykKKworLS0gTWl4ZWQgQS9CIHJvd3MgYWNyb3NzIGl0ZXJhdGlv bnMgb2YgKEE/IHwgQil7MSwyfQorV0lUSCB0ZXN0X2FsdF9vcHRfbWl4ZWQgQVMgKAorICAgIFNF TEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJywnQiddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9vcHRfbWl4ZWQKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoKEE/ IHwgQil7MSwyfSkpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7Qn0gICB8ICAg ICAgICAgICAyIHwgICAgICAgICAzCisgIDMgfCB7QSxCfSB8ICAgICAgICAgICAzIHwgICAgICAg ICAzCisoMyByb3dzKQorCistLSBSZWx1Y3RhbnQgdmFyaWFudDogKEE/PyB8IEIpezEsMn0KK1dJ VEggdGVzdF9hbHRfb3B0X3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9hbHRf b3B0X3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBC RVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFU Q0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKCgoQT8/IHwgQil7MSwyfSkpCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicg PSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAK Ky0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7Qn0gICB8ICAg ICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAyIHwgICAgICAg ICAzCisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisoMyByb3dzKQorCist LSBPdmVybGFwcGluZyBtYXRjaDogQSBCIEMgRCBFIHwgQiBDIEQgfCBDIEQgRSBGIChTS0lQIFBB U1QgTEFTVCBST1cpCitXSVRIIHRlc3Rfb3ZlcmxhcDEgQVMgKAorICAgIFNFTEVDVCAqIEZST00g KFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQidd KSwKKyAgICAgICAgKDMsIEFSUkFZWydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisg ICAgICAgICg1LCBBUlJBWVsnRSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydGJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9vdmVybGFwMQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9X UyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIg TUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMgRCBFIHwgQiBDIEQg fCBDIEQgRSBGKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisg ICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxh Z3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMgJ0UnID0g QU5ZKGZsYWdzKSwKKyAgICAgICAgRiBBUyAnRicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxh Z3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA1CisgIDIg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgIDQgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDUgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7Rn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisoNiByb3dzKQorCistLSBTYW1lIHdpdGggU0tJUCBUTyBORVhU IFJPVzogdGhyZWUgb3ZlcmxhcHBpbmcgbWF0Y2hlcworV0lUSCB0ZXN0X292ZXJsYXAxIEFTICgK KyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAg KDQsIEFSUkFZWydEJ10pLAorICAgICAgICAoNSwgQVJSQVlbJ0UnXSksCisgICAgICAgICg2LCBB UlJBWVsnRiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb3ZlcmxhcDEKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB IEIgQyBEIEUgfCBCIEMgRCB8IEMgRCBFIEYpCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0En ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBD IEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMgJ0QnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgRSBBUyAnRScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBGIEFTICdGJyA9IEFOWShmbGFn cykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEg fCAgICAgICAgIDUKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgIDIgfCAgICAgICAgIDQKKyAgMyB8 IHtDfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDYKKyAgNCB8IHtEfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNSB8IHtFfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg NiB8IHtGfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tIExvbmdl ciBwYXR0ZXJuIGZhaWxzLCBzaG9ydGVyIHN1cnZpdmVzOiBBKyBCIEMgRCBFIHwgQisgQworV0lU SCB0ZXN0X292ZXJsYXAxYiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDUsIEFSUkFZ WydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vdmVybGFwMWIKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRF UiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExP V0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEr IEIgQyBEIEUgfCBCKyBDKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBB TlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncyksCisgICAgICAgIEUgQVMg J0UnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9l bmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyIHwge0J9ICAgfCAgICAgICAgICAgMiB8ICAg ICAgICAgMworICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0R9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge1h9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorKDUgcm93cykKKworLS0gTG9uZyBCIHNlcXVlbmNlIHdpdGggZGlmZmVyZW50 IGVuZGluZ3M6IEEgQisgQyB8IEIrIEQKK1dJVEggdGVzdF9vdmVybGFwMiBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCAgQVJSQVlbJ0EnXSksCisgICAgICAgICgy LCAgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCAgQVJSQVlbJ0InXSksCisgICAgICAgICg0LCAg QVJSQVlbJ0InXSksCisgICAgICAgICg1LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg2LCAgQVJS QVlbJ0MnXSksCisgICAgICAgICg3LCAgQVJSQVlbJ0InXSksCisgICAgICAgICg4LCAgQVJSQVlb J0InXSksCisgICAgICAgICg5LCAgQVJSQVlbJ0InXSksCisgICAgICAgICgxMCwgQVJSQVlbJ0Qn XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X292ZXJsYXAyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkg aWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcK KyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCKyBDIHwg QisgRCkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAg ICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwK KyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA2CisgIDIgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDcgfCB7Qn0gICB8ICAgICAgICAgICA3IHwgICAgICAgIDEwCisgIDggfCB7Qn0g ICB8ICAgICAgICAgICA4IHwgICAgICAgIDEwCisgIDkgfCB7Qn0gICB8ICAgICAgICAgICA5IHwg ICAgICAgIDEwCisgMTAgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoMTAgcm93 cykKKworLS0gR3JlZWR5IHdpdGggbGF0ZSBmYWlsdXJlICgiYmV0cmF5YWwiKTogQSBCIEMrIEQg fCBBIEIKK1dJVEggdGVzdF9iZXRyYXlhbCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAg ICAgICAoMywgQVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnQyddKSwKKyAgICAgICAg KDUsIEFSUkFZWydDJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0UnXSkKKyAgICApIEFTIHQoaWQs IGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0 X2JldHJheWFsCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBIEIgQysgRCB8IEEgQikKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFO WShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAn RCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2Vu ZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8 ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7Q30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7Q30gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDYgfCB7RX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNiByb3dz KQorCistLSBNdWx0aXBsZSBUUlVFIHBlciByb3c6IG92ZXJsYXBwaW5nIHBhdHRlcm4gdmFyaWFi bGVzCitXSVRIIHRlc3RfbXVsdGlfdHJ1ZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQicsJ0Mn XSksCisgICAgICAgICgzLCBBUlJBWVsnQycsJ0QnXSksCisgICAgICAgICg0LCBBUlJBWVsnRCcs J0UnXSksCisgICAgICAgICg1LCBBUlJBWVsnRScsJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9z dGFydCwgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X211bHRp X3RydWUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg UEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEEgQiBDIEQgRSkKKyAgICBERUZJTkUKKyAgICAg ICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyks CisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlko ZmxhZ3MpLAorICAgICAgICBFIEFTICdFJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8 IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0t LS0tLS0tLS0KKyAgMSB8IHtBLEJ9IHwgICAgICAgICAgIDEgfCAgICAgICAgIDUKKyAgMiB8IHtC LEN9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtDLER9IHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgNCB8IHtELEV9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8 IHtFLF99IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tIERpYWdvbmFs IHBhdHRlcm4gd2l0aCBzaGlmdGVkIG11bHRpLVRSVUUgb3ZlcmxhcAorV0lUSCB0ZXN0X2RpYWdv bmFsIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydB JywnXyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJywnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZ WydDJywnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydEJywnQyddKSwKKyAgICAgICAgKDUsIEFS UkFZWydfJywnRCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LCBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZGlhZ29uYWwKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO IChBIEIgQyBEKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisg ICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxh Z3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1h dGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0KKyAgMSB8IHtBLF99IHwgICAgICAgICAgIDEgfCAgICAgICAgIDQKKyAgMiB8IHtCLEF9 IHwgICAgICAgICAgIDIgfCAgICAgICAgIDUKKyAgMyB8IHtDLEJ9IHwgICAgICAgICAgICAgfCAg ICAgICAgICAKKyAgNCB8IHtELEN9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtf LER9IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1IHJvd3MpCisKKy0tICgoQSB8IEIpIEMp KyAtIGFsdGVybmF0aW9uIGluc2lkZSBncm91cCB3aXRoIG91dGVyIHF1YW50aWZpZXIKK1dJVEgg dGVzdF9hbHRfZ3JvdXAgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDMsIEFS UkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0MnXSksCisgICAgICAgICg1LCBBUlJBWVsn WCddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLCBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LCBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfYWx0X2dyb3VwCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIg QlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJ TkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEg fCBCKSBDKSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFn cykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEg fCAgICAgICAgIDQKKyAgMiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtDfSAgIHwgICAgICAgICAg ICAgfCAgICAgICAgICAKKyAgNSB8IHtYfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg1 IHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQorLS0gRGVlcCBOZXN0ZWQgR3JvdXBzCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFRocmVl LWxldmVsIG5lc3RpbmcgKCgoKEEgQikrKSspKykKK1dJVEggdGVzdF9kZWVwX25lc3RpbmcgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYs IEFSUkFZWydCJ10pLAorICAgICAgICAoNywgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZs YWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9l bmQKK0ZST00gdGVzdF9kZWVwX25lc3RpbmcKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoKChBIEIpKykr KSspCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAg QiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1h dGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7 QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA2CisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA2CisgIDQg fCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAg ICA1IHwgICAgICAgICA2CisgIDYgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisg IDcgfCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNyByb3dzKQorCistLSBNdWx0 aXBsZSBncm91cHMgaW4gbmVzdGluZyAoKChBIEIpIChDIEQpKSspCitXSVRIIHRlc3RfbmVzdGVk X3NlcXVlbnRpYWwgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwg QVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZ WydDJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0QnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSdd KSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0MnXSksCisg ICAgICAgICg4LCBBUlJBWVsnRCddKSwKKyAgICAgICAgKDksIEFSUkFZWydfJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVkX3NlcXVlbnRpYWwKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOICgoKEEgQikgKEMgRCkpKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlko ZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0Mn ID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgRCBBUyAnRCcgPSBBTlkoZmxhZ3MpCispOworIGlkIHwg ZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0t LS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA4Cisg IDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA4CisgIDYgfCB7Qn0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDcgfCB7Q30gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDggfCB7RH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDkgfCB7X30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoOSByb3dzKQorCistLSBOZXN0ZWQgRU5ELT5FTkQg bWF4IHJlYWNoZWQKKy0tIElubmVyIGdyb3VwIChBIEIpezJ9IHJlYWNoZXMgbWF4PTIgLT4gZXhp dHMgdG8gb3V0ZXIgRU5ECitXSVRIIHRlc3RfZW5kX25lc3RlZF9tYXggQVMgKAorICAgIFNFTEVD VCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBB UlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlb J0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10p LAorICAgICAgICAoNywgQVJSQVlbJ0EnXSksCisgICAgICAgICg4LCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDksIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBp ZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwK KyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZW5k X25lc3RlZF9tYXgKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoKEEgQil7Mn0pKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShm bGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSst LS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAg IDEgfCAgICAgICAgIDgKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAg MyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDYKKyAgNCB8IHtCfSAgIHwgICAgICAg ICAgICAgfCAgICAgICAgICAKKyAgNSB8IHtBfSAgIHwgICAgICAgICAgIDUgfCAgICAgICAgIDgK KyAgNiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgOCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgOSB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg5IHJvd3MpCisKKy0t IE5lc3RlZCBFTkQtPkVORCBiZXR3ZWVuIG1pbi9tYXgKKy0tIElubmVyIGdyb3VwIChBIEIpezEs M30gZXhpdHMgYmV0d2VlbiBtaW4vbWF4IC0+IG91dGVyIEVORCBjb3VudCsrCitXSVRIIHRlc3Rf ZW5kX25lc3RlZF9taWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAo MSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFS UkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydCJ10pLAorICAgICAgICAoNywgQVJSQVlbJ0EnXSks CisgICAgICAgICg4LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDksIEFSUkFZWydfJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfZW5kX25lc3RlZF9taWQKK1dJTkRPVyB3IEFTICgK KyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VO REVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRU RVJOICgoKEEgQil7MSwzfSkrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgOAorICAyIHwge0J9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8 ICAgICAgICAgOAorICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwg e0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAgOAorICA2IHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA3IHwge0F9ICAgfCAgICAgICAgICAgNyB8ICAgICAgICAgOAorICA4 IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA5IHwge199ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDkgcm93cykKKworLS0gTmVzdGVkIHJlbHVjdGFudCBncm91cCAo KEEgQikrPykgd2l0aCBmb2xsb3dpbmcgZWxlbWVudCBDCistLSBJbm5lciBncm91cCBleGl0cyBh ZnRlciBtaW5pbXVtIDEgaXRlcmF0aW9uCitXSVRIIHRlc3RfbmVzdGVkX3JlbHVjdGFudCBBUyAo CisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAg ICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAg ICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfbmVzdGVkX3JlbHVjdGFudAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChB IEIpKz8gQykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncyksCisgICAgICAgIEMgQVMgJ0MnID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8 ICAgICAgICAgNQorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwg e0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNQorICA0IHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA1IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUg cm93cykKKworLS0gKEEgQil7Mn0gLSBncm91cCB3aXRoIGV4YWN0IHF1YW50aWZpZXIKK1dJVEgg dGVzdF9ncm91cF9leGFjdCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZ WydYJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9ncm91cF9leGFjdAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAo KEEgQil7Mn0pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAg ICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFy dCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisg IDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7Qn0gICB8ICAgICAg ICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7WH0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBOZXN0ZWQgRU5ELT5FTkQgZmFz dC1mb3J3YXJkCistLSBXaGVuIGFuIGlubmVyIGdyb3VwIGhhcyBhIG51bGxhYmxlIGJvZHkgYW5k IGNvdW50IDwgbWluLCB0aGUKKy0tIGZhc3QtZm9yd2FyZCBwYXRoIGV4aXRzIHRocm91Z2ggdGhl IG91dGVyIEVORCwgaW5jcmVtZW50aW5nCistLSB0aGUgb3V0ZXIgZ3JvdXAncyBjb3VudC4KKy0t IFBhdHRlcm46ICgoQT8pezIsM30pezIsM30gLS0gbmVzdGVkIGdyb3VwcywgbmVpdGhlciBjb2xs YXBzZXMKKy0tIGJlY2F1c2UgdGhlIG9wdGltaXplciBjYW5ub3Qgc2FmZWx5IG11bHRpcGx5IG5v bi1leGFjdCBxdWFudGlmaWVycy4KKy0tIERhdGEgaGFzIG5vIEEgcm93cywgZm9yY2luZyBhbGwt ZW1wdHkgaXRlcmF0aW9ucyB2aWEgZmFzdC1mb3J3YXJkLgorV0lUSCB0ZXN0X25lc3RlZF9mZiBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSkKKyAgICAp IEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIg dyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9uZXN0ZWRfZmYKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgo KEE/KXsyLDN9KXsyLDN9KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0t LS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtCfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8 IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKygzIHJvd3MpCisKKy0tID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0g U0tJUCBPcHRpb25zIChSdW50aW1lKQorLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBTS0lQIFBBU1QgTEFTVCBST1cgKG5v bi1vdmVybGFwcGluZyBtYXRjaGVzKQorV0lUSCB0ZXN0X3NraXBfcGFzdCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3Rfc2tpcF9wYXN0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUK KyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9z dGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t CisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICA0CisgIDIgfCB7QX0gICB8ICAg ICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7X30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQorCistLSBTS0lQIFRPIE5FWFQgUk9X IChvdmVybGFwcGluZyBtYXRjaGVzKQorV0lUSCB0ZXN0X3NraXBfbmV4dCBBUyAoCisgICAgU0VM RUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykK KykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitG Uk9NIHRlc3Rfc2tpcF9uZXh0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRF UiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3Rh cnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor ICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0F9ICAgfCAgICAg ICAgICAgMiB8ICAgICAgICAgNAorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAg NAorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNAorICA1IHwge199ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gU0tJUCBkaWZmZXJlbmNlIHZl cmlmaWNhdGlvbgorV0lUSCB0ZXN0X3NraXBfZGlmZiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgJ1NLSVAgUEFTVCcgQVMgbW9kZSwgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3NraXBfZGlm ZgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJF TlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNU IExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdB JyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKQorVU5JT04g QUxMCitTRUxFQ1QgJ1NLSVAgTkVYVCcgQVMgbW9kZSwgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0 X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3NraXBfZGlmZgorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRF Uk4gKEEgQikKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAg ICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKykKK09SREVSIEJZIG1vZGUsIGlkOworICAgbW9k ZSAgICB8IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0tLS0tLS0t Ky0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgU0tJUCBORVhUIHwgIDEg fCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgU0tJUCBORVhUIHwgIDIgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgU0tJUCBORVhUIHwgIDMgfCB7QX0gICB8ICAg ICAgICAgICAzIHwgICAgICAgICA0CisgU0tJUCBORVhUIHwgIDQgfCB7Qn0gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisgU0tJUCBQQVNUIHwgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwg ICAgICAgICAyCisgU0tJUCBQQVNUIHwgIDIgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgU0tJUCBQQVNUIHwgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA0Cisg U0tJUCBQQVNUIHwgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoOCByb3dz KQorCistLSBSZWx1Y3RhbnQgU0tJUCBjb21wYXJpc29uOiBBKz8gd2l0aCBTS0lQIFBBU1QgdnMg U0tJUCBORVhUCitXSVRIIHRlc3RfcmVsdWN0YW50X3NraXAgQVMgKAorICAgIFNFTEVDVCAqIEZS T00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ18nXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUICdTS0lQIFBBU1QnIEFTIG1vZGUsIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9yZWx1 Y3RhbnRfc2tpcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoQSs/KQorICAgIERFRklORQorICAgICAg ICBBIEFTICdBJyA9IEFOWShmbGFncykKKykKK1VOSU9OIEFMTAorU0VMRUNUICdTS0lQIE5FWFQn IEFTIG1vZGUsIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZS T00gdGVzdF9yZWx1Y3RhbnRfc2tpcAorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisg ICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAg QUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErPykKKyAgICBERUZJ TkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispCitPUkRFUiBCWSBtb2RlLCBpZDsK KyAgIG1vZGUgICAgfCBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0t LS0tLS0tLSstLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorIFNLSVAgTkVY VCB8ICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorIFNLSVAgTkVYVCB8ICAy IHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMgorIFNLSVAgTkVYVCB8ICAzIHwge0F9 ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgMworIFNLSVAgTkVYVCB8ICA0IHwge199ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorIFNLSVAgUEFTVCB8ICAxIHwge0F9ICAgfCAgICAgICAg ICAgMSB8ICAgICAgICAgMQorIFNLSVAgUEFTVCB8ICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8 ICAgICAgICAgMgorIFNLSVAgUEFTVCB8ICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAg ICAgMworIFNLSVAgUEFTVCB8ICA0IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAor KDggcm93cykKKworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CistLSBJTklUSUFMIE1vZGUgKFJ1bnRpbWUpCistLSA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0t IEV4cGxpY2l0IElOSVRJQUwgKGFmdGVyIEFGVEVSIE1BVENIIFNLSVAsIHBlciB0aGUgZ3JhbW1h cik7IHNhbWUgYXMgdGhlIGRlZmF1bHQKK1dJVEggdGVzdF9pbml0aWFsX21vZGUgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ18nXSksICAtLSBVbm1h dGNoZWQKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSks CisgICAgICAgICg0LCBBUlJBWVsnXyddKSwgIC0tIFVubWF0Y2hlZAorICAgICAgICAoNSwgQVJS QVlbJ0EnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAg ICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9pbml0aWFsX21vZGUKK1dJ TkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJP VyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBS T1cKKyAgICBJTklUSUFMCisgICAgUEFUVEVSTiAoQSspCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRj aF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge199 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8 ICAgICAgICAgMworICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgMworICA0IHwg e199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge0F9ICAgfCAgICAgICAgICAg NSB8ICAgICAgICAgNQorKDUgcm93cykKKworLS0gRGVmYXVsdCBtb2RlIChpbmNsdWRlIGFsbCBy b3dzKQorV0lUSCB0ZXN0X2RlZmF1bHRfbW9kZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnXyddKSwgIC0tIFVubWF0Y2hlZCwgYnV0IGluY2x1ZGVk CisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAg ICAgICAoNCwgQVJSQVlbJ18nXSksICAtLSBVbm1hdGNoZWQsIGJ1dCBpbmNsdWRlZAorICAgICAg ICAoNSwgQVJSQVlbJ0EnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9kZWZhdWx0 X21vZGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2Vu ZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7X30gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAg ICAgICAzCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisgIDQgfCB7X30g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwg ICAgICAgICA1CisoNSByb3dzKQorCistLSBNb2RlIGVxdWl2YWxlbmNlIHZlcmlmaWNhdGlvbjog ZXhwbGljaXQgSU5JVElBTCBlcXVhbHMgdGhlIGRlZmF1bHQgbW9kZQorV0lUSCB0ZXN0X21vZGVf ZGlmZiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn XyddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ18nXSkK KyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUICdJTklUSUFMJyBBUyBtb2RlLCBDT1VO VCgqKSBBUyByb3dfY291bnQKK0ZST00gKAorICAgIFNFTEVDVCBpZCBGUk9NIHRlc3RfbW9kZV9k aWZmCisgICAgV0lORE9XIHcgQVMgKAorICAgICAgICBPUkRFUiBCWSBpZAorICAgICAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICAgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgICAgICBJTklUSUFMCisgICAgICAgIFBBVFRF Uk4gKEEpCisgICAgICAgIERFRklORSBBIEFTICdBJyA9IEFOWShmbGFncykKKyAgICApCispIHN1 YgorVU5JT04gQUxMCitTRUxFQ1QgJ0RFRkFVTFQnIEFTIG1vZGUsIENPVU5UKCopIEFTIHJvd19j b3VudAorRlJPTSAoCisgICAgU0VMRUNUIGlkIEZST00gdGVzdF9tb2RlX2RpZmYKKyAgICBXSU5E T1cgdyBBUyAoCisgICAgICAgIE9SREVSIEJZIGlkCisgICAgICAgIFJPV1MgQkVUV0VFTiBDVVJS RU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgICAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgICAgIFBBVFRFUk4gKEEpCisgICAgICAgIERFRklORSBBIEFTICdB JyA9IEFOWShmbGFncykKKyAgICApCispIHN1YgorT1JERVIgQlkgbW9kZTsKKyAgbW9kZSAgIHwg cm93X2NvdW50IAorLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgREVGQVVMVCB8ICAgICAgICAgMwor IElOSVRJQUwgfCAgICAgICAgIDMKKygyIHJvd3MpCisKKy0tID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gRnJhbWUgQm91bmRh cnkgVmFyaWF0aW9ucworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLSBWZXJ5IGxpbWl0ZWQgZnJhbWUgKDEgRk9MTE9XSU5H KQorV0lUSCB0ZXN0X29uZV9mb2xsb3dpbmcgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwgIC0t IFdpdGhpbiAxIEZPTExPV0lORworICAgICAgICAoMywgQVJSQVlbJ0EnXSksICAtLSBCZXlvbmQg MSBGT0xMT1dJTkcgZnJvbSByb3cgMQorICAgICAgICAoNCwgQVJSQVlbJ0InXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9vbmVfZm9sbG93aW5nCitXSU5ET1cgdyBBUyAoCisgICAg T1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEgQikKKyAg ICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdC JyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5k IAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwg ICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAgIDQKKyAgNCB8IHtCfSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIE1lZGl1bSBmcmFtZSAo MTAgRk9MTE9XSU5HKQorV0lUSCB0ZXN0X3Rlbl9mb2xsb3dpbmcgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJB WVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0En XSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDYsIEFSUkFZWydBJ10pLAor ICAgICAgICAoNywgQVJSQVlbJ0EnXSksCisgICAgICAgICg4LCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDksIEFSUkFZWydBJ10pLAorICAgICAgICAoMTAsIEFSUkFZWydBJ10pLAorICAgICAgICAo MTEsIEFSUkFZWydCJ10pLCAgLS0gV2l0aGluIDEwIEZPTExPV0lORyBmcm9tIHJvdyAxCisgICAg ICAgICgxMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgxMywgQVJSQVlbJ0InXSkgICAtLSBCZXlv bmQgMTAgRk9MTE9XSU5HIGZyb20gcm93IDEKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF90ZW5fZm9sbG93aW5nCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDEwIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNL SVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKyBCKQorICAgIERFRklORQorICAgICAgICBB IEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAg ICAxMQorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAxMQorICAzIHwge0F9ICAg fCAgICAgICAgICAgMyB8ICAgICAgICAxMQorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAg ICAgICAxMQorICA1IHwge0F9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAxMQorICA2IHwge0F9 ICAgfCAgICAgICAgICAgNiB8ICAgICAgICAxMQorICA3IHwge0F9ICAgfCAgICAgICAgICAgNyB8 ICAgICAgICAxMQorICA4IHwge0F9ICAgfCAgICAgICAgICAgOCB8ICAgICAgICAxMQorICA5IHwg e0F9ICAgfCAgICAgICAgICAgOSB8ICAgICAgICAxMQorIDEwIHwge0F9ICAgfCAgICAgICAgICAx MCB8ICAgICAgICAxMQorIDExIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorIDEy IHwge0F9ICAgfCAgICAgICAgICAxMiB8ICAgICAgICAxMworIDEzIHwge0J9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDEzIHJvd3MpCisKKy0tIEV4YWN0IGJvdW5kYXJ5IG1hdGNoCitX SVRIIHRlc3RfZXhhY3RfYm91bmRhcnkgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAg ICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1 LCBBUlJBWVsnQiddKSAgIC0tIEV4YWN0bHkgYXQgNCBGT0xMT1dJTkcgKGZyYW1lIGVuZCkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9leGFjdF9ib3VuZGFyeQorV0lORE9XIHcgQVMg KAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCA0IEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChB KyBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgNQorICAyIHwge0F9ICAgfCAgICAgICAgICAg MiB8ICAgICAgICAgNQorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNQorICA0 IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNQorICA1IHwge0J9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gTiBGT0xMT1dJTkcgKyBTS0lQIFRPIE5F WFQgUk9XOiBvdmVybGFwcGluZyBtYXRjaGVzIGJvdW5kZWQgYnkgZnJhbWUKKy0tIFJvdyAxOiBm cmFtZSBbMSw0XSwgQSgxLTMpIEIoNCkgLT4gbWF0Y2gKKy0tIFJvdyAyOiBmcmFtZSBbMiw1XSwg QSgyLTMpIEIoNCkgLT4gbWF0Y2gKKy0tIFJvdyAzOiBmcmFtZSBbMyw2XSwgQSgzKSBCKDQpIC0+ IG1hdGNoCistLSBSb3cgNTogZnJhbWUgWzUsNl0sIEEoNSkgQig2KSAtPiBtYXRjaAorV0lUSCB0 ZXN0X25fc2tpcF9uZXh0IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAg KDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisgICAgICAgICgzLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDQsIEFSUkFZWydCJ10pLAorICAgICAgICAoNSwgQVJSQVlb J0EnXSksCisgICAgICAgICg2LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCisp CitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJP TSB0ZXN0X25fc2tpcF9uZXh0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBS T1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDMgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCisp OworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAg ICAgICA0CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7QX0g ICB8ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA2CisgIDYgfCB7 Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNiByb3dzKQorCistLSBGcmFtZSBleGFj dGx5IDEgcm93IHNob3J0IG9mIHBvdGVudGlhbCBtYXRjaAorLS0gRnJvbSByb3cgMTogQSBBIEEg QiBuZWVkcyA0IHJvd3MgYnV0IGZyYW1lIGhvbGRzIDMgLT4gbm8gbWF0Y2gKKy0tIEZyb20gcm93 IDI6IEEgQSBCIGZpdHMgaW4gMy1yb3cgZnJhbWUgLT4gbWF0Y2gKK1dJVEggdGVzdF9mcmFtZV9v bmVfc2hvcnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJS QVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydB J10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDYsIEFSUkFZWydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf ZnJhbWVfb25lX3Nob3J0CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIDIgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJ UCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEErIEIpCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCispOwor IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICA0CisgIDMgfCB7QX0gICB8 ICAgICAgICAgICAzIHwgICAgICAgICA0CisgIDQgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA2CisgIDYgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNiByb3dzKQorCistLSA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFNwZWNp YWwgUGFydGl0aW9uIENhc2VzCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEVtcHR5IHBhcnRpdGlvbiAoMCByb3dzKQor V0lUSCB0ZXN0X2VtcHR5X3BhcnRpdGlvbiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCAxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIDIsIEFSUkFZWydfJ10p ICAtLSBEaWZmZXJlbnQgcGFydGl0aW9uCisgICAgKSBBUyB0KGlkLCBwYXJ0LCBmbGFncykKKykK K1NFTEVDVCBpZCwgcGFydCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5k CitGUk9NIHRlc3RfZW1wdHlfcGFydGl0aW9uCitXSEVSRSBwYXJ0ID0gOTkgIC0tIE5vIHJvd3Mg bWF0Y2gKK1dJTkRPVyB3IEFTICgKKyAgICBQQVJUSVRJT04gQlkgcGFydAorICAgIE9SREVSIEJZ IGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5H CisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKEEpCisgICAg REVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IHBhcnQgfCBm bGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisoMCByb3dzKQorCistLSBTaW5nbGUgcm93IHBhcnRpdGlv bgorV0lUSCB0ZXN0X3NpbmdsZV9yb3cgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUwor ICAgICAgICAoMSwgQVJSQVlbJ0EnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9z aW5nbGVfcm93CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBB UyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNo X2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0g ICB8ICAgICAgICAgICAxIHwgICAgICAgICAxCisoMSByb3cpCisKKy0tIEFsbCByb3dzIGZhaWwg bWF0Y2hpbmcgKGFsbCBERUZJTkUgZmFsc2UpCitXSVRIIHRlc3RfYWxsX2ZhaWwgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAg ICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0KGlk LCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0 Y2hfZW5kCitGUk9NIHRlc3RfYWxsX2ZhaWwKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBp ZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORwor ICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOIChBKykKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyBmYWxzZSAgLS0gQWxsIHJvd3MgZmFpbAorKTsKKyBpZCB8IGZs YWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAy IHwge0F9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0F9ICAgfCAgICAgICAg ICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gUGFydGl0aW9uIGVuZCB3aXRoIGFic29y YmFibGUgcGF0dGVybgorLS0gU0tJUCBQQVNUIExBU1QgUk9XICsgdW5ib3VuZGVkIGZyYW1lICsg YWxsIHJvd3MgbWF0Y2ggQQorLS0gVHJpZ2dlcnMgYWJzb3JiIGluICFyb3dFeGlzdHMgcGF0aCBh dCBwYXJ0aXRpb24gYm91bmRhcnkuCitXSVRIIHRlc3RfYWJzb3JiX3BhcnRpdGlvbl9lbmQgQVMg KAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0EnXSksCisgICAgICAgICg1LCBBUlJBWVsnQSddKQorICAgICkgQVMgdChp ZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1h dGNoX2VuZAorRlJPTSB0ZXN0X2Fic29yYl9wYXJ0aXRpb25fZW5kCitXSU5ET1cgdyBBUyAoCisg ICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRF RCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRU RVJOIChBKykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOwor IGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0t LS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAg ICA1CisgIDIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7QX0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAg ICAgICAgCisgIDUgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNSByb3dzKQor CistLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KKy0tIERFRklORSBTcGVjaWFsIENhc2VzCistLSA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIFVuZGVmaW5lZCB2 YXJpYWJsZSBpbiBERUZJTkUKK1dJVEggdGVzdF91bmRlZmluZWRfdmFyIEFTICgKKyAgICBTRUxF Q1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwg QVJSQVlbJ1gnXSksICAtLSBCIG5vdCBkZWZpbmVkLCBkZWZhdWx0cyB0byBUUlVFCisgICAgICAg ICgzLCBBUlJBWVsnQyddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pLAorICAgICAgICAoNSwg QVJSQVlbJ18nXSksICAtLSBCIGRlZmF1bHRzIHRvIFRSVUUsIGJ1dCBubyBmbGFncworICAgICAg ICAoNiwgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBm bGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAg ICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF91bmRlZmlu ZWRfdmFyCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoQSBCIEMpCisgICAgREVGSU5FCisgICAgICAgIEEg QVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgLS0gQiBpcyB1bmRlZmluZWQsIGRlZmF1bHRz IHRvIFRSVUUKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3Mg fCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAgICAxIHwgICAgICAgICAzCisgIDIgfCB7 WH0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Q30gICB8ICAgICAgICAgICAg IHwgICAgICAgICAgCisgIDQgfCB7QX0gICB8ICAgICAgICAgICA0IHwgICAgICAgICA2CisgIDUg fCB7X30gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDYgfCB7Q30gICB8ICAgICAgICAg ICAgIHwgICAgICAgICAgCisoNiByb3dzKQorCistLSA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIEFic29ycHRpb24gRHluYW1p YyBGbGFncworLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CistLSBQYXJ0aWFsIGFic29yYmFibGUgcGF0dGVybiAoKEErKSBCKQor V0lUSCB0ZXN0X3BhcnRpYWxfYWJzb3JiYWJsZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwg ZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAg ICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfcGFydGlh bF9hYnNvcmJhYmxlCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEErKSBCKQorICAgIERFRklORQorICAg ICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdz KQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0t LS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8 ICAgICAgICAgNAorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgNAorICAzIHwg e0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgNAorICA0IHwge0J9ICAgfCAgICAgICAgICAg ICB8ICAgICAgICAgIAorICA1IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUg cm93cykKKworLS0gRHluYW1pYyBmbGFnIHVwZGF0ZSAoKEErKSB8IEIpCitXSVRIIHRlc3RfZHlu YW1pY19mbGFncyBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBB UlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlb J0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydBJ10p LAorICAgICAgICAoNiwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9keW5hbWljX2ZsYWdzCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEErKSB8IEIpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAgICAgICAg ICAxIHwgICAgICAgICAzCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAzCisg IDMgfCB7QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisgIDQgfCB7Qn0gICB8ICAgICAg ICAgICA0IHwgICAgICAgICA0CisgIDUgfCB7QX0gICB8ICAgICAgICAgICA1IHwgICAgICAgICA1 CisgIDYgfCB7Qn0gICB8ICAgICAgICAgICA2IHwgICAgICAgICA2CisoNiByb3dzKQorCistLSBO b24tYWJzb3JiYWJsZSBjb250ZXh0IGR1cmluZyBhYnNvcnB0aW9uCistLSBQYXR0ZXJuIChBIEIp KyBDOiBBLEIgaW4gYWJzb3JiYWJsZSBncm91cCwgQyBpcyBub3QuCistLSBXaGVuIEVORCBleGl0 cyB0byBDLCB0aGUgY2xvbmVkIGNvbnRleHQgYmVjb21lcyBub24tYWJzb3JiYWJsZS4KK1dJVEgg dGVzdF9ub25fYWJzb3JiYWJsZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAg ICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAo MywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFS UkFZWydDJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ18nXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9ub25fYWJzb3JiYWJsZQorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlk CisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisg ICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFUVEVSTiAoKEEgQikrIEMp CisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBB UyAnQicgPSBBTlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAg IDUKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtffSAg IHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg2IHJvd3MpCisKKy0tIEFic29ycHRpb24gc2tp cHBlZCB3aGVuIG5vIGFic29yYmFibGUgc3RhdGUgcmVtYWlucworLS0gUGF0dGVybiAoQSBCKSsg QyBEIHdpdGggU0tJUCBQQVNUIExBU1QgUk9XCistLSBBZnRlciByZWFjaGluZyBDIChub24tYWJz b3JiYWJsZSksIG5vIGFic29yYmFibGUgc3RhdGUgcmVtYWlucy4KKy0tIE9uIG5leHQgcm93IChE KSwgdGhlIGVhcmx5IHJldHVybiBmaXJlcy4KK1dJVEggdGVzdF9hYnNvcnB0aW9uX2Vhcmx5X3Jl dHVybiBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsn QSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSks CisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydDJ10pLAorICAg ICAgICAoNiwgQVJSQVlbJ0QnXSksCisgICAgICAgICg3LCBBUlJBWVsnXyddKQorICAgICkgQVMg dChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlk KSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX2VuZAorRlJPTSB0ZXN0X2Fic29ycHRpb25fZWFybHlfcmV0dXJuCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOICgoQSBCKSsgQyBEKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFO WShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQyBBUyAn QycgPSBBTlkoZmxhZ3MpLAorICAgICAgICBEIEFTICdEJyA9IEFOWShmbGFncykKKyk7CisgaWQg fCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDYK KyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgNSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNiB8IHtEfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNyB8IHtffSAgIHwgICAgICAgICAgICAgfCAgICAg ICAgICAKKyg3IHJvd3MpCisKKy0tIENvdmVyYWdlIGZhaWx1cmU6IG9sZGVyIGNhbid0IGNvdmVy IG5ld2VyJ3Mgc3RhdGVzCistLSBQYXR0ZXJuIEErIHwgQisgd2l0aCBTS0lQIFBBU1QgTEFTVCBS T1cuCistLSBSb3cgMTogb25seSBBIC0+IEN0eDEgdGFrZXMgQSBicmFuY2ggb25seSAoQiBmYWls cykuCistLSBSb3cgMjogQSBhbmQgQiAtPiBDdHgyIHRha2VzIGJvdGggYnJhbmNoZXMuCistLSBB YnNvcnB0aW9uOiBDdHgxIGhhcyBBIGJ1dCBubyBCIC0+IGNhbid0IGNvdmVyIEN0eDIncyBCIHN0 YXRlIC0+IGZhaWxzLgorV0lUSCB0ZXN0X2NvdmVyYWdlX2ZhaWwgQVMgKAorICAgIFNFTEVDVCAq IEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCAnXyddKSwKKyAgICAgICAgKDIs IEFSUkFZWydBJywgJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQScsICdfJ10pLAorICAgICAg ICAoNCwgQVJSQVlbJ0EnLCAnXyddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJywgJ18nXSkKKyAg ICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92 YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9W RVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9jb3ZlcmFnZV9mYWlsCitXSU5ET1cgdyBBUyAo CisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9V TkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQ QVRURVJOIChBKyB8IEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFn cyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0 Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLQorICAxIHwge0EsX30gfCAgICAgICAgICAgMSB8ICAgICAgICAgNAorICAyIHwge0EsQn0g fCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0EsX30gfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorICA0IHwge0EsX30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA1IHwge18s X30gfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gQWJzb3JiIHNraXBz IGNvbXBsZXRlZCBjb250ZXh0IChvbGRlci0+c3RhdGVzPT1OVUxMKQorLS0gUGF0dGVybiBBKyB8 IEIrIHdpdGggU0tJUCBQQVNUIExBU1QgUk9XLgorLS0gUm93IDE6IEEgb25seSAtPiBDdHgxIHRh a2VzIEEgYnJhbmNoLiBSb3cgMjogQiBvbmx5IC0+IEN0eDEgQSBmYWlscyAoY29tcGxldGVkKS4K Ky0tIEN0eDIgdGFrZXMgQiBicmFuY2guIEFic29ycHRpb246IEN0eDEgc3RhdGVzPT1OVUxMIC0+ IHNraXAuCitXSVRIIHRlc3Rfb2xkZXJfY29tcGxldGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9N IChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0In XSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydfJ10pCisg ICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb2xkZXJfY29tcGxldGVkCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFTVCBST1cKKyAg ICBQQVRURVJOIChBKyB8IEIrKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwge0J9 ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMworICAzIHwge0J9ICAgfCAgICAgICAgICAgICB8 ICAgICAgICAgIAorICA0IHwge199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93 cykKKworLS0gQWJzb3JiIHNraXBzIGEgY29udGV4dCB3aXRoIG5vIGFic29yYmFibGUgc3RhdGUK Ky0tIFBhdHRlcm4gQSsgfCBCIEMgd2l0aCBTS0lQIFBBU1QgTEFTVCBST1cgKG9ubHkgQSsgYnJh bmNoIGFic29yYmFibGUpLgorLS0gUm93IDE6IEIgb25seSAtPiBDdHgxIHRha2VzIEIgYnJhbmNo IChub24tYWJzb3JiYWJsZSksIGFkdmFuY2VzIHRvIEMuCistLSBSb3cgMjogQyxBIC0+IEN0eDEg QyBtYXRjaGVzIChubyBhYnNvcmJhYmxlIHN0YXRlKS4gQ3R4MiB0YWtlcyBBIChhYnNvcmJhYmxl KS4KKy0tIEFic29ycHRpb246IEN0eDEgaGFzIG5vIGFic29yYmFibGUgc3RhdGUgLT4gc2tpcC4K K1dJVEggdGVzdF9vbGRlcl9ub25fYWJzb3JiYWJsZSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQicsICdfJ10pLAorICAgICAgICAoMiwgQVJSQVlb J0MnLCAnQSddKSwKKyAgICAgICAgKDMsIEFSUkFZWydfJywgJ0EnXSksCisgICAgICAgICg0LCBB UlJBWVsnXycsICdfJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxh Z3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAg ICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rfb2xkZXJfbm9u X2Fic29yYmFibGUKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVU V0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENI IFNLSVAgUEFTVCBMQVNUIFJPVworICAgIFBBVFRFUk4gKEErIHwgQiBDKQorICAgIERFRklORQor ICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZs YWdzKSwKKyAgICAgICAgQyBBUyAnQycgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBt YXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgIDEgfCB7QixffSB8ICAgICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7QyxB fSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7XyxBfSB8ICAgICAgICAgICAzIHwg ICAgICAgICAzCisgIDQgfCB7XyxffSB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dz KQorCistLSBSZWx1Y3RhbnQgYnJhbmNoIGluIEFMVCBub3QgYWJzb3JiYWJsZTogKEErPykgfCBC CistLSBBKz8gaXMgcmVsdWN0YW50IHNvIG5vdCBhYnNvcmJhYmxlLiBDb21wYXJlIHdpdGggZ3Jl ZWR5IChBKykgfCBCIGFib3ZlLgorV0lUSCB0ZXN0X3JlbHVjdGFudF9hbHRfYWJzb3JwdGlvbiBB UyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwK KyAgICAgICAgKDIsIEFSUkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAg ICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDUsIEFSUkFZWydfJ10pCisgICAgKSBBUyB0 KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQp IE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMg bWF0Y2hfZW5kCitGUk9NIHRlc3RfcmVsdWN0YW50X2FsdF9hYnNvcnB0aW9uCitXSU5ET1cgdyBB UyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVO Qk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAg UEFUVEVSTiAoKEErPykgfCBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShm bGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwg bWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwge0F9 ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMgorICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8 ICAgICAgICAgMworICA0IHwge0J9ICAgfCAgICAgICAgICAgNCB8ICAgICAgICAgNAorICA1IHwg e199ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDUgcm93cykKKworLS0gPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBa ZXJvLUNvbnN1bXB0aW9uIEN5Y2xlIERldGVjdGlvbgorLS0gPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLSBDeWNsZSBwcmV2ZW50 aW9uIGF0IGNvdW50ID4gMDogKEEqKSogaW5uZXIgc2tpcCBjeWNsZXMgYXQgY291bnQ9MworV0lU SCB0ZXN0X2N5Y2xlX25vbnplcm8gQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAg ICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQSddKSwKKyAgICAgICAg KDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSkgIC0tIElubmVyIEEqIG1h dGNoZXMgMCwgY3ljbGVzIGF0IGNvdW50PTMKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VM RUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0 YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVz dF9jeWNsZV9ub256ZXJvCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dT IEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBN QVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEEqKSopCisgICAgREVGSU5FCisg ICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3Rh cnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQor ICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0F9ICAgfCAgICAg ICAgICAgMiB8ICAgICAgICAgMworICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAg MworICA0IHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0g Q3ljbGUgd2l0aCBtaXhlZCBudWxsYWJsZXM6IChBKiBCKikqIG11bHRpcGxlIG51bGxhYmxlIHBh dGhzCitXSVRIIHRlc3RfY3ljbGVfbWl4ZWQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgQVJSQVlbJ0EnXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydBJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0MnXSkKKyAgICApIEFT IHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShp ZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBB UyBtYXRjaF9lbmQKK0ZST00gdGVzdF9jeWNsZV9taXhlZAorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChB KiBCKikqKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAg ICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQg fCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAx IHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwge0J9ICAgfCAgICAgICAg ICAgMiB8ICAgICAgICAgMworICAzIHwge0F9ICAgfCAgICAgICAgICAgMyB8ICAgICAgICAgMwor ICA0IHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDQgcm93cykKKworLS0gPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CistLSBTdGFuZGFyZCBDbGF1c2UgNzogRm9ybWFsIFBhdHRlcm4gTWF0Y2hpbmcgUnVsZXMKKy0t IElTTy9JRUMgMTkwNzUtNSwgQ2xhdXNlIDcKKy0tID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0gLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLSA3LjIuMiBBbHRl cm5hdGlvbjogZmlyc3QgYWx0ZXJuYXRpdmUgaXMgcHJlZmVycmVkCistLSAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIChBIHwg Qik6IEEgcHJlZmVycmVkIG92ZXIgQiB3aGVuIGJvdGggY291bGQgbWF0Y2gKKy0tIFJvdyAxIGhh cyBib3RoIEEgYW5kIEIgZmxhZ3M6IEEgc2hvdWxkIGJlIGNob3NlbiAoZmlyc3QgYWx0ZXJuYXRp dmUpCitXSVRIIHRlc3RfYWx0X3ByZWZlciBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVT CisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisgICAgICAgICgyLCBBUlJBWVsnQiddKSwK KyAgICAgICAgKDMsIEFSUkFZWydBJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVD VCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFy dCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3Rf YWx0X3ByZWZlcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRX RUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0gg U0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBIHwgQikpCisgICAgREVGSU5FCisgICAg ICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3Mp CispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0t LSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxCfSB8ICAgICAgICAgICAxIHwg ICAgICAgICAxCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisgIDMgfCB7 QX0gICB8ICAgICAgICAgICAzIHwgICAgICAgICAzCisoMyByb3dzKQorCistLSAoQXsxLDJ9IHwg QnsyLDN9KTogYWxsIEEtbWF0Y2hlcyBiZWZvcmUgYWxsIEItbWF0Y2hlcworLS0gU3RhbmRhcmQg ZXhhbXBsZTogcHJlZmVybWVudCBvcmRlciBpcyBBQSwgQSwgQkJCLCBCQgorLS0gUm93cyAxLTIg aGF2ZSBib3RoIEEgYW5kIEI6IGdyZWVkeSBBezEsMn0gc2hvdWxkIG1hdGNoIDEtMgorV0lUSCB0 ZXN0X2FsdF9xdWFudGlmaWVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAg ICAgKDEsIEFSUkFZWydBJywnQiddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJywnQiddKSwKKyAg ICAgICAgKDMsIEFSUkFZWydCJ10pLAorICAgICAgICAoNCwgQVJSQVlbJ0InXSksCisgICAgICAg ICg1LCBBUlJBWVsnQiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZs YWdzLAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAg ICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2FsdF9xdWFu dGlmaWVkCitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4g Q1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQ IFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEF7MSwyfSB8IEJ7MiwzfSkpCisgICAgREVGSU5F CisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlko ZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0r LS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxCfSB8ICAgICAgICAg ICAxIHwgICAgICAgICAyCisgIDIgfCB7QSxCfSB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisg IDMgfCB7Qn0gICB8ICAgICAgICAgICAzIHwgICAgICAgICA1CisgIDQgfCB7Qn0gICB8ICAgICAg ICAgICA0IHwgICAgICAgICA1CisgIDUgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAg CisoNSByb3dzKQorCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIDcuMi4zIENvbmNhdGVuYXRpb246IGxleGljb2dyYXBo aWMgb3JkZXJpbmcKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gKChBIHwgQikgKEMgfCBEKSk6IHByZWZlcm1lbnQgb3Jk ZXIgaXMgQUMsIEFELCBCQywgQkQKKy0tIFJvdyAxIG1hdGNoZXMgQSBhbmQgQiwgUm93IDIgbWF0 Y2hlcyBDIGFuZCBECistLSBQcmVmZXJyZWQgbWF0Y2g6IEEgdGhlbiBDIChmaXJzdCBhbHRlcm5h dGl2ZXMgaW4gYm90aCBwb3NpdGlvbnMpCitXSVRIIHRlc3RfY29uY2F0X2xleCBBUyAoCisgICAg U0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQScsJ0InXSksCisgICAg ICAgICgyLCBBUlJBWVsnQycsJ0QnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNU IGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0 LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9j b25jYXRfbGV4CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdF RU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBT S0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIChDIHwgRCkpCisgICAgREVG SU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBB TlkoZmxhZ3MpLAorICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncyksCisgICAgICAgIEQgQVMg J0QnID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9l bmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0EsQn0g fCAgICAgICAgICAgMSB8ICAgICAgICAgMgorICAyIHwge0MsRH0gfCAgICAgICAgICAgICB8ICAg ICAgICAgIAorKDIgcm93cykKKworLS0gKChBIHwgQikgQyk6IGZpcnN0IGFsdCAoQSkgZmFpbHMs IHNlY29uZCBhbHQgKEIpIHN1Y2NlZWRzCistLSBUZXN0cyBiYWNrdHJhY2tpbmc6IHJvdyAxIGhh cyBvbmx5IEIsIHJvdyAyIGhhcyBDCitXSVRIIHRlc3RfY29uY2F0X2JhY2t0cmFjayBBUyAoCisg ICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDIsIEFSUkFZWydDJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0 LCBBUlJBWVsnQyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdz LAorICAgICAgIGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAg bGFzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X2NvbmNhdF9iYWNr dHJhY2sKK1dJTkRPVyB3IEFTICgKKyAgICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBD VVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAg VE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgoQSB8IEIpIEMpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBDIEFTICdDJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0 YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyAgMSB8IHtCfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtDfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAg IDQKKyAgNCB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0t IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorLS0gNy4yLjQgUXVhbnRpZmljYXRpb246IGdyZWVkeS9yZWx1Y3RhbnQsIGxleGljb2dy YXBoaWMgPiBsZW5ndGgKKy0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0gVnsyLDR9IGdyZWVkeTogbG9uZ2VyIG1hdGNoIHBy ZWZlcnJlZAorV0lUSCB0ZXN0X3F1YW50X2dyZWVkeSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAo VkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydBJ10p LAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKQorICAg ICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZF UiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3F1YW50X2dyZWVkeQorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQXsyLDR9KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykK Kyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0t Ky0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAg ICAgICAgIDMKKyAgMiB8IHtBfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtB fSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgICAg fCAgICAgICAgICAKKyg0IHJvd3MpCisKKy0tIFZ7Miw0fT8gcmVsdWN0YW50OiBzaG9ydGVyIG1h dGNoIHByZWZlcnJlZAorV0lUSCB0ZXN0X3F1YW50X3JlbHVjdGFudCBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFS UkFZWydBJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsn QiddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0X3F1YW50X3JlbHVjdGFudAorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1Qg Uk9XCisgICAgUEFUVEVSTiAoQXsyLDR9PykKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScg PSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAK Ky0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QX0gICB8ICAg ICAgICAgICAxIHwgICAgICAgICAyCisgIDIgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAg ICAgCisgIDMgfCB7QX0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDQgfCB7Qn0gICB8 ICAgICAgICAgICAgIHwgICAgICAgICAgCisoNCByb3dzKQorCistLSAoKEF8Qil7MSwyfSkgZ3Jl ZWR5OiBsZXhpY29ncmFwaGljID4gbGVuZ3RoCistLSBTdGFuZGFyZCBleGFtcGxlOiBwcmVmZXJt ZW50IEFBLCBBQiwgQSwgQkEsIEJCLCBCCistLSBTaW5nbGUgQSBwcmVmZXJyZWQgb3ZlciBCLXN0 YXJ0aW5nIGxvbmdlciBtYXRjaAorV0lUSCB0ZXN0X3F1YW50X2xleF9ncmVlZHkgQVMgKAorICAg IFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAg ICAgICAoMiwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlk LCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAor ICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9xdWFu dF9sZXhfZ3JlZWR5CitXSU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJF VFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRD SCBTS0lQIFBBU1QgTEFTVCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKXsxLDJ9KSkKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9 IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAor LS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtBLEJ9IHwgICAg ICAgICAgIDEgfCAgICAgICAgIDIKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKygyIHJvd3MpCisKKy0tICgoQXxCKXsxLDJ9PykgcmVsdWN0YW50OiBsZXhpY29ncmFwaGlj ID4gbGVuZ3RoCistLSBTdGFuZGFyZCBleGFtcGxlOiBwcmVmZXJtZW50IEEsIEFBLCBBQiwgQiwg QkEsIEJCCistLSBTaW5nbGUgQSBwcmVmZXJyZWQgb3ZlciBhbnkgQi1zdGFydGluZyBtYXRjaAor V0lUSCB0ZXN0X3F1YW50X2xleF9yZWx1Y3RhbnQgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZB TFVFUworICAgICAgICAoMSwgQVJSQVlbJ0EnLCdCJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0In XSkKKyAgICApIEFTIHQoaWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBm aXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQKK0ZST00gdGVzdF9xdWFudF9sZXhfcmVsdWN0YW50CitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFBBU1QgTEFT VCBST1cKKyAgICBQQVRURVJOICgoKEEgfCBCKXsxLDJ9PykpCisgICAgREVGSU5FCisgICAgICAg IEEgQVMgJ0EnID0gQU5ZKGZsYWdzKSwKKyAgICAgICAgQiBBUyAnQicgPSBBTlkoZmxhZ3MpCisp OworIGlkIHwgZmxhZ3MgfCBtYXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSst LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgIDEgfCB7QSxCfSB8ICAgICAgICAgICAxIHwgICAg ICAgICAxCisgIDIgfCB7Qn0gICB8ICAgICAgICAgICAyIHwgICAgICAgICAyCisoMiByb3dzKQor CistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKy0tIDcuMi42IEFuY2hvcnMgKG5vdCB5ZXQgaW1wbGVtZW50ZWQgLSBzeW50YXgg ZXJyb3IgZXhwZWN0ZWQpCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIF4gYW5jaG9yOiBub3QgeWV0IHN1cHBvcnRlZAor U0VMRUNUIGNvdW50KCopIE9WRVIgdyBGUk9NIChTRUxFQ1QgMSBBUyB2KSB0CitXSU5ET1cgdyBB UyAoT1JERVIgQlkgdiBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBQQVRURVJOICheIEEpIERFRklORSBBIEFTIFRSVUUpOworRVJST1I6ICBzeW50 YXggZXJyb3IgYXQgb3IgbmVhciAiXiIKK0xJTkUgMzogICAgIFBBVFRFUk4gKF4gQSkgREVGSU5F IEEgQVMgVFJVRSk7CisgICAgICAgICAgICAgICAgICAgICBeCistLSAkIGFuY2hvcjogbm90IHll dCBzdXBwb3J0ZWQKK1NFTEVDVCBjb3VudCgqKSBPVkVSIHcgRlJPTSAoU0VMRUNUIDEgQVMgdikg dAorV0lORE9XIHcgQVMgKE9SREVSIEJZIHYgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBV TkJPVU5ERUQgRk9MTE9XSU5HCisgICAgUEFUVEVSTiAoQSAkKSBERUZJTkUgQSBBUyBUUlVFKTsK K0VSUk9SOiAgc3ludGF4IGVycm9yIGF0IG9yIG5lYXIgIiQiCitMSU5FIDM6ICAgICBQQVRURVJO IChBICQpIERFRklORSBBIEFTIFRSVUUpOworICAgICAgICAgICAgICAgICAgICAgICBeCistLSAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKy0tIDcuMi44IEluZmluaXRlIHJlcGV0aXRpb25zIG9mIGVtcHR5IG1hdGNoZXMKKy0tIChQ ZXJsIGxvd2VyLWJvdW5kIHN0b3BwaW5nIHJ1bGUpCistLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tIFN0YW5kYXJkIGV4YW1w bGVzIGZyb20gNy4yLjg6CistLSAgIChBPyl7MCwzfTogYWxsb3dlZCBzdHJpbmdzIGluY2x1ZGUg U1RSMDA9KCksIFNUUjAxPShBKSwgU1RSMDI9KGVtcHR5KSwKKy0tICAgICAgICAgICAgICBTVFIw Mz0oQUEpLCBTVFIwND0oQSxlbXB0eSksIFNUUjA3PShBQUEpLCBTVFIwOD0oQUEsZW1wdHkpCist LSAgIChBPyl7MSwzfTogc2FtZSBhcyB7MCwzfSBidXQgU1RSMDAgZXhjbHVkZWQgKG1pbj0xIG5v dCBtZXQpCistLSAgIChBPyl7MiwzfTogU1RSMDMtMDYgKGxlbiAyKSBhbmQgU1RSMDcsMDgsMTEs MTIgKGxlbiAzKSBhcmUgdmFsaWQKKy0tICAgICAgICAgICAgICBTVFIwNj0oU1RSRSxTVFJFKSBJ UyB2YWxpZCBiZWNhdXNlIG5vbi1maW5hbCBTVFJFIGF0CistLSAgICAgICAgICAgICAgcG9zaXRp b24gMSBmaWxscyB0aGUgbG93ZXIgYm91bmQKKy0tIChBPz8pKkI6IFN0YW5kYXJkIDcuMi44IGlu dHJvZHVjdG9yeSBleGFtcGxlCistLSAibWF0Y2hlZCBhZ2FpbnN0IGEgc2VxdWVuY2Ugb2Ygcm93 cyBmb3Igd2hpY2ggdGhlIG9ubHkgZmVhc2libGUKKy0tICBtYXRjaGluZyBpczogQiIKKy0tIEE/ PyBpcyByZWx1Y3RhbnQsIHByZWZlcnMgZW1wdHkuICogaXMgZ3JlZWR5IGJ1dCBQZXJsIHJ1bGUg c3RvcHMKKy0tIGFmdGVyIGVtcHR5IG1hdGNoIHdpdGggbWluKD0wKSBzYXRpc2ZpZWQuCistLSBF eHBlY3RlZDogZWFjaCBCIHJvdyBtYXRjaGVzIGFsb25lIChBPz8gZW1wdHksICogc3RvcHMsIEIg bWF0Y2hlcykKK1dJVEggdGVzdF9lbXB0eV9yZWx1Y3RhbnRfc3RhciBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIsIEFS UkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0MnXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF9lbXB0eV9yZWx1Y3RhbnRfc3RhcgorV0lORE9XIHcgQVMgKAorICAgIE9SREVS IEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9X SU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPz8p KiBCKQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncyksCisgICAgICAg IEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBt YXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwg e0J9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAgMQorICAyIHwge0J9ICAgfCAgICAgICAgICAg MiB8ICAgICAgICAgMgorICAzIHwge0N9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDMg cm93cykKKworLS0gKEE/KXswLDN9OiBtaW49MCwgbnVsbGFibGUgaW5uZXIuCistLSBBIG5ldmVy IG1hdGNoZXMgYnV0IEE/IG1hdGNoZXMgZW1wdHksIHNhdGlzZnlpbmcgbWluPTAgaW1tZWRpYXRl bHkuCistLSBORkEgcmVwb3J0cyAzIGxlbmd0aC0wIG1hdGNoZXMgKG9uZSBwZXIgcm93KTsgZmly c3RfdmFsdWUgLyBsYXN0X3ZhbHVlCistLSBhcmUgTlVMTCBiZWNhdXNlIHRoZSB3aW5kb3cgZnJh bWUgZm9yIGFuIGVtcHR5IG1hdGNoIGhhcyBubyByb3dzLgorV0lUSCB0ZXN0XzcyOF9taW4wIEFT ICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFSUkFZWydCJ10pLAor ICAgICAgICAoMiwgQVJSQVlbJ0InXSksCisgICAgICAgICgzLCBBUlJBWVsnQiddKQorICAgICkg QVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAgIGZpcnN0X3ZhbHVl KGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1ZShpZCkgT1ZFUiB3 IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0XzcyOF9taW4wCitXSU5ET1cgdyBBUyAoCisgICAgT1JE RVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBST1cgQU5EIFVOQk9VTkRFRCBGT0xM T1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQgUk9XCisgICAgUEFUVEVSTiAoKEE/ KXswLDN9KQorICAgIERFRklORQorICAgICAgICBBIEFTICdBJyA9IEFOWShmbGFncykKKyk7Cisg aWQgfCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAg ICAKKyAgMiB8IHtCfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtCfSAgIHwg ICAgICAgICAgICAgfCAgICAgICAgICAKKygzIHJvd3MpCisKKy0tIChBPyl7MSwzfTogbWluPTEs IG51bGxhYmxlIGlubmVyLgorLS0gQSBuZXZlciBtYXRjaGVzOyBvbmUgZW1wdHkgaXRlcmF0aW9u IHNhdGlzZmllcyBtaW49MS4KKy0tIE5GQSByZXBvcnRzIDMgbGVuZ3RoLTAgbWF0Y2hlczsgZmly c3QvbGFzdF92YWx1ZSBOVUxMIG92ZXIgZW1wdHkgZnJhbWUuCitXSVRIIHRlc3RfNzI4X21pbjEg QVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVFUworICAgICAgICAoMSwgQVJSQVlbJ0InXSks CisgICAgICAgICgyLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDMsIEFSUkFZWydCJ10pCisgICAg KSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFs dWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVS IHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfNzI4X21pbjEKK1dJTkRPVyB3IEFTICgKKyAgICBP UkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVEIEZP TExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJOICgo QT8pezEsM30pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQorKTsK KyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICAyIHwge0J9ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICAzIHwge0J9ICAg fCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKworLS0gKEE/KXsyLDN9OiBtaW49 MiwgbnVsbGFibGUgaW5uZXIuICBQZXIgSVNPL0lFQyAxOTA3NS01IDcuMi44IFNUUjA2ID0gKFNU UkUgU1RSRSkKKy0tIGlzIHZhbGlkOiB0d28gZW1wdHkgaXRlcmF0aW9ucyBzYXRpc2Z5IG1pbj0y LgorLS0gTkZBIHJlcG9ydHMgMyBsZW5ndGgtMCBtYXRjaGVzOyBmaXJzdC9sYXN0X3ZhbHVlIE5V TEwgb3ZlciBlbXB0eSBmcmFtZS4KK1dJVEggdGVzdF83MjhfbWluMiBBUyAoCisgICAgU0VMRUNU ICogRlJPTSAoVkFMVUVTCisgICAgICAgICgxLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDIsIEFS UkFZWydCJ10pLAorICAgICAgICAoMywgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQoaWQsIGZsYWdz KQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkgT1ZFUiB3IEFT IG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9lbmQK K0ZST00gdGVzdF83MjhfbWluMgorV0lORE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAg Uk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZU RVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChBPyl7MiwzfSkKKyAgICBE RUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpCispOworIGlkIHwgZmxhZ3MgfCBt YXRjaF9zdGFydCB8IG1hdGNoX2VuZCAKKy0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tCisgIDEgfCB7Qn0gICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDIgfCB7Qn0g ICB8ICAgICAgICAgICAgIHwgICAgICAgICAgCisgIDMgfCB7Qn0gICB8ICAgICAgICAgICAgIHwg ICAgICAgICAgCisoMyByb3dzKQorCistLSAoQT8pezIsM30gbWl4ZWQ6IHNvbWUgcm93cyBtYXRj aCBBLCBzb21lIGRvbid0CistLSBSb3dzIDEtMjogQSBtYXRjaGVzLCBncmVlZHkgdGFrZXMgMiAt PiBtaW4gc2F0aXNmaWVkIChyZWFsIG1hdGNoKQorLS0gUm93IDM6IEEgZG9lc24ndCBtYXRjaCwg dHdvIGVtcHR5IGl0ZXJhdGlvbnMgc2F0aXNmeSBtaW49MiAobGVuZ3RoLTAgbWF0Y2gpCistLSBS b3cgNDogQSBtYXRjaGVzIDEgcmVhbCBpdGVyICsgMSBmZiBlbXB0eSBleGl0IC0+IG1hdGNoIDQt NAorV0lUSCB0ZXN0XzcyOF9taW4yX21peGVkIEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxV RVMKKyAgICAgICAgKDEsIEFSUkFZWydBJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0EnXSksCisg ICAgICAgICgzLCBBUlJBWVsnQiddKSwKKyAgICAgICAgKDQsIEFSUkFZWydBJ10pCisgICAgKSBB UyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAgICAgZmlyc3RfdmFsdWUo aWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBPVkVSIHcg QVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfNzI4X21pbjJfbWl4ZWQKK1dJTkRPVyB3IEFTICgKKyAg ICBPUkRFUiBCWSBpZAorICAgIFJPV1MgQkVUV0VFTiBDVVJSRU5UIFJPVyBBTkQgVU5CT1VOREVE IEZPTExPV0lORworICAgIEFGVEVSIE1BVENIIFNLSVAgVE8gTkVYVCBST1cKKyAgICBQQVRURVJO ICgoQT8pezIsM30pCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgJ0EnID0gQU5ZKGZsYWdzKQor KTsKKyBpZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0r LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAg ICAgICAgMgorICAyIHwge0F9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMgorICAzIHwge0J9 ICAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8 ICAgICAgICAgNAorKDQgcm93cykKKworLS0gKEE/IEI/KXsyLDN9OiBtdWx0aS1lbGVtZW50IG51 bGxhYmxlIGJvZHkgd2l0aCByZWFsIG1hdGNoZXMKKy0tIEJvZHkgQT8gQj8gaXMgbnVsbGFibGUg KGJvdGggb3B0aW9uYWwpLCBidXQgQSBhbmQgQiBETyBtYXRjaCByb3dzLgorLS0gUmVhbCAobm9u LWVtcHR5KSBpdGVyYXRpb25zIGxvb3AgYmFjayBub3JtYWxseTsgZmFzdC1mb3J3YXJkIG9ubHkK Ky0tIGZpcmVzIGFzIGEgcGFyYWxsZWwgZXhpdCBwYXRoIChFWElUIE9OTFksIG5vIGdyZWVkeS9y ZWx1Y3RhbnQgbG9vcCkuCistLSBEYXRhOiBhbHRlcm5hdGluZyBBLCBCIHJvd3MgKDYgcm93cykK Ky0tIEdyZWVkeTogZWFjaCByb3cgZ2V0cyB0aGUgbG9uZ2VzdCBtYXRjaCBmcm9tIGl0cyBzdGFy dGluZyBwb3NpdGlvbi4KKy0tIFJvdyAxOiAzIGl0ZXJzIChBQDEsQkAyKShBQDMsQkA0KShBQDUs QkA2KSAtPiAxLTYKKy0tIFJvdyA1OiAxIHJlYWwgaXRlciArIDEgZmYgZW1wdHkgZXhpdCAtPiA1 LTYKK1dJVEggdGVzdF83MjhfbXVsdGlfYm9keSBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFM VUVTCisgICAgICAgICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAor ICAgICAgICAoMywgQVJSQVlbJ0EnXSksCisgICAgICAgICg0LCBBUlJBWVsnQiddKSwKKyAgICAg ICAgKDUsIEFSUkFZWydBJ10pLAorICAgICAgICAoNiwgQVJSQVlbJ0InXSkKKyAgICApIEFTIHQo aWQsIGZsYWdzKQorKQorU0VMRUNUIGlkLCBmbGFncywKKyAgICAgICBmaXJzdF92YWx1ZShpZCkg T1ZFUiB3IEFTIG1hdGNoX3N0YXJ0LAorICAgICAgIGxhc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBt YXRjaF9lbmQKK0ZST00gdGVzdF83MjhfbXVsdGlfYm9keQorV0lORE9XIHcgQVMgKAorICAgIE9S REVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5ERUQgRk9M TE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJPVworICAgIFBBVFRFUk4gKChB PyBCPyl7MiwzfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAnQScgPSBBTlkoZmxhZ3MpLAor ICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQgfCBmbGFncyB8IG1hdGNoX3N0 YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0K KyAgMSB8IHtBfSAgIHwgICAgICAgICAgIDEgfCAgICAgICAgIDYKKyAgMiB8IHtCfSAgIHwgICAg ICAgICAgIDIgfCAgICAgICAgIDYKKyAgMyB8IHtBfSAgIHwgICAgICAgICAgIDMgfCAgICAgICAg IDYKKyAgNCB8IHtCfSAgIHwgICAgICAgICAgIDQgfCAgICAgICAgIDYKKyAgNSB8IHtBfSAgIHwg ICAgICAgICAgIDUgfCAgICAgICAgIDYKKyAgNiB8IHtCfSAgIHwgICAgICAgICAgIDYgfCAgICAg ICAgIDYKKyg2IHJvd3MpCisKKy0tIChBPyBCPyl7MiwzfTogcHVyZSBlbXB0eSBib2R5IChub3Ro aW5nIG1hdGNoZXMgQSBvciBCKS4KKy0tIE5GQSByZXBvcnRzIDMgbGVuZ3RoLTAgbWF0Y2hlczsg Zmlyc3QvbGFzdF92YWx1ZSBOVUxMIG92ZXIgZW1wdHkgZnJhbWUuCitXSVRIIHRlc3RfNzI4X211 bHRpX2VtcHR5IEFTICgKKyAgICBTRUxFQ1QgKiBGUk9NIChWQUxVRVMKKyAgICAgICAgKDEsIEFS UkFZWydDJ10pLAorICAgICAgICAoMiwgQVJSQVlbJ0MnXSksCisgICAgICAgICgzLCBBUlJBWVsn QyddKQorICAgICkgQVMgdChpZCwgZmxhZ3MpCispCitTRUxFQ1QgaWQsIGZsYWdzLAorICAgICAg IGZpcnN0X3ZhbHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfc3RhcnQsCisgICAgICAgbGFzdF92YWx1 ZShpZCkgT1ZFUiB3IEFTIG1hdGNoX2VuZAorRlJPTSB0ZXN0XzcyOF9tdWx0aV9lbXB0eQorV0lO RE9XIHcgQVMgKAorICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9X IEFORCBVTkJPVU5ERUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBUTyBORVhUIFJP VworICAgIFBBVFRFUk4gKChBPyBCPyl7MiwzfSkKKyAgICBERUZJTkUKKyAgICAgICAgQSBBUyAn QScgPSBBTlkoZmxhZ3MpLAorICAgICAgICBCIEFTICdCJyA9IEFOWShmbGFncykKKyk7CisgaWQg fCBmbGFncyB8IG1hdGNoX3N0YXJ0IHwgbWF0Y2hfZW5kIAorLS0tLSstLS0tLS0tKy0tLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0KKyAgMSB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAK KyAgMiB8IHtDfSAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAKKyAgMyB8IHtDfSAgIHwgICAg ICAgICAgICAgfCAgICAgICAgICAKKygzIHJvd3MpCisKKy0tIChBPyBCPyl7MiwzfTogbWl4ZWQg cmVhbCBhbmQgZW1wdHkgaXRlcmF0aW9ucworLS0gUm93IDE6IGl0ZXIxIHJlYWwgKEFAMSxCQDIp LCBpdGVyMiBhdCByb3cgMyBlbXB0eSAtPiBmZiBleGl0LCBtYXRjaCAxLTIKKy0tIFJvdyAzOiBD IGRvZXNuJ3QgbWF0Y2ggQSBvciBCIC0+IE5VTEwKKy0tIFJvdyA0OiBpdGVyMSByZWFsIChBQDQs QkA1KSwgaXRlcjIgYXQgZW5kIGVtcHR5IC0+IGZmIGV4aXQsIG1hdGNoIDQtNQorV0lUSCB0ZXN0 XzcyOF9tdWx0aV9taXhlZCBBUyAoCisgICAgU0VMRUNUICogRlJPTSAoVkFMVUVTCisgICAgICAg ICgxLCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDIsIEFSUkFZWydCJ10pLAorICAgICAgICAoMywg QVJSQVlbJ0MnXSksCisgICAgICAgICg0LCBBUlJBWVsnQSddKSwKKyAgICAgICAgKDUsIEFSUkFZ WydCJ10pCisgICAgKSBBUyB0KGlkLCBmbGFncykKKykKK1NFTEVDVCBpZCwgZmxhZ3MsCisgICAg ICAgZmlyc3RfdmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3Zh bHVlKGlkKSBPVkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfNzI4X211bHRpX21peGVkCitX SU5ET1cgdyBBUyAoCisgICAgT1JERVIgQlkgaWQKKyAgICBST1dTIEJFVFdFRU4gQ1VSUkVOVCBS T1cgQU5EIFVOQk9VTkRFRCBGT0xMT1dJTkcKKyAgICBBRlRFUiBNQVRDSCBTS0lQIFRPIE5FWFQg Uk9XCisgICAgUEFUVEVSTiAoKEE/IEI/KXsyLDN9KQorICAgIERFRklORQorICAgICAgICBBIEFT ICdBJyA9IEFOWShmbGFncyksCisgICAgICAgIEIgQVMgJ0InID0gQU5ZKGZsYWdzKQorKTsKKyBp ZCB8IGZsYWdzIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQgCistLS0tKy0tLS0tLS0rLS0tLS0t LS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwge0F9ICAgfCAgICAgICAgICAgMSB8ICAgICAgICAg MgorICAyIHwge0J9ICAgfCAgICAgICAgICAgMiB8ICAgICAgICAgMgorICAzIHwge0N9ICAgfCAg ICAgICAgICAgICB8ICAgICAgICAgIAorICA0IHwge0F9ICAgfCAgICAgICAgICAgNCB8ICAgICAg ICAgNQorICA1IHwge0J9ICAgfCAgICAgICAgICAgNSB8ICAgICAgICAgNQorKDUgcm93cykKKwor LS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCistLSA3LjMgUGF0dGVybiBtYXRjaGluZyBpbiB0aGVvcnkgYW5kIHByYWN0aWNlCist LSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKy0tIFN0YW5kYXJkJ3Mgd29ya2VkIGV4YW1wbGU6IEE/IEIrIHdpdGggc3BlY2lmaWMg ZGF0YQorLS0gUHJlZmVybWVudCBvcmRlcjogKEEpKEJCQiksIChBKShCQiksIChBKShCKSwgKCko QkJCKSwgKCkoQkIpLCAoKShCKQorLS0gUm93IDE6IEEgY29uZGl0aW9uIChwcmljZT4xMDApIGlz IGZhbHNlIC0+IEEgZmFpbHMKKy0tIEJhY2t0cmFjazogZW1wdHkgQT8sIHRoZW4gQisgZnJvbSBy b3cgMQorLS0gRXhwZWN0ZWQ6IHJvd3MgMS0zIG1hdGNoIGFzIEIgKEE/IHRha2VzIGVtcHR5IG1h dGNoKQorV0lUSCB0ZXN0XzczX2V4YW1wbGUgQVMgKAorICAgIFNFTEVDVCAqIEZST00gKFZBTFVF UworICAgICAgICAoMSwgNjApLAorICAgICAgICAoMiwgNzApLAorICAgICAgICAoMywgNDApCisg ICAgKSBBUyB0KGlkLCBwcmljZSkKKykKK1NFTEVDVCBpZCwgcHJpY2UsCisgICAgICAgZmlyc3Rf dmFsdWUoaWQpIE9WRVIgdyBBUyBtYXRjaF9zdGFydCwKKyAgICAgICBsYXN0X3ZhbHVlKGlkKSBP VkVSIHcgQVMgbWF0Y2hfZW5kCitGUk9NIHRlc3RfNzNfZXhhbXBsZQorV0lORE9XIHcgQVMgKAor ICAgIE9SREVSIEJZIGlkCisgICAgUk9XUyBCRVRXRUVOIENVUlJFTlQgUk9XIEFORCBVTkJPVU5E RUQgRk9MTE9XSU5HCisgICAgQUZURVIgTUFUQ0ggU0tJUCBQQVNUIExBU1QgUk9XCisgICAgUEFU VEVSTiAoQT8gQispCisgICAgREVGSU5FCisgICAgICAgIEEgQVMgcHJpY2UgPiAxMDAsCisgICAg ICAgIEIgQVMgVFJVRQorKTsKKyBpZCB8IHByaWNlIHwgbWF0Y2hfc3RhcnQgfCBtYXRjaF9lbmQg CistLS0tKy0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLQorICAxIHwgICAgNjAgfCAg ICAgICAgICAgMSB8ICAgICAgICAgMworICAyIHwgICAgNzAgfCAgICAgICAgICAgICB8ICAgICAg ICAgIAorICAzIHwgICAgNDAgfCAgICAgICAgICAgICB8ICAgICAgICAgIAorKDMgcm93cykKKwot LSAKMi40My4wCgo= ----Next_Part(Sat_Jun_13_21_25_30_2026_756)-- Content-Type: Application/Octet-Stream Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="v48-0009-Row-pattern-recognition-patch-typedefs.list.patch" RnJvbSBiMWNhN2ZhYjIxZDkxOTU3MzYzM2ZkNjg4NDc2MDJiYjBhYzU2YTRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYXRzdW8gSXNoaWkgPGlzaGlpQHBvc3RncmVzcWwub3JnPgpE YXRlOiBTYXQsIDEzIEp1biAyMDI2IDE2OjQ2OjMxICswOTAwClN1YmplY3Q6IFtQQVRDSCB2NDgg OS85XSBSb3cgcGF0dGVybiByZWNvZ25pdGlvbiBwYXRjaCAodHlwZWRlZnMubGlzdCkuCgotLS0K IHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IHwgMjQgKysrKysrKysrKysrKysrKysr KysrKysrCiAxIGZpbGUgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVk ZWZzLmxpc3QKaW5kZXggZjllYjIzZTUyYzkuLmI1MDBhZTU2NzcyIDEwMDY0NAotLS0gYS9zcmMv dG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdApAQCAtNTMzLDYgKzUzMyw3IEBAIENvbnN0cmFpbnQKIENvbnN0cmFpbnRDYXRl Z29yeQogQ29uc3RyYWludEluZm8KIENvbnN0cmFpbnRzU2V0U3RtdAorQ29udGFpblJQUkNvbnRl eHQKIENvbnRyb2xEYXRhCiBDb250cm9sRmlsZURhdGEKIENvbnZJbmZvCkBAIC02NjMsNyArNjY0 LDEwIEBAIERlY29kaW5nV29ya2VyU2hhcmVkCiBEZWZFbGVtCiBEZWZFbGVtQWN0aW9uCiBEZWZh dWx0QUNMSW5mbworRGVmaW5lTWV0YWRhdGFDb250ZXh0CitEZWZpbmVQaGFzZQogRGVmaW5lU3Rt dAorRGVmaW5lV2Fsa0N0eAogRGVmbkR1bXBlclB0cgogRGVsZXRlU3RtdAogRGVwZW5kZW5jaWVz UGFyc2VTdGF0ZQpAQCAtNzYyLDYgKzc2Niw3IEBAIEVycm9yRGF0YQogRXJyb3JTYXZlQ29udGV4 dAogRXN0aW1hdGVEU01Gb3JlaWduU2Nhbl9mdW5jdGlvbgogRXN0aW1hdGlvbkluZm8KK0V2YWxE ZWZpbmVPZmZzZXRzQ29udGV4dAogRXZlbnRUcmlnZ2VyQ2FjaGVFbnRyeQogRXZlbnRUcmlnZ2Vy Q2FjaGVJdGVtCiBFdmVudFRyaWdnZXJDYWNoZVN0YXRlVHlwZQpAQCAtMTgzMiw2ICsxODM3LDgg QEAgTmFtZWRMV0xvY2tUcmFuY2hlUmVxdWVzdAogTmFtZWRUdXBsZXN0b3JlU2NhbgogTmFtZWRU dXBsZXN0b3JlU2NhblN0YXRlCiBOYW1lc3BhY2VJbmZvCitOYXZUcmF2ZXJzYWwKK05hdlZpc2l0 Rm4KIE5lc3RMb29wCiBOZXN0TG9vcFBhcmFtCiBOZXN0TG9vcFN0YXRlCkBAIC0xODQxLDYgKzE4 NDgsNyBAQCBOZXdDb25zdHJhaW50CiBOZXh0U2FtcGxlQmxvY2tfZnVuY3Rpb24KIE5leHRTYW1w bGVUdXBsZV9mdW5jdGlvbgogTmV4dFZhbHVlRXhwcgorTkZBTGVuZ3RoU3RhdHMKIE5vZGUKIE5v ZGVJbnN0cnVtZW50YXRpb24KIE5vZGVUYWcKQEAgLTI1MjQsNiArMjUzMiwyMiBAQCBSSV9Db25z dHJhaW50SW5mbwogUklfRmFzdFBhdGhFbnRyeQogUklfUXVlcnlIYXNoRW50cnkKIFJJX1F1ZXJ5 S2V5CitSUENvbW1vblN5bnRheAorUlBSRGVwdGgKK1JQUkVsZW1GbGFncworUlBSRWxlbUlkeAor UlBSTkZBQ29udGV4dAorUlBSTkZBU3RhdGUKK1JQUk5hdkV4cHIKK1JQUk5hdktpbmQKK1JQUk5h dk9mZnNldEtpbmQKK1JQUlBhdHRlcm4KK1JQUlBhdHRlcm5FbGVtZW50CitSUFJQYXR0ZXJuTm9k ZQorUlBSUGF0dGVybk5vZGVUeXBlCitSUFJRdWFudGl0eQorUlBSVmFySWQKK1JQU2tpcFRvCiBS VEVLaW5kCiBSVEVQZXJtaXNzaW9uSW5mbwogUldDb25mbGljdAotLSAKMi40My4wCgo= ----Next_Part(Sat_Jun_13_21_25_30_2026_756)----