From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-yw1-x112f.google.com (mail-yw1-x112f.google.com [IPv6:2607:f8b0:4864:20::112f]) by sourceware.org (Postfix) with ESMTPS id 6FDB73858C29 for ; Mon, 5 Feb 2024 19:26:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6FDB73858C29 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=golang.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=golang.org ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6FDB73858C29 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::112f ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707161198; cv=none; b=iSNjUVFI3q24wgUYFRZ1OkMV+2B/WB4weIo50/SXqxeWB3zWk7ejoJoeW5mobvM/DZD89w1kaLOCBa9nRANLSW2+YW1qlZwdCpYahiWeVeTEQDMCC8EREPXkahyvqRHexsdRqb18ymsKwcPfN74Hn09egzQQzO/5dAU5rp41OPM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707161198; c=relaxed/simple; bh=XwwJlXOy3emkYPXAZGx5ECwlLbLG6laGBgCVJ+H1GOU=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=MD9hUJiEAKE073Ew0TpcxtT+CN+d+OUInZpAyz429ZYkH9pvbNMHU5tD4J3qPhAYTCLVT8LTD4zgF1EEI9nb8lCDOpxWBNQkXmaiJwkYDrMtdrzhKPdXp/QaGf5mq+wRJqmU3wXLiC5ksZK2/BlSQcRH+9Q+Fri96KDJ+5x+nnE= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-yw1-x112f.google.com with SMTP id 00721157ae682-60442a4132fso15151367b3.1 for ; Mon, 05 Feb 2024 11:26:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=golang-org.20230601.gappssmtp.com; s=20230601; t=1707161194; x=1707765994; darn=gcc.gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=OLQx9ZIb+dCuFzq4SaiR/OSYb2a63rQXtWxhY/ZgbT0=; b=wDYARLtbNPs0uN5f7EaMwlWbtZzlHKru7TaV/mdC1OzXGx5ArVFVs7tM5MH6SySKmK BuTa4Cw+2MokqYlyYZNaJtlyf6KPmLS4NP+o6t9zIXqOBrt3WWv4txbzDqUsPK2JDX7S NzxPAlMAJ4XHJooyk0sKD1zI59wLek14NsTatNsQyZRI2wl1T7w+Y54y0DfQH8vROQaI xEB/YfBg2rNCBUZEPi8bUutI7l4neUQHTOqDZ49ED4W8W46tw4nhZY2JgaKNNJEQm3xM cl6g1vdAw9TivjgRx8JRXGvScQk5bDCu2wjZV9u5juv2llYXOgoL1rj9MiYabowSohiJ ZMxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707161194; x=1707765994; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=OLQx9ZIb+dCuFzq4SaiR/OSYb2a63rQXtWxhY/ZgbT0=; b=o3YuI+4pbc2hGwsNfC8gclLXDZh6APS2Hacjc2WyUkTm8cv2PZHMou0vD50+ScW6G2 SxM8/Rye7bQgailS7/Szru7L1WZmPCqkqbf8EOBFuGsOKXj4Wfc1vNajEINEIcmFL5EO eTM4wYanEYxHNvO589SQAhmc91xHcwfPEQroh4633CWJkoDTIyIt7Xl84/NMpliPfyqT AenHeuGVh1tScJxXVAbNBH8iyRlcM6XnvIUeUbRD5SqpHqa8LCERZnV3/OZDIYiS7Xdp yOuGRmT3o78aRyz6JEYmsrMVhDohjxRVwCNuJA03iFwICfXV/ktcEDb+nMKlgIKMi8oQ mD1g== X-Gm-Message-State: AOJu0YyIQjE6OV1VQEL2LmES32ZvVAYQrW3GUU73QB2WI5C+iaTXcr9s +yvkBOePxVNAWSz4NxZZYKuE4W2l5i4bS2flZv6Qx2PTfy/0LJb0gUrX94prmydxdlu0JENRM7i crxFu6VoD00sqsBHuCa2OLco39yP98350RltdWljOxLsDsOJ2XNo= X-Google-Smtp-Source: AGHT+IHejdO5TL33JQEqAQZ1Go5iCTsz6oP2bAvNiMrInI0Oki/L7aX6uOZYkzKpl5w0sQCkpAV7rTdWCL2GTcdw6b4= X-Received: by 2002:a81:ae0f:0:b0:5ff:abb3:6632 with SMTP id m15-20020a81ae0f000000b005ffabb36632mr565114ywh.26.1707161194304; Mon, 05 Feb 2024 11:26:34 -0800 (PST) MIME-Version: 1.0 From: Ian Lance Taylor Date: Mon, 5 Feb 2024 11:26:22 -0800 Message-ID: Subject: Go frontend patch committed: print types in a more readable way To: gcc-patches , gofrontend-dev Content-Type: multipart/mixed; boundary="0000000000008fd1a90610a7707c" X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --0000000000008fd1a90610a7707c Content-Type: text/plain; charset="UTF-8" This patch to the Go frontend adds Type::message_name to print types in ways that makes sense to users. As we move toward generics, the error messages need to be able to refer to types in a readable manner. Today we use this new feature in AST dumps. Bootstrapped and ran Go testsuite on x86_64-pc-linux-gnu. Committed to mainline. Ian --0000000000008fd1a90610a7707c Content-Type: text/plain; charset="US-ASCII"; name="patch.txt" Content-Disposition: attachment; filename="patch.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ls9bomub0 MzgxODIzN2NkNTExMWZkZDA4OWY5Yzk0NzBkMzg0ZWViYmU2ZWUxZQpkaWZmIC0tZ2l0IGEvZ2Nj L2dvL2dvZnJvbnRlbmQvTUVSR0UgYi9nY2MvZ28vZ29mcm9udGVuZC9NRVJHRQppbmRleCA0Mjk5 MDRhMmI4Zi4uZWM3ZTJhYjFhY2YgMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL01FUkdF CisrKyBiL2djYy9nby9nb2Zyb250ZW5kL01FUkdFCkBAIC0xLDQgKzEsNCBAQAotOGMwNTZlMzM1 Y2VjZWM2N2QxZDIyM2EzMjliN2JhNGRhYzc3OGE2NQorMWNiODNhNDE1ZTg2YWI0ZGUwZDQzNmQy NzczNzdkOGZjMDYwY2I2MQogCiBUaGUgZmlyc3QgbGluZSBvZiB0aGlzIGZpbGUgaG9sZHMgdGhl IGdpdCByZXZpc2lvbiBudW1iZXIgb2YgdGhlIGxhc3QKIG1lcmdlIGRvbmUgZnJvbSB0aGUgZ29m cm9udGVuZCByZXBvc2l0b3J5LgpkaWZmIC0tZ2l0IGEvZ2NjL2dvL2dvZnJvbnRlbmQvYXN0LWR1 bXAuY2MgYi9nY2MvZ28vZ29mcm9udGVuZC9hc3QtZHVtcC5jYwppbmRleCBlY2EwYmYxZmFkMi4u MTJmNDllNjg3MDAgMTAwNjQ0Ci0tLSBhL2djYy9nby9nb2Zyb250ZW5kL2FzdC1kdW1wLmNjCisr KyBiL2djYy9nby9nb2Zyb250ZW5kL2FzdC1kdW1wLmNjCkBAIC0yMjMsMTQgKzIyMyw3IEBAIEFz dF9kdW1wX2NvbnRleHQ6OmR1bXBfdHlwZShjb25zdCBUeXBlKiB0KQogICBpZiAodCA9PSBOVUxM KQogICAgIHRoaXMtPm9zdHJlYW0oKSA8PCAiKG5pbCB0eXBlKSI7CiAgIGVsc2UKLSAgICAvLyBG SVhNRTogd3JpdGUgYSB0eXBlIHByZXR0eSBwcmludGVyIGluc3RlYWQgb2YKLSAgICAvLyB1c2lu ZyBtYW5nbGVkIG5hbWVzLgotICAgIGlmICh0aGlzLT5nb2dvXyAhPSBOVUxMKQotICAgICAgewot CUJhY2tlbmRfbmFtZSBibmFtZTsKLQl0LT5iYWNrZW5kX25hbWUodGhpcy0+Z29nb18sICZibmFt ZSk7Ci0JdGhpcy0+b3N0cmVhbSgpIDw8ICIoIiA8PCBibmFtZS5uYW1lKCkgPDwgIikiOwotICAg ICAgfQorICAgIHRoaXMtPm9zdHJlYW0oKSA8PCAiKCIgPDwgdC0+bWVzc2FnZV9uYW1lKCkgPDwg IikiOwogfQogCiAvLyBEdW1wIGEgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiBhIGJsb2NrIHRv IHRoZQpkaWZmIC0tZ2l0IGEvZ2NjL2dvL2dvZnJvbnRlbmQvdHlwZXMuY2MgYi9nY2MvZ28vZ29m cm9udGVuZC90eXBlcy5jYwppbmRleCBiMzQ5YWQxMGQ2Zi4uYTM5Y2ZiZjc2NzkgMTAwNjQ0Ci0t LSBhL2djYy9nby9nb2Zyb250ZW5kL3R5cGVzLmNjCisrKyBiL2djYy9nby9nb2Zyb250ZW5kL3R5 cGVzLmNjCkBAIC0yNzAsNiArMjcwLDE2IEBAIFR5cGU6OnNldF9pc19lcnJvcigpCiAgIHRoaXMt PmNsYXNzaWZpY2F0aW9uXyA9IFRZUEVfRVJST1I7CiB9CiAKKy8vIFJldHVybiBhIHN0cmluZyB2 ZXJzaW9uIG9mIHRoaXMgdHlwZSB0byB1c2UgaW4gYW4gZXJyb3IgbWVzc2FnZS4KKworc3RkOjpz dHJpbmcKK1R5cGU6Om1lc3NhZ2VfbmFtZSgpIGNvbnN0Cit7CisgIHN0ZDo6c3RyaW5nIHJldDsK KyAgdGhpcy0+ZG9fbWVzc2FnZV9uYW1lKCZyZXQpOworICByZXR1cm4gcmV0OworfQorCiAvLyBJ ZiB0aGlzIGlzIGEgcG9pbnRlciB0eXBlLCByZXR1cm4gdGhlIHR5cGUgdG8gd2hpY2ggaXQgcG9p bnRzLgogLy8gT3RoZXJ3aXNlLCByZXR1cm4gTlVMTC4KIApAQCAtNzQyLDE2ICs3NTIsMTQgQEAg VHlwZTo6YXJlX2Fzc2lnbmFibGUoY29uc3QgVHlwZSogbGhzLCBjb25zdCBUeXBlKiByaHMsIHN0 ZDo6c3RyaW5nKiByZWFzb24pCiAgICAgewogICAgICAgaWYgKHJocy0+aW50ZXJmYWNlX3R5cGUo KSAhPSBOVUxMKQogCXJlYXNvbi0+YXNzaWduKF8oIm5lZWQgZXhwbGljaXQgY29udmVyc2lvbiIp KTsKLSAgICAgIGVsc2UgaWYgKGxoc19vcmlnLT5uYW1lZF90eXBlKCkgIT0gTlVMTAotCSAgICAg ICAmJiByaHNfb3JpZy0+bmFtZWRfdHlwZSgpICE9IE5VTEwpCisgICAgICBlbHNlCiAJewotCSAg c2l6ZV90IGxlbiA9IChsaHNfb3JpZy0+bmFtZWRfdHlwZSgpLT5uYW1lKCkubGVuZ3RoKCkKLQkJ CSsgcmhzX29yaWctPm5hbWVkX3R5cGUoKS0+bmFtZSgpLmxlbmd0aCgpCi0JCQkrIDEwMCk7CisJ ICBjb25zdCBzdGQ6OnN0cmluZyYgbGhzX25hbWUobGhzX29yaWctPm1lc3NhZ2VfbmFtZSgpKTsK KwkgIGNvbnN0IHN0ZDo6c3RyaW5nJiByaHNfbmFtZShyaHNfb3JpZy0+bWVzc2FnZV9uYW1lKCkp OworCSAgc2l6ZV90IGxlbiA9IGxoc19uYW1lLmxlbmd0aCgpICsgcmhzX25hbWUubGVuZ3RoKCkg KyAxMDA7CiAJICBjaGFyKiBidWYgPSBuZXcgY2hhcltsZW5dOwogCSAgc25wcmludGYoYnVmLCBs ZW4sIF8oImNhbm5vdCB1c2UgdHlwZSAlcyBhcyB0eXBlICVzIiksCi0JCSAgIHJoc19vcmlnLT5u YW1lZF90eXBlKCktPm1lc3NhZ2VfbmFtZSgpLmNfc3RyKCksCi0JCSAgIGxoc19vcmlnLT5uYW1l ZF90eXBlKCktPm1lc3NhZ2VfbmFtZSgpLmNfc3RyKCkpOworCQkgICByaHNfbmFtZS5jX3N0cigp LCBsaHNfbmFtZS5jX3N0cigpKTsKIAkgIHJlYXNvbi0+YXNzaWduKGJ1Zik7CiAJICBkZWxldGVb XSBidWY7CiAJfQpAQCAtNDI0NCw2ICs0MjUyLDMzIEBAIEludGVnZXJfdHlwZTo6aXNfaWRlbnRp Y2FsKGNvbnN0IEludGVnZXJfdHlwZSogdCkgY29uc3QKICAgcmV0dXJuIHRoaXMtPmlzX2Fic3Ry YWN0XyA9PSB0LT5pc19hYnN0cmFjdF87CiB9CiAKKy8vIE1lc3NhZ2UgbmFtZS4KKwordm9pZAor SW50ZWdlcl90eXBlOjpkb19tZXNzYWdlX25hbWUoc3RkOjpzdHJpbmcqIHJldCkgY29uc3QKK3sK KyAgcmV0LT5hcHBlbmQoIjx1bnR5cGVkICIpOworICBpZiAodGhpcy0+aXNfYnl0ZV8pCisgICAg cmV0LT5hcHBlbmQoImJ5dGUiKTsKKyAgZWxzZSBpZiAodGhpcy0+aXNfcnVuZV8pCisgICAgcmV0 LT5hcHBlbmQoInJ1bmUiKTsKKyAgZWxzZQorICAgIHsKKyAgICAgIGlmICh0aGlzLT5pc191bnNp Z25lZF8pCisJcmV0LT5wdXNoX2JhY2soJ3UnKTsKKyAgICAgIGlmICh0aGlzLT5pc19hYnN0cmFj dF8pCisJcmV0LT5hcHBlbmQoImludCIpOworICAgICAgZWxzZQorCXsKKwkgIHJldC0+YXBwZW5k KCJpbnQiKTsKKwkgIGNoYXIgYnVmWzEwXTsKKwkgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mIGJ1Ziwg IiVkIiwgdGhpcy0+Yml0c18pOworCSAgcmV0LT5hcHBlbmQoYnVmKTsKKwl9CisgICAgfQorICBy ZXQtPnB1c2hfYmFjaygnPicpOworfQorCiAvLyBIYXNoIGNvZGUuCiAKIHVuc2lnbmVkIGludApA QCAtNDM4Miw2ICs0NDE3LDIxIEBAIEZsb2F0X3R5cGU6OmlzX2lkZW50aWNhbChjb25zdCBGbG9h dF90eXBlKiB0KSBjb25zdAogICByZXR1cm4gdGhpcy0+aXNfYWJzdHJhY3RfID09IHQtPmlzX2Fi c3RyYWN0XzsKIH0KIAorLy8gTWVzc2FnZSBuYW1lLgorCit2b2lkCitGbG9hdF90eXBlOjpkb19t ZXNzYWdlX25hbWUoc3RkOjpzdHJpbmcqIHJldCkgY29uc3QKK3sKKyAgcmV0LT5hcHBlbmQoIjx1 bnR5cGVkIGZsb2F0Iik7CisgIGlmICghdGhpcy0+aXNfYWJzdHJhY3RfKQorICAgIHsKKyAgICAg IGNoYXIgYnVmWzEwXTsKKyAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mIGJ1ZiwgIiVkIiwgdGhp cy0+Yml0c18pOworICAgICAgcmV0LT5hcHBlbmQoYnVmKTsKKyAgICB9CisgIHJldC0+cHVzaF9i YWNrKCc+Jyk7Cit9CisKIC8vIEhhc2ggY29kZS4KIAogdW5zaWduZWQgaW50CkBAIC00NDk2LDYg KzQ1NDYsMjEgQEAgQ29tcGxleF90eXBlOjppc19pZGVudGljYWwoY29uc3QgQ29tcGxleF90eXBl ICp0KSBjb25zdAogICByZXR1cm4gdGhpcy0+aXNfYWJzdHJhY3RfID09IHQtPmlzX2Fic3RyYWN0 XzsKIH0KIAorLy8gTWVzc2FnZSBuYW1lLgorCit2b2lkCitDb21wbGV4X3R5cGU6OmRvX21lc3Nh Z2VfbmFtZShzdGQ6OnN0cmluZyogcmV0KSBjb25zdAoreworICByZXQtPmFwcGVuZCgiPHVudHlw ZWQgY29tcGxleCIpOworICBpZiAoIXRoaXMtPmlzX2Fic3RyYWN0XykKKyAgICB7CisgICAgICBj aGFyIGJ1ZlsxMF07CisgICAgICBzbnByaW50ZihidWYsIHNpemVvZiBidWYsICIlZCIsIHRoaXMt PmJpdHNfKTsKKyAgICAgIHJldC0+YXBwZW5kKGJ1Zik7CisgICAgfQorICByZXQtPnB1c2hfYmFj aygnPicpOworfQorCiAvLyBIYXNoIGNvZGUuCiAKIHVuc2lnbmVkIGludApAQCAtNDY2MSw2ICs0 NzI2LDEwIEBAIGNsYXNzIFNpbmtfdHlwZSA6IHB1YmxpYyBUeXBlCiAgIHsgfQogCiAgcHJvdGVj dGVkOgorICB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyogcmV0KSBjb25zdAor ICB7IHJldC0+YXBwZW5kKCI8U0lOSz4iKTsgfQorCiAgIGJvb2wKICAgZG9fY29tcGFyZV9pc19p ZGVudGl0eShHb2dvKikKICAgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTQ2OTYsNiArNDc2NSw3MCBA QCBUeXBlOjptYWtlX3NpbmtfdHlwZSgpCiAKIC8vIENsYXNzIEZ1bmN0aW9uX3R5cGUuCiAKKy8v IE1lc3NhZ2UgbmFtZS4KKwordm9pZAorRnVuY3Rpb25fdHlwZTo6ZG9fbWVzc2FnZV9uYW1lKHN0 ZDo6c3RyaW5nKiByZXQpIGNvbnN0Cit7CisgIHJldC0+YXBwZW5kKCJmdW5jIik7CisgIGlmICh0 aGlzLT5yZWNlaXZlcl8gIT0gTlVMTCkKKyAgICB7CisgICAgICByZXQtPmFwcGVuZCgiIChyZWNl aXZlciAiKTsKKyAgICAgIHRoaXMtPmFwcGVuZF9tZXNzYWdlX25hbWUodGhpcy0+cmVjZWl2ZXJf LT50eXBlKCksIHJldCk7CisgICAgICByZXQtPmFwcGVuZCgiKSAiKTsKKyAgICB9CisgIHRoaXMt PmFwcGVuZF9zaWduYXR1cmUocmV0KTsKK30KKworLy8gQXBwZW5kIGp1c3QgdGhlIHNpZ25hdHVy ZSB0byBSRVQuCisKK3ZvaWQKK0Z1bmN0aW9uX3R5cGU6OmFwcGVuZF9zaWduYXR1cmUoc3RkOjpz dHJpbmcqIHJldCkgY29uc3QKK3sKKyAgcmV0LT5wdXNoX2JhY2soJygnKTsKKyAgaWYgKHRoaXMt PnBhcmFtZXRlcnNfICE9IE5VTEwpCisgICAgeworICAgICAgYm9vbCBmaXJzdCA9IHRydWU7Cisg ICAgICBmb3IgKFR5cGVkX2lkZW50aWZpZXJfbGlzdDo6Y29uc3RfaXRlcmF0b3IgcCA9IHRoaXMt PnBhcmFtZXRlcnNfLT5iZWdpbigpOworCSAgIHAgIT0gdGhpcy0+cGFyYW1ldGVyc18tPmVuZCgp OworCSAgICsrcCkKKwl7CisJICBpZiAoZmlyc3QpCisJICAgIGZpcnN0ID0gZmFsc2U7CisJICBl bHNlCisJICAgIHJldC0+YXBwZW5kKCIsICIpOworCSAgdGhpcy0+YXBwZW5kX21lc3NhZ2VfbmFt ZShwLT50eXBlKCksIHJldCk7CisJfQorICAgIH0KKyAgcmV0LT5wdXNoX2JhY2soJyknKTsKKwor ICBpZiAodGhpcy0+cmVzdWx0c18gIT0gTlVMTCkKKyAgICB7CisgICAgICBpZiAodGhpcy0+cmVz dWx0c18tPnNpemUoKSA9PSAxKQorCXsKKwkgIHJldC0+cHVzaF9iYWNrKCcgJyk7CisJICB0aGlz LT5hcHBlbmRfbWVzc2FnZV9uYW1lKHRoaXMtPnJlc3VsdHNfLT5mcm9udCgpLnR5cGUoKSwgcmV0 KTsKKwl9CisgICAgICBlbHNlCisJeworCSAgcmV0LT5hcHBlbmQoIiAoIik7CisJICBib29sIGZp cnN0ID0gdHJ1ZTsKKwkgIGZvciAoVHlwZWRfaWRlbnRpZmllcl9saXN0Ojpjb25zdF9pdGVyYXRv ciBwID0KKwkJIHRoaXMtPnJlc3VsdHNfLT5iZWdpbigpOworCSAgICAgICBwICE9IHRoaXMtPnJl c3VsdHNfLT5lbmQoKTsKKwkgICAgICAgKytwKQorCSAgICB7CisJICAgICAgaWYgKGZpcnN0KQor CQlmaXJzdCA9IGZhbHNlOworCSAgICAgIGVsc2UKKwkJcmV0LT5hcHBlbmQoIiwgIik7CisJICAg ICAgdGhpcy0+YXBwZW5kX21lc3NhZ2VfbmFtZShwLT50eXBlKCksIHJldCk7CisJICAgIH0KKwkg IHJldC0+cHVzaF9iYWNrKCcpJyk7CisJfQorICAgIH0KK30KKwogLy8gVHJhdmVyc2FsLgogCiBp bnQKQEAgLTU1NDgsNiArNTY4MSwyMCBAQCBUeXBlOjptYWtlX2JhY2tlbmRfZnVuY3Rpb25fdHlw ZShUeXBlZF9pZGVudGlmaWVyKiByZWNlaXZlciwKIAogLy8gQ2xhc3MgUG9pbnRlcl90eXBlLgog CisvLyBNZXNzYWdlIG5hbWUuCisKK3ZvaWQKK1BvaW50ZXJfdHlwZTo6ZG9fbWVzc2FnZV9uYW1l KHN0ZDo6c3RyaW5nKiByZXQpIGNvbnN0Cit7CisgIGlmICh0aGlzLT50b190eXBlXy0+aXNfdm9p ZF90eXBlKCkpCisgICAgcmV0LT5hcHBlbmQoInVuc2FmZS5Qb2ludGVyIik7CisgIGVsc2UKKyAg ICB7CisgICAgICByZXQtPnB1c2hfYmFjaygnKicpOworICAgICAgdGhpcy0+YXBwZW5kX21lc3Nh Z2VfbmFtZSh0aGlzLT50b190eXBlXywgcmV0KTsKKyAgICB9Cit9CisKIC8vIFRyYXZlcnNhbC4K IAogaW50CkBAIC01NzY0LDYgKzU5MTEsMTAgQEAgY2xhc3MgQ2FsbF9tdWx0aXBsZV9yZXN1bHRf dHlwZSA6IHB1YmxpYyBUeXBlCiAgIHsgfQogCiAgcHJvdGVjdGVkOgorICB2b2lkCisgIGRvX21l c3NhZ2VfbmFtZShzdGQ6OnN0cmluZyogcmV0KSBjb25zdAorICB7IHJldC0+YXBwZW5kKCI8Y2Fs bC1tdWx0aXBsZS1yZXN1bHQ+Iik7IH0KKwogICBib29sCiAgIGRvX2hhc19wb2ludGVyKCkgY29u c3QKICAgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTU5NDAsNiArNjA5MSw0MSBAQCBTdHJ1Y3RfdHlw ZTo6SWRlbnRpY2FsX3N0cnVjdHMgU3RydWN0X3R5cGU6OmlkZW50aWNhbF9zdHJ1Y3RzOwogCiBT dHJ1Y3RfdHlwZTo6U3RydWN0X21ldGhvZF90YWJsZXMgU3RydWN0X3R5cGU6OnN0cnVjdF9tZXRo b2RfdGFibGVzOwogCisvLyBNZXNzYWdlIG5hbWUuCisKK3ZvaWQKK1N0cnVjdF90eXBlOjpkb19t ZXNzYWdlX25hbWUoc3RkOjpzdHJpbmcqIHJldCkgY29uc3QKK3sKKyAgaWYgKHRoaXMtPmZpZWxk c18gPT0gTlVMTCB8fCB0aGlzLT5maWVsZHNfLT5lbXB0eSgpKQorICAgIHsKKyAgICAgIHJldC0+ YXBwZW5kKCJzdHJ1Y3R7fSIpOworICAgICAgcmV0dXJuOworICAgIH0KKworICByZXQtPmFwcGVu ZCgic3RydWN0IHsiKTsKKworICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgZm9yIChTdHJ1Y3RfZmll bGRfbGlzdDo6Y29uc3RfaXRlcmF0b3IgcCA9IHRoaXMtPmZpZWxkc18tPmJlZ2luKCk7CisgICAg ICAgcCAhPSB0aGlzLT5maWVsZHNfLT5lbmQoKTsKKyAgICAgICArK3ApCisgICAgeworICAgICAg aWYgKGZpcnN0KQorCWZpcnN0ID0gZmFsc2U7CisgICAgICBlbHNlCisJcmV0LT5hcHBlbmQoIjsg Iik7CisKKyAgICAgIGlmICghcC0+aXNfYW5vbnltb3VzKCkpCisJeworCSAgcmV0LT5hcHBlbmQo cC0+ZmllbGRfbmFtZSgpKTsKKwkgIHJldC0+cHVzaF9iYWNrKCcgJyk7CisJfQorCisgICAgICB0 aGlzLT5hcHBlbmRfbWVzc2FnZV9uYW1lKHAtPnR5cGUoKSwgcmV0KTsKKyAgICB9CisKKyAgcmV0 LT5hcHBlbmQoIiB9Iik7Cit9CisKIC8vIFRyYXZlcnNhbC4KIAogaW50CkBAIC03MzQ0LDYgKzc1 MzAsMzUgQEAgQXJyYXlfdHlwZTo6aXNfaWRlbnRpY2FsKGNvbnN0IEFycmF5X3R5cGUqIHQsIGlu dCBmbGFncykgY29uc3QKICAgcmV0dXJuIGZhbHNlOwogfQogCisvLyBNZXNzYWdlIG5hbWUuCisK K3ZvaWQKK0FycmF5X3R5cGU6OmRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyogcmV0KSBjb25z dAoreworICByZXQtPnB1c2hfYmFjaygnWycpOworICBpZiAoIXRoaXMtPmlzX3NsaWNlX3R5cGUo KSkKKyAgICB7CisgICAgICBOdW1lcmljX2NvbnN0YW50IG5jOworICAgICAgaWYgKCF0aGlzLT5s ZW5ndGhfLT5udW1lcmljX2NvbnN0YW50X3ZhbHVlKCZuYykpCisJcmV0LT5hcHBlbmQoIjx1bmtu b3duIGxlbmd0aD4iKTsKKyAgICAgIGVsc2UKKwl7CisJICBtcHpfdCB2YWw7CisJICBpZiAoIW5j LnRvX2ludCgmdmFsKSkKKwkgICAgcmV0LT5hcHBlbmQoIjx1bmtub3duIGxlbmd0aD4iKTsKKwkg IGVsc2UKKwkgICAgeworCSAgICAgIGNoYXIqIHMgPSBtcHpfZ2V0X3N0cihOVUxMLCAxMCwgdmFs KTsKKwkgICAgICByZXQtPmFwcGVuZChzKTsKKwkgICAgICBmcmVlKHMpOworCSAgICAgIG1wel9j bGVhcih2YWwpOworCSAgICB9CisJfQorICAgIH0KKyAgcmV0LT5wdXNoX2JhY2soJ10nKTsKKyAg dGhpcy0+YXBwZW5kX21lc3NhZ2VfbmFtZSh0aGlzLT5lbGVtZW50X3R5cGVfLCByZXQpOworfQor CiAvLyBUcmF2ZXJzYWwuCiAKIGludApAQCAtODI0OSw2ICs4NDY0LDE3IEBAIE1hcF90eXBlOjpi YWNrZW5kX3plcm9fdmFsdWUoR29nbyogZ29nbykKICAgcmV0dXJuIHp2YXI7CiB9CiAKKy8vIE1l c3NhZ2UgbmFtZS4KKwordm9pZAorTWFwX3R5cGU6OmRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmlu ZyogcmV0KSBjb25zdAoreworICByZXQtPmFwcGVuZCgibWFwWyIpOworICB0aGlzLT5hcHBlbmRf bWVzc2FnZV9uYW1lKHRoaXMtPmtleV90eXBlXywgcmV0KTsKKyAgcmV0LT5wdXNoX2JhY2soJ10n KTsKKyAgdGhpcy0+YXBwZW5kX21lc3NhZ2VfbmFtZSh0aGlzLT52YWxfdHlwZV8sIHJldCk7Cit9 CisKIC8vIFRyYXZlcnNhbC4KIAogaW50CkBAIC04ODAzLDYgKzkwMjksMjAgQEAgVHlwZTo6bWFr ZV9tYXBfdHlwZShUeXBlKiBrZXlfdHlwZSwgVHlwZSogdmFsX3R5cGUsIExvY2F0aW9uIGxvY2F0 aW9uKQogCiAvLyBDbGFzcyBDaGFubmVsX3R5cGUuCiAKKy8vIE1lc3NhZ2UgbmFtZS4KKwordm9p ZAorQ2hhbm5lbF90eXBlOjpkb19tZXNzYWdlX25hbWUoc3RkOjpzdHJpbmcqIHJldCkgY29uc3QK K3sKKyAgaWYgKCF0aGlzLT5tYXlfc2VuZF8pCisgICAgcmV0LT5hcHBlbmQoIjwtIik7CisgIHJl dC0+YXBwZW5kKCJjaGFuIik7CisgIGlmICghdGhpcy0+bWF5X3JlY2VpdmVfKQorICAgIHJldC0+ YXBwZW5kKCI8LSIpOworICByZXQtPnB1c2hfYmFjaygnICcpOworICB0aGlzLT5hcHBlbmRfbWVz c2FnZV9uYW1lKHRoaXMtPmVsZW1lbnRfdHlwZV8sIHJldCk7Cit9CisKIC8vIFZlcmlmeS4KIAog Ym9vbApAQCAtOTA1Myw2ICs5MjkzLDQ1IEBAIEludGVyZmFjZV90eXBlOjptZXRob2RfY291bnQo KSBjb25zdAogICByZXR1cm4gdGhpcy0+YWxsX21ldGhvZHNfID09IE5VTEwgPyAwIDogdGhpcy0+ YWxsX21ldGhvZHNfLT5zaXplKCk7CiB9CiAKKy8vIE1lc3NhZ2UgbmFtZS4KKwordm9pZAorSW50 ZXJmYWNlX3R5cGU6OmRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyogcmV0KSBjb25zdAorewor ICBjb25zdCBUeXBlZF9pZGVudGlmaWVyX2xpc3QqIG1ldGhvZHMgPSAodGhpcy0+bWV0aG9kc19h cmVfZmluYWxpemVkXworCQkJCQkgID8gdGhpcy0+YWxsX21ldGhvZHNfCisJCQkJCSAgOiB0aGlz LT5wYXJzZV9tZXRob2RzXyk7CisgIGlmIChtZXRob2RzID09IE5VTEwgfHwgbWV0aG9kcy0+ZW1w dHkoKSkKKyAgICB7CisgICAgICByZXQtPmFwcGVuZCgiaW50ZXJmYWNle30iKTsKKyAgICAgIHJl dHVybjsKKyAgICB9CisKKyAgcmV0LT5hcHBlbmQoImludGVyZmFjZSB7Iik7CisKKyAgYm9vbCBm aXJzdCA9IHRydWU7CisgIGZvciAoVHlwZWRfaWRlbnRpZmllcl9saXN0Ojpjb25zdF9pdGVyYXRv ciBwID0gbWV0aG9kcy0+YmVnaW4oKTsKKyAgICAgICBwICE9IG1ldGhvZHMtPmVuZCgpOworICAg ICAgICsrcCkKKyAgICB7CisgICAgICBpZiAoZmlyc3QpCisJZmlyc3QgPSBmYWxzZTsKKyAgICAg IGVsc2UKKwlyZXQtPmFwcGVuZCgiOyAiKTsKKworICAgICAgaWYgKCFwLT5uYW1lKCkuZW1wdHko KSkKKwlyZXQtPmFwcGVuZChwLT5uYW1lKCkpOworCisgICAgICBGdW5jdGlvbl90eXBlKiBmdCA9 IHAtPnR5cGUoKS0+ZnVuY3Rpb25fdHlwZSgpOworICAgICAgaWYgKGZ0ID09IE5VTEwpCisJdGhp cy0+YXBwZW5kX21lc3NhZ2VfbmFtZShwLT50eXBlKCksIHJldCk7CisgICAgICBlbHNlCisJZnQt PmFwcGVuZF9zaWduYXR1cmUocmV0KTsKKyAgICB9CisKKyAgcmV0LT5hcHBlbmQoIiB9Iik7Cit9 CisKIC8vIFRyYXZlcnNhbC4KIAogaW50CkBAIC0xMDI5NSwxMCArMTA1NzQsMTAgQEAgTmFtZWRf dHlwZTo6bmFtZSgpIGNvbnN0CiAKIC8vIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgdHlwZSB0byB1 c2UgaW4gYW4gZXJyb3IgbWVzc2FnZS4KIAotc3RkOjpzdHJpbmcKLU5hbWVkX3R5cGU6Om1lc3Nh Z2VfbmFtZSgpIGNvbnN0Cit2b2lkCitOYW1lZF90eXBlOjpkb19tZXNzYWdlX25hbWUoc3RkOjpz dHJpbmcqIHJldCkgY29uc3QKIHsKLSAgcmV0dXJuIHRoaXMtPm5hbWVkX29iamVjdF8tPm1lc3Nh Z2VfbmFtZSgpOworICByZXQtPmFwcGVuZCh0aGlzLT5uYW1lZF9vYmplY3RfLT5tZXNzYWdlX25h bWUoKSk7CiB9CiAKIC8vIFJldHVybiB0aGUgYmFzZSB0eXBlIGZvciB0aGlzIHR5cGUuICBXZSBo YXZlIHRvIGJlIGNhcmVmdWwgYWJvdXQKQEAgLTEyODE5LDYgKzEzMDk4LDE3IEBAIEZvcndhcmRf ZGVjbGFyYXRpb25fdHlwZTo6YWRkX2V4aXN0aW5nX21ldGhvZChOYW1lZF9vYmplY3QqIG5vbSkK ICAgbm8tPnR5cGVfZGVjbGFyYXRpb25fdmFsdWUoKS0+YWRkX2V4aXN0aW5nX21ldGhvZChub20p OwogfQogCisvLyBNZXNzYWdlIG5hbWUuCisKK3ZvaWQKK0ZvcndhcmRfZGVjbGFyYXRpb25fdHlw ZTo6ZG9fbWVzc2FnZV9uYW1lKHN0ZDo6c3RyaW5nKiByZXQpIGNvbnN0Cit7CisgIGlmICh0aGlz LT5pc19kZWZpbmVkKCkpCisgICAgdGhpcy0+YXBwZW5kX21lc3NhZ2VfbmFtZSh0aGlzLT5yZWFs X3R5cGUoKSwgcmV0KTsKKyAgZWxzZQorICAgIHJldC0+YXBwZW5kKHRoaXMtPm5hbWVkX29iamVj dF8tPm1lc3NhZ2VfbmFtZSgpKTsKK30KKwogLy8gVHJhdmVyc2FsLgogCiBpbnQKZGlmZiAtLWdp dCBhL2djYy9nby9nb2Zyb250ZW5kL3R5cGVzLmggYi9nY2MvZ28vZ29mcm9udGVuZC90eXBlcy5o CmluZGV4IDNkZDMyNzk5ZDc0Li5jYmM3Y2UwYWEwZSAxMDA2NDQKLS0tIGEvZ2NjL2dvL2dvZnJv bnRlbmQvdHlwZXMuaAorKysgYi9nY2MvZ28vZ29mcm9udGVuZC90eXBlcy5oCkBAIC01NzUsNiAr NTc1LDEwIEBAIGNsYXNzIFR5cGUKICAgc3RhdGljIE5hbWVkX3R5cGUqCiAgIG1ha2VfYnVpbHRp bl9uYW1lZF90eXBlKGNvbnN0IGNoYXIqIG5hbWUsIFR5cGUqIHR5cGUpOwogCisgIC8vIFJldHVy biBhIHN0cmluZyB2ZXJzaW9uIG9mIHRoaXMgdHlwZSB0byB1c2UgaW4gYW4gZXJyb3IgbWVzc2Fn ZS4KKyAgc3RkOjpzdHJpbmcKKyAgbWVzc2FnZV9uYW1lKCkgY29uc3Q7CisKICAgLy8gVHJhdmVy c2UgYSB0eXBlLgogICBzdGF0aWMgaW50CiAgIHRyYXZlcnNlKFR5cGUqLCBUcmF2ZXJzZSopOwpA QCAtMTA5NSw2ICsxMDk5LDEwIEBAIGNsYXNzIFR5cGUKIAogICAvLyBGdW5jdGlvbnMgaW1wbGVt ZW50ZWQgYnkgdGhlIGNoaWxkIGNsYXNzLgogCisgIC8vIE1lc3NhZ2UgbmFtZS4KKyAgdmlydHVh bCB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyopIGNvbnN0ID0gMDsKKwogICAv LyBUcmF2ZXJzZSB0aGUgc3VidHlwZXMuCiAgIHZpcnR1YWwgaW50CiAgIGRvX3RyYXZlcnNlKFRy YXZlcnNlKik7CkBAIC0xMTk1LDYgKzEyMDMsMTEgQEAgY2xhc3MgVHlwZQogICB0eXBlX2Rlc2Ny aXB0b3JfY29uc3RydWN0b3IoR29nbyosIGludCBydW50aW1lX3R5cGVfa2luZCwgTmFtZWRfdHlw ZSosCiAJCQkgICAgICBjb25zdCBNZXRob2RzKiwgYm9vbCBvbmx5X3ZhbHVlX21ldGhvZHMpOwog CisgIC8vIEZvciB0aGUgYmVuZWZpdCBvZiBjaGlsZCBjbGFzcyBtZXNzYWdlIG5hbWUgY29uc3Ry dWN0aW9uLgorICB2b2lkCisgIGFwcGVuZF9tZXNzYWdlX25hbWUoY29uc3QgVHlwZSogdHlwZSwg c3RkOjpzdHJpbmcqIHJldCkgY29uc3QKKyAgeyB0eXBlLT5kb19tZXNzYWdlX25hbWUocmV0KTsg fQorCiAgIC8vIEZvciB0aGUgYmVuZWZpdCBvZiBjaGlsZCBjbGFzcyByZWZsZWN0aW9uIHN0cmlu ZyBnZW5lcmF0aW9uLgogICB2b2lkCiAgIGFwcGVuZF9yZWZsZWN0aW9uKGNvbnN0IFR5cGUqIHR5 cGUsIEdvZ28qIGdvZ28sIHN0ZDo6c3RyaW5nKiByZXQpIGNvbnN0CkBAIC0xNjU2LDYgKzE2Njks MTAgQEAgY2xhc3MgRXJyb3JfdHlwZSA6IHB1YmxpYyBUeXBlCiAgIHsgfQogCiAgcHJvdGVjdGVk OgorICB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyogcmV0KSBjb25zdAorICB7 IHJldC0+YXBwZW5kKCI8RVJST1I+Iik7IH0KKwogICBib29sCiAgIGRvX2NvbXBhcmVfaXNfaWRl bnRpdHkoR29nbyopCiAgIHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xNjgzLDYgKzE3MDAsMTAgQEAg Y2xhc3MgVm9pZF90eXBlIDogcHVibGljIFR5cGUKICAgeyB9CiAKICBwcm90ZWN0ZWQ6CisgIHZv aWQKKyAgZG9fbWVzc2FnZV9uYW1lKHN0ZDo6c3RyaW5nKiByZXQpIGNvbnN0CisgIHsgcmV0LT5h cHBlbmQoInZvaWQiKTsgfQorCiAgIGJvb2wKICAgZG9fY29tcGFyZV9pc19pZGVudGl0eShHb2dv KikKICAgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTE3MTIsNiArMTczMywxMCBAQCBjbGFzcyBCb29s ZWFuX3R5cGUgOiBwdWJsaWMgVHlwZQogICB7IH0KIAogIHByb3RlY3RlZDoKKyAgdm9pZAorICBk b19tZXNzYWdlX25hbWUoc3RkOjpzdHJpbmcqIHJldCkgY29uc3QKKyAgeyByZXQtPmFwcGVuZCgi PHVudHlwZWQgYm9vbD4iKTsgfQorCiAgIGJvb2wKICAgZG9fY29tcGFyZV9pc19pZGVudGl0eShH b2dvKikKICAgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtMTc5Nyw2ICsxODIyLDkgQEAgY2xhc3MgSW50 ZWdlcl90eXBlIDogcHVibGljIFR5cGUKICAgeyB0aGlzLT5pc19ydW5lXyA9IHRydWU7IH0KIAog cHJvdGVjdGVkOgorICB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyogcmV0KSBj b25zdDsKKwogICBib29sCiAgIGRvX2NvbXBhcmVfaXNfaWRlbnRpdHkoR29nbyopCiAgIHsgcmV0 dXJuIHRydWU7IH0KQEAgLTE4NzQsNiArMTkwMiw5IEBAIGNsYXNzIEZsb2F0X3R5cGUgOiBwdWJs aWMgVHlwZQogICBpc19pZGVudGljYWwoY29uc3QgRmxvYXRfdHlwZSogdCkgY29uc3Q7CiAKICBw cm90ZWN0ZWQ6CisgIHZvaWQKKyAgZG9fbWVzc2FnZV9uYW1lKHN0ZDo6c3RyaW5nKiByZXQpIGNv bnN0OworCiAgIGJvb2wKICAgZG9fY29tcGFyZV9pc19pZGVudGl0eShHb2dvKikKICAgeyByZXR1 cm4gZmFsc2U7IH0KQEAgLTE5NTIsNiArMTk4Myw5IEBAIGNsYXNzIENvbXBsZXhfdHlwZSA6IHB1 YmxpYyBUeXBlCiAgIGlzX2lkZW50aWNhbChjb25zdCBDb21wbGV4X3R5cGUqIHQpIGNvbnN0Owog CiAgcHJvdGVjdGVkOgorICB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyopIGNv bnN0OworCiAgIGJvb2wKICAgZG9fY29tcGFyZV9pc19pZGVudGl0eShHb2dvKikKICAgeyByZXR1 cm4gZmFsc2U7IH0KQEAgLTIwMDksNiArMjA0MywxMCBAQCBjbGFzcyBTdHJpbmdfdHlwZSA6IHB1 YmxpYyBUeXBlCiAgIHsgfQogCiAgcHJvdGVjdGVkOgorICB2b2lkCisgIGRvX21lc3NhZ2VfbmFt ZShzdGQ6OnN0cmluZyogcmV0KSBjb25zdAorICB7IHJldC0+YXBwZW5kKCI8dW50eXBlZCBzdHJp bmc+Iik7IH0KKwogICBib29sCiAgIGRvX2hhc19wb2ludGVyKCkgY29uc3QKICAgeyByZXR1cm4g dHJ1ZTsgfQpAQCAtMjE2Niw3ICsyMjA0LDE0IEBAIGNsYXNzIEZ1bmN0aW9uX3R5cGUgOiBwdWJs aWMgVHlwZQogICBpc19iYWNrZW5kX2Z1bmN0aW9uX3R5cGUoKSBjb25zdAogICB7IHJldHVybiBm YWxzZTsgfQogCisgIC8vIEFwcGVuZCBqdXN0IHRoZSBzaWduYXR1cmUgb2YgdGhlIGZ1bmN0aW9u IHR5cGUuCisgIHZvaWQKKyAgYXBwZW5kX3NpZ25hdHVyZShzdGQ6OnN0cmluZyopIGNvbnN0Owor CiAgcHJvdGVjdGVkOgorICB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyopIGNv bnN0OworCiAgIGludAogICBkb190cmF2ZXJzZShUcmF2ZXJzZSopOwogCkBAIC0yMjkzLDYgKzIz MzgsOSBAQCBjbGFzcyBQb2ludGVyX3R5cGUgOiBwdWJsaWMgVHlwZQogICBtYWtlX3BvaW50ZXJf dHlwZV9kZXNjcmlwdG9yX3R5cGUoKTsKIAogIHByb3RlY3RlZDoKKyAgdm9pZAorICBkb19tZXNz YWdlX25hbWUoc3RkOjpzdHJpbmcqKSBjb25zdDsKKwogICBpbnQKICAgZG9fdHJhdmVyc2UoVHJh dmVyc2UqKTsKIApAQCAtMjM0Niw2ICsyMzk0LDEwIEBAIGNsYXNzIE5pbF90eXBlIDogcHVibGlj IFR5cGUKICAgeyB9CiAKICBwcm90ZWN0ZWQ6CisgIHZvaWQKKyAgZG9fbWVzc2FnZV9uYW1lKHN0 ZDo6c3RyaW5nKiByZXQpIGNvbnN0CisgIHsgcmV0LT5hcHBlbmQoIjxOSUw+Iik7IH0KKwogICBi b29sCiAgIGRvX2NvbXBhcmVfaXNfaWRlbnRpdHkoR29nbyopCiAgIHsgcmV0dXJuIGZhbHNlOyB9 CkBAIC0yNjcxLDYgKzI3MjMsOSBAQCBjbGFzcyBTdHJ1Y3RfdHlwZSA6IHB1YmxpYyBUeXBlCiAg IHdyaXRlX3RvX2NfaGVhZGVyKHN0ZDo6b3N0cmVhbSYpIGNvbnN0OwogCiAgcHJvdGVjdGVkOgor ICB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0cmluZyopIGNvbnN0OworCiAgIGludAog ICBkb190cmF2ZXJzZShUcmF2ZXJzZSopOwogCkBAIC0yODUxLDYgKzI5MDYsOSBAQCBjbGFzcyBB cnJheV90eXBlIDogcHVibGljIFR5cGUKICAgd3JpdGVfZXF1YWxfZnVuY3Rpb24oR29nbyosIE5h bWVkX29iamVjdCogZnVuY3Rpb24sIE5hbWVkX3R5cGUqKTsKIAogIHByb3RlY3RlZDoKKyAgdm9p ZAorICBkb19tZXNzYWdlX25hbWUoc3RkOjpzdHJpbmcqKSBjb25zdDsKKwogICBpbnQKICAgZG9f dHJhdmVyc2UoVHJhdmVyc2UqIHRyYXZlcnNlKTsKIApAQCAtMjk5OSw2ICszMDU3LDkgQEAgY2xh c3MgTWFwX3R5cGUgOiBwdWJsaWMgVHlwZQogICBzdGF0aWMgY29uc3QgaW50IGJ1Y2tldF9zaXpl ID0gODsKIAogIHByb3RlY3RlZDoKKyAgdm9pZAorICBkb19tZXNzYWdlX25hbWUoc3RkOjpzdHJp bmcqKSBjb25zdDsKKwogICBpbnQKICAgZG9fdHJhdmVyc2UoVHJhdmVyc2UqKTsKIApAQCAtMzEx OCw2ICszMTc5LDkgQEAgY2xhc3MgQ2hhbm5lbF90eXBlIDogcHVibGljIFR5cGUKICAgc2VsZWN0 X2Nhc2VfdHlwZSgpOwogCiAgcHJvdGVjdGVkOgorICB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShz dGQ6OnN0cmluZyopIGNvbnN0OworCiAgIGludAogICBkb190cmF2ZXJzZShUcmF2ZXJzZSogdHJh dmVyc2UpCiAgIHsgcmV0dXJuIFR5cGU6OnRyYXZlcnNlKHRoaXMtPmVsZW1lbnRfdHlwZV8sIHRy YXZlcnNlKTsgfQpAQCAtMzI3Myw2ICszMzM3LDkgQEAgY2xhc3MgSW50ZXJmYWNlX3R5cGUgOiBw dWJsaWMgVHlwZQogICB7IHJldHVybiB0aGlzLT5tZXRob2RzX2FyZV9maW5hbGl6ZWRfOyB9CiAK ICBwcm90ZWN0ZWQ6CisgIHZvaWQKKyAgZG9fbWVzc2FnZV9uYW1lKHN0ZDo6c3RyaW5nKikgY29u c3Q7CisKICAgaW50CiAgIGRvX3RyYXZlcnNlKFRyYXZlcnNlKik7CiAKQEAgLTM0NTAsMTIgKzM1 MTcsNiBAQCBjbGFzcyBOYW1lZF90eXBlIDogcHVibGljIFR5cGUKICAgY29uc3Qgc3RkOjpzdHJp bmcmCiAgIG5hbWUoKSBjb25zdDsKIAotICAvLyBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIHR5cGUg Zm9yIGFuIGVycm9yIG1lc3NhZ2UuICBUaGUgZGlmZmVyZW5jZQotICAvLyBpcyB0aGF0IGlmIHRo ZSB0eXBlIGlzIGRlZmluZWQgaW4gYSBkaWZmZXJlbnQgcGFja2FnZSwgdGhpcyB3aWxsCi0gIC8v IHJldHVybiBQQUNLQUdFLk5BTUUuCi0gIHN0ZDo6c3RyaW5nCi0gIG1lc3NhZ2VfbmFtZSgpIGNv bnN0OwotCiAgIC8vIFJldHVybiB0aGUgdW5kZXJseWluZyB0eXBlLgogICBUeXBlKgogICByZWFs X3R5cGUoKQpAQCAtMzU5OSw2ICszNjYwLDkgQEAgY2xhc3MgTmFtZWRfdHlwZSA6IHB1YmxpYyBU eXBlCiAgIGNvbnZlcnQoR29nbyopOwogCiAgcHJvdGVjdGVkOgorICB2b2lkCisgIGRvX21lc3Nh Z2VfbmFtZShzdGQ6OnN0cmluZyogcmV0KSBjb25zdDsKKwogICBpbnQKICAgZG9fdHJhdmVyc2Uo VHJhdmVyc2UqIHRyYXZlcnNlKQogICB7IHJldHVybiBUeXBlOjp0cmF2ZXJzZSh0aGlzLT50eXBl XywgdHJhdmVyc2UpOyB9CkBAIC0zNzU4LDYgKzM4MjIsOSBAQCBjbGFzcyBGb3J3YXJkX2RlY2xh cmF0aW9uX3R5cGUgOiBwdWJsaWMgVHlwZQogICBhZGRfZXhpc3RpbmdfbWV0aG9kKE5hbWVkX29i amVjdCopOwogCiAgcHJvdGVjdGVkOgorICB2b2lkCisgIGRvX21lc3NhZ2VfbmFtZShzdGQ6OnN0 cmluZyopIGNvbnN0OworCiAgIGludAogICBkb190cmF2ZXJzZShUcmF2ZXJzZSogdHJhdmVyc2Up OwogCg== --0000000000008fd1a90610a7707c--