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.94.2) (envelope-from ) id 1sbfTK-000brI-Qs for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Aug 2024 12:08:54 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sbfTI-006hm8-KJ for pgsql-hackers@arkaria.postgresql.org; Wed, 07 Aug 2024 12:08:52 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sbfTI-006hk9-1H for pgsql-hackers@lists.postgresql.org; Wed, 07 Aug 2024 12:08:52 +0000 Received: from meesny.iki.fi ([2001:67c:2b0:1c1::201]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1sbfTD-003XRa-P5 for pgsql-hackers@postgresql.org; Wed, 07 Aug 2024 12:08:50 +0000 Received: from [192.168.1.110] (dsl-hkibng22-54f8db-125.dhcp.inet.fi [84.248.219.125]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by meesny.iki.fi (Postfix) with ESMTPSA id 4Wf88r3j50zyNj for ; Wed, 7 Aug 2024 15:08:44 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1723032524; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=ISfk4j4cTS9XVhgDK5Zq4TXhqoSZ+l5HCXnRTetTfS0=; b=Qxxg4UgFRgk+3xqYL7dzoBCTLjfqRsoxfjw8J0mpezLxsXfstiCFaWaSIJW0WEjMKyEL1T pVI7e5GPvAtswW7IyWVnEUfVybyL+EHOqgEMp5d2RMyGDX0UxSBmKu780TXqpVwcrH0xr3 bCKTrfsD3edD/fWQ9j55hFV7QgXmdoo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=meesny; t=1723032524; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type; bh=ISfk4j4cTS9XVhgDK5Zq4TXhqoSZ+l5HCXnRTetTfS0=; b=KPFWDGuJwM4vY/1k8jUcVp7RX5gcoSGz55TtGojCbQRnfoBr1XujUhZh1PobVUL1yBXRUp bCRbQ2faIgKgwAExK4nmYtmhqUsOAe1/eNZMR2/u6wDoduBXYHs11HiBz9Jsj2pBUfnUAT ttvC3FpDFBgNmeY6AtOxS5MbZjLTnyI= ARC-Seal: i=1; s=meesny; d=iki.fi; t=1723032524; a=rsa-sha256; cv=none; b=TfT1wCAyhCKXy73zfK7RR/+faZ/9surqRYCzlKPS/Bmpq5CKi8RIKNB/OmbBB1VpgJwyG+ wNriabpcf/QlFTGqNrA2fS4de9RUhvPJ2Q2w4HuVqy08zYz5J6hjkXoCKY19muLjk6DPO8 irag8oNcnvnXO6X9fj2MQNbJVnVNBhk= ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi Content-Type: multipart/mixed; boundary="------------m53kuQHE6tGP7fYomInRc6ZC" Message-ID: Date: Wed, 7 Aug 2024 15:08:42 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US From: Heikki Linnakangas Subject: Little cleanup of ShmemInit function names To: "pgsql-hackers@postgresql.org" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------m53kuQHE6tGP7fYomInRc6ZC Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit It's bothered me for a long time that some of the shmem initialization functions have non-standard names. Most of them are called FoobarShmemSize() and FoobarShmemInit(), but there are a few exceptions: InitBufferPool InitLocks InitPredicateLocks CreateSharedProcArray CreateSharedBackendStatus CreateSharedInvalidationState I always have trouble remembering what exactly these functions do and when get called. But they are the same as all the FoobarShmemInit() functions, just named differently. The attached patches rename them to follow the usual naming convention. The InitLocks() function is refactored a bit more, splitting the per-backend initialization to a separate InitLockManagerAccess() function. That's why it's in a separate commit. -- Heikki Linnakangas Neon (https://neon.tech) --------------m53kuQHE6tGP7fYomInRc6ZC Content-Type: text/x-patch; charset=UTF-8; name="v1-0001-Refactor-lock-manager-initialization-to-make-it-a.patch" Content-Disposition: attachment; filename*0="v1-0001-Refactor-lock-manager-initialization-to-make-it-a.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAwMTMxYmYwMjIwOGIxN2UzYzc5YTg1MTQwNjBmNzY2OGI3ZDU4Njc0IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFR1ZSwgNiBBdWcgMjAyNCAxNTo0MjoyOSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEgMS8yXSBSZWZhY3RvciBsb2NrIG1hbmFnZXIgaW5pdGlhbGl6 YXRpb24gdG8gbWFrZSBpdCBhIGJpdAogbGVzcyBzcGVjaWFsCgpTcGxpdCB0aGUgc2hhcmVk IGFuZCBsb2NhbCBpbml0aWFsaXphdGlvbiB0byBzZXBhcmF0ZSBmdW5jdGlvbnMsIGFuZApm b2xsb3cgdGhlIGNvbW1vbiBuYW1pbmcgY29udmVudGlvbnMuIFdpdGggdGhpcywgd2Ugbm8g bG9uZ2VyIGNyZWF0ZQp0aGUgTG9ja01ldGhvZExvY2FsSGFzaCBoYXNoIHRhYmxlIGluIHRo ZSBwb3N0bWFzdGVyIHByb2Nlc3MsIHdoaWNoCndhcyBhbHdheXMgcG9pbnRsZXNzLgotLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICB8ICA0ICsrLS0KIHNyYy9iYWNr ZW5kL3N0b3JhZ2UvbG1nci9sb2NrLmMgICB8IDM1ICsrKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyB8ICAzICsrKwog c3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmggICAgICAgIHwgIDUgKysrLS0KIDQgZmlsZXMg Y2hhbmdlZCwgMjUgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvaXBjaS5jCmluZGV4IDM1ZmEyZTFkZGEuLjhmOGE4OTEyNGUgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9pcGNpLmMKQEAgLTExNiw3ICsxMTYsNyBAQCBDYWxjdWxhdGVTaG1lbVNpemUo aW50ICpudW1fc2VtYXBob3JlcykKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgZHNtX2VzdGlt YXRlX3NpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIERTTVJlZ2lzdHJ5U2htZW1T aXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZmZXJTaG1lbVNpemUoKSk7Ci0J c2l6ZSA9IGFkZF9zaXplKHNpemUsIExvY2tTaG1lbVNpemUoKSk7CisJc2l6ZSA9IGFkZF9z aXplKHNpemUsIExvY2tNYW5hZ2VyU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShz aXplLCBQcmVkaWNhdGVMb2NrU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBQcm9jR2xvYmFsU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTG9n UHJlZmV0Y2hTaG1lbVNpemUoKSk7CkBAIC0yOTEsNyArMjkxLDcgQEAgQ3JlYXRlT3JBdHRh Y2hTaG1lbVN0cnVjdHModm9pZCkKIAkvKgogCSAqIFNldCB1cCBsb2NrIG1hbmFnZXIKIAkg Ki8KLQlJbml0TG9ja3MoKTsKKwlMb2NrTWFuYWdlclNobWVtSW5pdCgpOwogCiAJLyoKIAkg KiBTZXQgdXAgcHJlZGljYXRlIGxvY2sgbWFuYWdlcgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xvY2suYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9sb2Nr LmMKaW5kZXggMDQwMGE1MDc3Ny4uN2RkZTFmOWY3NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv bG9jay5jCkBAIC0zNzcsMTkgKzM3NywxNyBAQCBzdGF0aWMgdm9pZCBHZXRTaW5nbGVQcm9j QmxvY2tlclN0YXR1c0RhdGEoUEdQUk9DICpibG9ja2VkX3Byb2MsCiAKIAogLyoKLSAqIElu aXRMb2NrcyAtLSBJbml0aWFsaXplIHRoZSBsb2NrIG1hbmFnZXIncyBkYXRhIHN0cnVjdHVy ZXMuCisgKiBJbml0aWFsaXplIHRoZSBsb2NrIG1hbmFnZXIncyBzaG1lbSBkYXRhIHN0cnVj dHVyZXMuCiAgKgotICogVGhpcyBpcyBjYWxsZWQgZnJvbSBDcmVhdGVTaGFyZWRNZW1vcnlB bmRTZW1hcGhvcmVzKCksIHdoaWNoIHNlZSBmb3IKLSAqIG1vcmUgY29tbWVudHMuICBJbiB0 aGUgbm9ybWFsIHBvc3RtYXN0ZXIgY2FzZSwgdGhlIHNoYXJlZCBoYXNoIHRhYmxlcwotICog YXJlIGNyZWF0ZWQgaGVyZSwgYXMgd2VsbCBhcyBhIGxvY2FsbG9jayBoYXNoIHRhYmxlIHRo YXQgd2lsbCByZW1haW4KLSAqIHVudXNlZCBhbmQgZW1wdHkgaW4gdGhlIHBvc3RtYXN0ZXIg aXRzZWxmLiAgQmFja2VuZHMgaW5oZXJpdCB0aGUgcG9pbnRlcnMKLSAqIHRvIHRoZSBzaGFy ZWQgdGFibGVzIHZpYSBmb3JrKCksIGFuZCBhbHNvIGluaGVyaXQgYW4gaW1hZ2Ugb2YgdGhl IGxvY2FsbG9jawotICogaGFzaCB0YWJsZSwgd2hpY2ggdGhleSBwcm9jZWVkIHRvIHVzZS4g IEluIHRoZSBFWEVDX0JBQ0tFTkQgY2FzZSwgZWFjaAotICogYmFja2VuZCByZS1leGVjdXRl cyB0aGlzIGNvZGUgdG8gb2J0YWluIHBvaW50ZXJzIHRvIHRoZSBhbHJlYWR5IGV4aXN0aW5n Ci0gKiBzaGFyZWQgaGFzaCB0YWJsZXMgYW5kIHRvIGNyZWF0ZSBpdHMgbG9jYWxsb2NrIGhh c2ggdGFibGUuCisgKiBUaGlzIGlzIGNhbGxlZCBmcm9tIENyZWF0ZVNoYXJlZE1lbW9yeUFu ZFNlbWFwaG9yZXMoKSwgd2hpY2ggc2VlIGZvciBtb3JlCisgKiBjb21tZW50cy4gIEluIHRo ZSBub3JtYWwgcG9zdG1hc3RlciBjYXNlLCB0aGUgc2hhcmVkIGhhc2ggdGFibGVzIGFyZQor ICogY3JlYXRlZCBoZXJlLiAgQmFja2VuZHMgaW5oZXJpdCB0aGUgcG9pbnRlcnMgdG8gdGhl IHNoYXJlZCB0YWJsZXMgdmlhCisgKiBmb3JrKCksIGJ1dCBtdXN0IGNhbGwgSW5pdExvY2tN YW5hZ2VyQWNjZXNzKCkgdG8gY3JlYXRlIHRoZSBsb2NhbGxvY2sgaGFzaAorICogdGFibGUu ICBJbiB0aGUgRVhFQ19CQUNLRU5EIGNhc2UsIGVhY2ggYmFja2VuZCByZS1leGVjdXRlcyB0 aGlzIGNvZGUgdG8KKyAqIG9idGFpbiBwb2ludGVycyB0byB0aGUgYWxyZWFkeSBleGlzdGlu ZyBzaGFyZWQgaGFzaCB0YWJsZXMuCiAgKi8KIHZvaWQKLUluaXRMb2Nrcyh2b2lkKQorTG9j a01hbmFnZXJTaG1lbUluaXQodm9pZCkKIHsKIAlIQVNIQ1RMCQlpbmZvOwogCWxvbmcJCWlu aXRfdGFibGVfc2l6ZSwKQEAgLTQ0NCwxOCArNDQyLDE5IEBAIEluaXRMb2Nrcyh2b2lkKQog CQkJCQkJc2l6ZW9mKEZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2NrRGF0YSksICZmb3VuZCk7 CiAJaWYgKCFmb3VuZCkKIAkJU3BpbkxvY2tJbml0KCZGYXN0UGF0aFN0cm9uZ1JlbGF0aW9u TG9ja3MtPm11dGV4KTsKK30KIAorLyoKKyAqIEluaXRpYWxpemUgdGhlIGxvY2sgbWFuYWdl cidzIGJhY2tlbmQtcHJpdmF0ZSBkYXRhIHN0cnVjdHVyZXMuCisgKi8KK3ZvaWQKK0luaXRM b2NrTWFuYWdlckFjY2Vzcyh2b2lkKQorewogCS8qCiAJICogQWxsb2NhdGUgbm9uLXNoYXJl ZCBoYXNoIHRhYmxlIGZvciBMT0NBTExPQ0sgc3RydWN0cy4gIFRoaXMgc3RvcmVzIGxvY2sK IAkgKiBjb3VudHMgYW5kIHJlc291cmNlIG93bmVyIGluZm9ybWF0aW9uLgotCSAqCi0JICog VGhlIG5vbi1zaGFyZWQgdGFibGUgY291bGQgYWxyZWFkeSBleGlzdCBpbiB0aGlzIHByb2Nl c3MgKHRoaXMgb2NjdXJzCi0JICogd2hlbiB0aGUgcG9zdG1hc3RlciBpcyByZWNyZWF0aW5n IHNoYXJlZCBtZW1vcnkgYWZ0ZXIgYSBiYWNrZW5kIGNyYXNoKS4KLQkgKiBJZiBzbywgZGVs ZXRlIGFuZCByZWNyZWF0ZSBpdC4gIChXZSBjb3VsZCBzaW1wbHkgbGVhdmUgaXQsIHNpbmNl IGl0Ci0JICogb3VnaHQgdG8gYmUgZW1wdHkgaW4gdGhlIHBvc3RtYXN0ZXIsIGJ1dCBmb3Ig c2FmZXR5IGxldCdzIHphcCBpdC4pCiAJICovCi0JaWYgKExvY2tNZXRob2RMb2NhbEhhc2gp Ci0JCWhhc2hfZGVzdHJveShMb2NrTWV0aG9kTG9jYWxIYXNoKTsKKwlIQVNIQ1RMCQlpbmZv OwogCiAJaW5mby5rZXlzaXplID0gc2l6ZW9mKExPQ0FMTE9DS1RBRyk7CiAJaW5mby5lbnRy eXNpemUgPSBzaXplb2YoTE9DQUxMT0NLKTsKQEAgLTM1NzEsNyArMzU3MCw3IEBAIFBvc3RQ cmVwYXJlX0xvY2tzKFRyYW5zYWN0aW9uSWQgeGlkKQogICogRXN0aW1hdGUgc2hhcmVkLW1l bW9yeSBzcGFjZSB1c2VkIGZvciBsb2NrIHRhYmxlcwogICovCiBTaXplCi1Mb2NrU2htZW1T aXplKHZvaWQpCitMb2NrTWFuYWdlclNobWVtU2l6ZSh2b2lkKQogewogCVNpemUJCXNpemUg PSAwOwogCWxvbmcJCW1heF90YWJsZV9zaXplOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv dXRpbHMvaW5pdC9wb3N0aW5pdC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5p dC5jCmluZGV4IDEzNTI0ZWE0ODguLjA0YTQ3ZDZlNzAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9pbml0 L3Bvc3Rpbml0LmMKQEAgLTYwNiw2ICs2MDYsOSBAQCBCYXNlSW5pdCh2b2lkKQogCSAqLwog CUluaXRYTG9nSW5zZXJ0KCk7CiAKKwkvKiBJbml0aWFsaXplIGxvY2sgbWFuYWdlcidzIGxv Y2FsIHN0cnVjdHMgKi8KKwlJbml0TG9ja01hbmFnZXJBY2Nlc3MoKTsKKwogCS8qCiAJICog SW5pdGlhbGl6ZSByZXBsaWNhdGlvbiBzbG90cyBhZnRlciBwZ3N0YXQuIFRoZSBleGl0IGhv b2sgbWlnaHQgbmVlZCB0bwogCSAqIGRyb3AgZXBoZW1lcmFsIHNsb3RzLCB3aGljaCBpbiB0 dXJuIHRyaWdnZXJzIHN0YXRzIHJlcG9ydGluZy4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRl L3N0b3JhZ2UvbG9jay5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKaW5kZXggY2Mx ZjZlNzhjMy4uOGIzMjhhMDZkOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9s b2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgKQEAgLTU0NCw3ICs1NDQs OSBAQCB0eXBlZGVmIGVudW0KIC8qCiAgKiBmdW5jdGlvbiBwcm90b3R5cGVzCiAgKi8KLWV4 dGVybiB2b2lkIEluaXRMb2Nrcyh2b2lkKTsKK2V4dGVybiB2b2lkIExvY2tNYW5hZ2VyU2ht ZW1Jbml0KHZvaWQpOworZXh0ZXJuIFNpemUgTG9ja01hbmFnZXJTaG1lbVNpemUodm9pZCk7 CitleHRlcm4gdm9pZCBJbml0TG9ja01hbmFnZXJBY2Nlc3Modm9pZCk7CiBleHRlcm4gTG9j a01ldGhvZCBHZXRMb2Nrc01ldGhvZFRhYmxlKGNvbnN0IExPQ0sgKmxvY2spOwogZXh0ZXJu IExvY2tNZXRob2QgR2V0TG9ja1RhZ3NNZXRob2RUYWJsZShjb25zdCBMT0NLVEFHICpsb2Nr dGFnKTsKIGV4dGVybiB1aW50MzIgTG9ja1RhZ0hhc2hDb2RlKGNvbnN0IExPQ0tUQUcgKmxv Y2t0YWcpOwpAQCAtNTg0LDcgKzU4Niw2IEBAIGV4dGVybiBib29sIExvY2tDaGVja0NvbmZs aWN0cyhMb2NrTWV0aG9kIGxvY2tNZXRob2RUYWJsZSwKIGV4dGVybiB2b2lkIEdyYW50TG9j ayhMT0NLICpsb2NrLCBQUk9DTE9DSyAqcHJvY2xvY2ssIExPQ0tNT0RFIGxvY2ttb2RlKTsK IGV4dGVybiB2b2lkIEdyYW50QXdhaXRlZExvY2sodm9pZCk7CiBleHRlcm4gdm9pZCBSZW1v dmVGcm9tV2FpdFF1ZXVlKFBHUFJPQyAqcHJvYywgdWludDMyIGhhc2hjb2RlKTsKLWV4dGVy biBTaXplIExvY2tTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gTG9ja0RhdGEgKkdldExvY2tT dGF0dXNEYXRhKHZvaWQpOwogZXh0ZXJuIEJsb2NrZWRQcm9jc0RhdGEgKkdldEJsb2NrZXJT dGF0dXNEYXRhKGludCBibG9ja2VkX3BpZCk7CiAKLS0gCjIuMzkuMgoK --------------m53kuQHE6tGP7fYomInRc6ZC Content-Type: text/x-patch; charset=UTF-8; name="v1-0002-Rename-some-shared-memory-initialization-routines.patch" Content-Disposition: attachment; filename*0="v1-0002-Rename-some-shared-memory-initialization-routines.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA4YjZjZTcyMjc3NTRhZWU2OGE3OWY0ODUwNmJlNDhkMTZjMThkZTI3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFdlZCwgNyBBdWcgMjAyNCAxNDo1MjowMiArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEgMi8yXSBSZW5hbWUgc29tZSBzaGFyZWQgbWVtb3J5IGluaXRp YWxpemF0aW9uIHJvdXRpbmVzCgpUbyBtYWtlIHRoZW0gZm9sbG93IHRoZSB1c3VhbCBuYW1p bmcgY29udmVudGlvbiB3aGVyZQpGb29iYXJTaG1lbVNpemUoKSBjYWxjdWxhdGVzIHRoZSBh bW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBuZWVkZWQgYnkKRm9vYmFyIHN1YnN5c3RlbSwgYW5k IEZvb2JhclNobWVtSW5pdCgpIHBlcmZvcm1zIHRoZSBpbml0aWFsaXphdGlvbi4KCkkgZGlk bid0IHJlbmFtZSBDcmVhdGVMV0xvY2tzKCkgYW5kIEluaXRTaG1tZUluZGV4KCksIGJlY2F1 c2UgdGhleSBhcmUKYSBsaXR0bGUgc3BlY2lhbC4gVGhleSBuZWVkIHRvIGJlIGNhbGxlZCBi ZWZvcmUgYW55IG9mIHRoZSBvdGhlcgpTaG1lbUluaXQoKSBmdW5jdGlvbnMsIGJlY2F1c2Ug dGhleSBzZXQgdXAgdGhlIHNoYXJlZCBtZW1vcnkKYm9va2tlZXBpbmcgaXRzZWxmLiBJIGFs c28gZGlkbid0IHJlbmFtZSBJbml0UHJvY0dsb2JhbCgpLCBiZWNhdXNlCnVubGlrZSBvdGhl ciBTaG1lbWluaXQgZnVuY3Rpb25zLCBpdCdzIG5vdCBjYWxsZWQgYnkgaW5kaXZpZHVhbApi YWNrZW5kcy4KLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jICAg ICAgIHwgIDYgKysrLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYyAg ICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMg ICAgICAgfCAgMiArLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAgICAgICAg ICAgICB8IDE0ICsrKysrKystLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9j YXJyYXkuYyAgICAgICAgIHwgIDQgKystLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2lu dmFsYWR0LmMgICAgICAgICB8IDEwICsrKysrLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv bG1nci9wcmVkaWNhdGUuYyAgICAgICAgfCAgNiArKystLS0KIHNyYy9iYWNrZW5kL3V0aWxz L2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMgfCAgNCArKy0tCiBzcmMvYmFja2VuZC91dGls cy9pbml0L3Bvc3Rpbml0LmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9pbmNsdWRlL3N0b3Jh Z2UvYnVmbWdyLmggICAgICAgICAgICAgICAgfCAgNiArKystLS0KIHNyYy9pbmNsdWRlL3N0 b3JhZ2UvcHJlZGljYXRlLmggICAgICAgICAgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvc3Rv cmFnZS9wcm9jYXJyYXkuaCAgICAgICAgICAgICB8ICAyICstCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3NpbnZhbGFkdC5oICAgICAgICAgICAgIHwgIDQgKystLQogc3JjL2luY2x1ZGUvdXRp bHMvYmFja2VuZF9zdGF0dXMuaCAgICAgICAgICB8ICAyICstCiAxNCBmaWxlcyBjaGFuZ2Vk LCAzMyBpbnNlcnRpb25zKCspLCAzMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9idWZmZXIvYnVmX2luaXQuYwppbmRleCA0NjExNmExZjY0Li4wOWJlYzY0NDliIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfaW5pdC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2J1Zl9pbml0LmMKQEAgLTY1LDcgKzY1LDcgQEAg Q2twdFNvcnRJdGVtICpDa3B0QnVmZmVySWRzOwogICogcG9zdG1hc3Rlciwgb3IgaW4gYSBz dGFuZGFsb25lIGJhY2tlbmQpLgogICovCiB2b2lkCi1Jbml0QnVmZmVyUG9vbCh2b2lkKQor QnVmZmVyTWFuYWdlclNobWVtSW5pdCh2b2lkKQogewogCWJvb2wJCWZvdW5kQnVmcywKIAkJ CQlmb3VuZERlc2NzLApAQCAtMTUxLDEzICsxNTEsMTMgQEAgSW5pdEJ1ZmZlclBvb2wodm9p ZCkKIH0KIAogLyoKLSAqIEJ1ZmZlclNobWVtU2l6ZQorICogQnVmZmVyTWFuYWdlclNobWVt U2l6ZQogICoKICAqIGNvbXB1dGUgdGhlIHNpemUgb2Ygc2hhcmVkIG1lbW9yeSBmb3IgdGhl IGJ1ZmZlciBwb29sIGluY2x1ZGluZwogICogZGF0YSBwYWdlcywgYnVmZmVyIGRlc2NyaXB0 b3JzLCBoYXNoIHRhYmxlcywgZXRjLgogICovCiBTaXplCi1CdWZmZXJTaG1lbVNpemUodm9p ZCkKK0J1ZmZlck1hbmFnZXJTaG1lbVNpemUodm9pZCkKIHsKIAlTaXplCQlzaXplID0gMDsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmbWdyLmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwppbmRleCA0NDE1YmE2NDhhLi4z NDYzODAzZTlkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZt Z3IuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZtZ3IuYwpAQCAtMzU4 NSw3ICszNTg1LDcgQEAgQXRFT1hhY3RfQnVmZmVycyhib29sIGlzQ29tbWl0KQogICogYnVm ZmVyIHBvb2wuCiAgKi8KIHZvaWQKLUluaXRCdWZmZXJQb29sQWNjZXNzKHZvaWQpCitJbml0 QnVmZmVyTWFuYWdlckFjY2Vzcyh2b2lkKQogewogCUhBU0hDVEwJCWhhc2hfY3RsOwogCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYwppbmRleCAxOTc5N2RlMzFhLi5k ZmZkZDU3ZTliIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVl bGlzdC5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKQEAg LTUwNiw3ICs1MDYsNyBAQCBTdHJhdGVneUluaXRpYWxpemUoYm9vbCBpbml0KQogCiAJCS8q CiAJCSAqIEdyYWIgdGhlIHdob2xlIGxpbmtlZCBsaXN0IG9mIGZyZWUgYnVmZmVycyBmb3Ig b3VyIHN0cmF0ZWd5LiBXZQotCQkgKiBhc3N1bWUgaXQgd2FzIHByZXZpb3VzbHkgc2V0IHVw IGJ5IEluaXRCdWZmZXJQb29sKCkuCisJCSAqIGFzc3VtZSBpdCB3YXMgcHJldmlvdXNseSBz ZXQgdXAgYnkgQnVmZmVyTWFuYWdlclNobWVtSW5pdCgpLgogCQkgKi8KIAkJU3RyYXRlZ3lD b250cm9sLT5maXJzdEZyZWVCdWZmZXIgPSAwOwogCQlTdHJhdGVneUNvbnRyb2wtPmxhc3RG cmVlQnVmZmVyID0gTkJ1ZmZlcnMgLSAxOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4 IDhmOGE4OTEyNGUuLjZjYWVjYTNhOGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAg LTExNSw3ICsxMTUsNyBAQCBDYWxjdWxhdGVTaG1lbVNpemUoaW50ICpudW1fc2VtYXBob3Jl cykKIAkJCQkJCQkJCQkJIHNpemVvZihTaG1lbUluZGV4RW50KSkpOwogCXNpemUgPSBhZGRf c2l6ZShzaXplLCBkc21fZXN0aW1hdGVfc2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6 ZSwgRFNNUmVnaXN0cnlTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJ1 ZmZlclNobWVtU2l6ZSgpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgQnVmZmVyTWFuYWdl clNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgTG9ja01hbmFnZXJTaG1l bVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFByZWRpY2F0ZUxvY2tTaG1lbVNp emUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFByb2NHbG9iYWxTaG1lbVNpemUoKSk7 CkBAIC0xMzIsNyArMTMyLDcgQEAgQ2FsY3VsYXRlU2htZW1TaXplKGludCAqbnVtX3NlbWFw aG9yZXMpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIExXTG9ja1NobWVtU2l6ZSgpKTsKIAlz aXplID0gYWRkX3NpemUoc2l6ZSwgUHJvY0FycmF5U2htZW1TaXplKCkpOwogCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBCYWNrZW5kU3RhdHVzU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRf c2l6ZShzaXplLCBTSW52YWxTaG1lbVNpemUoKSk7CisJc2l6ZSA9IGFkZF9zaXplKHNpemUs IFNoYXJlZEludmFsU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQTVNp Z25hbFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgUHJvY1NpZ25hbFNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ2hlY2twb2ludGVyU2htZW1T aXplKCkpOwpAQCAtMjg2LDcgKzI4Niw3IEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3Rz KHZvaWQpCiAJQ29tbWl0VHNTaG1lbUluaXQoKTsKIAlTVUJUUkFOU1NobWVtSW5pdCgpOwog CU11bHRpWGFjdFNobWVtSW5pdCgpOwotCUluaXRCdWZmZXJQb29sKCk7CisJQnVmZmVyTWFu YWdlclNobWVtSW5pdCgpOwogCiAJLyoKIAkgKiBTZXQgdXAgbG9jayBtYW5hZ2VyCkBAIC0y OTYsMjIgKzI5NiwyMiBAQCBDcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lkKQogCS8q CiAJICogU2V0IHVwIHByZWRpY2F0ZSBsb2NrIG1hbmFnZXIKIAkgKi8KLQlJbml0UHJlZGlj YXRlTG9ja3MoKTsKKwlQcmVkaWNhdGVMb2NrU2htZW1Jbml0KCk7CiAKIAkvKgogCSAqIFNl dCB1cCBwcm9jZXNzIHRhYmxlCiAJICovCiAJaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKIAkJ SW5pdFByb2NHbG9iYWwoKTsKLQlDcmVhdGVTaGFyZWRQcm9jQXJyYXkoKTsKLQlDcmVhdGVT aGFyZWRCYWNrZW5kU3RhdHVzKCk7CisJUHJvY0FycmF5U2htZW1Jbml0KCk7CisJQmFja2Vu ZFN0YXR1c1NobWVtSW5pdCgpOwogCVR3b1BoYXNlU2htZW1Jbml0KCk7CiAJQmFja2dyb3Vu ZFdvcmtlclNobWVtSW5pdCgpOwogCiAJLyoKIAkgKiBTZXQgdXAgc2hhcmVkLWludmFsIG1l c3NhZ2luZwogCSAqLwotCUNyZWF0ZVNoYXJlZEludmFsaWRhdGlvblN0YXRlKCk7CisJU2hh cmVkSW52YWxTaG1lbUluaXQoKTsKIAogCS8qCiAJICogU2V0IHVwIGludGVycHJvY2VzcyBz aWduYWxpbmcgbWVjaGFuaXNtcwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvcHJvY2FycmF5LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYwpp bmRleCBhZjNiMTVlOTNkLi4zNjYxMGExYzdlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9wcm9jYXJyYXkuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w cm9jYXJyYXkuYwpAQCAtMzcwLDcgKzM3MCw3IEBAIHN0YXRpYyBpbmxpbmUgRnVsbFRyYW5z YWN0aW9uSWQgRnVsbFhpZFJlbGF0aXZlVG8oRnVsbFRyYW5zYWN0aW9uSWQgcmVsLAogc3Rh dGljIHZvaWQgR2xvYmFsVmlzVXBkYXRlQXBwbHkoQ29tcHV0ZVhpZEhvcml6b25zUmVzdWx0 ICpob3Jpem9ucyk7CiAKIC8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVk ZWQgYnkgQ3JlYXRlU2hhcmVkUHJvY0FycmF5LgorICogUmVwb3J0IHNoYXJlZC1tZW1vcnkg c3BhY2UgbmVlZGVkIGJ5IFByb2NBcnJheVNobWVtSW5pdAogICovCiBTaXplCiBQcm9jQXJy YXlTaG1lbVNpemUodm9pZCkKQEAgLTQxNSw3ICs0MTUsNyBAQCBQcm9jQXJyYXlTaG1lbVNp emUodm9pZCkKICAqIEluaXRpYWxpemUgdGhlIHNoYXJlZCBQR1BST0MgYXJyYXkgZHVyaW5n IHBvc3RtYXN0ZXIgc3RhcnR1cC4KICAqLwogdm9pZAotQ3JlYXRlU2hhcmVkUHJvY0FycmF5 KHZvaWQpCitQcm9jQXJyYXlTaG1lbUluaXQodm9pZCkKIHsKIAlib29sCQlmb3VuZDsKIApk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwppbmRleCBiNDg2ZDhkZGQxLi5kYjU5 NjM3YzQzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQu YworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwpAQCAtMjEyLDEw ICsyMTIsMTAgQEAgc3RhdGljIHZvaWQgQ2xlYW51cEludmFsaWRhdGlvblN0YXRlKGludCBz dGF0dXMsIERhdHVtIGFyZyk7CiAKIAogLyoKLSAqIFNJbnZhbFNobWVtU2l6ZSAtLS0gcmV0 dXJuIHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkCisgKiBTaGFyZWRJbnZhbFNobWVtU2l6 ZSAtLS0gcmV0dXJuIHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkCiAgKi8KIFNpemUKLVNJ bnZhbFNobWVtU2l6ZSh2b2lkKQorU2hhcmVkSW52YWxTaG1lbVNpemUodm9pZCkKIHsKIAlT aXplCQlzaXplOwogCkBAIC0yMjcsMTggKzIyNywxOCBAQCBTSW52YWxTaG1lbVNpemUodm9p ZCkKIH0KIAogLyoKLSAqIENyZWF0ZVNoYXJlZEludmFsaWRhdGlvblN0YXRlCisgKiBTaGFy ZWRJbnZhbFNobWVtSW5pdAogICoJCUNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgU0kgbWVz c2FnZSBidWZmZXIKICAqLwogdm9pZAotQ3JlYXRlU2hhcmVkSW52YWxpZGF0aW9uU3RhdGUo dm9pZCkKK1NoYXJlZEludmFsU2htZW1Jbml0KHZvaWQpCiB7CiAJaW50CQkJaTsKIAlib29s CQlmb3VuZDsKIAogCS8qIEFsbG9jYXRlIHNwYWNlIGluIHNoYXJlZCBtZW1vcnkgKi8KIAlz aG1JbnZhbEJ1ZmZlciA9IChTSVNlZyAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoInNobUludmFs QnVmZmVyIiwgU0ludmFsU2htZW1TaXplKCksICZmb3VuZCk7CisJCVNobWVtSW5pdFN0cnVj dCgic2htSW52YWxCdWZmZXIiLCBTaGFyZWRJbnZhbFNobWVtU2l6ZSgpLCAmZm91bmQpOwog CWlmIChmb3VuZCkKIAkJcmV0dXJuOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGlj YXRlLmMKaW5kZXggYjQ1NWI3OGY5Zi4uZTI0YTBmMmZkYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9wcmVkaWNhdGUuYwpAQCAtMTUzLDcgKzE1Myw3IEBACiAgKiBJTlRFUkZBQ0Ug Uk9VVElORVMKICAqCiAgKiBob3VzZWtlZXBpbmcgZm9yIHNldHRpbmcgdXAgc2hhcmVkIG1l bW9yeSBwcmVkaWNhdGUgbG9jayBzdHJ1Y3R1cmVzCi0gKgkJSW5pdFByZWRpY2F0ZUxvY2tz KHZvaWQpCisgKgkJUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogICoJCVByZWRpY2F0 ZUxvY2tTaG1lbVNpemUodm9pZCkKICAqCiAgKiBwcmVkaWNhdGUgbG9jayByZXBvcnRpbmcK QEAgLTExMjcsNyArMTEyNyw3IEBAIENoZWNrUG9pbnRQcmVkaWNhdGUodm9pZCkKIC8qLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tKi8KIAogLyoKLSAqIEluaXRQcmVkaWNhdGVMb2NrcyAtLSBJbml0 aWFsaXplIHRoZSBwcmVkaWNhdGUgbG9ja2luZyBkYXRhIHN0cnVjdHVyZXMuCisgKiBQcmVk aWNhdGVMb2NrU2htZW1Jbml0IC0tIEluaXRpYWxpemUgdGhlIHByZWRpY2F0ZSBsb2NraW5n IGRhdGEgc3RydWN0dXJlcy4KICAqCiAgKiBUaGlzIGlzIGNhbGxlZCBmcm9tIENyZWF0ZVNo YXJlZE1lbW9yeUFuZFNlbWFwaG9yZXMoKSwgd2hpY2ggc2VlIGZvcgogICogbW9yZSBjb21t ZW50cy4gIEluIHRoZSBub3JtYWwgcG9zdG1hc3RlciBjYXNlLCB0aGUgc2hhcmVkIGhhc2gg dGFibGVzCkBAIC0xMTM3LDcgKzExMzcsNyBAQCBDaGVja1BvaW50UHJlZGljYXRlKHZvaWQp CiAgKiBzaGFyZWQgaGFzaCB0YWJsZXMuCiAgKi8KIHZvaWQKLUluaXRQcmVkaWNhdGVMb2Nr cyh2b2lkKQorUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogewogCUhBU0hDVEwJCWlu Zm87CiAJbG9uZwkJbWF4X3RhYmxlX3NpemU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvYmFja2VuZF9zdGF0dXMuYwppbmRleCAxY2NmNGM2ZDgzLi4zNGE1NWUyMTc3IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKQEAg LTc3LDcgKzc3LDcgQEAgc3RhdGljIHZvaWQgcGdzdGF0X3NldHVwX2JhY2tlbmRfc3RhdHVz X2NvbnRleHQodm9pZCk7CiAKIAogLyoKLSAqIFJlcG9ydCBzaGFyZWQtbWVtb3J5IHNwYWNl IG5lZWRlZCBieSBDcmVhdGVTaGFyZWRCYWNrZW5kU3RhdHVzLgorICogUmVwb3J0IHNoYXJl ZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IEJhY2tlbmRTdGF0dXNTaG1lbUluaXQuCiAgKi8K IFNpemUKIEJhY2tlbmRTdGF0dXNTaG1lbVNpemUodm9pZCkKQEAgLTExMyw3ICsxMTMsNyBA QCBCYWNrZW5kU3RhdHVzU2htZW1TaXplKHZvaWQpCiAgKiBkdXJpbmcgcG9zdG1hc3RlciBz dGFydHVwLgogICovCiB2b2lkCi1DcmVhdGVTaGFyZWRCYWNrZW5kU3RhdHVzKHZvaWQpCitC YWNrZW5kU3RhdHVzU2htZW1Jbml0KHZvaWQpCiB7CiAJU2l6ZQkJc2l6ZTsKIAlib29sCQlm b3VuZDsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYyBi L3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvcG9zdGluaXQuYwppbmRleCAwNGE0N2Q2ZTcwLi4z YjUwY2UxOWEyIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L3Bvc3Rpbml0 LmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaW5pdC9wb3N0aW5pdC5jCkBAIC01OTIsNyAr NTkyLDcgQEAgQmFzZUluaXQodm9pZCkKIAkvKiBEbyBsb2NhbCBpbml0aWFsaXphdGlvbiBv ZiBzdG9yYWdlIGFuZCBidWZmZXIgbWFuYWdlcnMgKi8KIAlJbml0U3luYygpOwogCXNtZ3Jp bml0KCk7Ci0JSW5pdEJ1ZmZlclBvb2xBY2Nlc3MoKTsKKwlJbml0QnVmZmVyTWFuYWdlckFj Y2VzcygpOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHRlbXBvcmFyeSBmaWxlIGFjY2VzcyBh ZnRlciBwZ3N0YXQsIHNvIHRoYXQgdGhlIHRlbXBvcmFyeQpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9idWZtZ3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgK aW5kZXggYzg0MjI1NzFiNy4uZWIwZmJhNDIzMCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9idWZtZ3IuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5oCkBA IC0yNDksNyArMjQ5LDcgQEAgZXh0ZXJuIEJ1ZmZlciBFeHRlbmRCdWZmZXJlZFJlbFRvKEJ1 ZmZlck1hbmFnZXJSZWxhdGlvbiBibXIsCiAJCQkJCQkJCSAgQmxvY2tOdW1iZXIgZXh0ZW5k X3RvLAogCQkJCQkJCQkgIFJlYWRCdWZmZXJNb2RlIG1vZGUpOwogCi1leHRlcm4gdm9pZCBJ bml0QnVmZmVyUG9vbEFjY2Vzcyh2b2lkKTsKK2V4dGVybiB2b2lkIEluaXRCdWZmZXJNYW5h Z2VyQWNjZXNzKHZvaWQpOwogZXh0ZXJuIHZvaWQgQXRFT1hhY3RfQnVmZmVycyhib29sIGlz Q29tbWl0KTsKIGV4dGVybiBjaGFyICpEZWJ1Z1ByaW50QnVmZmVyUmVmY291bnQoQnVmZmVy IGJ1ZmZlcik7CiBleHRlcm4gdm9pZCBDaGVja1BvaW50QnVmZmVycyhpbnQgZmxhZ3MpOwpA QCAtMzAwLDggKzMwMCw4IEBAIGV4dGVybiB2b2lkIExpbWl0QWRkaXRpb25hbExvY2FsUGlu cyh1aW50MzIgKmFkZGl0aW9uYWxfcGlucyk7CiBleHRlcm4gYm9vbCBFdmljdFVucGlubmVk QnVmZmVyKEJ1ZmZlciBidWYpOwogCiAvKiBpbiBidWZfaW5pdC5jICovCi1leHRlcm4gdm9p ZCBJbml0QnVmZmVyUG9vbCh2b2lkKTsKLWV4dGVybiBTaXplIEJ1ZmZlclNobWVtU2l6ZSh2 b2lkKTsKK2V4dGVybiB2b2lkIEJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9pZCk7CitleHRl cm4gU2l6ZSBCdWZmZXJNYW5hZ2VyU2htZW1TaXplKHZvaWQpOwogCiAvKiBpbiBsb2NhbGJ1 Zi5jICovCiBleHRlcm4gdm9pZCBBdFByb2NFeGl0X0xvY2FsQnVmZmVycyh2b2lkKTsKZGlm ZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmggYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL3ByZWRpY2F0ZS5oCmluZGV4IDE0ZWU5Yjk0YTIuLmQ1YzE0OTg2ZTIgMTAw NjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmgKKysrIGIvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGUuaApAQCAtMzcsNyArMzcsNyBAQCB0eXBlZGVmIHZv aWQgKlNlcmlhbGl6YWJsZVhhY3RIYW5kbGU7CiAgKi8KIAogLyogaG91c2VrZWVwaW5nIGZv ciBzaGFyZWQgbWVtb3J5IHByZWRpY2F0ZSBsb2NrIHN0cnVjdHVyZXMgKi8KLWV4dGVybiB2 b2lkIEluaXRQcmVkaWNhdGVMb2Nrcyh2b2lkKTsKK2V4dGVybiB2b2lkIFByZWRpY2F0ZUxv Y2tTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gU2l6ZSBQcmVkaWNhdGVMb2NrU2htZW1TaXpl KHZvaWQpOwogCiBleHRlcm4gdm9pZCBDaGVja1BvaW50UHJlZGljYXRlKHZvaWQpOwpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaCBiL3NyYy9pbmNsdWRl L3N0b3JhZ2UvcHJvY2FycmF5LmgKaW5kZXggOGNhNjA1MDQ2Mi4uNTZhZjBiNDBiMyAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jYXJyYXkuaAorKysgYi9zcmMvaW5j bHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCkBAIC0yMSw3ICsyMSw3IEBACiAKIAogZXh0ZXJu IFNpemUgUHJvY0FycmF5U2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgQ3JlYXRlU2hh cmVkUHJvY0FycmF5KHZvaWQpOworZXh0ZXJuIHZvaWQgUHJvY0FycmF5U2htZW1Jbml0KHZv aWQpOwogZXh0ZXJuIHZvaWQgUHJvY0FycmF5QWRkKFBHUFJPQyAqcHJvYyk7CiBleHRlcm4g dm9pZCBQcm9jQXJyYXlSZW1vdmUoUEdQUk9DICpwcm9jLCBUcmFuc2FjdGlvbklkIGxhdGVz dFhpZCk7CiAKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0Lmgg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCmluZGV4IGMzYzk3YjNmOGIuLmM5 ZDE3NWI2MzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0LmgK KysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxhZHQuaApAQCAtMjgsOCArMjgsOCBA QAogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1bmN0aW9ucyBpbiBzaW52YWxhZHQuYwogICov Ci1leHRlcm4gU2l6ZSBTSW52YWxTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBDcmVh dGVTaGFyZWRJbnZhbGlkYXRpb25TdGF0ZSh2b2lkKTsKK2V4dGVybiBTaXplIFNoYXJlZElu dmFsU2htZW1TaXplKHZvaWQpOworZXh0ZXJuIHZvaWQgU2hhcmVkSW52YWxTaG1lbUluaXQo dm9pZCk7CiBleHRlcm4gdm9pZCBTaGFyZWRJbnZhbEJhY2tlbmRJbml0KGJvb2wgc2VuZE9u bHkpOwogCiBleHRlcm4gdm9pZCBTSUluc2VydERhdGFFbnRyaWVzKGNvbnN0IFNoYXJlZElu dmFsaWRhdGlvbk1lc3NhZ2UgKmRhdGEsIGludCBuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5k X3N0YXR1cy5oCmluZGV4IDdiN2Y2ZjU5ZDAuLjk3ODc0MzAwYzMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3RhdHVzLmgKKysrIGIvc3JjL2luY2x1ZGUvdXRp bHMvYmFja2VuZF9zdGF0dXMuaApAQCAtMjk5LDcgKzI5OSw3IEBAIGV4dGVybiBQR0RMTElN UE9SVCBQZ0JhY2tlbmRTdGF0dXMgKk15QkVFbnRyeTsKICAqIC0tLS0tLS0tLS0KICAqLwog ZXh0ZXJuIFNpemUgQmFja2VuZFN0YXR1c1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lk IENyZWF0ZVNoYXJlZEJhY2tlbmRTdGF0dXModm9pZCk7CitleHRlcm4gdm9pZCBCYWNrZW5k U3RhdHVzU2htZW1Jbml0KHZvaWQpOwogCiAKIC8qIC0tLS0tLS0tLS0KLS0gCjIuMzkuMgoK --------------m53kuQHE6tGP7fYomInRc6ZC--