<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>123575</bug_id>
          
          <creation_ts>2013-10-31 10:20:28 -0700</creation_ts>
          <short_desc>Pass ScriptExecutionContext by reference to from the bindings constructors</short_desc>
          <delta_ts>2013-10-31 10:24:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>945566</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-31 10:20:28 -0700</bug_when>
    <thetext>Pass ScriptExecutionContext by reference to from the bindings constructors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945568</commentid>
    <comment_count>1</comment_count>
      <attachid>215657</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-31 10:21:44 -0700</bug_when>
    <thetext>Created attachment 215657
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>945570</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2013-10-31 10:24:44 -0700</bug_when>
    <thetext>Committed r158365: &lt;http://trac.webkit.org/changeset/158365&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>215657</attachid>
            <date>2013-10-31 10:21:44 -0700</date>
            <delta_ts>2013-10-31 10:23:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-123575-20131031102143.patch</filename>
            <type>text/plain</type>
            <size>61774</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE1ODM2NCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDEzLTEwLTMxICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUGFzcyBTY3JpcHRFeGVjdXRpb25Db250
ZXh0IGJ5IHJlZmVyZW5jZSB0byBmcm9tIHRoZSBiaW5kaW5ncyBjb25zdHJ1Y3RvcnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyMzU3NQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNpbmNlIHdlIG51bGwg
Y2hlY2sgdGhlIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgYmVmb3JlIGNyZWF0aW5nIHRoZSBjKysg
Y2xhc3MsCisgICAgICAgIHdlIHNob3VsZCBiZSBwYXNzaW5nIGJ5IHJlZmVyZW5jZS4KKwogMjAx
My0xMC0zMSAgWmh1YW5nIFpoaWdhbmcgIDx6aHVhbmd6Z0Bjbi5mdWppdHN1LmNvbT4KIAogICAg
ICAgICBQYWludCB0aGUgaW5wdXQgdGFnIG9mIHJhbmdlIHR5cGUgb24gV2luQ0UgcG9ydC4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3Vy
Y2UuY3BwCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c291cmNlL01lZGlhU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsMTQgKzQ3LDE0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUGFzc1JlZlB0cjxNZWRpYVNvdXJjZT4gTWVkaWFT
b3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorUGFzc1JlZlB0
cjxNZWRpYVNvdXJjZT4gTWVkaWFTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxNZWRpYVNvdXJjZT4gbWVkaWFTb3VyY2UoYWRvcHRS
ZWYobmV3IE1lZGlhU291cmNlKGNvbnRleHQpKSk7CiAgICAgbWVkaWFTb3VyY2UtPnN1c3BlbmRJ
Zk5lZWRlZCgpOwogICAgIHJldHVybiBtZWRpYVNvdXJjZS5yZWxlYXNlKCk7CiB9CiAKLU1lZGlh
U291cmNlOjpNZWRpYVNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorTWVk
aWFTb3VyY2U6Ok1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiAg
ICAgOiBNZWRpYVNvdXJjZUJhc2UoY29udGV4dCkKIHsKICAgICBMT0coTWVkaWEsICJNZWRpYVNv
dXJjZTo6TWVkaWFTb3VyY2UgJXAiLCB0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlLmgJKHJldmlzaW9uIDE1ODM2MSkKKysr
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIE1l
ZGlhU291cmNlIDogcHVibGljIE1lZGlhU291cmNlQmFzZSwgcHVibGljIFNjcmlwdFdyYXBwYWJs
ZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTb3VyY2U+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTb3Vy
Y2U+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgdmlydHVhbCB+TWVkaWFT
b3VyY2UoKTsKIAogICAgIC8vIE1lZGlhU291cmNlLmlkbCBtZXRob2RzCkBAIC02MCw3ICs2MCw3
IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU291cmNlQmFzZT46OmRlcmVm
OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1lZGlhU291cmNlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKKyAgICBleHBsaWNpdCBNZWRpYVNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
Jik7CiAKICAgICAvLyBNZWRpYVNvdXJjZUJhc2UgaW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lk
IG9uUmVhZHlTdGF0ZUNoYW5nZShjb25zdCBBdG9taWNTdHJpbmcmLCBjb25zdCBBdG9taWNTdHJp
bmcmKSBPVkVSUklERTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2Uv
TWVkaWFTb3VyY2VCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc291cmNlL01lZGlhU291cmNlQmFzZS5jcHAJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzb3VyY2UvTWVkaWFTb3VyY2VCYXNlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNDUsOCArNDUsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1l
ZGlhU291cmNlQmFzZTo6TWVkaWFTb3VyY2VCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKK01lZGlhU291cmNlQmFzZTo6
TWVkaWFTb3VyY2VCYXNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCisgICAgOiBB
Y3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3JlYWR5U3RhdGUoY2xvc2VkS2V5d29y
ZCgpKQogICAgICwgbV9hc3luY0V2ZW50UXVldWUoKnRoaXMpCiAgICAgLCBtX2F0dGFjaGVkKGZh
bHNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXNvdXJjZS9NZWRpYVNvdXJj
ZUJhc2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc291cmNl
L01lZGlhU291cmNlQmFzZS5oCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc291cmNlL01lZGlhU291cmNlQmFzZS5oCSh3b3JraW5nIGNvcHkpCkBAIC05
Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU291cmNlQmFz
ZT46OmRlcmVmOwogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgTWVkaWFTb3VyY2VCYXNlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBleHBsaWNpdCBNZWRpYVNvdXJjZUJhc2UoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uUmVhZHlTdGF0ZUNo
YW5nZShjb25zdCBBdG9taWNTdHJpbmcmIG9sZFN0YXRlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5l
d1N0YXRlKSA9IDA7CiAgICAgdmlydHVhbCBWZWN0b3I8UmVmUHRyPFRpbWVSYW5nZXM+PiBhY3Rp
dmVSYW5nZXMoKSBjb25zdCA9IDA7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL0F1ZGlvU3RyZWFtVHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5jcHAJKHJldmlzaW9uIDE1ODM2
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFj
ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1LDI3ICszNSwyNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLVJlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVh
dGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgRGljdGlvbmFyeSYgYXVk
aW9Db25zdHJhaW50cykKK1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRpb1N0cmVhbVRyYWNr
OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRGljdGlvbmFy
eSYgYXVkaW9Db25zdHJhaW50cykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEF1ZGlvU3Ry
ZWFtVHJhY2soY29udGV4dCwgKk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoMCksICZh
dWRpb0NvbnN0cmFpbnRzKSk7CiB9CiAKLVJlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRpb1N0
cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmIHByaXZhdGVUcmFjaykKK1JlZlB0cjxBdWRpb1N0cmVhbVRyYWNr
PiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmIHByaXZhdGVUcmFjaykKIHsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IEF1ZGlvU3RyZWFtVHJhY2soY29udGV4dCwgcHJpdmF0ZVRyYWNrLCAwKSk7
CiB9CiAKLVJlZlB0cjxBdWRpb1N0cmVhbVRyYWNrPiBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUo
TWVkaWFTdHJlYW1UcmFjayogdHJhY2spCitSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gQXVkaW9T
dHJlYW1UcmFjazo6Y3JlYXRlKE1lZGlhU3RyZWFtVHJhY2smIHRyYWNrKQogewogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgQXVkaW9TdHJlYW1UcmFjayh0cmFjaykpOwogfQogCi1BdWRpb1N0cmVh
bVRyYWNrOjpBdWRpb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQs
IE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBwcml2YXRlVHJhY2ssIGNvbnN0IERpY3Rpb25hcnkq
IGF1ZGlvQ29uc3RyYWludHMpCitBdWRpb1N0cmVhbVRyYWNrOjpBdWRpb1N0cmVhbVRyYWNrKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBw
cml2YXRlVHJhY2ssIGNvbnN0IERpY3Rpb25hcnkqIGF1ZGlvQ29uc3RyYWludHMpCiAgICAgOiBN
ZWRpYVN0cmVhbVRyYWNrKGNvbnRleHQsIHByaXZhdGVUcmFjaywgYXVkaW9Db25zdHJhaW50cykK
IHsKIH0KIAotQXVkaW9TdHJlYW1UcmFjazo6QXVkaW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRy
YWNrKiB0cmFjaykKK0F1ZGlvU3RyZWFtVHJhY2s6OkF1ZGlvU3RyZWFtVHJhY2soTWVkaWFTdHJl
YW1UcmFjayYgdHJhY2spCiAgICAgOiBNZWRpYVN0cmVhbVRyYWNrKHRyYWNrKQogewogfQpJbmRl
eDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0cmVhbVRyYWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9BdWRpb1N0
cmVhbVRyYWNrLmgJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vQXVkaW9TdHJlYW1UcmFjay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwxNyAr
MzksMTcgQEAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIAogY2xhc3MgQXVkaW9TdHJl
YW1UcmFjayBGSU5BTCA6IHB1YmxpYyBNZWRpYVN0cmVhbVRyYWNrIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgY29uc3QgRGljdGlvbmFyeSYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9TdHJlYW1U
cmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBNZWRpYVN0cmVhbVRyYWNrUHJp
dmF0ZSYpOwotICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gY3JlYXRlKE1lZGlh
U3RyZWFtVHJhY2sqKTsKKyAgICBzdGF0aWMgUmVmUHRyPEF1ZGlvU3RyZWFtVHJhY2s+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgRGljdGlvbmFyeSYpOworICAgIHN0YXRp
YyBSZWZQdHI8QXVkaW9TdHJlYW1UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYpOworICAgIHN0YXRpYyBSZWZQdHI8QXVkaW9TdHJl
YW1UcmFjaz4gY3JlYXRlKE1lZGlhU3RyZWFtVHJhY2smKTsKIAogICAgIHZpcnR1YWwgfkF1ZGlv
U3RyZWFtVHJhY2soKSB7IH0KIAogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiBraW5k
KCkgY29uc3QgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgQXVkaW9TdHJlYW1UcmFjayhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgTWVkaWFTdHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBEaWN0
aW9uYXJ5Kik7Ci0gICAgZXhwbGljaXQgQXVkaW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNr
Kik7CisgICAgQXVkaW9TdHJlYW1UcmFjayhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmLCBjb25zdCBEaWN0aW9uYXJ5Kik7CisgICAgZXhwbGljaXQgQXVk
aW9TdHJlYW1UcmFjayhNZWRpYVN0cmVhbVRyYWNrJik7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDEy
ICs0MSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
K1Bhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICByZXR1cm4gTWVkaWFTdHJlYW06OmNyZWF0ZShj
b250ZXh0LCBNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmNyZWF0ZShNZWRpYVN0cmVhbVNvdXJjZVZl
Y3RvcigpLCBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvcigpKSk7CiB9CiAKLVBhc3NSZWZQdHI8TWVk
aWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gc3RyZWFtKQorUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBzdHJlYW0pCiB7CiAgICAgQVNTRVJUKHN0cmVhbSk7
CiAKQEAgLTYyLDcgKzYyLDcgQEAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06
OmNyZQogICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIE1lZGlhU3RyZWFt
RGVzY3JpcHRvcjo6Y3JlYXRlKGF1ZGlvVHJhY2tzLCB2aWRlb1RyYWNrcykpOwogfQogCi1QYXNz
UmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImIHRyYWNrcykKK1Bh
c3NSZWZQdHI8TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYgdHJhY2tzKQog
ewogICAgIFZlY3RvcjxSZWZQdHI8TWVkaWFTdHJlYW1UcmFja1ByaXZhdGU+PiBhdWRpb1RyYWNr
czsKICAgICBWZWN0b3I8UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlPj4gdmlkZW9UcmFj
a3M7CkBAIC03NywxMyArNzcsMTMgQEAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJl
YW06OmNyZQogICAgIHJldHVybiBNZWRpYVN0cmVhbTo6Y3JlYXRlKGNvbnRleHQsIE1lZGlhU3Ry
ZWFtRGVzY3JpcHRvcjo6Y3JlYXRlKGF1ZGlvVHJhY2tzLCB2aWRlb1RyYWNrcykpOwogfQogCi1Q
YXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJl
YW1EZXNjcmlwdG9yKQorUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
RGVzY3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvcikKIHsKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IE1lZGlhU3RyZWFtKGNvbnRleHQsIHN0cmVhbURlc2NyaXB0b3IpKTsKIH0KIAotTWVkaWFTdHJl
YW06Ok1lZGlhU3RyZWFtKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yKQotICAgIDogQ29udGV4
dERlc3RydWN0aW9uT2JzZXJ2ZXIoY29udGV4dCkKK01lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVz
Y3JpcHRvcj4gc3RyZWFtRGVzY3JpcHRvcikKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2Vy
dmVyKCZjb250ZXh0KQogICAgICwgbV9kZXNjcmlwdG9yKHN0cmVhbURlc2NyaXB0b3IpCiAgICAg
LCBtX3NjaGVkdWxlZEV2ZW50VGltZXIodGhpcywgJk1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVu
dFRpbWVyRmlyZWQpCiB7CkBAIC0yODYsMTEgKzI4NiwxMSBAQCB2b2lkIE1lZGlhU3RyZWFtOjph
ZGRSZW1vdGVTb3VyY2UoTWVkaWFTCiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNr
OwogICAgIHN3aXRjaCAoc291cmNlLT50eXBlKCkpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291
cmNlOjpBdWRpbzoKLSAgICAgICAgdHJhY2sgPSBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLCAqTWVkaWFTdHJlYW1UcmFja1ByaXZhdGU6OmNyZWF0ZShz
b3VyY2UpKTsKKyAgICAgICAgdHJhY2sgPSBBdWRpb1N0cmVhbVRyYWNrOjpjcmVhdGUoKnNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSwgKk1lZGlhU3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoc291
cmNlKSk7CiAgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VmlkZW86Ci0gICAgICAgIHRyYWNrID0g
VmlkZW9TdHJlYW1UcmFjazo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgKk1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlOjpjcmVhdGUoc291cmNlKSk7CisgICAgICAgIHRyYWNrID0gVmlk
ZW9TdHJlYW1UcmFjazo6Y3JlYXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksICpNZWRpYVN0
cmVhbVRyYWNrUHJpdmF0ZTo6Y3JlYXRlKHNvdXJjZSkpOwogICAgICAgICBtX3ZpZGVvVHJhY2tz
LmFwcGVuZCh0cmFjayk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3Vy
Y2U6Ok5vbmU6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5oCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDEwICs0
NiwxMCBAQCBjbGFzcyBNZWRpYVN0cmVhbUNlbnRlcjsKIAogY2xhc3MgTWVkaWFTdHJlYW0gRklO
QUwgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbT4sIHB1YmxpYyBVUkxSZWdpc3RyYWJs
ZSwgcHVibGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIE1lZGlhU3RyZWFtRGVzY3JpcHRvckNs
aWVudCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBDb250ZXh0RGVz
dHJ1Y3Rpb25PYnNlcnZlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1Jl
ZlB0cjxNZWRpYVN0cmVhbT4pOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0
b3ImKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4pOworICAg
IHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+KTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBj
b25zdCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yJik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbURlc2NyaXB0b3I+KTsKICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbSgpOwogCiAgICAg
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdG9yLT5pZCgpOyB9CkBAIC04Miw3
ICs4Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFVSTFJlZ2lzdHJ5JiByZWdpc3RyeSgpIGNv
bnN0IE9WRVJSSURFOwogCiBwcm90ZWN0ZWQ6Ci0gICAgTWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9yPik7CisgICAgTWVk
aWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPik7CiAKICAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcgogICAgIHZp
cnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREUgRklOQUw7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFjay5jcHAJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDggKzUx
LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1NZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0
cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJiBwcml2YXRlVHJhY2ssIGNvbnN0IERpY3Rpb25hcnkqIGNvbnN0cmFpbnRzKQot
ICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCitNZWRpYVN0cmVhbVRyYWNrOjpNZWRpYVN0
cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU3RyZWFtVHJh
Y2tQcml2YXRlJiBwcml2YXRlVHJhY2ssIGNvbnN0IERpY3Rpb25hcnkqIGNvbnN0cmFpbnRzKQor
ICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9wcml2YXRlVHJhY2socHJp
dmF0ZVRyYWNrKQogICAgICwgbV9ldmVudERpc3BhdGNoU2NoZWR1bGVkKGZhbHNlKQogICAgICwg
bV9zdG9wcGluZ1RyYWNrKGZhbHNlKQpAQCAtNjUsOSArNjUsOSBAQCBNZWRpYVN0cmVhbVRyYWNr
OjpNZWRpYVN0cmVhbVRyYWNrKFNjcmlwCiAgICAgICAgIGFwcGx5Q29uc3RyYWludHMoKmNvbnN0
cmFpbnRzKTsKIH0KIAotTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0
cmVhbVRyYWNrKiBvdGhlcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChvdGhlci0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKQotICAgICwgbV9wcml2YXRlVHJhY2soKm90aGVyLT5wcml2YXRlVHJh
Y2soKS5jbG9uZSgpKQorTWVkaWFTdHJlYW1UcmFjazo6TWVkaWFTdHJlYW1UcmFjayhNZWRpYVN0
cmVhbVRyYWNrJiBvdGhlcikKKyAgICA6IEFjdGl2ZURPTU9iamVjdChvdGhlci5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkpCisgICAgLCBtX3ByaXZhdGVUcmFjaygqb3RoZXIucHJpdmF0ZVRyYWNr
KCkuY2xvbmUoKSkKICAgICAsIG1fZXZlbnREaXNwYXRjaFNjaGVkdWxlZChmYWxzZSkKICAgICAs
IG1fc3RvcHBpbmdUcmFjayhmYWxzZSkKIHsKQEAgLTE5Miw5ICsxOTIsOSBAQCB2b2lkIE1lZGlh
U3RyZWFtVHJhY2s6OmFwcGx5Q29uc3RyYWludHMoCiBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4g
TWVkaWFTdHJlYW1UcmFjazo6Y2xvbmUoKQogewogICAgIGlmIChtX3ByaXZhdGVUcmFjay0+dHlw
ZSgpID09IE1lZGlhU3RyZWFtU291cmNlOjpBdWRpbykKLSAgICAgICAgcmV0dXJuIEF1ZGlvU3Ry
ZWFtVHJhY2s6OmNyZWF0ZSh0aGlzKTsKKyAgICAgICAgcmV0dXJuIEF1ZGlvU3RyZWFtVHJhY2s6
OmNyZWF0ZSgqdGhpcyk7CiAKLSAgICByZXR1cm4gVmlkZW9TdHJlYW1UcmFjazo6Y3JlYXRlKHRo
aXMpOworICAgIHJldHVybiBWaWRlb1N0cmVhbVRyYWNrOjpjcmVhdGUoKnRoaXMpOwogfQogCiB2
b2lkIE1lZGlhU3RyZWFtVHJhY2s6OnN0b3BQcm9kdWNpbmdEYXRhKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5o
CShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtMTA1LDggKzEwNSw4IEBAIHB1
YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2s+OjpkZXJlZjsKIAog
cHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IE1lZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFj
ayopOwotICAgIE1lZGlhU3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlh
U3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgRGljdGlvbmFyeSopOworICAgIGV4cGxpY2l0IE1l
ZGlhU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayYpOworICAgIE1lZGlhU3RyZWFtVHJhY2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3Qg
RGljdGlvbmFyeSopOwogCiAgICAgdm9pZCBzZXRTb3VyY2UoUGFzc1JlZlB0cjxNZWRpYVN0cmVh
bVNvdXJjZT4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmNwcAkocmV2aXNpb24gMTU4MzYxKQorKysg
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExNCw3ICsxMTQsNyBAQCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3Vy
YXRpb24+IFJUQ1BlZXJDb25uCiAgICAgcmV0dXJuIHJ0Y0NvbmZpZ3VyYXRpb24ucmVsZWFzZSgp
OwogfQogCi1QYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBSVENQZWVyQ29ubmVjdGlvbjo6
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IERpY3Rpb25hcnkm
IHJ0Y0NvbmZpZ3VyYXRpb24sIGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gUlRDUGVlckNv
bm5lY3Rpb246OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBE
aWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9uLCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0
cmFpbnRzLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBSZWZQdHI8UlRDQ29uZmlndXJhdGlv
bj4gY29uZmlndXJhdGlvbiA9IHBhcnNlQ29uZmlndXJhdGlvbihydGNDb25maWd1cmF0aW9uLCBl
Yyk7CiAgICAgaWYgKGVjKQpAQCAtMTMyLDE3ICsxMzIsMTcgQEAgUGFzc1JlZlB0cjxSVENQZWVy
Q29ubmVjdGlvbj4gUlRDUGVlckNvbgogICAgIHJldHVybiBwZWVyQ29ubmVjdGlvbi5yZWxlYXNl
KCk7CiB9CiAKLVJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPFJUQ0NvbmZpZ3VyYXRpb24+IGNvbmZp
Z3VyYXRpb24sIFBhc3NSZWZQdHI8TWVkaWFDb25zdHJhaW50cz4gY29uc3RyYWludHMsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQpCitSVENQZWVyQ29u
bmVjdGlvbjo6UlRDUGVlckNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCwgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiBjb25maWd1cmF0aW9uLCBQYXNzUmVmUHRy
PE1lZGlhQ29uc3RyYWludHM+IGNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJiBlYykKKyAgICA6
IEFjdGl2ZURPTU9iamVjdCgmY29udGV4dCkKICAgICAsIG1fc2lnbmFsaW5nU3RhdGUoU2lnbmFs
aW5nU3RhdGVTdGFibGUpCiAgICAgLCBtX2ljZUdhdGhlcmluZ1N0YXRlKEljZUdhdGhlcmluZ1N0
YXRlTmV3KQogICAgICwgbV9pY2VDb25uZWN0aW9uU3RhdGUoSWNlQ29ubmVjdGlvblN0YXRlTmV3
KQogICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVyKHRoaXMsICZSVENQZWVyQ29ubmVjdGlvbjo6
c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKQogICAgICwgbV9zdG9wcGVkKGZhbHNlKQogewotICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
KTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogCi0gICAg
aWYgKCFkb2N1bWVudC0+ZnJhbWUoKSkgeworICAgIGlmICghZG9jdW1lbnQuZnJhbWUoKSkgewog
ICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQpA
QCAtMTUzLDcgKzE1Myw3IEBAIFJUQ1BlZXJDb25uZWN0aW9uOjpSVENQZWVyQ29ubmVjdGlvbihT
Y3IKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGRvY3VtZW50LT5mcmFtZSgpLT5sb2Fk
ZXIoKS5jbGllbnQoKS5kaXNwYXRjaFdpbGxTdGFydFVzaW5nUGVlckNvbm5lY3Rpb25IYW5kbGVy
KG1fcGVlckhhbmRsZXIuZ2V0KCkpOworICAgIGRvY3VtZW50LmZyYW1lKCktPmxvYWRlcigpLmNs
aWVudCgpLmRpc3BhdGNoV2lsbFN0YXJ0VXNpbmdQZWVyQ29ubmVjdGlvbkhhbmRsZXIobV9wZWVy
SGFuZGxlci5nZXQoKSk7CiAKICAgICBpZiAoIW1fcGVlckhhbmRsZXItPmluaXRpYWxpemUoY29u
ZmlndXJhdGlvbiwgY29uc3RyYWludHMpKSB7CiAgICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9F
UlI7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25u
ZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi5oCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDcgKzYwLDcgQEAgY2xhc3MgVm9pZENhbGxiYWNrOwogCiBjbGFzcyBSVENQZWVyQ29u
bmVjdGlvbiBGSU5BTCA6IHB1YmxpYyBSZWZDb3VudGVkPFJUQ1BlZXJDb25uZWN0aW9uPiwgcHVi
bGljIFNjcmlwdFdyYXBwYWJsZSwgcHVibGljIFJUQ1BlZXJDb25uZWN0aW9uSGFuZGxlckNsaWVu
dCwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBBY3RpdmVET01PYmpl
Y3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJUQ1BlZXJDb25uZWN0aW9uPiBj
cmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IERpY3Rpb25hcnkmIHJ0Y0NvbmZp
Z3VyYXRpb24sIGNvbnN0IERpY3Rpb25hcnkmIG1lZGlhQ29uc3RyYWludHMsIEV4Y2VwdGlvbkNv
ZGUmKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENQZWVyQ29ubmVjdGlvbj4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBEaWN0aW9uYXJ5JiBydGNDb25maWd1cmF0aW9u
LCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2RlJik7CiAg
ICAgflJUQ1BlZXJDb25uZWN0aW9uKCk7CiAKICAgICB2b2lkIGNyZWF0ZU9mZmVyKFBhc3NSZWZQ
dHI8UlRDU2Vzc2lvbkRlc2NyaXB0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFJUQ0Vycm9yQ2Fs
bGJhY2s+LCBjb25zdCBEaWN0aW9uYXJ5JiBtZWRpYUNvbnN0cmFpbnRzLCBFeGNlcHRpb25Db2Rl
Jik7CkBAIC0xMzAsNyArMTMwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFJlZkNvdW50ZWQ8UlRD
UGVlckNvbm5lY3Rpb24+OjpkZXJlZjsKIAogcHJpdmF0ZToKLSAgICBSVENQZWVyQ29ubmVjdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiwg
UGFzc1JlZlB0cjxNZWRpYUNvbnN0cmFpbnRzPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIFJUQ1Bl
ZXJDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBQYXNzUmVmUHRyPFJUQ0NvbmZp
Z3VyYXRpb24+LCBQYXNzUmVmUHRyPE1lZGlhQ29uc3RyYWludHM+LCBFeGNlcHRpb25Db2RlJik7
CiAKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxSVENDb25maWd1cmF0aW9uPiBwYXJzZUNvbmZpZ3Vy
YXRpb24oY29uc3QgRGljdGlvbmFyeSYgY29uZmlndXJhdGlvbiwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIHZvaWQgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+KTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9WaWRlb1N0
cmVhbVRyYWNrLmNwcAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9WaWRlb1N0cmVhbVRyYWNrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzUs
MTIgKzM1LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVmUHRyPFZpZGVvU3RyZWFt
VHJhY2s+IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiB2aWRlb0NvbnN0cmFpbnRzKQorUmVmUHRyPFZpZGVv
U3RyZWFtVHJhY2s+IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBEaWN0aW9uYXJ5JiB2aWRlb0NvbnN0cmFpbnRzKQogewogICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9TdHJlYW1UcmFjayhjb250ZXh0LCAqTWVkaWFTdHJl
YW1UcmFja1ByaXZhdGU6OmNyZWF0ZSgwKSwgJnZpZGVvQ29uc3RyYWludHMpKTsKIH0KIAotUmVm
UHRyPFZpZGVvU3RyZWFtVHJhY2s+IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYgcHJpdmF0ZVRy
YWNrKQorUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+IFZpZGVvU3RyZWFtVHJhY2s6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBNZWRpYVN0cmVhbVRyYWNrUHJpdmF0ZSYg
cHJpdmF0ZVRyYWNrKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgVmlkZW9TdHJlYW1UcmFj
ayhjb250ZXh0LCBwcml2YXRlVHJhY2ssIDApKTsKIH0KQEAgLTUwLDcgKzUwLDcgQEAgUmVmUHRy
PFZpZGVvU3RyZWFtVHJhY2s+IFZpZGVvU3RyZWFtVHJhYwogICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVmlkZW9TdHJlYW1UcmFjayh0cmFjaykpOwogfQogCi1WaWRlb1N0cmVhbVRyYWNrOjpWaWRl
b1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE1lZGlhU3RyZWFt
VHJhY2tQcml2YXRlJiBwcml2YXRlVHJhY2ssIGNvbnN0IERpY3Rpb25hcnkqIHZpZGVvQ29uc3Ry
YWludHMpCitWaWRlb1N0cmVhbVRyYWNrOjpWaWRlb1N0cmVhbVRyYWNrKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiBwcml2YXRlVHJhY2ss
IGNvbnN0IERpY3Rpb25hcnkqIHZpZGVvQ29uc3RyYWludHMpCiAgICAgOiBNZWRpYVN0cmVhbVRy
YWNrKGNvbnRleHQsIHByaXZhdGVUcmFjaywgdmlkZW9Db25zdHJhaW50cykKIHsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJlYW1UcmFjay5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vVmlkZW9TdHJl
YW1UcmFjay5oCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1ZpZGVvU3RyZWFtVHJhY2suaAkod29ya2luZyBjb3B5KQpAQCAtNDAsOCArNDAs
OCBAQCBjbGFzcyBNZWRpYVN0cmVtVHJhY2tEZXNjcmlwdG9yOwogCiBjbGFzcyBWaWRlb1N0cmVh
bVRyYWNrIEZJTkFMIDogcHVibGljIE1lZGlhU3RyZWFtVHJhY2sgewogcHVibGljOgotICAgIHN0
YXRpYyBSZWZQdHI8VmlkZW9TdHJlYW1UcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBjb25zdCBEaWN0aW9uYXJ5Jik7Ci0gICAgc3RhdGljIFJlZlB0cjxWaWRlb1N0cmVhbVRy
YWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJik7CisgICAgc3RhdGljIFJlZlB0cjxWaWRlb1N0cmVhbVRyYWNrPiBjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IERpY3Rpb25hcnkmKTsKKyAgICBzdGF0aWMgUmVmUHRy
PFZpZGVvU3RyZWFtVHJhY2s+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgTWVkaWFT
dHJlYW1UcmFja1ByaXZhdGUmKTsKICAgICBzdGF0aWMgUmVmUHRyPFZpZGVvU3RyZWFtVHJhY2s+
IGNyZWF0ZShNZWRpYVN0cmVhbVRyYWNrKik7CiAKICAgICB2aXJ0dWFsIH5WaWRlb1N0cmVhbVRy
YWNrKCkgeyB9CkBAIC00OSw3ICs0OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGNvbnN0IEF0
b21pY1N0cmluZyYga2luZCgpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgotICAgIFZpZGVv
U3RyZWFtVHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE1lZGlhU3RyZWFtVHJhY2tQcml2
YXRlJiwgY29uc3QgRGljdGlvbmFyeSopOworICAgIFZpZGVvU3RyZWFtVHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIE1lZGlhU3RyZWFtVHJhY2tQcml2YXRlJiwgY29uc3QgRGljdGlvbmFy
eSopOwogICAgIGV4cGxpY2l0IFZpZGVvU3RyZWFtVHJhY2soTWVkaWFTdHJlYW1UcmFjayopOwog
fTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRpb25zL05vdGlmaWNh
dGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9ub3RpZmljYXRp
b25zL05vdGlmaWNhdGlvbi5jcHAJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC04MCwxMyArODAsMTMgQEAgTm90aWZpY2F0aW9uOjpOb3RpZmljYXRpb24oY29uc3QgU3RyaW5n
JgogI2VuZGlmCiAKICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKLU5vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKK05vdGlmaWNhdGlvbjo6Tm90
aWZpY2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYg
dGl0bGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3RpdGxlKHRp
dGxlKQogICAgICwgbV9zdGF0ZShJZGxlKQogICAgICwgbV90YXNrVGltZXIoYWRvcHRQdHIobmV3
IFRpbWVyPE5vdGlmaWNhdGlvbj4odGhpcywgJk5vdGlmaWNhdGlvbjo6dGFza1RpbWVyRmlyZWQp
KSkKIHsKLSAgICBtX25vdGlmaWNhdGlvbkNlbnRlciA9IERPTVdpbmRvd05vdGlmaWNhdGlvbnM6
OndlYmtpdE5vdGlmaWNhdGlvbnModG9Eb2N1bWVudChjb250ZXh0KS0+ZG9tV2luZG93KCkpOwor
ICAgIG1fbm90aWZpY2F0aW9uQ2VudGVyID0gRE9NV2luZG93Tm90aWZpY2F0aW9uczo6d2Via2l0
Tm90aWZpY2F0aW9ucyh0b0RvY3VtZW50KGNvbnRleHQpLmRvbVdpbmRvdygpKTsKICAgICAKICAg
ICBBU1NFUlQobV9ub3RpZmljYXRpb25DZW50ZXItPmNsaWVudCgpKTsKICAgICBtX3Rhc2tUaW1l
ci0+c3RhcnRPbmVTaG90KDApOwpAQCAtMTA3LDcgKzEwNyw3IEBAIFBhc3NSZWZQdHI8Tm90aWZp
Y2F0aW9uPiBOb3RpZmljYXRpb246OmMKICNlbmRpZgogCiAjaWYgRU5BQkxFKE5PVElGSUNBVElP
TlMpCi1QYXNzUmVmUHRyPE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjcmVhdGUoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGlj
dGlvbmFyeSYgb3B0aW9ucykKK1Bhc3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBOb3RpZmljYXRpb246
OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRp
dGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKQogewogICAgIFJlZlB0cjxOb3RpZmljYXRp
b24+IG5vdGlmaWNhdGlvbihhZG9wdFJlZihuZXcgTm90aWZpY2F0aW9uKGNvbnRleHQsIHRpdGxl
KSkpOwogICAgIFN0cmluZyBhcmd1bWVudDsKQEAgLTEyMCw3ICsxMjAsNyBAQCBQYXNzUmVmUHRy
PE5vdGlmaWNhdGlvbj4gTm90aWZpY2F0aW9uOjpjCiAgICAgaWYgKG9wdGlvbnMuZ2V0KCJkaXIi
LCBhcmd1bWVudCkpCiAgICAgICAgIG5vdGlmaWNhdGlvbi0+c2V0RGlyKGFyZ3VtZW50KTsKICAg
ICBpZiAob3B0aW9ucy5nZXQoImljb24iLCBhcmd1bWVudCkpIHsKLSAgICAgICAgVVJMIGljb25V
UkkgPSBhcmd1bWVudC5pc0VtcHR5KCkgPyBVUkwoKSA6IGNvbnRleHQtPmNvbXBsZXRlVVJMKGFy
Z3VtZW50KTsKKyAgICAgICAgVVJMIGljb25VUkkgPSBhcmd1bWVudC5pc0VtcHR5KCkgPyBVUkwo
KSA6IGNvbnRleHQuY29tcGxldGVVUkwoYXJndW1lbnQpOwogICAgICAgICBpZiAoIWljb25VUkku
aXNFbXB0eSgpICYmIGljb25VUkkuaXNWYWxpZCgpKQogICAgICAgICAgICAgbm90aWZpY2F0aW9u
LT5zZXRJY29uVVJMKGljb25VUkkpOwogICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL25vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uLmgJKHJldmlzaW9uIDE1ODM2
MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb24u
aAkod29ya2luZyBjb3B5KQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBh
c3NSZWZQdHI8Tm90aWZpY2F0aW9uPiBjcmVhdGUoY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3Qg
U3RyaW5nJiBib2R5LCBjb25zdCBTdHJpbmcmIGljb25VUkksIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBFeGNlcHRpb25Db2RlJiwgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25DZW50ZXI+IHByb3Zp
ZGVyKTsKICNlbmRpZgogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPE5vdGlmaWNhdGlvbj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmIHRpdGxlLCBjb25zdCBEaWN0aW9uYXJ5JiBvcHRpb25zKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxOb3RpZmljYXRpb24+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgRGljdGlvbmFyeSYgb3B0aW9ucyk7CiAjZW5kaWYK
ICAgICAKICAgICB2aXJ0dWFsIH5Ob3RpZmljYXRpb24oKTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBw
cml2YXRlOgogICAgIE5vdGlmaWNhdGlvbihjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJp
bmcmIGJvZHksIGNvbnN0IFN0cmluZyYgaWNvblVSSSwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IEV4Y2VwdGlvbkNvZGUmLCBQYXNzUmVmUHRyPE5vdGlmaWNhdGlvbkNlbnRlcj4pOwogI2VuZGlm
CiAjaWYgRU5BQkxFKE5PVElGSUNBVElPTlMpCi0gICAgTm90aWZpY2F0aW9uKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICBOb3RpZmljYXRpb24oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IFN0cmluZyYgdGl0bGUpOwogI2VuZGlmCiAKICAg
ICB2b2lkIHNldEJvZHkoY29uc3QgU3RyaW5nJiBib2R5KSB7IG1fYm9keSA9IGJvZHk7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvc3BlZWNoL1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5j
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNo
U3ludGhlc2lzVXR0ZXJhbmNlLmNwcAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzAsMTMgKzMwLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKLVBh
c3NSZWZQdHI8U3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlPiBTcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcm
IHRleHQpCitQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4gU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiB0ZXh0KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgU3BlZWNoU3ludGhl
c2lzVXR0ZXJhbmNlKGNvbnRleHQsIHRleHQpKTsKIH0KIAotU3BlZWNoU3ludGhlc2lzVXR0ZXJh
bmNlOjpTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgY29uc3QgU3RyaW5nJiB0ZXh0KQotICAgIDogQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIoY29udGV4dCkKK1NwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6U3BlZWNoU3ludGhlc2lzVXR0
ZXJhbmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdGV4
dCkKKyAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKCZjb250ZXh0KQogICAgICwgbV9w
bGF0Zm9ybVV0dGVyYW5jZShQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZTo6Y3JlYXRl
KHRoaXMpKQogewogICAgIG1fcGxhdGZvcm1VdHRlcmFuY2UtPnNldFRleHQodGV4dCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50aGVzaXNVdHRlcmFuY2Uu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3NwZWVjaC9TcGVlY2hTeW50
aGVzaXNVdHRlcmFuY2UuaAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9zcGVlY2gvU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTcGVlY2hTeW50aGVz
aXNVdHRlcmFuY2UgRklOQUwgOiBwdWJsaWMgUGxhdGZvcm1TcGVlY2hTeW50aGVzaXNVdHRlcmFu
Y2VDbGllbnQsIHB1YmxpYyBSZWZDb3VudGVkPFNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZT4sIHB1
YmxpYyBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlciwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElu
bGluZURhdGEgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNwZWVjaFN5bnRoZXNp
c1V0dGVyYW5jZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBTdHJpbmcm
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2U+IGNyZWF0
ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgflNw
ZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSgpOwogCkBAIC04MCw3ICs4MCw3IEBAIHB1YmxpYzoKICAg
ICBQbGF0Zm9ybVNwZWVjaFN5bnRoZXNpc1V0dGVyYW5jZSogcGxhdGZvcm1VdHRlcmFuY2UoKSBj
b25zdCB7IHJldHVybiBtX3BsYXRmb3JtVXR0ZXJhbmNlLmdldCgpOyB9CiAKIHByaXZhdGU6Ci0g
ICAgU3BlZWNoU3ludGhlc2lzVXR0ZXJhbmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25z
dCBTdHJpbmcmKTsKKyAgICBTcGVlY2hTeW50aGVzaXNVdHRlcmFuY2UoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYpOwogICAgIFJlZlB0cjxQbGF0Zm9ybVNwZWVjaFN5bnRo
ZXNpc1V0dGVyYW5jZT4gbV9wbGF0Zm9ybVV0dGVyYW5jZTsKICAgICBSZWZQdHI8U3BlZWNoU3lu
dGhlc2lzVm9pY2U+IG1fdm9pY2U7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTA3LDExICsxMDcsMTAgQEAgYm9vbCBBdWRpb0NvbnRleHQ6OmlzU2FtcGxlUmF0ZVJh
bmdlR29vZAogY29uc3QgdW5zaWduZWQgTWF4SGFyZHdhcmVDb250ZXh0cyA9IDQ7CiB1bnNpZ25l
ZCBBdWRpb0NvbnRleHQ6OnNfaGFyZHdhcmVDb250ZXh0Q291bnQgPSAwOwogICAgIAotUGFzc1Jl
ZlB0cjxBdWRpb0NvbnRleHQ+IEF1ZGlvQ29udGV4dDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVu
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPEF1ZGlvQ29udGV4dD4gQXVkaW9Db250
ZXh0OjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAg
ICBVTlVTRURfUEFSQU0oZWMpOwogCi0gICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwogICAgIGlmIChzX2hhcmR3YXJlQ29udGV4dENvdW50ID49IE1heEhh
cmR3YXJlQ29udGV4dHMpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTIyLDggKzEyMSw4IEBAIFBh
c3NSZWZQdHI8QXVkaW9Db250ZXh0PiBBdWRpb0NvbnRleHQ6OmMKIH0KIAogLy8gQ29uc3RydWN0
b3IgZm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi1BdWRpb0NvbnRleHQ6OkF1
ZGlvQ29udGV4dChEb2N1bWVudCogZG9jdW1lbnQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoZG9j
dW1lbnQpCitBdWRpb0NvbnRleHQ6OkF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQpCisg
ICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQogICAgICwgbV9pc1N0b3BTY2hlZHVsZWQo
ZmFsc2UpCiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2lzQXVkaW9UaHJl
YWRGaW5pc2hlZChmYWxzZSkKQEAgLTE0OSw4ICsxNDgsOCBAQCBBdWRpb0NvbnRleHQ6OkF1ZGlv
Q29udGV4dChEb2N1bWVudCogZG9jCiB9CiAKIC8vIENvbnN0cnVjdG9yIGZvciBvZmZsaW5lIChu
b24tcmVhbHRpbWUpIHJlbmRlcmluZy4KLUF1ZGlvQ29udGV4dDo6QXVkaW9Db250ZXh0KERvY3Vt
ZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9m
RnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGRvY3VtZW50
KQorQXVkaW9Db250ZXh0OjpBdWRpb0NvbnRleHQoRG9jdW1lbnQmIGRvY3VtZW50LCB1bnNpZ25l
ZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVtYmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJh
dGUpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmRvY3VtZW50KQogICAgICwgbV9pc1N0b3BTY2hl
ZHVsZWQoZmFsc2UpCiAgICAgLCBtX2lzSW5pdGlhbGl6ZWQoZmFsc2UpCiAgICAgLCBtX2lzQXVk
aW9UaHJlYWRGaW5pc2hlZChmYWxzZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
YXVkaW8vQXVkaW9Db250ZXh0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzYsNyArNzYsNyBAQCBjbGFzcyBQZXJpb2RpY1dhdmU7CiBjbGFzcyBBdWRpb0NvbnRleHQgOiBw
dWJsaWMgQWN0aXZlRE9NT2JqZWN0LCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QXVkaW9D
b250ZXh0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURhdGEsIHB1YmxpYyBNZWRpYUNh
blN0YXJ0TGlzdGVuZXIgewogcHVibGljOgogICAgIC8vIENyZWF0ZSBhbiBBdWRpb0NvbnRleHQg
Zm9yIHJlbmRlcmluZyB0byB0aGUgYXVkaW8gaGFyZHdhcmUuCi0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJik7CisgICAg
c3RhdGljIFBhc3NSZWZQdHI8QXVkaW9Db250ZXh0PiBjcmVhdGUoRG9jdW1lbnQmLCBFeGNlcHRp
b25Db2RlJik7CiAKICAgICAvLyBDcmVhdGUgYW4gQXVkaW9Db250ZXh0IGZvciBvZmZsaW5lIChu
b24tcmVhbHRpbWUpIHJlbmRlcmluZy4KICAgICBzdGF0aWMgUGFzc1JlZlB0cjxBdWRpb0NvbnRl
eHQ+IGNyZWF0ZU9mZmxpbmVDb250ZXh0KERvY3VtZW50KiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFu
bmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlLCBFeGNlcHRpb25D
b2RlJik7CkBAIC0yNjUsOCArMjY1LDggQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlQmVoYXZp
b3JSZXN0cmljdGlvbihCZWhhdmlvclJlc3RyaWN0aW9ucyByZXN0cmljdGlvbikgeyBtX3Jlc3Ry
aWN0aW9ucyAmPSB+cmVzdHJpY3Rpb247IH0KIAogcHJvdGVjdGVkOgotICAgIGV4cGxpY2l0IEF1
ZGlvQ29udGV4dChEb2N1bWVudCopOwotICAgIEF1ZGlvQ29udGV4dChEb2N1bWVudCosIHVuc2ln
bmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxl
UmF0ZSk7CisgICAgZXhwbGljaXQgQXVkaW9Db250ZXh0KERvY3VtZW50Jik7CisgICAgQXVkaW9D
b250ZXh0KERvY3VtZW50JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJl
ck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKTsKICAgICAKICAgICBzdGF0aWMgYm9vbCBpc1Nh
bXBsZVJhdGVSYW5nZUdvb2QoZmxvYXQgc2FtcGxlUmF0ZSk7CiAgICAgCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vT2ZmbGluZUF1ZGlvQ29udGV4
dC5jcHAJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vT2ZmbGluZUF1ZGlvQ29udGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDE1ICszNCwx
NSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhc3NSZWZQdHI8T2ZmbGluZUF1ZGlvQ29u
dGV4dD4gT2ZmbGluZUF1ZGlvQ29udGV4dDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQsIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1l
cywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPE9mZmxp
bmVBdWRpb0NvbnRleHQ+IE9mZmxpbmVBdWRpb0NvbnRleHQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0JiBjb250ZXh0LCB1bnNpZ25lZCBudW1iZXJPZkNoYW5uZWxzLCBzaXplX3QgbnVt
YmVyT2ZGcmFtZXMsIGZsb2F0IHNhbXBsZVJhdGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAg
IC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Igd29ya2Vycy4KLSAgICBpZiAoIWNvbnRleHQgfHwg
IWNvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgIGlmICghY29udGV4dC5pc0RvY3VtZW50KCkp
IHsKICAgICAgICAgZWMgPSBOT1RfU1VQUE9SVEVEX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CiAg
ICAgfQogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdG9Eb2N1bWVudChjb250ZXh0KTsKKyAg
ICBEb2N1bWVudCYgZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwogCiAgICAgaWYgKG51
bWJlck9mQ2hhbm5lbHMgPiAxMCB8fCAhaXNTYW1wbGVSYXRlUmFuZ2VHb29kKHNhbXBsZVJhdGUp
KSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKQEAgLTU0LDcgKzU0LDcgQEAgUGFzc1JlZlB0
cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBPZmZsaW5lQQogICAgIHJldHVybiBhdWRpb0NvbnRleHQu
cmVsZWFzZSgpOwogfQogCi1PZmZsaW5lQXVkaW9Db250ZXh0OjpPZmZsaW5lQXVkaW9Db250ZXh0
KERvY3VtZW50KiBkb2N1bWVudCwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51
bWJlck9mRnJhbWVzLCBmbG9hdCBzYW1wbGVSYXRlKQorT2ZmbGluZUF1ZGlvQ29udGV4dDo6T2Zm
bGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYgZG9jdW1lbnQsIHVuc2lnbmVkIG51bWJlck9mQ2hh
bm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSkKICAgICA6IEF1
ZGlvQ29udGV4dChkb2N1bWVudCwgbnVtYmVyT2ZDaGFubmVscywgbnVtYmVyT2ZGcmFtZXMsIHNh
bXBsZVJhdGUpCiB7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL09m
ZmxpbmVBdWRpb0NvbnRleHQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL09mZmxpbmVBdWRpb0NvbnRleHQuaAkocmV2aXNpb24gMTU4MzYxKQorKysgU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9PZmZsaW5lQXVkaW9Db250ZXh0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTMxLDEyICszMSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IE9mZmxpbmVBdWRpb0NvbnRleHQgOiBwdWJsaWMgQXVkaW9Db250ZXh0IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxPZmZsaW5lQXVkaW9Db250ZXh0PiBjcmVhdGUoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJP
ZkZyYW1lcywgZmxvYXQgc2FtcGxlUmF0ZSwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0YXRpYyBQ
YXNzUmVmUHRyPE9mZmxpbmVBdWRpb0NvbnRleHQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiwgdW5zaWduZWQgbnVtYmVyT2ZDaGFubmVscywgc2l6ZV90IG51bWJlck9mRnJhbWVzLCBm
bG9hdCBzYW1wbGVSYXRlLCBFeGNlcHRpb25Db2RlJik7CiAKICAgICB2aXJ0dWFsIH5PZmZsaW5l
QXVkaW9Db250ZXh0KCk7CiAKIHByaXZhdGU6Ci0gICAgT2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1
bWVudCosIHVuc2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywg
ZmxvYXQgc2FtcGxlUmF0ZSk7CisgICAgT2ZmbGluZUF1ZGlvQ29udGV4dChEb2N1bWVudCYsIHVu
c2lnbmVkIG51bWJlck9mQ2hhbm5lbHMsIHNpemVfdCBudW1iZXJPZkZyYW1lcywgZmxvYXQgc2Ft
cGxlUmF0ZSk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAkocmV2aXNpb24gMTU4
MzYxKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE0MSw4ICsxNDEsOCBAQCBjb25zdCBjaGFyKiBXZWJTb2NrZXQ6
OnN1YlByb3RvY29sU2VwZXJhCiAgICAgcmV0dXJuICIsICI7CiB9CiAKLVdlYlNvY2tldDo6V2Vi
U29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBBY3RpdmVET01P
YmplY3QoY29udGV4dCkKK1dlYlNvY2tldDo6V2ViU29ja2V0KFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3N0
YXRlKENPTk5FQ1RJTkcpCiAgICAgLCBtX2J1ZmZlcmVkQW1vdW50KDApCiAgICAgLCBtX2J1ZmZl
cmVkQW1vdW50QWZ0ZXJDbG9zZSgwKQpAQCAtMTU4LDIwICsxNTgsMjAgQEAgV2ViU29ja2V0Ojp+
V2ViU29ja2V0KCkKICAgICAgICAgbV9jaGFubmVsLT5kaXNjb25uZWN0KCk7CiB9CiAKLVBhc3NS
ZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0KQorUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCiB7CiAgICAgUmVmUHRyPFdlYlNvY2tldD4gd2Vi
U29ja2V0KGFkb3B0UmVmKG5ldyBXZWJTb2NrZXQoY29udGV4dCkpKTsKICAgICB3ZWJTb2NrZXQt
PnN1c3BlbmRJZk5lZWRlZCgpOwogICAgIHJldHVybiB3ZWJTb2NrZXQucmVsZWFzZSgpOwogfQog
Ci1QYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2VwdGlvbkNvZGUmIGVjKQor
UGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
ICAgICBWZWN0b3I8U3RyaW5nPiBwcm90b2NvbHM7CiAgICAgcmV0dXJuIFdlYlNvY2tldDo6Y3Jl
YXRlKGNvbnRleHQsIHVybCwgcHJvdG9jb2xzLCBlYyk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViU29j
a2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIHByb3RvY29scywgRXhjZXB0
aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPFdlYlNvY2tldD4gV2ViU29ja2V0OjpjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICh1
cmwuaXNOdWxsKCkpIHsKICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOwpAQCAtMTgxLDE0ICsxODEs
MTQgQEAgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IFdlYlNvY2tldDo6Y3JlYXRlKAogICAgIFJlZlB0
cjxXZWJTb2NrZXQ+IHdlYlNvY2tldChhZG9wdFJlZihuZXcgV2ViU29ja2V0KGNvbnRleHQpKSk7
CiAgICAgd2ViU29ja2V0LT5zdXNwZW5kSWZOZWVkZWQoKTsKIAotICAgIHdlYlNvY2tldC0+Y29u
bmVjdChjb250ZXh0LT5jb21wbGV0ZVVSTCh1cmwpLCBwcm90b2NvbHMsIGVjKTsKKyAgICB3ZWJT
b2NrZXQtPmNvbm5lY3QoY29udGV4dC5jb21wbGV0ZVVSTCh1cmwpLCBwcm90b2NvbHMsIGVjKTsK
ICAgICBpZiAoZWMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgcmV0dXJuIHdlYlNvY2tldC5y
ZWxlYXNlKCk7CiB9CiAKLVBhc3NSZWZQdHI8V2ViU29ja2V0PiBXZWJTb2NrZXQ6OmNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBwcm90b2NvbCwgRXhjZXB0aW9uQ29kZSYgZWMpCitQYXNzUmVmUHRyPFdlYlNvY2tl
dD4gV2ViU29ja2V0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIFZlY3RvcjxTdHJpbmc+IHByb3RvY29sczsKICAgICBwcm90b2NvbHMuYXBwZW5k
KHByb3RvY29sKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJT
b2NrZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMv
V2ViU29ja2V0LmgJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2Vic29ja2V0cy9XZWJTb2NrZXQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsMTAgKzU1LDEwIEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRJc0F2YWlsYWJsZShib29sKTsKICAgICBzdGF0
aWMgYm9vbCBpc0F2YWlsYWJsZSgpOwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdWJQcm90b2Nv
bFNlcGVyYXRvcigpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYlNvY2tldD4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIEV4Y2Vw
dGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgcHJv
dG9jb2wsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJTb2NrZXQ+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFZlY3RvcjxTdHJpbmc+JiBwcm90b2NvbHMsIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxXZWJTb2NrZXQ+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBFeGNlcHRpb25Db2RlJik7Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViU29ja2V0PiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xz
LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdmlydHVhbCB+V2ViU29ja2V0KCk7CiAKICAgICBlbnVt
IFN0YXRlIHsKQEAgLTExMyw3ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENsb3NlKHVuc2lnbmVkIGxvbmcgdW5oYW5kbGVkQnVmZmVyZWRBbW91bnQsIENsb3NpbmdIYW5k
c2hha2VDb21wbGV0aW9uU3RhdHVzLCB1bnNpZ25lZCBzaG9ydCBjb2RlLCBjb25zdCBTdHJpbmcm
IHJlYXNvbikgT1ZFUlJJREU7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgV2ViU29ja2V0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKyAgICBleHBsaWNpdCBXZWJTb2NrZXQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2JqZWN0IGZ1bmN0aW9ucy4KICAg
ICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpIE9WRVJSSURFOwpJbmRleDogU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0NvbnRleHRDdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQXVkaW9Db250ZXh0Q3VzdG9tLmNwcAko
cmV2aXNpb24gMTU4MzYxKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNBdWRpb0Nv
bnRleHRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNBdWRpb0NvbnQKICAgICBpZiAoIXNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQtPmlzRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiQXVkaW9Db250ZXh0IGNvbnN0cnVjdG9yIGNh
bGxlZCBpbiBhIHNjcmlwdCBleGVjdXRpb24gY29udGV4dCB3aGljaCBpcyBub3QgYSBkb2N1bWVu
dCIpKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRvRG9jdW1lbnQoc2NyaXB0RXhlY3V0
aW9uQ29udGV4dCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gdG9Eb2N1bWVudCgqc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk7CiAKICAgICBSZWZQdHI8QXVkaW9Db250ZXh0PiBhdWRpb0NvbnRl
eHQ7CiAgICAgCkBAIC03Myw3ICs3Myw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
SlNBdWRpb0NvbnQKICNpZiBFTkFCTEUoTEVHQUNZX1dFQl9BVURJTykKICAgICAgICAgLy8gQ29u
c3RydWN0b3IgZm9yIG9mZmxpbmUgKHJlbmRlci10YXJnZXQpIEF1ZGlvQ29udGV4dCB3aGljaCBy
ZW5kZXJzIGludG8gYW4gQXVkaW9CdWZmZXIuCiAgICAgICAgIC8vIG5ldyBBdWRpb0NvbnRleHQo
aW4gdW5zaWduZWQgbG9uZyBudW1iZXJPZkNoYW5uZWxzLCBpbiB1bnNpZ25lZCBsb25nIG51bWJl
ck9mRnJhbWVzLCBpbiBmbG9hdCBzYW1wbGVSYXRlKTsKLSAgICAgICAgZG9jdW1lbnQtPmFkZENv
bnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwKKyAgICAg
ICAgZG9jdW1lbnQuYWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVz
c2FnZUxldmVsLAogICAgICAgICAgICAgIkRlcHJlY2F0ZWQgQXVkaW9Db250ZXh0IGNvbnN0cnVj
dG9yOiB1c2UgT2ZmbGluZUF1ZGlvQ29udGV4dCBpbnN0ZWFkIik7CiAKICAgICAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkocmV2aXNpb24gMTU4MzYxKQorKysg
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtp
bmcgY29weSkKQEAgLTQwMjQsOCArNDAyNCw4IEBAIEVORAogICAgICAgICAgICAgbXkgJG51bVBh
cmFtZXRlcnMgPSBAeyRmdW5jdGlvbi0+cGFyYW1ldGVyc307CiAgICAgICAgICAgICBteSAoJGR1
bW15LCAkcGFyYW1JbmRleCkgPSBHZW5lcmF0ZVBhcmFtZXRlcnNDaGVjaygkb3V0cHV0QXJyYXks
ICRmdW5jdGlvbiwgJGludGVyZmFjZSwgJG51bVBhcmFtZXRlcnMsICRpbnRlcmZhY2VOYW1lLCAi
Y29uc3RydWN0b3JDYWxsYmFjayIsIHVuZGVmLCB1bmRlZiwgdW5kZWYpOwogCi0gICAgICAgICAg
ICBpZiAoJGNvZGVHZW5lcmF0b3ItPkV4dGVuZGVkQXR0cmlidXRlQ29udGFpbnMoJGludGVyZmFj
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkNvbnN0cnVjdG9yQ2FsbFdpdGgifSwgIlNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQiKSkgewotICAgICAgICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJn
TGlzdCwgImNvbnRleHQiKTsKKyAgICAgICAgICAgIGlmICgkY29kZUdlbmVyYXRvci0+RXh0ZW5k
ZWRBdHRyaWJ1dGVDb250YWlucygkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29u
c3RydWN0b3JDYWxsV2l0aCJ9LCAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dCIpICkgeworICAgICAg
ICAgICAgICAgIHB1c2goQGNvbnN0cnVjdG9yQXJnTGlzdCwgIipjb250ZXh0Iik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBjYXN0ZWRUaGlzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7XG4iKTsKICAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFjb250ZXh0KVxuIik7
CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIFwiJHtpbnRlcmZhY2VO
YW1lfSBjb25zdHJ1Y3RvciBhc3NvY2lhdGVkIGRvY3VtZW50IGlzIHVuYXZhaWxhYmxlXCIpKTtc
biIpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjE4LDYgKzE2MTgs
MTggQEAgaW5saW5lIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE5vZGU6OnNjcgogCiBFbGVtZW50
KiBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChEb2N1bWVudCopOwogCitpbmxpbmUgRG9j
dW1lbnQmIHRvRG9jdW1lbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkKK3sKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihzY3JpcHRF
eGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PERv
Y3VtZW50Jj4oc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cit9CisKK2lubGluZSBjb25zdCBEb2N1
bWVudCYgdG9Eb2N1bWVudChjb25zdCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBzY3JpcHRFeGVj
dXRpb25Db250ZXh0KQoreworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQuaXNEb2N1bWVudCgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8Y29uc3QgRG9jdW1lbnQmPihzY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKK30KKwogaW5saW5l
IERvY3VtZW50KiB0b0RvY3VtZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQpCiB7CiAgICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQgfHwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNwcAkocmV2aXNpb24g
MTU4MzYxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsOSArMzIsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLU1lc3Nh
Z2VDaGFubmVsOjpNZXNzYWdlQ2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
KQotICAgIDogbV9wb3J0MShNZXNzYWdlUG9ydDo6Y3JlYXRlKCpjb250ZXh0KSkKLSAgICAsIG1f
cG9ydDIoTWVzc2FnZVBvcnQ6OmNyZWF0ZSgqY29udGV4dCkpCitNZXNzYWdlQ2hhbm5lbDo6TWVz
c2FnZUNoYW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKKyAgICA6IG1fcG9y
dDEoTWVzc2FnZVBvcnQ6OmNyZWF0ZShjb250ZXh0KSkKKyAgICAsIG1fcG9ydDIoTWVzc2FnZVBv
cnQ6OmNyZWF0ZShjb250ZXh0KSkKIHsKICAgICBNZXNzYWdlUG9ydENoYW5uZWw6OmNyZWF0ZUNo
YW5uZWwobV9wb3J0MS5nZXQoKSwgbV9wb3J0Mi5nZXQoKSk7CiB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9kb20vTWVzc2FnZUNoYW5uZWwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9k
b20vTWVzc2FnZUNoYW5uZWwuaAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL01lc3NhZ2VDaGFubmVsLmgJKHdvcmtpbmcgY29weSkKQEAgLTM4LDE0ICszOCwxNCBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBNZXNzYWdlQ2hhbm5lbCA6IHB1YmxpYyBS
ZWZDb3VudGVkPE1lc3NhZ2VDaGFubmVsPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxNZXNzYWdlQ2hhbm5lbD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZXNzYWdlQ2hhbm5lbChjb250ZXh0KSk7
IH0KKyAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVzc2FnZUNoYW5uZWw+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgTWVzc2Fn
ZUNoYW5uZWwoY29udGV4dCkpOyB9CiAgICAgICAgIH5NZXNzYWdlQ2hhbm5lbCgpOwogCiAgICAg
ICAgIE1lc3NhZ2VQb3J0KiBwb3J0MSgpIGNvbnN0IHsgcmV0dXJuIG1fcG9ydDEuZ2V0KCk7IH0K
ICAgICAgICAgTWVzc2FnZVBvcnQqIHBvcnQyKCkgY29uc3QgeyByZXR1cm4gbV9wb3J0Mi5nZXQo
KTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZXhwbGljaXQgTWVzc2FnZUNoYW5uZWwoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgICAgICBleHBsaWNpdCBNZXNzYWdlQ2hhbm5lbChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAKICAgICAgICAgUmVmUHRyPE1lc3NhZ2VQb3J0PiBt
X3BvcnQxOwogICAgICAgICBSZWZQdHI8TWVzc2FnZVBvcnQ+IG1fcG9ydDI7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZVJlYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDE1
ICs0OCwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBjb25zdCBkb3VibGUgcHJv
Z3Jlc3NOb3RpZmljYXRpb25JbnRlcnZhbE1TID0gNTA7CiAKLVBhc3NSZWZQdHI8RmlsZVJlYWRl
cj4gRmlsZVJlYWRlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCitQ
YXNzUmVmUHRyPEZpbGVSZWFkZXI+IEZpbGVSZWFkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQogewogICAgIFJlZlB0cjxGaWxlUmVhZGVyPiBmaWxlUmVhZGVyKGFk
b3B0UmVmKG5ldyBGaWxlUmVhZGVyKGNvbnRleHQpKSk7CiAgICAgZmlsZVJlYWRlci0+c3VzcGVu
ZElmTmVlZGVkKCk7CiAgICAgcmV0dXJuIGZpbGVSZWFkZXIucmVsZWFzZSgpOwogfQogCi1GaWxl
UmVhZGVyOjpGaWxlUmVhZGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAg
OiBBY3RpdmVET01PYmplY3QoY29udGV4dCkKK0ZpbGVSZWFkZXI6OkZpbGVSZWFkZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKKyAgICA6IEFjdGl2ZURPTU9iamVjdCgmY29udGV4
dCkKICAgICAsIG1fc3RhdGUoRU1QVFkpCiAgICAgLCBtX2Fib3J0aW5nKGZhbHNlKQogICAgICwg
bV9yZWFkVHlwZShGaWxlUmVhZGVyTG9hZGVyOjpSZWFkQXNCaW5hcnlTdHJpbmcpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGVSZWFkZXIuaAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNl
L1dlYkNvcmUvZmlsZWFwaS9GaWxlUmVhZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1
LDcgQEAgdHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKIAogY2xhc3MgRmlsZVJlYWRlciBGSU5B
TCA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVSZWFkZXI+LCBwdWJsaWMgQWN0aXZlRE9NT2JqZWN0
LCBwdWJsaWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSwgcHVibGljIEZpbGVSZWFkZXJMb2Fk
ZXJDbGllbnQgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVSZWFkZXI+IGNy
ZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Rmls
ZVJlYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAogICAgIHZpcnR1YWwg
fkZpbGVSZWFkZXIoKTsKIApAQCAtMTAxLDcgKzEwMSw3IEBAIHB1YmxpYzoKICAgICBERUZJTkVf
QVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGxvYWRlbmQpOwogCiBwcml2YXRlOgotICAgIGV4cGxp
Y2l0IEZpbGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIGV4cGxpY2l0IEZp
bGVSZWFkZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogCiAgICAgLy8gQWN0aXZlRE9NT2Jq
ZWN0CiAgICAgdmlydHVhbCBib29sIGNhblN1c3BlbmQoKSBjb25zdCBPVkVSUklERTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkocmV2aXNpb24gMTU4MzYx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDkzNiw3ICs0OTM2LDcgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpzZXRNZWRp
YUdyb3VwKGNvbgogICAgIH0KIAogICAgIC8vIE90aGVyd2lzZSwgbGV0IGNvbnRyb2xsZXIgYmUg
YSBuZXdseSBjcmVhdGVkIE1lZGlhQ29udHJvbGxlci4KLSAgICBzZXRDb250cm9sbGVyKE1lZGlh
Q29udHJvbGxlcjo6Y3JlYXRlKE5vZGU6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpOworICAg
IHNldENvbnRyb2xsZXIoTWVkaWFDb250cm9sbGVyOjpjcmVhdGUoZG9jdW1lbnQoKSkpOwogfQog
CiBNZWRpYUNvbnRyb2xsZXIqIEhUTUxNZWRpYUVsZW1lbnQ6OmNvbnRyb2xsZXIoKSBjb25zdApJ
bmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvTWVkaWFDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTU4
MzYxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zOCwxMiArMzgsMTIgQEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAK
LVBhc3NSZWZQdHI8TWVkaWFDb250cm9sbGVyPiBNZWRpYUNvbnRyb2xsZXI6OmNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+
IE1lZGlhQ29udHJvbGxlcjo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xsZXIoY29udGV4dCkpOwog
fQogCi1NZWRpYUNvbnRyb2xsZXI6Ok1lZGlhQ29udHJvbGxlcihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiBjb250ZXh0KQorTWVkaWFDb250cm9sbGVyOjpNZWRpYUNvbnRyb2xsZXIoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICA6IG1fcGF1c2VkKGZhbHNlKQogICAgICwgbV9k
ZWZhdWx0UGxheWJhY2tSYXRlKDEpCiAgICAgLCBtX3ZvbHVtZSgxKQpJbmRleDogU291cmNlL1dl
YkNvcmUvaHRtbC9NZWRpYUNvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL01lZGlhQ29udHJvbGxlci5oCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL01lZGlhQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00NSw3ICs0NSw3
IEBAIGNsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAKIGNsYXNzIE1lZGlhQ29udHJvbGxl
ciBGSU5BTCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhQ29udHJvbGxlcj4sIHB1YmxpYyBNZWRp
YUNvbnRyb2xsZXJJbnRlcmZhY2UsIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxpbmVEYXRhIHsK
IHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xsZXI+IGNyZWF0ZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sbGVyPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHZpcnR1YWwgfk1l
ZGlhQ29udHJvbGxlcigpOwogCiAgICAgdm9pZCBhZGRNZWRpYUVsZW1lbnQoSFRNTE1lZGlhRWxl
bWVudCopOwpAQCAtMTE0LDcgKzExNCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVk
PE1lZGlhQ29udHJvbGxlcj46OmRlcmVmOwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IE1lZGlh
Q29udHJvbGxlcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CisgICAgZXhwbGljaXQgTWVkaWFD
b250cm9sbGVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICB2b2lkIHJlcG9ydENvbnRy
b2xsZXJTdGF0ZSgpOwogICAgIHZvaWQgdXBkYXRlUmVhZHlTdGF0ZSgpOwogICAgIHZvaWQgdXBk
YXRlUGxheWJhY2tTdGF0ZSgpOwpAQCAtMTMyLDcgKzEzMiw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQogICAgIHZpcnR1
YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyBkZXJlZigpOyB9CiAgICAgdmly
dHVhbCBFdmVudFRhcmdldEludGVyZmFjZSBldmVudFRhcmdldEludGVyZmFjZSgpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIE1lZGlhQ29udHJvbGxlckV2ZW50VGFyZ2V0SW50ZXJmYWNlVHlwZTsg
fQotICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsg
fTsKKyAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAmbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
OyB9OwogCiAgICAgZnJpZW5kIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiAgICAgZnJpZW5kIGNs
YXNzIE1lZGlhQ29udHJvbGxlckV2ZW50TGlzdGVuZXI7CkBAIC0xNTAsNyArMTUwLDcgQEAgcHJp
dmF0ZToKICAgICBTdHJpbmcgbV9tZWRpYUdyb3VwOwogICAgIGJvb2wgbV9jbG9zZWRDYXB0aW9u
c1Zpc2libGU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPENsb2NrPiBtX2Nsb2NrOwotICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKyAgICBTY3JpcHRF
eGVjdXRpb25Db250ZXh0JiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CiAgICAgVGltZXI8TWVk
aWFDb250cm9sbGVyPiBtX3RpbWV1cGRhdGVUaW1lcjsKICAgICBkb3VibGUgbV9wcmV2aW91c1Rp
bWV1cGRhdGVUaW1lOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
R2VuZXJpY1RleHRUcmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMTU4MzYxKQorKysgU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRHZW5lcmljVGV4dFRyYWNrLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgSW5iYW5kR2VuZXJpY1RleHRUcmFjazo6
YWRkR2VuZXJpY0MKICAgICBpZiAobV9jdWVNYXAuZmluZChjdWVEYXRhLmdldCgpKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgUmVmUHRyPFRleHRUcmFja0N1ZUdlbmVyaWM+IGN1ZSA9IFRleHRU
cmFja0N1ZUdlbmVyaWM6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGN1ZURhdGEt
PnN0YXJ0VGltZSgpLCBjdWVEYXRhLT5lbmRUaW1lKCksIGN1ZURhdGEtPmNvbnRlbnQoKSk7Cisg
ICAgUmVmUHRyPFRleHRUcmFja0N1ZUdlbmVyaWM+IGN1ZSA9IFRleHRUcmFja0N1ZUdlbmVyaWM6
OmNyZWF0ZSgqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBjdWVEYXRhLT5zdGFydFRpbWUoKSwg
Y3VlRGF0YS0+ZW5kVGltZSgpLCBjdWVEYXRhLT5jb250ZW50KCkpOwogICAgIHVwZGF0ZUN1ZUZy
b21DdWVEYXRhKGN1ZS5nZXQoKSwgY3VlRGF0YS5nZXQoKSk7CiAgICAgaWYgKGhhc0N1ZShjdWUu
Z2V0KCksIFRleHRUcmFja0N1ZTo6SWdub3JlRHVyYXRpb24pKSB7CiAgICAgICAgIExPRyhNZWRp
YSwgIkluYmFuZEdlbmVyaWNUZXh0VHJhY2s6OmFkZEdlbmVyaWNDdWUgaWdub3JpbmcgYWxyZWFk
eSBhZGRlZCBjdWU6IHN0YXJ0PSUuMmYsIGVuZD0lLjJmLCBjb250ZW50PVwiJXNcIlxuIiwgY3Vl
RGF0YS0+c3RhcnRUaW1lKCksIGN1ZURhdGEtPmVuZFRpbWUoKSwgY3VlRGF0YS0+Y29udGVudCgp
LnV0ZjgoKS5kYXRhKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRX
ZWJWVFRUZXh0VHJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kV2ViVlRUVGV4dFRyYWNrLmNwcAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRXZWJWVFRUZXh0VHJhY2suY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC02NCw3ICs2NCw3IEBAIHZvaWQgSW5iYW5kV2ViVlRUVGV4dFRyYWNrOjpuZXdDdWVz
UGFyc2UKICAgICBtX3dlYlZUVFBhcnNlci0+Z2V0TmV3Q3VlcyhjdWVzKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGN1ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgUmVmUHRyPFdlYlZU
VEN1ZURhdGE+IGN1ZURhdGEgPSBjdWVzW2ldOwotICAgICAgICBSZWZQdHI8VGV4dFRyYWNrQ3Vl
PiBjdWUgPSBUZXh0VHJhY2tDdWU6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGN1
ZURhdGEtPnN0YXJ0VGltZSgpLCBjdWVEYXRhLT5lbmRUaW1lKCksIGN1ZURhdGEtPmNvbnRlbnQo
KSk7CisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSA9IFRleHRUcmFja0N1ZTo6Y3Jl
YXRlKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGN1ZURhdGEtPnN0YXJ0VGltZSgpLCBjdWVE
YXRhLT5lbmRUaW1lKCksIGN1ZURhdGEtPmNvbnRlbnQoKSk7CiAgICAgICAgIGN1ZS0+c2V0SWQo
Y3VlRGF0YS0+aWQoKSk7CiAgICAgICAgIGN1ZS0+c2V0Q3VlU2V0dGluZ3MoY3VlRGF0YS0+c2V0
dGluZ3MoKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4
dFRyYWNrQ3VlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTgzLDcgKzE4Myw3IEBAIFJlbmRlckVs
ZW1lbnQqIFRleHRUcmFja0N1ZUJveDo6Y3JlYXRlUmUKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCi1UZXh0VHJhY2tDdWU6OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBkb3VibGUgc3RhcnQsIGRvdWJsZSBlbmQsIGNvbnN0IFN0cmluZyYg
Y29udGVudCkKK1RleHRUcmFja0N1ZTo6VGV4dFRyYWNrQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250
ZW50KQogICAgIDogbV9zdGFydFRpbWUoc3RhcnQpCiAgICAgLCBtX2VuZFRpbWUoZW5kKQogICAg
ICwgbV9jb250ZW50KGNvbnRlbnQpCkBAIC0yMDEsMTEgKzIwMSwxMSBAQCBUZXh0VHJhY2tDdWU6
OlRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpCiAgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQogICAg
ICwgbV9wYXVzZU9uRXhpdChmYWxzZSkKICAgICAsIG1fc25hcFRvTGluZXModHJ1ZSkKLSAgICAs
IG1fY3VlQmFja2dyb3VuZEJveChIVE1MU3BhbkVsZW1lbnQ6OmNyZWF0ZShzcGFuVGFnLCAqdG9E
b2N1bWVudChjb250ZXh0KSkpCisgICAgLCBtX2N1ZUJhY2tncm91bmRCb3goSFRNTFNwYW5FbGVt
ZW50OjpjcmVhdGUoc3BhblRhZywgdG9Eb2N1bWVudChjb250ZXh0KSkpCiAgICAgLCBtX2Rpc3Bs
YXlUcmVlU2hvdWxkQ2hhbmdlKHRydWUpCiAgICAgLCBtX2Rpc3BsYXlEaXJlY3Rpb24oQ1NTVmFs
dWVMdHIpCiB7Ci0gICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVu
dCgpKTsKKyAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LmlzRG9jdW1lbnQoKSk7
CiAKICAgICAvLyA0LiBJZiB0aGUgdGV4dCB0cmFjayBjdWUgd3JpdGluZyBkaXJlY3Rpb24gaXMg
aG9yaXpvbnRhbCwgdGhlbiBsZXQKICAgICAvLyB3cml0aW5nLW1vZGUgYmUgJ2hvcml6b250YWwt
dGInLiBPdGhlcndpc2UsIGlmIHRoZSB0ZXh0IHRyYWNrIGN1ZSB3cml0aW5nCkBAIC01MDAsNyAr
NTAwLDcgQEAgdm9pZCBUZXh0VHJhY2tDdWU6OmludmFsaWRhdGVDdWVJbmRleCgpCiB2b2lkIFRl
eHRUcmFja0N1ZTo6Y3JlYXRlV2ViVlRUTm9kZVRyZWUoKQogewogICAgIGlmICghbV93ZWJWVFRO
b2RlVHJlZSkKLSAgICAgICAgbV93ZWJWVFROb2RlVHJlZSA9IFdlYlZUVFBhcnNlcjo6Y3JlYXRl
KDAsIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmNyZWF0ZURvY3VtZW50RnJhZ21lbnRGcm9t
Q3VlVGV4dChtX2NvbnRlbnQpOworICAgICAgICBtX3dlYlZUVE5vZGVUcmVlID0gV2ViVlRUUGFy
c2VyOjpjcmVhdGUoMCwgJm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCktPmNyZWF0ZURvY3VtZW50
RnJhZ21lbnRGcm9tQ3VlVGV4dChtX2NvbnRlbnQpOwogfQogCiB2b2lkIFRleHRUcmFja0N1ZTo6
Y29weVdlYlZUVE5vZGVUb0RPTVRyZWUoQ29udGFpbmVyTm9kZSogd2ViVlRUTm9kZSwgQ29udGFp
bmVyTm9kZSogcGFyZW50KQpAQCAtNzY0LDcgKzc2NCw3IEBAIHZvaWQgVGV4dFRyYWNrQ3VlOjpt
YXJrRnV0dXJlQW5kUGFzdE5vZGUKICAgICAgICAgaWYgKGNoaWxkLT5ub2RlTmFtZSgpID09IHRp
bWVzdGFtcFRhZykgewogICAgICAgICAgICAgdW5zaWduZWQgcG9zaXRpb24gPSAwOwogICAgICAg
ICAgICAgU3RyaW5nIHRpbWVzdGFtcCA9IGNoaWxkLT5ub2RlVmFsdWUoKTsKLSAgICAgICAgICAg
IGRvdWJsZSBjdXJyZW50VGltZXN0YW1wID0gV2ViVlRUUGFyc2VyOjpjcmVhdGUoMCwgbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS0+Y29sbGVjdFRpbWVTdGFtcCh0aW1lc3RhbXAsICZwb3NpdGlv
bik7CisgICAgICAgICAgICBkb3VibGUgY3VycmVudFRpbWVzdGFtcCA9IFdlYlZUVFBhcnNlcjo6
Y3JlYXRlKDAsICZtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLT5jb2xsZWN0VGltZVN0YW1wKHRp
bWVzdGFtcCwgJnBvc2l0aW9uKTsKICAgICAgICAgICAgIEFTU0VSVChjdXJyZW50VGltZXN0YW1w
ICE9IC0xKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGN1cnJlbnRUaW1lc3RhbXAg
PiBtb3ZpZVRpbWUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3Vl
LmgJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRy
YWNrQ3VlLmgJKHdvcmtpbmcgY29weSkKQEAgLTczLDcgKzczLDcgQEAgcHJvdGVjdGVkOgogCiBj
bGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJs
aWMgRXZlbnRUYXJnZXRXaXRoSW5saW5lRGF0YSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4
dCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpCisgICAg
c3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0N1ZShj
b250ZXh0LCBzdGFydCwgZW5kLCBjb250ZW50KSk7CiAgICAgfQpAQCAtMTU0LDcgKzE1NCw3IEBA
IHB1YmxpYzoKICAgICBzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+IGdldFBvc2l0aW9uQ29vcmRp
bmF0ZXMoKSBjb25zdDsKIAogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXRJbnRlcmZhY2UgZXZlbnRU
YXJnZXRJbnRlcmZhY2UoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7IHJldHVybiBUZXh0VHJhY2tD
dWVFdmVudFRhcmdldEludGVyZmFjZVR5cGU7IH0KLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBGSU5BTCB7
IHJldHVybiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7IH0KKyAgICB2aXJ0dWFsIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERSBG
SU5BTCB7IHJldHVybiAmbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0OyB9CiAKICAgICBzdGQ6OnBh
aXI8ZG91YmxlLCBkb3VibGU+IGdldENTU1Bvc2l0aW9uKCkgY29uc3Q7CiAKQEAgLTIwMyw5ICsy
MDMsOSBAQCBwdWJsaWM6CiAgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+OjpkZXJl
ZjsKIAogcHJvdGVjdGVkOgotICAgIFRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOworICAg
IFRleHRUcmFja0N1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgZG91YmxlIHN0YXJ0LCBkb3Vi
bGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogCi0gICAgRG9jdW1lbnQmIG93bmVyRG9j
dW1lbnQoKSB7IHJldHVybiAqdG9Eb2N1bWVudChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOyB9
CisgICAgRG9jdW1lbnQmIG93bmVyRG9jdW1lbnQoKSB7IHJldHVybiB0b0RvY3VtZW50KG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxUZXh0VHJh
Y2tDdWVCb3g+IGNyZWF0ZURpc3BsYXlUcmVlKCk7CiAgICAgVGV4dFRyYWNrQ3VlQm94KiBkaXNw
bGF5VHJlZUludGVybmFsKCk7CkBAIC0yNTQsNyArMjU0LDcgQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8RG9jdW1lbnRGcmFnbWVudD4gbV93ZWJWVFROb2RlVHJlZTsKICAgICBUZXh0VHJhY2sqIG1f
dHJhY2s7CiAKLSAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQ7CisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0OwogCiAgICAgYm9vbCBtX2lzQWN0aXZlOwogICAgIGJvb2wgbV9wYXVzZU9uRXhpdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWVHZW5lcmlj
LmNwcAkocmV2aXNpb24gMTU4MzYxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWVHZW5lcmljLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHZv
aWQgVGV4dFRyYWNrQ3VlR2VuZXJpY0JveEVsZW1lbnQ6OmFwcGwKICAgICBzZXRJbmxpbmVTdHls
ZVByb3BlcnR5KENTU1Byb3BlcnR5V29yZEJyZWFrLCBDU1NWYWx1ZU5vcm1hbCk7CiB9CiAKLVRl
eHRUcmFja0N1ZUdlbmVyaWM6OlRleHRUcmFja0N1ZUdlbmVyaWMoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCitUZXh0VHJhY2tDdWVHZW5lcmljOjpUZXh0VHJhY2tDdWVHZW5lcmljKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3Qg
U3RyaW5nJiBjb250ZW50KQogICAgIDogVGV4dFRyYWNrQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQs
IGNvbnRlbnQpCiAgICAgLCBtX2Jhc2VGb250U2l6ZVJlbGF0aXZlVG9WaWRlb0hlaWdodCgwKQog
ICAgICwgbV9mb250U2l6ZU11bHRpcGxpZXIoMCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
dHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svVGV4dFRyYWNrQ3VlR2VuZXJpYy5oCShyZXZpc2lvbiAxNTgzNjEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZUdlbmVyaWMuaAkod29ya2luZyBj
b3B5KQpAQCAtMzYsOSArMzYsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBHZW5lcmlj
Q3VlRGF0YTsKIAogLy8gQSAiZ2VuZXJpYyIgY3VlIGlzIGEgbm9uLVdlYlZUVCBjdWUsIHNvIGl0
IGlzIG5vdCBwb3NpdGlvbmVkL3NpemVkIHdpdGggdGhlIFdlYlZUVCBsb2dpYy4KLWNsYXNzIFRl
eHRUcmFja0N1ZUdlbmVyaWMgOiBwdWJsaWMgVGV4dFRyYWNrQ3VlIHsKK2NsYXNzIFRleHRUcmFj
a0N1ZUdlbmVyaWMgRklOQUwgOiBwdWJsaWMgVGV4dFRyYWNrQ3VlIHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWVHZW5lcmljPiBjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY29udGV4dCwgZG91YmxlIHN0YXJ0LCBkb3VibGUgZW5kLCBjb25zdCBTdHJp
bmcmIGNvbnRlbnQpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlR2VuZXJpYz4g
Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGRvdWJsZSBzdGFydCwgZG91
YmxlIGVuZCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgIHsKICAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBUZXh0VHJhY2tDdWVHZW5lcmljKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGNvbnRl
bnQpKTsKICAgICB9CkBAIC03OSw3ICs3OSw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdmly
dHVhbCBib29sIGlzT3JkZXJlZEJlZm9yZShjb25zdCBUZXh0VHJhY2tDdWUqKSBjb25zdCBPVkVS
UklERTsKIAotICAgIFRleHRUcmFja0N1ZUdlbmVyaWMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGRvdWJsZSBzdGFydCwgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5nJik7CisgICAgVGV4dFRyYWNr
Q3VlR2VuZXJpYyhTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgZG91YmxlIHN0YXJ0LCBkb3VibGUg
ZW5kLCBjb25zdCBTdHJpbmcmKTsKICAgICAKICAgICBDb2xvciBtX2ZvcmVncm91bmRDb2xvcjsK
ICAgICBDb2xvciBtX2JhY2tncm91bmRDb2xvcjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAJKHJldmlzaW9uIDE1ODM2
MSkKKysrIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTkzLDcgKzU5Myw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6Z2V0UmVzcG9uc2UKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBs
YXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKLSAgICBSZWZQ
dHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUobV9wYWdlQWdl
bnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+
IHhociA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoKm1fcGFnZUFnZW50LT5tYWluRnJhbWUoKS0+
ZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIGFjdHVhbFJlcXVlc3RJZCA9IHJlcXVlc3RJZDsKIAog
ICAgIFhIUlJlcGxheURhdGEqIHhoclJlcGxheURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPnhoclJl
cGxheURhdGEocmVxdWVzdElkKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJh
Y2tMb2FkZXIuY3BwCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGV4dFRyYWNrTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE3LDcgKzIxNyw3IEBAIHZv
aWQgVGV4dFRyYWNrTG9hZGVyOjpnZXROZXdDdWVzKFZlY3RvcjwKICAgICAgICAgbV9jdWVQYXJz
ZXItPmdldE5ld0N1ZXMobmV3Q3Vlcyk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bmV3Q3Vlcy5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgUmVmUHRyPFdlYlZUVEN1ZURhdGE+
IGRhdGEgPSBuZXdDdWVzW2ldOwotICAgICAgICAgICAgUmVmUHRyPFRleHRUcmFja0N1ZT4gY3Vl
ID0gVGV4dFRyYWNrQ3VlOjpjcmVhdGUobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LCBkYXRhLT5z
dGFydFRpbWUoKSwgZGF0YS0+ZW5kVGltZSgpLCBkYXRhLT5jb250ZW50KCkpOworICAgICAgICAg
ICAgUmVmUHRyPFRleHRUcmFja0N1ZT4gY3VlID0gVGV4dFRyYWNrQ3VlOjpjcmVhdGUoKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCwgZGF0YS0+c3RhcnRUaW1lKCksIGRhdGEtPmVuZFRpbWUoKSwg
ZGF0YS0+Y29udGVudCgpKTsKICAgICAgICAgICAgIGN1ZS0+c2V0SWQoZGF0YS0+aWQoKSk7CiAg
ICAgICAgICAgICBjdWUtPnNldEN1ZVNldHRpbmdzKGRhdGEtPnNldHRpbmdzKCkpOwogICAgICAg
ICAgICAgb3V0cHV0Q3Vlcy5hcHBlbmQoY3VlKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRTb3VyY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRT
b3VyY2UuY3BwCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50
U291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTksOCArNTksOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNvbnN0IHVuc2lnbmVkIGxvbmcgbG9uZyBFdmVudFNvdXJjZTo6ZGVmYXVsdFJl
Y29ubmVjdERlbGF5ID0gMzAwMDsKIAotaW5saW5lIEV2ZW50U291cmNlOjpFdmVudFNvdXJjZShT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBVUkwmIHVybCwgY29uc3QgRGlj
dGlvbmFyeSYgZXZlbnRTb3VyY2VJbml0KQotICAgIDogQWN0aXZlRE9NT2JqZWN0KGNvbnRleHQp
CitpbmxpbmUgRXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiBldmVudFNvdXJjZUlu
aXQpCisgICAgOiBBY3RpdmVET01PYmplY3QoJmNvbnRleHQpCiAgICAgLCBtX3VybCh1cmwpCiAg
ICAgLCBtX3dpdGhDcmVkZW50aWFscyhmYWxzZSkKICAgICAsIG1fc3RhdGUoQ09OTkVDVElORykK
QEAgLTczLDE0ICs3MywxNCBAQCBpbmxpbmUgRXZlbnRTb3VyY2U6OkV2ZW50U291cmNlKFNjcmlw
dEV4CiAgICAgZXZlbnRTb3VyY2VJbml0LmdldCgid2l0aENyZWRlbnRpYWxzIiwgbV93aXRoQ3Jl
ZGVudGlhbHMpOwogfQogCi1QYXNzUmVmUHRyPEV2ZW50U291cmNlPiBFdmVudFNvdXJjZTo6Y3Jl
YXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBEaWN0aW9uYXJ5JiBldmVudFNvdXJjZUluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQorUGFz
c1JlZlB0cjxFdmVudFNvdXJjZT4gRXZlbnRTb3VyY2U6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgRGljdGlvbmFyeSYgZXZl
bnRTb3VyY2VJbml0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAodXJsLmlzRW1wdHko
KSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IAotICAgIFVSTCBmdWxsVVJMID0gY29udGV4dC0+Y29tcGxldGVVUkwodXJsKTsKKyAgICBVUkwg
ZnVsbFVSTCA9IGNvbnRleHQuY29tcGxldGVVUkwodXJsKTsKICAgICBpZiAoIWZ1bGxVUkwuaXNW
YWxpZCgpKSB7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuIDA7CkBA
IC04OCwxMSArODgsMTEgQEAgUGFzc1JlZlB0cjxFdmVudFNvdXJjZT4gRXZlbnRTb3VyY2U6OmNy
ZQogCiAgICAgLy8gRklYTUU6IENvbnZlcnQgdGhpcyB0byBjaGVjayB0aGUgaXNvbGF0ZWQgd29y
bGQncyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBvbmNlIHdlYmtpdC5vcmcvYi8xMDQ1MjAgaXMg
c29sdmVkLgogICAgIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9s
aWN5ID0gZmFsc2U7Ci0gICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkgewotICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB0b0RvY3VtZW50KGNvbnRleHQpOwotICAgICAgICBzaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgPSBkb2N1bWVudC0+ZnJhbWUoKS0+
c2NyaXB0KCkuc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVudFNlY3VyaXR5UG9saWN5KCk7Cisg
ICAgaWYgKGNvbnRleHQuaXNEb2N1bWVudCgpKSB7CisgICAgICAgIERvY3VtZW50JiBkb2N1bWVu
dCA9IHRvRG9jdW1lbnQoY29udGV4dCk7CisgICAgICAgIHNob3VsZEJ5cGFzc01haW5Xb3JsZENv
bnRlbnRTZWN1cml0eVBvbGljeSA9IGRvY3VtZW50LmZyYW1lKCktPnNjcmlwdCgpLnNob3VsZEJ5
cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSgpOwogICAgIH0KLSAgICBpZiAoIXNo
b3VsZEJ5cGFzc01haW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSAmJiAhY29udGV4dC0+Y29u
dGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Q29ubmVjdFRvU291cmNlKGZ1bGxVUkwpKSB7Cisg
ICAgaWYgKCFzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3kgJiYgIWNv
bnRleHQuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Q29ubmVjdFRvU291cmNlKGZ1bGxV
UkwpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhpcyBiZSB0aHJvd2luZyBhbiBleGNl
cHRpb24/CiAgICAgICAgIGVjID0gU0VDVVJJVFlfRVJSOwogICAgICAgICByZXR1cm4gMDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL0V2ZW50U291cmNlLmgJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRTb3VyY2UuaAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEs
NyBAQCBjbGFzcyBUaHJlYWRhYmxlTG9hZGVyOwogY2xhc3MgRXZlbnRTb3VyY2UgRklOQUwgOiBw
dWJsaWMgUmVmQ291bnRlZDxFdmVudFNvdXJjZT4sIHB1YmxpYyBFdmVudFRhcmdldFdpdGhJbmxp
bmVEYXRhLCBwcml2YXRlIFRocmVhZGFibGVMb2FkZXJDbGllbnQsIHB1YmxpYyBBY3RpdmVET01P
YmplY3QgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIHN0YXRp
YyBQYXNzUmVmUHRyPEV2ZW50U291cmNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9uQ29kZSYpOwor
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV2ZW50U291cmNlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBEaWN0aW9uYXJ5JiwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIHZpcnR1YWwgfkV2ZW50U291cmNlKCk7CiAKICAgICBzdGF0aWMgY29uc3Qg
dW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRSZWNvbm5lY3REZWxheTsKQEAgLTc5LDcgKzc5LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIEFjdGl2ZURPTU9iamVjdDo6
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOyB9CiAKIHByaXZhdGU6Ci0gICAgRXZlbnRTb3VyY2Uo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFVSTCYsIGNvbnN0IERpY3Rpb25hcnkmKTsK
KyAgICBFdmVudFNvdXJjZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgVVJMJiwgY29u
c3QgRGljdGlvbmFyeSYpOwogCiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyByZWYoKTsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXJlZkV2ZW50VGFyZ2V0KCkgT1ZF
UlJJREUgeyBkZXJlZigpOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJlZFdv
cmtlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvd29ya2Vycy9TaGFyZWRXb3Jr
ZXIuY3BwCShyZXZpc2lvbiAxNTgzNjEpCisrKyBTb3VyY2UvV2ViQ29yZS93b3JrZXJzL1NoYXJl
ZFdvcmtlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTY0LDcgKzY0LDcgQEAgUGFzc1JlZlB0cjxT
aGFyZWRXb3JrZXI+IFNoYXJlZFdvcmtlcjo6YwogCiAgICAgUmVmUHRyPFNoYXJlZFdvcmtlcj4g
d29ya2VyID0gYWRvcHRSZWYobmV3IFNoYXJlZFdvcmtlcihjb250ZXh0KSk7CiAKLSAgICBSZWZQ
dHI8TWVzc2FnZUNoYW5uZWw+IGNoYW5uZWwgPSBNZXNzYWdlQ2hhbm5lbDo6Y3JlYXRlKCZjb250
ZXh0KTsKKyAgICBSZWZQdHI8TWVzc2FnZUNoYW5uZWw+IGNoYW5uZWwgPSBNZXNzYWdlQ2hhbm5l
bDo6Y3JlYXRlKGNvbnRleHQpOwogICAgIHdvcmtlci0+bV9wb3J0ID0gY2hhbm5lbC0+cG9ydDEo
KTsKICAgICBPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsPiByZW1vdGVQb3J0ID0gY2hhbm5lbC0+
cG9ydDIoKS0+ZGlzZW50YW5nbGUoKTsKICAgICBBU1NFUlQocmVtb3RlUG9ydCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHJldmlzaW9uIDE1ODM2MSkKKysrIFNv
dXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2
NSw3ICsxNjUsNyBAQCBzdGF0aWMgdm9pZCBsb2dDb25zb2xlRXJyb3IoU2NyaXB0RXhlY3V0CiAg
ICAgY29udGV4dC0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3Nh
Z2VMZXZlbCwgbWVzc2FnZSk7CiB9CiAKLVBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IFhNTEh0
dHBSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK1Bhc3NS
ZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCkKIHsKICAgICBSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhtbEh0
dHBSZXF1ZXN0KGFkb3B0UmVmKG5ldyBYTUxIdHRwUmVxdWVzdChjb250ZXh0KSkpOwogICAgIHht
bEh0dHBSZXF1ZXN0LT5zdXNwZW5kSWZOZWVkZWQoKTsKQEAgLTE3Myw4ICsxNzMsOCBAQCBQYXNz
UmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiBYTUxIdHRwUmVxdWVzCiAgICAgcmV0dXJuIHhtbEh0dHBS
ZXF1ZXN0LnJlbGVhc2UoKTsKIH0KIAotWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCi0gICAgOiBBY3RpdmVET01PYmplY3QoY29u
dGV4dCkKK1hNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZjb250ZXh0KQogICAgICwgbV9h
c3luYyh0cnVlKQogICAgICwgbV9pbmNsdWRlQ3JlZGVudGlhbHMoZmFsc2UpCiAjaWYgRU5BQkxF
KFhIUl9USU1FT1VUKQpJbmRleDogU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgJKHJldmlz
aW9uIDE1ODM2MSkKKysrIFNvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNsYXNzIFRocmVhZGFibGVMb2FkZXI7CiBjbGFz
cyBYTUxIdHRwUmVxdWVzdCBGSU5BTCA6IHB1YmxpYyBTY3JpcHRXcmFwcGFibGUsIHB1YmxpYyBS
ZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0PiwgcHVibGljIEV2ZW50VGFyZ2V0V2l0aElubGluZURh
dGEsIHByaXZhdGUgVGhyZWFkYWJsZUxvYWRlckNsaWVudCwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBh
c3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0Jik7CiAgICAgflhNTEh0dHBSZXF1ZXN0KCk7CiAKICAgICAvLyBUaGVzZSBl
eGFjdCBudW1lcmljIHZhbHVlcyBhcmUgaW1wb3J0YW50IGJlY2F1c2UgSlMgZXhwZWN0cyB0aGVt
LgpAQCAtMTU4LDcgKzE1OCw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPFhNTEh0
dHBSZXF1ZXN0Pjo6ZGVyZWY7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgWE1MSHR0cFJlcXVl
c3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIGV4cGxpY2l0IFhNTEh0dHBSZXF1ZXN0
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKIAogICAgIC8vIEFjdGl2ZURPTU9iamVjdAogICAg
IHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCkgT1ZFUlJJREU7Cg==
</data>
<flag name="review"
          id="238435"
          type_id="1"
          status="+"
          setter="kling"
    />
          </attachment>
      

    </bug>

</bugzilla>