From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ian Jackson Subject: [PATCH 04/26] xentoolcore, _restrict_all: Introduce new library and implementation Date: Mon, 9 Oct 2017 16:57:06 +0100 Message-ID: <1507564648-7580-5-git-send-email-ian.jackson@eu.citrix.com> References: <1507564648-7580-1-git-send-email-ian.jackson@eu.citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1507564648-7580-1-git-send-email-ian.jackson@eu.citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xensource.com Cc: Ross Lagerwall , Stefano Stabellini , Wei Liu , Ian Jackson List-Id: xen-devel@lists.xenproject.org SW4gcHJhY3RpY2UsIHFlbXUgb3BlbnMgYSBncmVhdCBtYW55IGZkcy4gIFRyYWNraW5nIHRoZW0g YWxsIGRvd24gYW5kCnBsYXlpbmcgd2hhY2stYS1tb2xlIGlzIHVuYXR0cmFjdGl2ZS4gIEl0IGlz IGFsc28gcG90ZW50aWFsbHkgZnJhZ2lsZQppbiB0aGF0IGZ1dHVyZSBjaGFuZ2VzIG1pZ2h0IGFj Y2lkZW50YWxseSB1bmRvIG91ciBlZmZvcnRzLgoKSW5zdGVhZCwgd2UgYXJlIGdvaW5nIHRvIHRl YWNoIGFsbCB0aGUgWGVuIGxpYnJhcmllcyBob3cgdG8gcmVnaXN0ZXIKdGhlaXIgZmRzIHNvIHRo YXQgdGhleSBjYW4gYmUgbmV1dGVyZWQgd2l0aCBvbmUgcWVtdSBjYWxsLgoKUmlnaHQgbm93LCBu b3RoaW5nIHdpbGwgZ28gd3JvbmcgaWYgc29tZSB0cmllcyB0byBsaW5rIHdpdGhvdXQKLWx0b29s Y29yZSwgYnV0IHRoYXQgd2lsbCBzdG9wIHdvcmtpbmcgYXMgc29vbiBhcyB0aGUgZmlyc3Qgb3Ro ZXIgWGVuCmxpYnJhcnkgc3RhcnRzIHRvIHJlZ2lzdGVyLiAgU28gdGhpcyBwYXRjaCB3aWxsIGJl IGZvbGxvd2VkIGJ5IHRoZQpzdHViZG9tIGJ1aWxkIHVwZGF0ZSwgYW5kIHNob3VsZCBiZSBmb2xs b3dlZCBieSBhCk1JTklPU19VUFNUUkVBTV9SRVZJU0lPTiB1cGRhdGVkLgoKU2FkbHkgcWVtdSB1 cHN0cmVhbSdzIGNvbmZpZ3VyYXRpb24gYXJyYW5nZW1lbnRzIGFyZSB0b28gY3J1ZGUsIGJlaW5n CmtleWVkIHNvbGVseSBvZmYgdGhlIFhlbiB2ZXJzaW9uIG51bWJlci4gIFNvIHRoZXkgY2Fubm90 IHByb3ZpZGUKZm9yd2FyZC9iYWNrd2FyZCBidWlsZCBjb21wYXRpYmlsaXR5IGFjcm9zcyBjaGFu Z2VzIGluIHhlbi11bnN0YWJsZSwKbGlrZSB0aGlzIG9uZS4gIHFlbXUgcGF0Y2hlcyB0byBsaW5r IGFnYWluc3QgeGVudG9vbGNvcmUgc2hvdWxkIGJlCmFwcGxpZWQgaW4gcWVtdSB1cHN0cmVhbSBz byBhdm9pZCB0aGUgcWVtdSBidWlsZCBicmVha2luZyBhZ2FpbnN0IHRoZQpyZWxlYXNlZCB2ZXJz aW9uIG9mIFhlbiA0LjEwLgoKU2lnbmVkLW9mZi1ieTogSWFuIEphY2tzb24gPElhbi5KYWNrc29u QGV1LmNpdHJpeC5jb20+CkFja2VkLWJ5OiBXZWkgTGl1IDx3ZWkubGl1MkBjaXRyaXguY29tPgot LS0KdjM6IENoYW5nZSAlLm8gJS5vcGljIHJ1bGVzIGZvciBleHRyYSBkZXBlbmRlbmN5IHRvICQo TElCX09CSlMpIGFuZAogICAgJChQSUNfT0JKUykgaW5zdGVhZC4gIChSZXBvcnQgZnJvbSBSb3Nz IExhZ2Vyd2FsbC4pCgp2MjogUmVtb3ZlIG9ic29sZXRlICJ4eHgiIGNvbW1lbnQuCiAgICBObyBs b25nZXIgY2xhaW0gdG8gcHJvdmlkZSBpZGVtcG90ZW5jeS4KICAgIEFkZCBwYXJhZ3JhcGhzIHRv IGNvbW1pdCBtZXNzYWdlIGFib3V0IGNvbXBhdGliaWxpdHkuCgpTaWduZWQtb2ZmLWJ5OiBJYW4g SmFja3NvbiA8SWFuLkphY2tzb25AZXUuY2l0cml4LmNvbT4KLS0tCiAuZ2l0aWdub3JlICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNCArCiB0b29scy9SdWxlcy5t ayAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNiArKwogdG9vbHMvbGli cy9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogdG9vbHMv bGlicy90b29sY29yZS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICAgICAgfCAxMDEgKysrKysr KysrKysrKysrKysrKysKIHRvb2xzL2xpYnMvdG9vbGNvcmUvaGFuZGxlcmVnLmMgICAgICAgICAg ICAgICAgICAgIHwgIDc3ICsrKysrKysrKysrKysrKysKIHRvb2xzL2xpYnMvdG9vbGNvcmUvaW5j bHVkZS94ZW50b29sY29yZS5oICAgICAgICAgIHwgIDczICsrKysrKysrKysrKysrKwogdG9vbHMv bGlicy90b29sY29yZS9pbmNsdWRlL3hlbnRvb2xjb3JlX2ludGVybmFsLmggfCAxMDIgKysrKysr KysrKysrKysrKysrKysrCiB0b29scy9saWJzL3Rvb2xjb3JlL2xpYnhlbnRvb2xjb3JlLm1hcCAg ICAgICAgICAgICB8ICAgNyArKwogdG9vbHMvbGlicy90b29sY29yZS94ZW50b29sY29yZS5wYy5p biAgICAgICAgICAgICAgfCAgIDkgKysKIDkgZmlsZXMgY2hhbmdlZCwgMzgwIGluc2VydGlvbnMo KykKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL3Rvb2xjb3JlL01ha2VmaWxlCiBjcmVh dGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlicy90b29sY29yZS9oYW5kbGVyZWcuYwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHRvb2xzL2xpYnMvdG9vbGNvcmUvaW5jbHVkZS94ZW50b29sY29yZS5oCiBjcmVh dGUgbW9kZSAxMDA2NDQgdG9vbHMvbGlicy90b29sY29yZS9pbmNsdWRlL3hlbnRvb2xjb3JlX2lu dGVybmFsLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9saWJzL3Rvb2xjb3JlL2xpYnhlbnRv b2xjb3JlLm1hcAogY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2xzL2xpYnMvdG9vbGNvcmUveGVudG9v bGNvcmUucGMuaW4KCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCBm MzZkZGQyLi45NWY0MGYxIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisrKyBiLy5naXRpZ25vcmUK QEAgLTczLDYgKzczLDcgQEAgc3R1YmRvbS9saWJ4ZW5jYWxsLSoKIHN0dWJkb20vbGlieGVuZXZ0 Y2huLSoKIHN0dWJkb20vbGlieGVuZm9yZWlnbm1lbW9yeS0qCiBzdHViZG9tL2xpYnhlbmdudHRh Yi0qCitzdHViZG9tL2xpYnhlbnRvb2xjb3JlLSoKIHN0dWJkb20vbGlieGVudG9vbGxvZy0qCiBz dHViZG9tL2x3aXAtKgogc3R1YmRvbS9sd2lwLwpAQCAtOTgsNiArOTksOCBAQCB0b29scy9jb25m aWcuY2FjaGUKIGNvbmZpZy9Ub29scy5tawogY29uZmlnL1N0dWJkb20ubWsKIGNvbmZpZy9Eb2Nz Lm1rCit0b29scy9saWJzL3Rvb2xjb3JlL2hlYWRlcnMuY2hrCit0b29scy9saWJzL3Rvb2xjb3Jl L3hlbnRvb2xjb3JlLnBjCiB0b29scy9saWJzL3Rvb2xsb2cvaGVhZGVycy5jaGsKIHRvb2xzL2xp YnMvdG9vbGxvZy94ZW50b29sbG9nLnBjCiB0b29scy9saWJzL2V2dGNobi9oZWFkZXJzLmNoawpA QCAtMzUyLDYgKzM1NSw3IEBAIHRvb2xzL2luY2x1ZGUveGVuLWZvcmVpZ24vYXJtNjQuaAogLmdp dAogdG9vbHMvbWlzYy94ZW4taHB0b29sCiB0b29scy9taXNjL3hlbi1tZm5kdW1wCit0b29scy9s aWJzL3Rvb2xjb3JlL2luY2x1ZGUvXyouaAogdG9vbHMvbGlieGMvXyouW2NoXQogdG9vbHMvbGli eGwvXyouW2NoXQogdG9vbHMvbGlieGwvdGVzdGlkbApkaWZmIC0tZ2l0IGEvdG9vbHMvUnVsZXMu bWsgYi90b29scy9SdWxlcy5tawppbmRleCBkYmM3NjM1Li41ZTFjN2NiIDEwMDY0NAotLS0gYS90 b29scy9SdWxlcy5taworKysgYi90b29scy9SdWxlcy5tawpAQCAtMTAsNiArMTAsNyBAQCBleHBv cnQgX0lOU1RBTEwgOj0gJChJTlNUQUxMKQogSU5TVEFMTCA9ICQoWEVOX1JPT1QpL3Rvb2xzL2Ny b3NzLWluc3RhbGwKIAogWEVOX0lOQ0xVREUgICAgICAgID0gJChYRU5fUk9PVCkvdG9vbHMvaW5j bHVkZQorWEVOX0xJQlhFTlRPT0xDT1JFICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGNv cmUKIFhFTl9MSUJYRU5UT09MTE9HICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvdG9vbGxvZwog WEVOX0xJQlhFTkVWVENITiAgID0gJChYRU5fUk9PVCkvdG9vbHMvbGlicy9ldnRjaG4KIFhFTl9M SUJYRU5HTlRUQUIgICA9ICQoWEVOX1JPT1QpL3Rvb2xzL2xpYnMvZ250dGFiCkBAIC0xMDIsNiAr MTAzLDExIEBAIFNIREVQU19saWJ4ZW50b29sbG9nID0KIExETElCU19saWJ4ZW50b29sbG9nID0g JChTSERFUFNfbGlieGVudG9vbGxvZykgJChYRU5fTElCWEVOVE9PTExPRykvbGlieGVudG9vbGxv ZyQobGliZXh0ZW5zaW9uKQogU0hMSUJfbGlieGVudG9vbGxvZyAgPSAkKFNIREVQU19saWJ4ZW50 b29sbG9nKSAtV2wsLXJwYXRoLWxpbms9JChYRU5fTElCWEVOVE9PTExPRykKIAorQ0ZMQUdTX2xp YnhlbnRvb2xjb3JlID0gLUkkKFhFTl9MSUJYRU5UT09MQ09SRSkvaW5jbHVkZSAkKENGTEFHU194 ZW5pbmNsdWRlKQorU0hERVBTX2xpYnhlbnRvb2xjb3JlID0KK0xETElCU19saWJ4ZW50b29sY29y ZSA9ICQoU0hERVBTX2xpYnhlbnRvb2xjb3JlKSAkKFhFTl9MSUJYRU5UT09MQ09SRSkvbGlieGVu dG9vbGNvcmUkKGxpYmV4dGVuc2lvbikKK1NITElCX2xpYnhlbnRvb2xjb3JlICA9ICQoU0hERVBT X2xpYnhlbnRvb2xjb3JlKSAtV2wsLXJwYXRoLWxpbms9JChYRU5fTElCWEVOVE9PTENPUkUpCisK IENGTEFHU19saWJ4ZW5ldnRjaG4gPSAtSSQoWEVOX0xJQlhFTkVWVENITikvaW5jbHVkZSAkKENG TEFHU194ZW5pbmNsdWRlKQogU0hERVBTX2xpYnhlbmV2dGNobiA9CiBMRExJQlNfbGlieGVuZXZ0 Y2huID0gJChTSERFUFNfbGlieGVuZXZ0Y2huKSAkKFhFTl9MSUJYRU5FVlRDSE4pL2xpYnhlbmV2 dGNobiQobGliZXh0ZW5zaW9uKQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy9NYWtlZmlsZSBiL3Rv b2xzL2xpYnMvTWFrZWZpbGUKaW5kZXggMjAzNTg3My4uZWE5YTY0ZCAxMDA2NDQKLS0tIGEvdG9v bHMvbGlicy9NYWtlZmlsZQorKysgYi90b29scy9saWJzL01ha2VmaWxlCkBAIC0yLDYgKzIsNyBA QCBYRU5fUk9PVCA9ICQoQ1VSRElSKS8uLi8uLgogaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9S dWxlcy5tawogCiBTVUJESVJTLXkgOj0KK1NVQkRJUlMteSArPSB0b29sY29yZQogU1VCRElSUy15 ICs9IHRvb2xsb2cKIFNVQkRJUlMteSArPSBldnRjaG4KIFNVQkRJUlMteSArPSBnbnR0YWIKZGlm ZiAtLWdpdCBhL3Rvb2xzL2xpYnMvdG9vbGNvcmUvTWFrZWZpbGUgYi90b29scy9saWJzL3Rvb2xj b3JlL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczZGIwYmQK LS0tIC9kZXYvbnVsbAorKysgYi90b29scy9saWJzL3Rvb2xjb3JlL01ha2VmaWxlCkBAIC0wLDAg KzEsMTAxIEBACitYRU5fUk9PVCA9ICQoQ1VSRElSKS8uLi8uLi8uLgoraW5jbHVkZSAkKFhFTl9S T09UKS90b29scy9SdWxlcy5taworCitNQUpPUgk9IDEKK01JTk9SCT0gMAorU0hMSUJfTERGTEFH UyArPSAtV2wsLS12ZXJzaW9uLXNjcmlwdD1saWJ4ZW50b29sY29yZS5tYXAKKworQ0ZMQUdTCSs9 IC1XZXJyb3IgLVdtaXNzaW5nLXByb3RvdHlwZXMKK0NGTEFHUwkrPSAtSS4vaW5jbHVkZQorCitT UkNTLXkJKz0gaGFuZGxlcmVnLmMKKworTElCX09CSlMgOj0gJChwYXRzdWJzdCAlLmMsJS5vLCQo U1JDUy15KSkKK1BJQ19PQkpTIDo9ICQocGF0c3Vic3QgJS5jLCUub3BpYywkKFNSQ1MteSkpCisK K0xJQiA6PSBsaWJ4ZW50b29sY29yZS5hCitpZm5lcSAoJChub3NoYXJlZGxpYnMpLHkpCitMSUIg Kz0gbGlieGVudG9vbGNvcmUuc28KK2VuZGlmCisKK1BLR19DT05GSUcgOj0geGVudG9vbGNvcmUu cGMKK1BLR19DT05GSUdfVkVSU0lPTiA6PSAkKE1BSk9SKS4kKE1JTk9SKQorCitpZm5lcSAoJChD T05GSUdfTElCWENfTUlOSU9TKSx5KQorUEtHX0NPTkZJR19JTlNUIDo9ICQoUEtHX0NPTkZJRykK KyQoUEtHX0NPTkZJR19JTlNUKTogUEtHX0NPTkZJR19QUkVGSVggPSAkKHByZWZpeCkKKyQoUEtH X0NPTkZJR19JTlNUKTogUEtHX0NPTkZJR19JTkNESVIgPSAkKGluY2x1ZGVkaXIpCiskKFBLR19D T05GSUdfSU5TVCk6IFBLR19DT05GSUdfTElCRElSID0gJChsaWJkaXIpCitlbmRpZgorCitQS0df Q09ORklHX0xPQ0FMIDo9ICQoZm9yZWFjaCBwYywkKFBLR19DT05GSUcpLCQoUEtHX0NPTkZJR19E SVIpLyQocGMpKQorCiskKFBLR19DT05GSUdfTE9DQUwpOiBQS0dfQ09ORklHX1BSRUZJWCA9ICQo WEVOX1JPT1QpCiskKFBLR19DT05GSUdfTE9DQUwpOiBQS0dfQ09ORklHX0lOQ0RJUiA9ICQoWEVO X0xJQlhFTlRPT0xDT1JFKS9pbmNsdWRlCiskKFBLR19DT05GSUdfTE9DQUwpOiBQS0dfQ09ORklH X0xJQkRJUiA9ICQoQ1VSRElSKQorCitBVVRPSU5DUz1pbmNsdWRlL194ZW50b29sY29yZV9saXN0 LmgKKworLlBIT05ZOiBhbGwKK2FsbDogYnVpbGQKKworLlBIT05ZOiBidWlsZAorYnVpbGQ6CisJ JChNQUtFKSBsaWJzCisKKy5QSE9OWTogbGlicworbGliczogaGVhZGVycy5jaGsgJChMSUIpICQo UEtHX0NPTkZJR19JTlNUKSAkKFBLR19DT05GSUdfTE9DQUwpCisKKyQoTElCX09CSlMpOiAkKEFV VE9JTkNTKQorJChQSUNfT0JKUyk6ICQoQVVUT0lOQ1MpCisKK2hlYWRlcnMuY2hrOiAkKHdpbGRj YXJkIGluY2x1ZGUvKi5oKSAkKEFVVE9JTkNTKQorCitpbmNsdWRlL194ZW50b29sY29yZV9saXN0 Lmg6ICQoWEVOX0lOQ0xVREUpL3hlbi1leHRlcm5hbC9ic2Qtc3lzLXF1ZXVlLWgtc2VkZGVyeSAk KFhFTl9JTkNMVURFKS94ZW4tZXh0ZXJuYWwvYnNkLXN5cy1xdWV1ZS5oCisJJChQRVJMKSAkXiAt LXByZWZpeD14ZW50b29sY29yZSA+JEAubmV3CisJJChjYWxsIG1vdmUtaWYtY2hhbmdlZCwkQC5u ZXcsJEApCisKK2xpYnhlbnRvb2xjb3JlLmE6ICQoTElCX09CSlMpCisJJChBUikgcmMgJEAgJF4K KworbGlieGVudG9vbGNvcmUuc286IGxpYnhlbnRvb2xjb3JlLnNvLiQoTUFKT1IpCisJJChTWU1M SU5LX1NITElCKSAkPCAkQAorbGlieGVudG9vbGNvcmUuc28uJChNQUpPUik6IGxpYnhlbnRvb2xj b3JlLnNvLiQoTUFKT1IpLiQoTUlOT1IpCisJJChTWU1MSU5LX1NITElCKSAkPCAkQAorCitsaWJ4 ZW50b29sY29yZS5zby4kKE1BSk9SKS4kKE1JTk9SKTogJChQSUNfT0JKUykgbGlieGVudG9vbGNv cmUubWFwCisJJChDQykgJChMREZMQUdTKSAtV2wsJChTT05BTUVfTERGTEFHKSAtV2wsbGlieGVu dG9vbGNvcmUuc28uJChNQUpPUikgJChTSExJQl9MREZMQUdTKSAtbyAkQCAkKFBJQ19PQkpTKSAk KEFQUEVORF9MREZMQUdTKQorCisuUEhPTlk6IGluc3RhbGwKK2luc3RhbGw6IGJ1aWxkCisJJChJ TlNUQUxMX0RJUikgJChERVNURElSKSQobGliZGlyKQorCSQoSU5TVEFMTF9ESVIpICQoREVTVERJ UikkKGluY2x1ZGVkaXIpCisJJChJTlNUQUxMX1NITElCKSBsaWJ4ZW50b29sY29yZS5zby4kKE1B Sk9SKS4kKE1JTk9SKSAkKERFU1RESVIpJChsaWJkaXIpCisJJChJTlNUQUxMX0RBVEEpIGxpYnhl bnRvb2xjb3JlLmEgJChERVNURElSKSQobGliZGlyKQorCSQoU1lNTElOS19TSExJQikgbGlieGVu dG9vbGNvcmUuc28uJChNQUpPUikuJChNSU5PUikgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW50 b29sY29yZS5zby4kKE1BSk9SKQorCSQoU1lNTElOS19TSExJQikgbGlieGVudG9vbGNvcmUuc28u JChNQUpPUikgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW50b29sY29yZS5zbworCSQoSU5TVEFM TF9EQVRBKSBpbmNsdWRlL3hlbnRvb2xjb3JlLmggJChERVNURElSKSQoaW5jbHVkZWRpcikKKwkk KElOU1RBTExfREFUQSkgeGVudG9vbGNvcmUucGMgJChERVNURElSKSQoUEtHX0lOU1RBTExESVIp CisKKy5QSE9OWTogdWluc3RhbGwKK3VuaW5zdGFsbDoKKwlybSAtZiAkKERFU1RESVIpJChQS0df SU5TVEFMTERJUikveGVudG9vbGNvcmUucGMKKwlybSAtZiAkKERFU1RESVIpJChpbmNsdWRlZGly KS94ZW50b29sY29yZS5oCisJcm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW50b29sY29y ZS5zbworCXJtIC1mICQoREVTVERJUikkKGxpYmRpcikvbGlieGVudG9vbGNvcmUuc28uJChNQUpP UikKKwlybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYnhlbnRvb2xjb3JlLnNvLiQoTUFKT1Ip LiQoTUlOT1IpCisJcm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJ4ZW50b29sY29yZS5hCisK Ky5QSE9OWTogVEFHUworVEFHUzoKKwlldGFncyAtdCAqLmMgKi5oCisKKy5QSE9OWTogY2xlYW4K K2NsZWFuOgorCXJtIC1yZiAqLnJwbSAkKExJQikgKn4gJChERVBTX1JNKSAkKExJQl9PQkpTKSAk KFBJQ19PQkpTKQorCXJtIC1mIGxpYnhlbnRvb2xjb3JlLnNvLiQoTUFKT1IpLiQoTUlOT1IpIGxp YnhlbnRvb2xjb3JlLnNvLiQoTUFKT1IpCisJcm0gLWYgaGVhZGVycy5jaGsKKwlybSAtZiB4ZW50 b29sY29yZS5wYworCisuUEhPTlk6IGRpc3RjbGVhbgorZGlzdGNsZWFuOiBjbGVhbgpkaWZmIC0t Z2l0IGEvdG9vbHMvbGlicy90b29sY29yZS9oYW5kbGVyZWcuYyBiL3Rvb2xzL2xpYnMvdG9vbGNv cmUvaGFuZGxlcmVnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZlZmZi MQotLS0gL2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvdG9vbGNvcmUvaGFuZGxlcmVnLmMKQEAg LTAsMCArMSw3NyBAQAorLyoKKyAqIGhhbmRscmVnLmMKKyAqCisgKiBpbXBsZW1lbnRhdGlvbiBv ZiB4ZW50b29sY29yZV9yZXN0cmljdF9hbGwKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ2l0 cml4CisgKiBQYXJ0IG9mIGEgZ2VuZXJpYyBsb2dnaW5nIGludGVyZmFjZSB1c2VkIGJ5IHZhcmlv dXMgZG9tMCB1c2VybGFuZCBsaWJyYXJpZXMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsKKyAqIHZlcnNp b24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNI QU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUg R05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor ICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIg R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IElmIG5v dCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKyAqLworCisjaW5jbHVkZSAi eGVudG9vbGNvcmVfaW50ZXJuYWwuaCIKKworI2luY2x1ZGUgPHB0aHJlYWQuaD4KKyNpbmNsdWRl IDxhc3NlcnQuaD4KKworc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBoYW5kbGVzX2xvY2sgPSBQVEhS RUFEX01VVEVYX0lOSVRJQUxJWkVSOworc3RhdGljIFhFTlRPT0xDT1JFX0xJU1RfSEVBRCgsIFhl bnRvb2xjb3JlX19BY3RpdmVfSGFuZGxlKSBoYW5kbGVzOworCitzdGF0aWMgdm9pZCBsb2NrKHZv aWQpIHsKKyAgICBpbnQgZSA9IHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZoYW5kbGVzX2xvY2spOwor ICAgIGFzc2VydCghZSk7Cit9CisKK3N0YXRpYyB2b2lkIHVubG9jayh2b2lkKSB7CisgICAgaW50 IGUgPSBwdGhyZWFkX211dGV4X3VubG9jaygmaGFuZGxlc19sb2NrKTsKKyAgICBhc3NlcnQoIWUp OworfQorCit2b2lkIHhlbnRvb2xjb3JlX19yZWdpc3Rlcl9hY3RpdmVfaGFuZGxlKFhlbnRvb2xj b3JlX19BY3RpdmVfSGFuZGxlICphaCkgeworICAgIGxvY2soKTsKKyAgICBYRU5UT09MQ09SRV9M SVNUX0lOU0VSVF9IRUFEKCZoYW5kbGVzLCBhaCwgZW50cnkpOworICAgIHVubG9jaygpOworfQor Cit2b2lkIHhlbnRvb2xjb3JlX19kZXJlZ2lzdGVyX2FjdGl2ZV9oYW5kbGUoWGVudG9vbGNvcmVf X0FjdGl2ZV9IYW5kbGUgKmFoKSB7CisgICAgbG9jaygpOworICAgIFhFTlRPT0xDT1JFX0xJU1Rf UkVNT1ZFKGFoLCBlbnRyeSk7CisgICAgdW5sb2NrKCk7Cit9CisKK2ludCB4ZW50b29sY29yZV9y ZXN0cmljdF9hbGwodWludDMyX3QgZG9taWQpIHsKKyAgICBpbnQgcjsKKyAgICBYZW50b29sY29y ZV9fQWN0aXZlX0hhbmRsZSAqYWg7CisKKyAgICBsb2NrKCk7CisgICAgWEVOVE9PTENPUkVfTElT VF9GT1JFQUNIKGFoLCAmaGFuZGxlcywgZW50cnkpIHsKKyAgICAgICAgciA9IGFoLT5yZXN0cmlj dF9jYWxsYmFjayhhaCwgZG9taWQpOworICAgICAgICBpZiAocikgZ290byBvdXQ7CisgICAgfQor CisgICAgciA9IDA7Cisgb3V0OgorICAgIHVubG9jaygpOworICAgIHJldHVybiByOworfQorCisv KgorICogTG9jYWwgdmFyaWFibGVzOgorICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNE IgorICogYy1iYXNpYy1vZmZzZXQ6IDQKKyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMt bW9kZTogbmlsCisgKiBFbmQ6CisgKi8KZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvdG9vbGNvcmUv aW5jbHVkZS94ZW50b29sY29yZS5oIGIvdG9vbHMvbGlicy90b29sY29yZS9pbmNsdWRlL3hlbnRv b2xjb3JlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJlMmFmMQotLS0g L2Rldi9udWxsCisrKyBiL3Rvb2xzL2xpYnMvdG9vbGNvcmUvaW5jbHVkZS94ZW50b29sY29yZS5o CkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiB4ZW50b29sY29yZS5oCisgKgorICogQ29weXJpZ2h0 IChjKSAyMDE3IENpdHJpeAorICogCisgKiBDb21tb24gZmVhdHVyZXMgdXNlZC9wcm92aWRlZCBi eSBhbGwgWGVuIHRvb2xzIGxpYnJhcmllcworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247CisgKiB2ZXJzaW9u IDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO VQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdl bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2lmbmRlZiBYRU5U T09MQ09SRV9ICisjZGVmaW5lIFhFTlRPT0xDT1JFX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgor CisvKgorICogaW50IHhlbnRvb2xjb3JlX3Jlc3RyaWN0X2FsbCh1aW50MzJfdCBkb21pZCk7Cisg KgorICogQXJyYW5nZXMgdGhhdCBYZW4gbGlicmFyeSBoYW5kbGVzIChmZHMgZXRjLikgd2hpY2gg YXJlIGN1cnJlbnRseSBoZWxkCisgKiBieSBYZW4gbGlicmFyaWVzLCBjYW4gbm8gbG9uZ2VyIGJl IHVzZWQgb3RoZXIgdGhhbiB0byBhZmZlY3QgZG9taWQuCisgKgorICogSWYgdGhpcyBjYW5ub3Qg YmUgYWNoaWV2ZWQsIHJldHVybnMgLTEgYW5kIHNldHMgZXJybm8uCisgKiBJZiBjYWxsZWQgYWdh aW4gd2l0aCB0aGUgc2FtZSBkb21pZCwgaXQgbWF5IHN1Y2NlZWQsIG9yIGl0IG1heQorICogZmFp bCAoZXZlbiB0aG91Z2ggc3VjaCBhIGNhbGwgaXMgcG90ZW50aWFsbHkgbWVhbmluZ2Z1bCkuCisg KiAoSWYgY2FsbGVkIGFnYWluIHdpdGggYSBkaWZmZXJlbnQgZG9taWQsIGl0IHdpbGwgbmVjZXNz YXJpbHkgZmFpbC4pCisgKgorICogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiAgSU1QT1JUQU5UIC0gSU1QTEVN RU5UQVRJT04gU1RBVFVTCisgKgorICogIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBpbXBsZW1lbnRl ZCBpbnNvZmFyIGFzIGl0IGFwcGVhcnMgbmVjZXNzYXJ5CisgKiAgZm9yIHRoZSBwdXJwb3NlcyBv ZiBydW5uaW5nIGEgZGVwcml2aWxlZ2VkIHFlbXUuCisgKgorICogIEhvd2V2ZXIsIHRoaXMgZnVu Y3Rpb24gaXMgTk9UIGltcGxlbWVudGVkIGZvciBhbGwgWGVuIGxpYnJhcmllcy4KKyAqICBGb3Ig ZWFjaCB1c2UgY2FzZSBvZiB0aGlzIGZ1bmN0aW9uLCB0aGUgZGVzaWduZXIgbXVzdCBldmFsdWF0 ZSBhbmQKKyAqICBhdWRpdCB3aGV0aGVyIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzdWZmaWNpZW50 IGluIHRoZWlyIHNwZWNpZmljCisgKiAgY29udGV4dC4KKyAqCisgKiAgT2YgY291cnNlLCBwYXRj aGVzIHRvIGV4dGVuZCB0aGUgaW1wbGVtZW50YXRpb24gYXJlIHZlcnkgd2VsY29tZS4KKyAqICA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQorICoKKyAqIFRocmVhZCBzYWZlLgorICoKKyAqIFdlIGV4cGVjdCB0aGF0IG5v IGNhbGxlcnMgZG8gdGhlIGZvbGxvd2luZzoKKyAqICAgLSBpbiBvbmUgdGhyZWFkIGNhbGwgeGVu X3NvbWVsaWJyYXJ5X29wZW58Y2xvc2UKKyAqICAgLSBpbiBhbm90aGVyIHRocmVhZCBjYWxsIGZv cmsKKyAqICAgLSBpbiB0aGUgY2hpbGQgb2YgdGhlIGZvcmssIGJlZm9yZSBleGVjLCBjYWxsCisg KiAgICAgeGVuX3NvbWVbb3RoZXJdbGlicmFyeV9vcGVufGNsb3NlIG9yIHhlbnRvb2xjb3JlX3Jl c3RyaWN0X2FsbAorICoKKyAqLworaW50IHhlbnRvb2xjb3JlX3Jlc3RyaWN0X2FsbCh1aW50MzJf dCBkb21pZCk7CisKKyNlbmRpZiAvKiBYRU5UT09MQ09SRV9IICovCisKKy8qCisgKiBMb2NhbCB2 YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2lj LW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAq IEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy90b29sY29yZS9pbmNsdWRlL3hlbnRv b2xjb3JlX2ludGVybmFsLmggYi90b29scy9saWJzL3Rvb2xjb3JlL2luY2x1ZGUveGVudG9vbGNv cmVfaW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzBlMjlk Ci0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy90b29sY29yZS9pbmNsdWRlL3hlbnRvb2xj b3JlX2ludGVybmFsLmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiB4ZW50b29sY29yZV9pbnRl cm5hbC5oCisgKgorICogSW50ZXJmYWNlcyBvZiB4ZW50b29sY29yZSBkaXJlY3RlZCBpbnRlcm5h bGx5IGF0IG90aGVyIFhlbiBsaWJyYXJpZXMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ2l0 cml4CisgKiAKKyAqIENvbW1vbiBjb2RlIHVzZWQgYnkgYWxsIFhlbiB0b29scyBsaWJyYXJpZXMK KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uOworICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgor ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBh bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9s aWNlbnNlcy8+LgorICovCisKKyNpZm5kZWYgWEVOVE9PTENPUkVfSU5URVJOQUxfSAorI2RlZmlu ZSBYRU5UT09MQ09SRV9JTlRFUk5BTF9ICisKKyNpbmNsdWRlICJ4ZW50b29sY29yZS5oIgorI2lu Y2x1ZGUgIl94ZW50b29sY29yZV9saXN0LmgiCisKKy8qLS0tLS0tLS0tLSBhY3RpdmUgaGFuZGxl IHJlZ2lzdHJhdGlvbiAtLS0tLS0tLS0tKi8KKworLyoKKyAqIFRoaXMgaXMgYWxsIHRvIHN1cHBv cnQgeGVudG9vbGNvcmVfcmVzdHJpY3RfYWxsCisgKgorICogQW55IGxpYnhsIGxpYnJhcnkgdGhh dCBvcGVucyBhIFhlbiBjb250cm9sIGhhbmRsZSBvZiBhbnkga2luZCB3aGljaAorICogbWlnaHQg YWxsb3cgbWFuaXB1bGF0aW9uIG9mIGRvbTAsIG9mIG90aGVyIGRvbWFpbnMsIG9yIG9mIHRoZSB3 aG9sZQorICogbWFjaGluZSwgbXVzdDoKKyAqICAgSS4gYXJyYW5nZSB0aGF0IHRoZWlyIG93biBk YXRhc3RydWN0dXJlIGNvbnRhaW5zIGEKKyAqICAgICAgICAgIFhlbnRvb2xjb3JlX19BY3RpdmVf SGFuZGxlCisgKiAKKyAqICAgSUkuIGR1cmluZyB0aGUgIm9wZW4gaGFuZGxlIiBmdW5jdGlvbgor ICogICAgIDEuIGFsbG9jYXRlIHRoZSBtZW1vcnkgZm9yIHRoZSBvd24gZGF0YXN0cnVjdHVyZSBh bmQgaW5pdGlhbGlzZSBpdAorICogICAgIDIuIHNldCBYZW50b29sY29yZV9fQWN0aXZlX0hhbmRs ZS5yZXN0cmljdF9jYWxsYmFjaworICogICAgIDMuIGNhbGwgeGVudG9vbGNvcmVfX3JlZ2lzdGVy X2FjdGl2ZV9oYW5kbGUKKyAqICAgICAgIDNhLiBpZiB0aGUgb3BlbiBmYWlscywgY2FsbCB4ZW50 b29sY29yZV9fZGVyZWdpc3Rlcl9hY3RpdmVfaGFuZGxlCisgKiAgICAgNC4gT05MWSBUSEVOIGFj dHVhbGx5IG9wZW4gdGhlIHJlbGV2YW50IGZkIG9yIHdoYXRldmVyCisgKgorICogICBJSUkuIGR1 cmluZyB0aGUgImNsb3NlIGhhbmRsZSIgZnVuY3Rpb24KKyAqICAgICAxLiBGSVJTVCBjbG9zZSB0 aGUgcmVsZXZhbnQgZmQgb3Igd2hhdGV2ZXIKKyAqICAgICAyLiBjYWxsIHhlbnRvb2xjb3JlX19k ZXJlZ2lzdGVyX2FjdGl2ZV9oYW5kbGUKKyAqCisgKiAgIElWLiBpbiB0aGUgcmVzdHJpY3RfY2Fs bGJhY2sgZnVuY3Rpb24KKyAqICAgICAqIEFycmFuZ2UgdGhhdCB0aGUgZmQgKG9yIG90aGVyIGhh bmRsZSkgY2FuIG5vIGxvbmdlciBieSB1c2VkCisgKiAgICAgICBvdGhlciB0aGFuIHdpdGggcmVz cGVjdCB0byBkb21haW4gZG9taWQuCisgKiAgICAgKiBGdXR1cmUgYXR0ZW1wdHMgdG8gbWFuaXB1 bGF0ZSBvdGhlciBkb21haW5zIChvciB0aGUgd2hvbGUKKyAqICAgICAgIGhvc3QpIHZpYSB0aGlz IGhhbmRsZSBtdXN0IGNhdXNlIGFuIGVycm9yIHJldHVybiAoYW5kCisgKiAgICAgICBwZXJoYXBz IGEgbG9nIG1lc3NhZ2UpLCBub3QgYSBjcmFzaAorICogICAgICogSWYgc2VsZWN0aXZlIHJlc3Ry aWN0aW9uIGlzIG5vdCBwb3NzaWJsZSwgdGhlIGhhbmRsZSBtdXN0CisgKiAgICAgICBiZSBjb21w bGV0ZWx5IGludmFsaWRhdGVkIHNvIHRoYXQgaXQgaXMgbm90IHVzZWFibGU7CisgKiAgICAgICBz dWJzZXF1ZW50IG1hbmlwdWxhdGlvbnMgbWF5IG5vdCBjcmFzaAorICogICAgICogVGhlIHJlc3Ry aWN0X2NhbGxiYWNrIGZ1bmN0aW9uIHNob3VsZCBub3Qgbm9ybWFsbHkgZmFpbAorICogICAgICAg aWYgdGhpcyBjYW4gYmUgZWFzaWx5IGF2b2lkZWQgLSBpdCBpcyBiZXR0ZXIgdG8gbWFrZSB0aGUK KyAqICAgICAgIGhhbmRsZSBub25mdW5jdGlvbiBpbnN0ZWFkLgorICogICAgICogTkIgdGhhdCBy ZXN0cmljdF9jYWxsYmFjayBtaWdodCBiZSBjYWxsZWQgYWdhaW4uICBUaGF0IG11c3QKKyAqICAg ICAgIHdvcmsgcHJvcGVybHk6IGlmIHRoZSBkb21pZCBpcyB0aGUgc2FtZSwgaXQgaXMgaWRlbXBv dGVudC4KKyAqICAgICAgIElmIHRoZSBkb21pZCBpcyBkaWZmZXJlbnQuIHRoZW4gZWl0aGVyIHRo ZSBoYW5kbGUgbXVzdCBiZQorICogICAgICAgY29tcGxldGVseSBpbnZhbGlkYXRlZCwgb3IgcmVz dHJpY3RfY2FsbGJhY2sgbXVzdCBmYWlsLikKKyAqCisgKiBUaHJlYWQgc2FmZXR5OgorICogICAg eGVudG9vbGNvcmVfX1tkZV1yZWdpc3Rlcl9hY3RpdmVfaGFuZGxlIGFyZSB0aHJlYWRzYWZlCisg KiAgICAgIGJ1dCBNVVNUIE5PVCBiZSBjYWxsZWQgd2l0aGluIHJlc3RyaWN0X2NhbGxiYWNrCisg KgorICogRm9yayBzYWZldHk6CisgKiAgICBMaWJyYXJpZXMgd2hpY2ggdXNlIHRoZXNlIGZ1bmN0 aW9ucyBkbyBub3Qgb24gdGhhdCBhY2NvdW50CisgKiAgICBuZWVkIHRvIHRha2UgYW55IHNwZWNp YWwgY2FyZSBvdmVyIGZvcmtzIG9jY3VycmluZyBpbgorICogICAgb3RoZXIgdGhyZWFkcywgcHJv dmlkZWQgdGhhdCB0aGV5IG9iZXkgdGhlIHJ1bGVzIGFib3ZlLgorICovCisKK3R5cGVkZWYgc3Ry dWN0IFhlbnRvb2xjb3JlX19BY3RpdmVfSGFuZGxlIFhlbnRvb2xjb3JlX19BY3RpdmVfSGFuZGxl OworCit0eXBlZGVmIGludCBYZW50b29sY29yZV9fUmVzdHJpY3RfQ2FsbGJhY2soWGVudG9vbGNv cmVfX0FjdGl2ZV9IYW5kbGUqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHVpbnQzMl90IGRvbWlkKTsKKworc3RydWN0IFhlbnRvb2xjb3JlX19BY3RpdmVfSGFu ZGxlIHsKKyAgICBYZW50b29sY29yZV9fUmVzdHJpY3RfQ2FsbGJhY2sgKnJlc3RyaWN0X2NhbGxi YWNrOworICAgIFhFTlRPT0xDT1JFX0xJU1RfRU5UUlkoWGVudG9vbGNvcmVfX0FjdGl2ZV9IYW5k bGUpIGVudHJ5OworfTsKKwordm9pZCB4ZW50b29sY29yZV9fcmVnaXN0ZXJfYWN0aXZlX2hhbmRs ZShYZW50b29sY29yZV9fQWN0aXZlX0hhbmRsZSopOwordm9pZCB4ZW50b29sY29yZV9fZGVyZWdp c3Rlcl9hY3RpdmVfaGFuZGxlKFhlbnRvb2xjb3JlX19BY3RpdmVfSGFuZGxlKik7CisKKyNlbmRp ZiAvKiBYRU5UT09MQ09SRV9JTlRFUk5BTF9IICovCisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6 CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDog NAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAq LwpkaWZmIC0tZ2l0IGEvdG9vbHMvbGlicy90b29sY29yZS9saWJ4ZW50b29sY29yZS5tYXAgYi90 b29scy9saWJzL3Rvb2xjb3JlL2xpYnhlbnRvb2xjb3JlLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5lYjVkMjUxCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy90 b29sY29yZS9saWJ4ZW50b29sY29yZS5tYXAKQEAgLTAsMCArMSw3IEBACitWRVJTXzEuMCB7CisJ Z2xvYmFsOgorCQl4ZW50b29sY29yZV9yZXN0cmljdF9hbGw7CisJCXhlbnRvb2xjb3JlX19yZWdp c3Rlcl9hY3RpdmVfaGFuZGxlOworCQl4ZW50b29sY29yZV9fZGVyZWdpc3Rlcl9hY3RpdmVfaGFu ZGxlOworCWxvY2FsOiAqOyAvKiBEbyBub3QgZXhwb3NlIGFueXRoaW5nIGJ5IGRlZmF1bHQgKi8K K307CmRpZmYgLS1naXQgYS90b29scy9saWJzL3Rvb2xjb3JlL3hlbnRvb2xjb3JlLnBjLmluIGIv dG9vbHMvbGlicy90b29sY29yZS94ZW50b29sY29yZS5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi41NWZmNGUyCi0tLSAvZGV2L251bGwKKysrIGIvdG9vbHMvbGlicy90 b29sY29yZS94ZW50b29sY29yZS5wYy5pbgpAQCAtMCwwICsxLDkgQEAKK3ByZWZpeD1AQHByZWZp eEBACitpbmNsdWRlZGlyPUBAaW5jZGlyQEAKK2xpYmRpcj1AQGxpYmRpckBACisKK05hbWU6IFhl bnRvb2xjb3JlCitEZXNjcmlwdGlvbjogQ2VudHJhbCBzdXBwb3J0IGZvciBYZW4gSHlwZXJ2aXNv ciB1c2VybGFuZCBsaWJyYXJpZXMKK1ZlcnNpb246IEBAdmVyc2lvbkBACitDZmxhZ3M6IC1JJHtp bmNsdWRlZGlyfQorTGliczogQEBsaWJzZmxhZ0BAJHtsaWJkaXJ9IC1seGVudG9vbGNvcmUKLS0g CjIuMS40CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18K WGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwczovL2xp c3RzLnhlbi5vcmcveGVuLWRldmVsCg==