<?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>239306</bug_id>
          
          <creation_ts>2022-04-13 15:27:45 -0700</creation_ts>
          <short_desc>Replace calls to substring(0, x) with the more concise left(x)</short_desc>
          <delta_ts>2022-04-13 21:52:14 -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>WebCore Misc.</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>239289</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1861284</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 15:27:45 -0700</bug_when>
    <thetext>Replace calls to substring(0, x) with the more concise left(x).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861312</commentid>
    <comment_count>1</comment_count>
      <attachid>457572</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 16:14:47 -0700</bug_when>
    <thetext>Created attachment 457572
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861338</commentid>
    <comment_count>2</comment_count>
      <attachid>457578</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 17:14:53 -0700</bug_when>
    <thetext>Created attachment 457578
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861352</commentid>
    <comment_count>3</comment_count>
      <attachid>457578</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-04-13 18:22:06 -0700</bug_when>
    <thetext>Comment on attachment 457578
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=457578&amp;action=review

&gt; Source/WebCore/platform/network/MIMEHeader.cpp:75
&gt; +        key = StringView(line).left(semiColonIndex).convertToASCIILowercase().stripWhiteSpace();

Seems *so* unlikely this (and the code above) really wants stripWhiteSpace. Almost certainly wants to strip based on some other definitions of spaces rather than &quot;all Unicode whitespace&quot;. Should be MIME whitespace definition, which is probably like the HTML or HTTP whitespace definition.

Almost every call to stripWhiteSpace is a mistake.

Also cute that this capitalizes semicolon as if it was two words, or hyphenated.

&gt; Source/WebCore/svg/SVGURIReference.cpp:72
&gt;      URL kurl(base, fragmentIdentifier);

Ah, yes, &quot;kurl&quot;.

&gt; Source/WebCore/workers/service/server/SWServer.cpp:1271
&gt; +    if (!scheme.startsWithIgnoringASCIICase(&quot;http&quot;))

Nice one. Could use the even-more-optimized startsWithLettersIgnoringASCIICase.

&gt; Source/WebKit/UIProcess/API/glib/InputMethodFilter.cpp:243
&gt; +    auto cursorPositionUTF8 = cursorPosition != text.length() ? StringView(text).left(cursorPosition).utf8().length() : textUTF8.length();

Not great to call utf8().length() instead of an algorithm that can compute a UTF-8 length, without also allocating memory and copying the characters. But doesn’t need to be fixed right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861361</commentid>
    <comment_count>4</comment_count>
      <attachid>457586</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 19:08:53 -0700</bug_when>
    <thetext>Created attachment 457586
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861370</commentid>
    <comment_count>5</comment_count>
      <attachid>457588</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-13 19:42:28 -0700</bug_when>
    <thetext>Created attachment 457588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861390</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-13 21:51:46 -0700</bug_when>
    <thetext>Committed r292857 (249628@main): &lt;https://commits.webkit.org/249628@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457588.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1861391</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-13 21:52:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/91734789&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457572</attachid>
            <date>2022-04-13 16:14:47 -0700</date>
            <delta_ts>2022-04-13 17:58:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239306-20220413161446.patch</filename>
            <type>text/plain</type>
            <size>94572</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NjEwNzMzYzAzNDRkMGU5MjEzNzJhOWJlYmJlM2VjZWU3YjMyMWQ4Li45NWQ4MmRhMjMwOWRhNjNk
NTIxZDcyM2VjMDlhNWU0ZGE4MzQ2ZmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUg
Y29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjbGFtcEVycm9yTWVzc2FnZSk6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6
d2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmJlc3RBdmFpbGFibGVMb2NhbGUpOgor
CiAyMDIyLTA0LTEzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0pTQ10gUmVtb3ZlIERlcHJlY2F0ZWRDYWxsRnJhbWVGb3JEZWJ1Z2dlcgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCA5OGQz
NmUwOTQ3NDU1MTIwMTRmNGY3YjBmNzFiNGFiNGVjYmY2YzI2Li5kOWNjYmM2YjE4Mjk3MWUwZWNh
MDk5Y2U3YzJhMjQ0ZDM3NmU4Yzk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTA0LTEzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0
byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogd3RmL1VSTC5jcHA6Cisg
ICAgICAgIChXVEY6OlVSTDo6cHJvdG9jb2wgY29uc3QpOgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sSG9zdEFuZFBvcnQgY29uc3QpOgorICAgICAgICAoV1RGOjpVUkw6OnNldFByb3RvY29s
KToKKyAgICAgICAgKFdURjo6VVJMOjpzZXRIb3N0KToKKyAgICAgICAgKFdURjo6VVJMOjpzZXRI
b3N0QW5kUG9ydCk6CisgICAgICAgIChXVEY6OlVSTDo6c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVy
IGNvbnN0KToKKyAgICAgICAgKiB3dGYvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFdURjo6VVJM
UGFyc2VyOjphZGROb25TcGVjaWFsRG90U2xhc2gpOgorICAgICAgICAoV1RGOjpVUkxQYXJzZXI6
OnBhcnNlVVJMRW5jb2RlZEZvcm0pOgorICAgICAgICAqIHd0Zi9VVUlELmNwcDoKKyAgICAgICAg
KFdURjo6VVVJRDo6cGFyc2UpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6Cisg
ICAgICAgIChXVEY6OlN0cmluZzo6aW5zZXJ0KToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJp
bmcuaDoKKwogMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIERyb3AgdW51c2VkIEF0b21TdHJpbmcoY29uc3QgTENoYXIqKSBjb25zdHJ1Y3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGJlZmFhZDQ5NGIyOGI4MTA1MjNhNWI3YzM0YmUwN2Y3YmY3MjVlNTkuLmZj
MDViNzk2YjRhYmQxZWNkYTBiYmE2YzBmMWZhZGYwYWIxNjJmOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzEgQEAKKzIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBSZXBsYWNlIGNhbGxzIHRvIHN1YnN0cmluZygwLCB4KSB3aXRoIHRoZSBtb3Jl
IGNvbmNpc2UgbGVmdCh4KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjM5MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgUmVwbGFjZSBjYWxscyB0byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBj
b25jaXNlIGxlZnQoeCkuIEFsc28gdXNlIFN0cmluZ1ZpZXcgaW4gbW9yZSBjYXNlcworICAgICAg
ICBmb3IgcGVyZm9ybWFuY2UuCisKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keUNv
bnN1bWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTUlNRVR5cGUpOgorICAgICAgICAq
IE1vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJD
dXJzb3I6OnNldEdldFJlc3VsdCk6CisgICAgICAgICogTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5
UGF0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJLZXlQYXRoTGV4ZXI6OmxleElkZW50aWZp
ZXIpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5k
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZElnbm9yZUljZUNhbmRpZGF0ZSk6CisgICAg
ICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJUQ0RUTUZTZW5kZXI6OnBsYXlOZXh0VG9uZSk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9nc3RyZWFtZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVTdHJlYW0pOgorICAg
ICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2Vp
dmVyQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b1J0cENvZGVjQ2FwYWJpbGl0eSk6
CisgICAgICAgICogTW9kdWxlcy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1
dGVVUkwpOgorICAgICAgICAqIGRpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRpc3BsYXk6OlRleHRCb3g6OmRlYnVnRGVzY3JpcHRpb24gY29uc3QpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
cGFyc2VRdWFsaWZpZWROYW1lKToKKyAgICAgICAgKiBkb20vVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0OjpzcGxpdFRleHQpOgorICAgICAgICAqIGVkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRJdGVyYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZWFy
Y2hCdWZmZXI6OnByZXBlbmRDb250ZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2libGVVbml0
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzdWZmaXhMZW5ndGhGb3JSYW5nZSk6CisgICAgICAg
IChXZWJDb3JlOjpzdGFydFdvcmRCb3VuZGFyeSk6CisgICAgICAgIChXZWJDb3JlOjpwcmV2aW91
c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KToKKyAgICAgICAgKiBlZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24ubW06CisgICAgICAgIChXZWJDb3JlOjpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50
SW5SYW5nZSk6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6c2hvdWxkUHJlc2VydmVNU09MaXN0cyk6CisgICAgICAgICogaHRtbC9GZWF0dXJlUG9saWN5
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVwZGF0ZUxpc3QpOgorICAgICAgICAqIGh0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgIChXVEY6OkxvZ0FyZ3VtZW50PFVSTD46OnRvU3Ry
aW5nKToKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dXJsRm9yTG9nZ2luZ1RyYWNrKToKKyAgICAgICAgKiBodG1sL1VSTERlY29tcG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMRGVjb21wb3NpdGlvbjo6c2V0SG9zdCk6Cisg
ICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwYXJzZUhUVFBSZWZyZXNoSW50ZXJuYWwpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxTcmNzZXRQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VEZXNjcmlwdG9ycyk6
CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmVlQnVpbGRlcjo6RXh0ZXJuYWxDaGFyYWN0ZXJUb2tlbkJ1ZmZlcjo6Y2hh
cmFjdGVyUHJlZGljYXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0SGFuZGxlcjo6b2JzZXJ2ZUNvbW1l
bnQpOgorICAgICAgICAqIGxheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6b3V0cHV0TGF5b3V0Qm94KToKKyAgICAgICAgKiBs
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Om1hbmlmZXN0UGF0aCk6CisgICAgICAgICogbWF0aG1sL01hdGhNTFByZXNl
bnRhdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWF0aE1MUHJlc2VudGF0aW9u
RWxlbWVudDo6cGFyc2VOdW1iZXJBbmRVbml0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVJlZ0V4cEZvckxhYmVscyk6CisgICAgICAgICogcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9TaGFy
ZWRTdHJpbmdIYXNoLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbXB1dGVTaGFyZWRTdHJpbmdI
YXNoSW5saW5lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2VudGVyVHJ1bmNhdGVUb0J1ZmZlcik6CisgICAgICAg
IChXZWJDb3JlOjpyaWdodFRydW5jYXRlVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmln
aHRDbGlwVG9DaGFyYWN0ZXJCdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRDbGlwVG9X
b3JkQnVmZmVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c2V0UGxheWJpblVSTCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnBsYXRmb3JtTWF4
aW11bUJ1ZmZlclNpemUgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q2FjaGVXaW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR0RJRm9udCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250Q2FjaGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZh
bWlseSk6CisgICAgICAgICogcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbToKKyAgICAgICAg
KFdlYkNvcmU6OmRldmljZU5hbWVGb3JVc2VyQWdlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRyaW1Ub05leHRT
ZXBhcmF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDYWNoZUhlYWRlcik6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwcm90ZWN0aW9uU3BhY2VNYXBLZXlGcm9tVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkNy
ZWRlbnRpYWxTdG9yYWdlOjpmaW5kRGVmYXVsdFByb3RlY3Rpb25TcGFjZUZvclVSTCk6CisgICAg
ICAgICogcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhVVJMRGVjb2Rlcjo6RGVjb2RlVGFzazo6cHJvY2Vzcyk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVN0
cnVjdHVyZWRGaWVsZFZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cmV0cmlldmVLZXlWYWx1ZVBhaXJzKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb29raWVVdGlsOjpwYXJzZUNvb2tpZUF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVIZWFkZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q29v
a2llVXRpbDo6ZGVmYXVsdFBhdGhGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvTG9j
YWxlVG9TY3JpcHRNYXBwaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsZVRvU2NyaXB0
Q29kZUZvckZvbnRTZWxlY3Rpb24pOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9QYXN0ZWJvYXJk
V2luLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFzdGVib2FyZDo6d3JpdGVVUkxUb0RhdGFPYmplY3QpOgor
ICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlR2xvYmFsSW1hZ2VGaWxlRGVzY3JpcHRvcik6CisgICAg
ICAgICogcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6ZG9EcmF3VGV4dEF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0OjpvdXRwdXRSZW5kZXJPYmpl
Y3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRMaW5lQ29sbGVjdGlvbkJhc2U6Ok5hbWVk
TGluZUNvbGxlY3Rpb25CYXNlKToKKyAgICAgICAgKiBzdmcvU1ZHVGVzdHMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGVzdHM6OmlzVmFsaWQgY29uc3QpOgorICAgICAgICAqIHN2Zy9TVkdV
UklSZWZlcmVuY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVVJJUmVmZXJlbmNlOjpmcmFn
bWVudElkZW50aWZpZXJGcm9tSVJJU3RyaW5nKToKKyAgICAgICAgKiBzdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NNSUxFbGVtZW50OjpwYXJz
ZUNsb2NrVmFsdWUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9i
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2I6OnZhbGlkYXRlU2Vydmlj
ZVdvcmtlclJlc3BvbnNlKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbktleS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVn
aXN0cmF0aW9uS2V5Ojpmcm9tRGF0YWJhc2VLZXkpOgorICAgICAgICAqIHdvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1dTZXJ2ZXI6OmNhbkhh
bmRsZVNjaGVtZSBjb25zdCk6CisKIDIwMjItMDQtMTMgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1x
dWV1ZUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyByMjkyODE3
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViRHJp
dmVyL0NoYW5nZUxvZwppbmRleCA3NDgyYWUyMzQzNGQwM2JhMThjZWY5MjIzYTc2ODAwOGI4MTM1
NWY1Li4yNmFjNGY4OWEwMmUyNThjMmU5OTI1YjkzZGRhZmIzMjdmZDM2N2YyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0byBzdWJzdHJpbmcoMCwgeCkgd2l0
aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5jcHA6CisgICAgICAgIChXZWJEcml2
ZXI6OkNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQpOgorCiAyMDIyLTA0LTExICBEb24gT2xt
c3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRml4IFBsYXlTdGF0aW9u
IGJ1aWxkIGFmdGVyIHIyOTI2OTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMzczZWE3MWJmNGQ1OTE4ODM5YjMxMWFm
OWRiMmY3ZTAyOTBlNzU0NC4uYzgxYjBmYTBmZjllYzVkZDZhMGMyYjRmZWE5ZTNjMDVjMzM4MTEz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAs
IHgpIHdpdGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TG9jYWxTdG9y
YWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zIGNvbnN0KToKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya0NhY2hlOjp0cmF2ZXJzZVJlY29yZHNGaWxlcyk6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6Zmls
ZU5hbWVUb09yaWdpbik6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcDoKKyAg
ICAgICAgKFdLU3RyaW5nR2V0Q2hhcmFjdGVycyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9n
bGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5wdXRNZXRob2RG
aWx0ZXI6Om5vdGlmeVN1cnJvdW5kaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL0d0a1Nl
dHRpbmdzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdzTWFuYWdlcjo6
dGhlbWVOYW1lIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBo
KToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcik6CisKIDIwMjItMDQt
MTMgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgW2Nz
cy1zY3JvbGwtc25hcF0gc2Nyb2xsSW50b1ZpZXcgZmFpbHMgd2l0aCBzY3JvbGwtc25hcC10eXBl
IG9uIDpyb290CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4IDdlNzYyZWU5YTA1NzA1NjUxZDU4MmQ2
NDU5YzQ0NTM4ZWEzZDUyMjQuLjJmYjY3MWRkNTc2ZjVhZTFhM2VmZTA1Nzk5NzEzMzExNTFhODRm
MWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjItMDQtMTMgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGNhbGxzIHRv
IHN1YnN0cmluZygwLCB4KSB3aXRoIHRoZSBtb3JlIGNvbmNpc2UgbGVmdCh4KQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MzA2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VU
cmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lz
dGVtQW5kVHJhY2tlckRhdGFiYXNlKToKKwogMjAyMi0wNC0xMiAgRnVqaWkgSGlyb25vcmkgIDxI
aXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAgICBbV2luQ2Fpcm9dIFdFQktJVF9MSUJS
QVJJRVMgZW52IHZhciBzaG91bGQgYmUgY3VzdG9taXphYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKaW5kZXggOTY3YTJkMTAyN2Y3ZGM3Yjk4ZmI0ZjU0MTlhMDYyM2EzYTBkNmNjZi4uYjJk
MjlmZTYxNzUxY2UzMWMzOGQwNDM3ZDFmYTQ3MTNmMTMzZjhiNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNk
dW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0byBzdWJzdHJpbmcoMCwg
eCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW06CisgICAgICAgIChyZWdFeHBGb3JMYWJlbHMpOgorCiAyMDIyLTA0LTEyICBFbGxpb3R0IFdp
bGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVdIEluIG9wZW4tc291cmNl
IGJ1aWxkcywgZGlzYWJsZSBiaXRjb2RlIGluIHhjY29uZmlncyBpbnN0ZWFkIG9mIGJ1aWxkLXdl
YmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRB
cmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1l
bnRzLmgKaW5kZXggNzdhMDgxOTE2ZjYxYzJmOWJkNzE2YWM4M2YzMDlkZGRhN2U4MzI3NC4uMjJk
YTdkZDE5NzkxODk3MDcxMjEyM2RjNTUxOTQyODFmMjlmNGM5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCkBAIC02Miw3ICs2Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3RleHByIHNpemVfdCBtYXhNZXNzYWdlTGVuZ3RoID0g
MTAwMDA7CiAgICAgICAgIGlmIChtZXNzYWdlLmxlbmd0aCgpIDw9IG1heE1lc3NhZ2VMZW5ndGgp
CiAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZTsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
bWVzc2FnZS5zdWJzdHJpbmcoMCwgbWF4TWVzc2FnZUxlbmd0aCksICIuLi4iX3MpOworICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KG1lc3NhZ2UpLmxlZnQobWF4TWVzc2FnZUxl
bmd0aCksICIuLi4iX3MpOwogICAgIH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZGMxNjA5NzlmOWQ4
NzM2NTlmYmY5YzgwZGI2MzMwNmFmZDVlOTQ5MS4uMTYxZjNlNjlkNDNiODlkODNmNTdmYzdmYzFm
MzFjMGQyMmEwNDhlZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcg
Y2xhbXBFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UpCiB7CiAgICAg
Ly8gSG9wZWZ1bGx5IHRoaXMgaXMgc3VmZmljaWVudGx5IGxvbmcuIE5vdGUsIHRoaXMgaXMgdGhl
IGxlbmd0aCBvZiB0aGUgc3RyaW5nIG5vdCB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQuCiAgICAg
Y29uc3RleHByIHVuc2lnbmVkIG1heExlbmd0aCA9IDIgKiBLQjsKLSAgICByZXR1cm4gU3RyaW5n
VmlldyhvcmlnaW5hbE1lc3NhZ2UpLnN1YnN0cmluZygwLCBtYXhMZW5ndGgpOworICAgIHJldHVy
biBTdHJpbmdWaWV3KG9yaWdpbmFsTWVzc2FnZSkubGVmdChtYXhMZW5ndGgpOwogfQogCiBzdGF0
aWMgU3RyaW5nIGRlZmF1bHRBcHByb3hpbWF0ZVNvdXJjZUVycm9yKGNvbnN0IFN0cmluZyYgb3Jp
Z2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRleHQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IDgzZTdkYWM2ZmJi
YjVmOGI0ZjczNzNhMTNhZmZhZDU3NWNkM2Q5MTguLjMyODBkYWMyZDc1ZGQ0ODM2MGNmOGMzNDNi
MmRkNThmMmI3ODkxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMjMsNyArMjIzLDcgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdWaWV3
IHVuaXRJZGUKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSBy
ZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElkZW50aWZpZXIobnVtZXJhdG9yKSBpcyBm
YWxzZSwgdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgYXV0byBudW1lcmF0b3IgPSB1bml0SWRlbnRp
Zmllci5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOworICAgIGF1dG8gbnVtZXJhdG9yID0gdW5pdElk
ZW50aWZpZXIubGVmdChwb3NpdGlvbik7CiAgICAgYXV0byBudW1lcmF0b3JVbml0ID0gc2FuY3Rp
b25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVyYXRvcik7CiAgICAgaWYgKCFudW1lcmF0b3JV
bml0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCAyOWQ2ZjkzNWYwMjdiMjAyNzBlOTFmZWI5
ZGI3NmRhNTRjYTRmMTYxLi45ZDZhYjU2YTJjZjU2Y2M3NGY0YWE2OWMxOWVhNjllYWVmNWJlZWFh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAt
OTU3LDcgKzk1Nyw3IEBAIFJlc29sdmVkTG9jYWxlIHJlc29sdmVMb2NhbGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgY29uc3QgTG9jYWxlU2V0JiBhdmFpCiAKICAgICBpZiAoc3VwcG9y
dGVkRXh0ZW5zaW9uLmxlbmd0aCgpID4gMikgewogICAgICAgICBTdHJpbmdWaWV3IGZvdW5kTG9j
YWxlVmlldyhmb3VuZExvY2FsZSk7Ci0gICAgICAgIGZvdW5kTG9jYWxlID0gbWFrZVN0cmluZyhm
b3VuZExvY2FsZVZpZXcuc3Vic3RyaW5nKDAsIG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uSW5kZXgp
LCBzdXBwb3J0ZWRFeHRlbnNpb24sIGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmcobWF0Y2hlclJl
c3VsdC5leHRlbnNpb25JbmRleCkpOworICAgICAgICBmb3VuZExvY2FsZSA9IG1ha2VTdHJpbmco
Zm91bmRMb2NhbGVWaWV3LmxlZnQobWF0Y2hlclJlc3VsdC5leHRlbnNpb25JbmRleCksIHN1cHBv
cnRlZEV4dGVuc2lvbiwgZm91bmRMb2NhbGVWaWV3LnN1YnN0cmluZyhtYXRjaGVyUmVzdWx0LmV4
dGVuc2lvbkluZGV4KSk7CiAgICAgfQogCiAgICAgcmVzb2x2ZWQubG9jYWxlID0gV1RGTW92ZShm
b3VuZExvY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdElubGluZXMuaAppbmRleCA0MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2VhYjMw
YWZlLi5kYzU3OGUxOWJkNTUyMGVjNzRlN2JjM2IxMzIzNTA5YTEyYTlmMmNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTU4
LDcgKzU4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPiBTdHJpbmcgYmVzdEF2YWls
YWJsZUxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSwgUHIKICAgICAgICAgaWYgKHBvcyA+PSAy
ICYmIGNhbmRpZGF0ZVtwb3MgLSAyXSA9PSAnLScpCiAgICAgICAgICAgICBwb3MgLT0gMjsKIAot
ICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUuc3Vic3RyaW5nKDAsIHBvcyk7CisgICAgICAg
IGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5sZWZ0KHBvcyk7CiAgICAgfQogCiAgICAgcmV0dXJuIFN0
cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYv
d3RmL1VSTC5jcHAKaW5kZXggMmMyMjFmNGViMTk4ZWIxN2U0ZmE5MGZkMjM5ZDQ4OGU1NGViZWFk
Yi4uNTc2OGUzODg3ODE4NzQ2ZTc1Y2RiNDVlYjY1ZDMzODU4MTc4N2IxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0x
MzUsNyArMTM1LDcgQEAgU3RyaW5nVmlldyBVUkw6OnByb3RvY29sKCkgY29uc3QKICAgICBpZiAo
IW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBTdHJpbmdWaWV3
KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV9zY2hlbWVFbmQpOworICAgIHJldHVybiBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fc2NoZW1lRW5kKTsKIH0KIAogU3RyaW5nVmlldyBVUkw6Omhv
c3QoKSBjb25zdApAQCAtMTYyLDEwICsxNjIsMTAgQEAgU3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQo
KSBjb25zdAogU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0QW5kUG9ydCgpIGNvbnN0CiB7CiAgICAg
aWYgKCFoYXNDcmVkZW50aWFscygpKQotICAgICAgICByZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5n
KDAsIHBhdGhTdGFydCgpKTsKKyAgICAgICAgcmV0dXJuIG1fc3RyaW5nLmxlZnQocGF0aFN0YXJ0
KCkpOwogCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoCi0gICAgICAgIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJp
bmcpLmxlZnQobV91c2VyU3RhcnQpLAogICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJz
dHJpbmcoaG9zdFN0YXJ0KCksIHBhdGhTdGFydCgpIC0gaG9zdFN0YXJ0KCkpCiAgICAgKTsKIH0K
QEAgLTM3Nyw3ICszNzcsNyBAQCBTdHJpbmdWaWV3IFVSTDo6cGF0aCgpIGNvbnN0CiBib29sIFVS
TDo6c2V0UHJvdG9jb2woU3RyaW5nVmlldyBuZXdQcm90b2NvbCkKIHsKICAgICAvLyBGaXJlZm94
IGFuZCBJRSByZW1vdmUgZXZlcnl0aGluZyBhZnRlciB0aGUgZmlyc3QgJzonLgotICAgIGF1dG8g
bmV3UHJvdG9jb2xQcmVmaXggPSBuZXdQcm90b2NvbC5zdWJzdHJpbmcoMCwgbmV3UHJvdG9jb2wu
ZmluZCgnOicpKTsKKyAgICBhdXRvIG5ld1Byb3RvY29sUHJlZml4ID0gbmV3UHJvdG9jb2wubGVm
dChuZXdQcm90b2NvbC5maW5kKCc6JykpOwogICAgIGF1dG8gbmV3UHJvdG9jb2xDYW5vbmljYWxp
emVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6ZVNjaGVtZShuZXdQcm90b2NvbFByZWZp
eCk7CiAgICAgaWYgKCFuZXdQcm90b2NvbENhbm9uaWNhbGl6ZWQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFVSTDo6c2V0SG9zdChTdHJpbmdWaWV3IG5l
d0hvc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvIGluZGV4ID0gbmV3SG9zdC5m
aW5kKGhhc1NwZWNpYWxTY2hlbWUoKSA/IHNsYXNoSGFzaE9yUXVlc3Rpb25NYXJrIDogZm9yd2Fy
ZFNsYXNoSGFzaE9yUXVlc3Rpb25NYXJrKTsgaW5kZXggIT0gbm90Rm91bmQpCi0gICAgICAgIG5l
d0hvc3QgPSBuZXdIb3N0LnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgICAgIG5ld0hvc3QgPSBu
ZXdIb3N0LmxlZnQoaW5kZXgpOwogCiAgICAgVmVjdG9yPFVDaGFyLCA1MTI+IGVuY29kZWRIb3N0
TmFtZTsKICAgICBpZiAoaGFzU3BlY2lhbFNjaGVtZSgpICYmICFhcHBlbmRFbmNvZGVkSG9zdG5h
bWUoZW5jb2RlZEhvc3ROYW1lLCBuZXdIb3N0KSkKQEAgLTUwMCw3ICs1MDAsNyBAQCB2b2lkIFVS
TDo6c2V0SG9zdEFuZFBvcnQoU3RyaW5nVmlldyBob3N0QW5kUG9ydCkKICAgICBhdXRvIGNvbG9u
SW5kZXggPSBob3N0TmFtZS5yZXZlcnNlRmluZCgnOicpOwogICAgIGlmIChjb2xvbkluZGV4ICE9
IG5vdEZvdW5kKSB7CiAgICAgICAgIHBvcnRTdHJpbmcgPSBob3N0TmFtZS5zdWJzdHJpbmcoY29s
b25JbmRleCArIDEpOwotICAgICAgICBob3N0TmFtZSA9IGhvc3ROYW1lLnN1YnN0cmluZygwLCBj
b2xvbkluZGV4KTsKKyAgICAgICAgaG9zdE5hbWUgPSBob3N0TmFtZS5sZWZ0KGNvbG9uSW5kZXgp
OwogICAgICAgICAvLyBNdWx0aXBsZSBjb2xvbnMgYXJlIGFjY2VwdGFibGUgb25seSBpbiBjYXNl
IG9mIElQdjYuCiAgICAgICAgIGlmIChob3N0TmFtZS5jb250YWlucygnOicpICYmICFob3N0TmFt
ZS5zdGFydHNXaXRoKCdbJykpCiAgICAgICAgICAgICByZXR1cm47CkBAIC04MzcsNyArODM3LDcg
QEAgU3RyaW5nIFVSTDo6c3RyaXBwZWRGb3JVc2VBc1JlZmVycmVyKCkgY29uc3QKICAgICAgICAg
cmV0dXJuIG1fc3RyaW5nOwogCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoCi0gICAgICAgIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFydCksCisgICAgICAgIFN0cmlu
Z1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLAogICAgICAgICBTdHJpbmdWaWV3KG1f
c3RyaW5nKS5zdWJzdHJpbmcoZW5kLCBtX3F1ZXJ5RW5kIC0gZW5kKQogICAgICk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwIGIvU291cmNlL1dURi93dGYvVVJM
UGFyc2VyLmNwcAppbmRleCBmZmRjOGQzOGZlYjVkZDExZTY2OTc1MDhjMjhkYjQ4MWNkM2YwMWQ5
Li4xMWRhZDFlMTIyN2FlOTQ5MzlhNTVkYTc1NGQwYTJhZjU0YWM2ZWQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNl
ci5jcHAKQEAgLTI1MTIsNyArMjUxMiw3IEBAIHZvaWQgVVJMUGFyc2VyOjphZGROb25TcGVjaWFs
RG90U2xhc2goKQogewogICAgIGF1dG8gb2xkUGF0aFN0YXJ0ID0gbV91cmwubV9ob3N0RW5kICsg
bV91cmwubV9wb3J0TGVuZ3RoOwogICAgIGF1dG8mIG9sZFN0cmluZyA9IG1fdXJsLm1fc3RyaW5n
OwotICAgIG1fdXJsLm1fc3RyaW5nID0gbWFrZVN0cmluZyhvbGRTdHJpbmcuc3Vic3RyaW5nKDAs
IG9sZFBhdGhTdGFydCArIDEpLCAiLi8iLCBvbGRTdHJpbmcuc3Vic3RyaW5nKG9sZFBhdGhTdGFy
dCArIDEpKTsKKyAgICBtX3VybC5tX3N0cmluZyA9IG1ha2VTdHJpbmcoU3RyaW5nVmlldyhvbGRT
dHJpbmcpLmxlZnQob2xkUGF0aFN0YXJ0ICsgMSksICIuLyIsIFN0cmluZ1ZpZXcob2xkU3RyaW5n
KS5zdWJzdHJpbmcob2xkUGF0aFN0YXJ0ICsgMSkpOwogICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFz
dFNsYXNoICs9IDI7CiAgICAgbV91cmwubV9wYXRoRW5kICs9IDI7CiAgICAgbV91cmwubV9xdWVy
eUVuZCArPSAyOwpAQCAtMjg5MSw3ICsyODkxLDcgQEAgYXV0byBVUkxQYXJzZXI6OnBhcnNlVVJM
RW5jb2RlZEZvcm0oU3RyaW5nVmlldyBpbnB1dCkgLT4gVVJMRW5jb2RlZEZvcm0KICAgICAgICAg
ICAgIGlmIChuYW1lKQogICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVl
KCksIGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBhdXRv
IG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnN1YnN0cmluZygwLCBlcXVhbEluZGV4KS50b1N0
cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3Jt
VVJMRGVjb2RlKGJ5dGVzLmxlZnQoZXF1YWxJbmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywg
MHgyMCkpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vi
c3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CiAg
ICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKICAgICAgICAgICAgICAgICBvdXRwdXQuYXBw
ZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgpIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dURi93dGYvVVVJRC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAppbmRleCA0Yjg5MDAw
NDdiZTliNTZiNmE2ZWMxNmUxMzkxNDU2NmVlZmQ5MWMwLi5hODAxMzAwNDgwNzBmMTYyNWY0ODA2
NTY0ZTQzZGVhYzI2NWQ0YmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHN0ZDo6b3B0
aW9uYWw8VVVJRD4gVVVJRDo6cGFyc2UoU3RyaW5nVmlldyB2YWx1ZSkKICAgICBpZiAodmFsdWVb
MF0gPT0gJysnIHx8IHZhbHVlWzldID09ICcrJyAgfHwgdmFsdWVbMTldID09ICcrJyB8fCB2YWx1
ZVsyNF0gPT0gJysnKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgYXV0byBmaXJzdFZhbHVl
ID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5zdWJzdHJpbmcoMCwgOCksIDE2KTsKKyAg
ICBhdXRvIGZpcnN0VmFsdWUgPSBwYXJzZUludGVnZXI8dWludDY0X3Q+KHZhbHVlLmxlZnQoOCks
IDE2KTsKICAgICBpZiAoIWZpcnN0VmFsdWUpCiAgICAgICAgIHJldHVybiB7IH07CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBkNzc3YTk3OWM4NDVlYzEyOWY0ZmZhNWUxZGUyMTE4
M2FiYzY1MmM4Li5hMTY3M2E2M2U5Nzc0NDIyNWQwMmRlYjk5YjI0MzI4NzNiMzRmMDI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0xNzcsMTQgKzE3NywxNCBAQCB2b2lkIFN0cmlu
Zzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBwb3NpdGlvbikKICAgICBp
ZiAoaXM4Qml0KCkgJiYgc3RyaW5nLmlzOEJpdCgpKSB7CiAgICAgICAgIExDaGFyKiBkYXRhOwog
ICAgICAgICBhdXRvIG5ld1N0cmluZyA9IFN0cmluZ0ltcGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQo
bGVuZ3RoKCkgKyBsZW5ndGhUb0luc2VydCwgZGF0YSk7Ci0gICAgICAgIFN0cmluZ1ZpZXcoKm1f
aW1wbCkuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChk
YXRhKTsKKyAgICAgICAgU3RyaW5nVmlldygqbV9pbXBsKS5sZWZ0KHBvc2l0aW9uKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKICAgICAgICAgU3RyaW5nVmlldyhzdHJpbmcpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbik7CiAgICAgICAgIFN0cmlu
Z1ZpZXcoKm1faW1wbCkuc3Vic3RyaW5nKHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29u
dmVydChkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0luc2VydCk7CiAgICAgICAgIG1faW1wbCA9
IFdURk1vdmUobmV3U3RyaW5nKTsKICAgICB9IGVsc2UgewogICAgICAgICBVQ2hhciogZGF0YTsK
ICAgICAgICAgYXV0byBuZXdTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmluaXRpYWxpemVk
KGxlbmd0aCgpICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwotICAgICAgICBTdHJpbmdWaWV3KCpt
X2ltcGwpLnN1YnN0cmluZygwLCBwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
ZGF0YSk7CisgICAgICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkubGVmdChwb3NpdGlvbikuZ2V0Q2hh
cmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSk7CiAgICAgICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhICsgcG9zaXRpb24pOwogICAgICAgICBTdHJp
bmdWaWV3KCptX2ltcGwpLnN1YnN0cmluZyhwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNv
bnZlcnQoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQpOwogICAgICAgICBtX2ltcGwg
PSBXVEZNb3ZlKG5ld1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAppbmRleCBiNjQ5NzA5
ODBhYmUzZjNjNzliOTQyZmEwODI2NTY2M2NlODI5YmQ1Li5mMTczZmU2OTIzZDdhYWYyNGFlMzRk
ZDc0OWUwNzM0OGY4NTU4Mzg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTIwNCw3ICsy
MDQsOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nJiByZXBsYWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNp
Z25lZCBsZW5ndGgsIFN0cmluZ1ZpZXcgcmVwbGFjZW1lbnQpOwogICAgIHRlbXBsYXRlPHVuc2ln
bmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcmIHJlcGxhY2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJn
ZXQsIGNvbnN0IGNoYXIgKCZyZXBsYWNlbWVudClbY2hhcmFjdGVyQ291bnRdKTsKIAorICAgIC8v
IEZJWE1FOiBUaGlzIGlzIGlkZW50aWZpY2FsIHRvIGxlZnQoKSBhbmQgc2hvdWxkIHByb2JhYmx5
IGJlIGRyb3BwZWQuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgdHJ1bmNhdGUodW5zaWdu
ZWQgbGVuZ3RoKTsKKwogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHJlbW92ZSh1bnNpZ25l
ZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gMSk7CiAKICAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0g
TWF4TGVuZ3RoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9G
ZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggMzJlYTFkNDlmN2RmZTRhMjAwZDllNWMwYzU4Mzcy
NjA3YjVkZDIwMS4uMDNlMDE4MmQzOTIxNzhhYzY3YTQ2YTU1OTQ3MGZmNjU3MmQ5NGU3NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5j
cHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxNaW1lVHlwZT4gcGFy
c2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIGlmIChzbGFzaEluZGV4
ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgU3RyaW5n
IHR5cGUgPSBpbnB1dC5zdWJzdHJpbmcoMCwgc2xhc2hJbmRleCk7CisgICAgU3RyaW5nIHR5cGUg
PSBpbnB1dC5sZWZ0KHNsYXNoSW5kZXgpOwogICAgIGlmICghdHlwZS5sZW5ndGgoKSB8fCAhaXNW
YWxpZEhUVFBUb2tlbih0eXBlKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4
IGU0MzgyYjNkMzRhMjk0NzU4MGQ3ZDc5MGNhNDQ1ZmUwOTU2ZDI1NDEuLjBlNmNkNWIzMWQ2M2Yz
ZjE5MmIxMDE2YWYyNDRlMThlY2NmNWFkMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMzI2LDcgKzMyNiw3IEBAIEV4Y2VwdGlvbk9y
PFJlZjxXZWJDb3JlOjpJREJSZXF1ZXN0Pj4gSURCQ3Vyc29yOjpkZWxldGVGdW5jdGlvbigpCiAK
IGJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURCUmVxdWVzdCYgcmVxdWVzdCwgY29uc3Qg
SURCR2V0UmVzdWx0JiBnZXRSZXN1bHQsIHVpbnQ2NF90IG9wZXJhdGlvbklEKQogewotICAgIExP
RyhJbmRleGVkREIsICJJREJDdXJzb3I6OnNldEdldFJlc3VsdCAtIGN1cnJlbnQga2V5ICVzIiwg
Z2V0UmVzdWx0LmtleURhdGEoKS5sb2dnaW5nU3RyaW5nKCkuc3Vic3RyaW5nKDAsIDEwMCkudXRm
OCgpLmRhdGEoKSk7CisgICAgTE9HKEluZGV4ZWREQiwgIklEQkN1cnNvcjo6c2V0R2V0UmVzdWx0
IC0gY3VycmVudCBrZXkgJXMiLCBnZXRSZXN1bHQua2V5RGF0YSgpLmxvZ2dpbmdTdHJpbmcoKS5s
ZWZ0KDEwMCkudXRmOCgpLmRhdGEoKSk7CiAgICAgQVNTRVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nl
c3NUaHJlYWRMb2NhbERhdGEoZWZmZWN0aXZlT2JqZWN0U3RvcmUoKS50cmFuc2FjdGlvbigpLmRh
dGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKIAogICAgIGF1dG8qIGNvbnRleHQgPSByZXF1ZXN0
LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5UGF0aC5jcHAKaW5kZXggYzgyOTExNmU2NDQ3NTZjYjc2NjFkNmNlOGVm
NjdmNjUyOWJhOTMyYy4uYmQwMDhhMWUwNzMzZDIzMzIxMzFkNzdiOTgxNmE2ZmZkMjk1ZjU5MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAK
QEAgLTExNSw3ICsxMTUsNyBAQCBJREJLZXlQYXRoTGV4ZXI6OlRva2VuVHlwZSBJREJLZXlQYXRo
TGV4ZXI6OmxleElkZW50aWZpZXIoU3RyaW5nJiBlbGVtZW50KQogICAgIHdoaWxlICghbV9yZW1h
aW5pbmdUZXh0LmlzRW1wdHkoKSAmJiBpc0lkZW50aWZpZXJDaGFyYWN0ZXIobV9yZW1haW5pbmdU
ZXh0WzBdKSkKICAgICAgICAgbV9yZW1haW5pbmdUZXh0ID0gbV9yZW1haW5pbmdUZXh0LnN1YnN0
cmluZygxKTsKIAotICAgIGVsZW1lbnQgPSBzdGFydC5zdWJzdHJpbmcoMCwgc3RhcnQubGVuZ3Ro
KCkgLSBtX3JlbWFpbmluZ1RleHQubGVuZ3RoKCkpLnRvU3RyaW5nKCk7CisgICAgZWxlbWVudCA9
IHN0YXJ0LmxlZnQoc3RhcnQubGVuZ3RoKCkgLSBtX3JlbWFpbmluZ1RleHQubGVuZ3RoKCkpLnRv
U3RyaW5nKCk7CiAgICAgcmV0dXJuIFRva2VuSWRlbnRpZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJh
Y2tlbmQuY3BwCmluZGV4IDFjMDM0NTdlZGY4ODdmNzU5OTdjNDQ0NWYwZDM0YmZhZGEyMTdiMGQu
Ljc1YzBhMDk3NTE4NTFlMGVmMTM5ZWY0YzQ3NTk0NTNjNWYyMjQ2Y2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rpb25CYWNrZW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxk
SWdub3JlSWNlQ2FuZGlkYXRlKGNvbnN0IFJUQ0ljZUNhbmRpZGF0ZSYgaWNlQ2FuZGlkYXRlKQog
ICAgIGlmICghYWRkcmVzcy5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCIubG9jYWwiKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFXVEY6OmlzVmVyc2lvbjRVVUlEKFN0cmlu
Z1ZpZXcgeyBhZGRyZXNzIH0uc3Vic3RyaW5nKDAsIGFkZHJlc3MubGVuZ3RoKCkgLSA2KSkpIHsK
KyAgICBpZiAoIVdURjo6aXNWZXJzaW9uNFVVSUQoU3RyaW5nVmlldyB7IGFkZHJlc3MgfS5sZWZ0
KGFkZHJlc3MubGVuZ3RoKCkgLSA2KSkpIHsKICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoV2Vi
UlRDLCAibUROUyBjYW5kaWRhdGUgaXMgbm90IGEgVmVyc2lvbiA0IFVVSUQiKTsKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXggYWM2NmM1ZWFjMzc4YzI5NzYzYWU0MjM1
NWZjYjM3ZWIyZjQxYjVjZS4uYTNiNjFlYzBjZTVjMDE1NGRiNTlmZDc3MDczNmZmYmE1NDEzYzg5
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1G
U2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RU
TUZTZW5kZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBSVENEVE1GU2VuZGVyOjpwbGF5
TmV4dFRvbmUoKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYXV0byBjdXJyZW50VG9u
ZSA9IG1fdG9uZXMuc3Vic3RyaW5nKDAsIDEpOworICAgIGF1dG8gY3VycmVudFRvbmUgPSBtX3Rv
bmVzLmxlZnQoMSk7CiAgICAgbV90b25lcy5yZW1vdmUoMCk7CiAKICAgICBtX2JhY2tlbmQtPnBs
YXlUb25lKGN1cnJlbnRUb25lLCBtX2R1cmF0aW9uLCBtX2ludGVyVG9uZUdhcCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFt
ZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
Z3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwCmluZGV4IGUxNjQ3MGI4YTQyOWQz
YTg1MmM0ZDdiYjFiNjVmMWViNDNhMDI1N2YuLjFmOWE3ZjVjZjJhMjE0ZmViOTE0MGU0YTBlNTEy
OTkyMWZiMjg1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQu
Y3BwCkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHU3RyZWFtZXJNZWRpYUVuZHBvaW50OjphZGRS
ZW1vdGVTdHJlYW0oR3N0UGFkKiBwYWQpCiAgICAgICAgIGF1dG8gaSA9IGxpbmUuZmluZChrZXkp
OwogICAgICAgICBpZiAoaSAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgYXV0byB0bXAgPSBs
aW5lLnN1YnN0cmluZyhpICsga2V5LmFzY2lpKCkubGVuZ3RoKCkpOwotICAgICAgICAgICAgbGFi
ZWwgPSB0bXAuc3Vic3RyaW5nKDAsIHRtcC5maW5kKCcgJykpOworICAgICAgICAgICAgbGFiZWwg
PSB0bXAubGVmdCh0bXAuZmluZCgnICcpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9s
aWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVy
QmFja2VuZC5jcHAKaW5kZXggNDE3NmU4ZDZmNzgzYTUyNWE4MGY3YTYwZWFkYzY3ZjZiZmQ3MDE2
Yy4uOTQ5MzdmMDRkYjhjM2I0ZGQ1YmQ4MWY1NDNmZjEwMGY0ZjdmZWI0MCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRw
VHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwCkBAIC0x
MDAsNyArMTAwLDcgQEAgc3RhdGljIGlubGluZSBFeGNlcHRpb25Pcjx3ZWJydGM6OlJ0cENvZGVj
Q2FwYWJpbGl0eT4gdG9SdHBDb2RlY0NhcGFiaWxpdHkoY29uc3QKICAgICAgICAgYXV0byBwb3Np
dGlvbiA9IHBhcmFtZXRlci5maW5kKCc9Jyk7CiAgICAgICAgIGlmIChwb3NpdGlvbiA9PSBub3RG
b3VuZCkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkTW9kaWZpY2F0aW9u
RXJyb3IsICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgc2RwRm10TGluZSBiYWRseSBmb3JtYXRlZCJf
cyB9OwotICAgICAgICBydGNDb2RlYy5wYXJhbWV0ZXJzLmVtcGxhY2UocGFyYW1ldGVyLnN1YnN0
cmluZygwLCBwb3NpdGlvbikudXRmOCgpLmRhdGEoKSwgcGFyYW1ldGVyLnN1YnN0cmluZyhwb3Np
dGlvbiArIDEpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBydGNDb2RlYy5wYXJhbWV0ZXJzLmVt
cGxhY2UocGFyYW1ldGVyLmxlZnQocG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksIHBhcmFtZXRlci5z
dWJzdHJpbmcocG9zaXRpb24gKyAxKS51dGY4KCkuZGF0YSgpKTsKICAgICB9CiAKICAgICByZXR1
cm4gcnRjQ29kZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMv
WW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCmluZGV4IDg1N2M5YzI0YmI4ZGU0NjBl
MmMyNzVmOTJmMzhhMTIwYjAyMDNjNWUuLmNiYWY0NmYwZWU1ZmU3ZTQwOTA1YTQ5NmRhZDg3ZTRl
OWZhOWFhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VU
dWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1
Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCkBAIC0yMjIsNyArMjIyLDcgQEAgc3Rh
dGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYg
aXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudDsKICAgICAg
ICAgICAgIHF1ZXJ5ID0gZW1wdHlTdHJpbmcoKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg
ICAgIHBhdGggPSBmcmFnbWVudC5zdWJzdHJpbmcoMCwgbG9jYXRpb24pOworICAgICAgICAgICAg
cGF0aCA9IGZyYWdtZW50LmxlZnQobG9jYXRpb24pOwogICAgICAgICAgICAgcXVlcnkgPSBmcmFn
bWVudC5zdWJzdHJpbmcobG9jYXRpb24gKyAxKTsKICAgICAgICAgfQogICAgICAgICBmcmFnbWVu
dCA9IGVtcHR5U3RyaW5nKCk7CkBAIC0yNjIsNyArMjYyLDcgQEAgc3RhdGljIFVSTCBwcm9jZXNz
QW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRl
bmVkVVIKICAgICAgICAgc2l6ZV90IGFtcGVyc2FuZExvY2F0aW9uID0gbGFzdFBhdGhDb21wb25l
bnQuZmluZCgnJicpOwogICAgICAgICBpZiAoYW1wZXJzYW5kTG9jYXRpb24gIT0gbm90Rm91bmQp
IHsKICAgICAgICAgICAgIC8vIFNvbWUgVVJMcyB3ZSBjYXJlIGFib3V0IHVzZSAmIGluIHBsYWNl
IG9mID8gZm9yIHRoZSBmaXJzdCBxdWVyeSBwYXJhbWV0ZXIuCi0gICAgICAgICAgICB2aWRlb0lE
ID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKDAsIGFtcGVyc2FuZExvY2F0aW9uKTsKKyAg
ICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0aENvbXBvbmVudC5sZWZ0KGFtcGVyc2FuZExvY2F0
aW9uKTsKICAgICAgICAgICAgIHBhdGhBZnRlckZpcnN0QW1wZXJzYW5kID0gbGFzdFBhdGhDb21w
b25lbnQuc3Vic3RyaW5nKGFtcGVyc2FuZExvY2F0aW9uICsgMSwgbGFzdFBhdGhDb21wb25lbnQu
bGVuZ3RoKCkgLSBhbXBlcnNhbmRMb2NhdGlvbik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50OwpAQCAtMzA0LDcgKzMwNCw3IEBAIFN0cmlu
ZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29u
c3QgVVJMJiBzcmNVUkwsIGNvCiAgICAgICAgIEFTU0VSVChsb2NhdGlvbk9mVmlkZW9JREluUGF0
aCk7CiAgICAgCiAgICAgICAgIC8vIEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBn
ZXQgdGhlIHBhcnQgYmVmb3JlIC9wYXRoL1ZpZGVvSWQuCi0gICAgICAgIGxvY2F0aW9uT2ZQYXRo
QmVmb3JlVmlkZW9JRCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5maW5kKHNyY1BhdGguc3Vic3Ry
aW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoKSk7CisgICAgICAgIGxvY2F0aW9uT2ZQYXRo
QmVmb3JlVmlkZW9JRCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5maW5kKHNyY1BhdGgubGVmdChs
b2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOwogICAgIH0gZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdu
b3JpbmdBU0NJSUNhc2Uoc3JjUGF0aCwgIi93YXRjaCIpKSB7CiAgICAgICAgIC8vIEZyb20gdGhl
IG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3JlIC93YXRjaC8jIXY9
VmlkZW9JRAogICAgICAgICAvLyBGSVhNRTogU2hvdWxkbid0IHRoaXMgYmUgQVNDSUkgY2FzZS1p
bnNlbnNpdGl2ZT8KQEAgLTMxNCw3ICszMTQsNyBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxh
Y2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjbwog
CiAgICAgQVNTRVJUKGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCAhPSBub3RGb3VuZCk7CiAK
LSAgICBhdXRvIHNyY1VSTFByZWZpeCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5zdWJzdHJpbmco
MCwgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsKKyAgICBhdXRvIHNyY1VSTFByZWZpeCA9
IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5sZWZ0KGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCk7
CiAgICAgYXV0byBxdWVyeSA9IHNyY1VSTC5xdWVyeSgpOwogCiAgICAgLy8gSWYgdGhlIFVSTCBo
YXMgbm8gcXVlcnksIHVzZSB0aGUgcG9zc2libHkgbWFsZm9ybWVkIHF1ZXJ5IHdlIGZvdW5kLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3Bw
IGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwCmluZGV4IGU1
ODBjMzRiODgxZWE0ODEyYTI1MmMxMDY1MzhkMzI5NTEyMjA0MjAuLjZhZWYwMWQwMDYzZWYwMmIx
NjMwOGY3Zjc2YjkxYzkwOWE1OTQyYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3Bs
YXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nz
cy9EaXNwbGF5VGV4dEJveC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3RyaW5nIFRleHRCb3g6OmRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHRleHRDb250ZW50LnJlcGxhY2VXaXRoTGl0ZXJh
bCgnXG4nLCAiXFxuIik7CiAgICAgY29uc3Qgc2l6ZV90IG1heFByaW50ZWRMZW5ndGggPSA4MDsK
ICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmludGVkTGVuZ3RoKSB7Ci0gICAg
ICAgIGF1dG8gc3Vic3RyaW5nID0gdGV4dENvbnRlbnQuc3Vic3RyaW5nKDAsIG1heFByaW50ZWRM
ZW5ndGgpOworICAgICAgICBhdXRvIHN1YnN0cmluZyA9IFN0cmluZ1ZpZXcodGV4dENvbnRlbnQp
LmxlZnQobWF4UHJpbnRlZExlbmd0aCk7CiAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCBzdWJz
dHJpbmcgPDwgIlwi4oCmIjsKICAgICB9IGVsc2UKICAgICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8
IHRleHRDb250ZW50IDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCAzODAxYmVk
M2NmMjI1YmFiMTgyYWJjYTkzZmI5NzFlOGJkOTY2NGUyLi4yMWVmY2RjNWNkNGUzYjE2MDdkMTQw
MzMwOWI4NGMzYTlkYWZjNDRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU1NjksNyAr
NTU2OSw3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4g
RG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShjb25zCiAgICAgaWYgKCFjb2xvblBvc2l0aW9u
IHx8IGxlbmd0aCAtIGNvbG9uUG9zaXRpb24gPD0gMSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9OwogCi0gICAgcmV0dXJuIHN0ZDo6cGFpcjxBdG9t
U3RyaW5nLCBBdG9tU3RyaW5nPiB7IFN0cmluZ1ZpZXcgeyBxdWFsaWZpZWROYW1lIH0uc3Vic3Ry
aW5nKDAsIGNvbG9uUG9zaXRpb24pLnRvQXRvbVN0cmluZygpLCBTdHJpbmdWaWV3IHsgcXVhbGlm
aWVkTmFtZSB9LnN1YnN0cmluZyhjb2xvblBvc2l0aW9uICsgMSkudG9BdG9tU3RyaW5nKCkgfTsK
KyAgICByZXR1cm4gc3RkOjpwYWlyPEF0b21TdHJpbmcsIEF0b21TdHJpbmc+IHsgU3RyaW5nVmll
dyB7IHF1YWxpZmllZE5hbWUgfS5sZWZ0KGNvbG9uUG9zaXRpb24pLnRvQXRvbVN0cmluZygpLCBT
dHJpbmdWaWV3IHsgcXVhbGlmaWVkTmFtZSB9LnN1YnN0cmluZyhjb2xvblBvc2l0aW9uICsgMSku
dG9BdG9tU3RyaW5nKCkgfTsKIH0KIAogRXhjZXB0aW9uT3I8UXVhbGlmaWVkTmFtZT4gRG9jdW1l
bnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShjb25zdCBBdG9tU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNv
bnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAppbmRleCA2OGE2ZmJiMzU4
NDQxNDQxYTJiMTFiNThmYzZmMTk0MjlmMWYwZWVhLi5kYzgzOTFmNjM5ZjhkMTYzMDk4MzUzZjQ5
Y2JhYzAyNmE4YjdkODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCkBAIC02NCw3ICs2NCw3IEBAIEV4Y2Vw
dGlvbk9yPFJlZjxUZXh0Pj4gVGV4dDo6c3BsaXRUZXh0KHVuc2lnbmVkIG9mZnNldCkKICAgICBF
dmVudFF1ZXVlU2NvcGUgc2NvcGU7CiAgICAgYXV0byBvbGREYXRhID0gZGF0YSgpOwogICAgIGF1
dG8gbmV3VGV4dCA9IHZpcnR1YWxDcmVhdGUob2xkRGF0YS5zdWJzdHJpbmcob2Zmc2V0KSk7Ci0g
ICAgc2V0RGF0YVdpdGhvdXRVcGRhdGUob2xkRGF0YS5zdWJzdHJpbmcoMCwgb2Zmc2V0KSk7Cisg
ICAgc2V0RGF0YVdpdGhvdXRVcGRhdGUob2xkRGF0YS5sZWZ0KG9mZnNldCkpOwogCiAgICAgZGlz
cGF0Y2hNb2RpZmllZEV2ZW50KG9sZERhdGEpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggODBhODc4NmNmMzg3NWEzMzQ0NWZiMTQ2N2Vi
ZDQ2YzI3NDIxYTg0Mi4uMzE4MzQ0MWM4NTI2YTBjZGJlZTM5MGVjZDNmYjM5OTc2ZTdmZWQ0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5nSGVscGVyLmNwcApAQCAt
NTgyLDcgKzU4Miw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQYXJhZ3JhcGgoVGV4dENoZWNrZXJDbGll
bnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRpb25TZXQ8CiAgICAgICAgIHVuc2lnbmVk
IGdyYW1tYXJDaGVja0xlbmd0aCA9IHRleHQubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoYXV0byYg
bWlzc3BlbGxpbmcgOiBtaXNzcGVsbGluZ3MpCiAgICAgICAgICAgICBncmFtbWFyQ2hlY2tMZW5n
dGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNoZWNrTGVuZ3RoLCBtaXNzcGVsbGluZy5y
YW5nZS5sb2NhdGlvbik7Ci0gICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhjbGllbnQsIHRl
eHQuc3Vic3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsK
KyAgICAgICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNsaWVudCwgdGV4dC5sZWZ0KGdyYW1tYXJD
aGVja0xlbmd0aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsKICAgICB9CiAKICAgICByZXN1bHRzID0g
V1RGTW92ZShncmFtbWF0aWNhbEVycm9ycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVy
YXRvci5jcHAKaW5kZXggZTFhODkyNWU5ZmViOWNiZmIzZDU3ZWZmOTc5NzlkZTJlZjU4NmY4OC4u
YmZhMjJlM2ZlYTM5NTZjMDhmYjFlMmI0MGEwODdkMWMyNWVhNzQ3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjAzMCw3ICsyMDMwLDcgQEAgaW5saW5lIHZv
aWQgU2VhcmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dChTdHJpbmdWaWV3IHRleHQpCiAgICAgc2l6
ZV90IHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHRleHQubGVuZ3RoKCk7CiAgICAgaWYgKHdv
cmRCb3VuZGFyeUNvbnRleHRTdGFydCkgewogICAgICAgICBVMTZfQkFDS18xKHRleHQsIDAsIHdv
cmRCb3VuZGFyeUNvbnRleHRTdGFydCk7Ci0gICAgICAgIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFy
dCA9IHN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZygwLCB3b3Jk
Qm91bmRhcnlDb250ZXh0U3RhcnQpKTsKKyAgICAgICAgd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0
ID0gc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdCh3b3JkQm91bmRhcnlD
b250ZXh0U3RhcnQpKTsKICAgICB9CiAKICAgICBzaXplX3QgdXNhYmxlTGVuZ3RoID0gc3RkOjpt
aW4obV9idWZmZXIuY2FwYWNpdHkoKSAtIG1fcHJlZml4TGVuZ3RoLCB0ZXh0Lmxlbmd0aCgpIC0g
d29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVu
aXRzLmNwcAppbmRleCA0NTE4YWQ0MzkzMWM4NTI1YjhlZmYyMGM0MDliZDI2M2M4MDcyZWZkLi41
YmVjODcxNDA1MThiODM0MGM4NmFkNzQ5NGZmY2VhZDg3YWNiNjQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC00NTAsNyArNDUwLDcgQEAgdW5zaWduZWQgc3Vm
Zml4TGVuZ3RoRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIGZvcndhcmRzU2NhblJhbmdlLCBW
ZWN0b3I8VUNoYXIKICAgICB3aGlsZSAoIWZvcndhcmRzSXRlcmF0b3IuYXRFbmQoKSkgewogICAg
ICAgICBTdHJpbmdWaWV3IHRleHQgPSBmb3J3YXJkc0l0ZXJhdG9yLnRleHQoKTsKICAgICAgICAg
dW5zaWduZWQgaSA9IGVuZE9mRmlyc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQpOwotICAgICAg
ICBhcHBlbmQoc3RyaW5nLCB0ZXh0LnN1YnN0cmluZygwLCBpKSk7CisgICAgICAgIGFwcGVuZChz
dHJpbmcsIHRleHQubGVmdChpKSk7CiAgICAgICAgIHN1ZmZpeExlbmd0aCArPSBpOwogICAgICAg
ICBpZiAoaSA8IHRleHQubGVuZ3RoKCkpCiAgICAgICAgICAgICBicmVhazsKQEAgLTYzOCw3ICs2
MzgsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5leHRCb3VuZGFyeShjb25zdCBWaXNpYmxl
UG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwogdW5zaWduZWQgc3RhcnRXb3JkQm91bmRh
cnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZzZXQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4
dEF2YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQsIGJvb2wmIG5lZWRNb3JlQ29udGV4dCkK
IHsKICAgICBBU1NFUlQob2Zmc2V0KTsKLSAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFz
dGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkp
IHsKKyAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3VuZGFy
eUNvbnRleHQodGV4dC5sZWZ0KG9mZnNldCkpKSB7CiAgICAgICAgIG5lZWRNb3JlQ29udGV4dCA9
IHRydWU7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTY5Nyw3ICs2OTcsNyBAQCBWaXNp
YmxlUG9zaXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgYywgRVdvcmRTaWRl
IHNpZGUpCiAKIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0
cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNlYXJjaENvbnRleHRBdmFp
bGFiaWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9yZUNvbnRleHQpCiB7Ci0g
ICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250
ZXh0KHRleHQuc3Vic3RyaW5nKDAsIG9mZnNldCkpKSB7CisgICAgaWYgKG1heUhhdmVNb3JlQ29u
dGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdChvZmZzZXQp
KSkgewogICAgICAgICBuZWVkTW9yZUNvbnRleHQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMDsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRl
Y3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0K
aW5kZXggZWZlYzU3MmVkYjI4MGVlMWYzYTczNGUxN2YxZDZhYTAyODU5YjRkMC4uZDYzYmI5YTJh
ZjUyNjJmMGUxNDcyMTU3YTQ2YjM0MzJlODBlNjdhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAtNTc5LDcgKzU3OSw3IEBAIE5TQXJyYXkg
KkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBj
b250ZXh0UmFuZ2UsIE9wCiAgICAgICAgICAgICAgICAgICAgIGxhc3RUZXh0Tm9kZVRvVXBkYXRl
LT5zZXREYXRhKGxhc3ROb2RlQ29udGVudCk7CiAgICAgICAgICAgICAgICAgY29udGVudE9mZnNl
dCA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKHJhbmdlLnN0YXJ0Lm9mZnNldCA+IDApCi0gICAg
ICAgICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vi
c3RyaW5nKDAsIHJhbmdlLnN0YXJ0Lm9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgIHRleHRO
b2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkubGVmdChyYW5nZS5zdGFydC5vZmZzZXQp
OwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgdGV4dE5vZGVEYXRhID0gY3Vy
cmVudFRleHROb2RlLmRhdGEoKS5zdWJzdHJpbmcoY29udGVudE9mZnNldCwgcmFuZ2Uuc3RhcnQu
b2Zmc2V0IC0gY29udGVudE9mZnNldCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAppbmRl
eCA3ZTU5NTJiN2E5NjI4NzA3MGU4MDM3OThkNTlkOGZjMmY3YjM5YjliLi5mMDhkZDk5ODk0NDkz
NGM4ZmYwNjI5NmI5ODVhOWZhMGRhZDc5NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3Bw
CkBAIC05OTUsNyArOTk1LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkUHJlc2VydmVNU09MaXN0cyhT
dHJpbmdWaWV3IG1hcmt1cCkKICAgICBhdXRvIHRhZ0Nsb3NlID0gbWFya3VwLmZpbmQoJz4nKTsK
ICAgICBpZiAodGFnQ2xvc2UgPT0gbm90Rm91bmQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICBhdXRvIHRhZyA9IG1hcmt1cC5zdWJzdHJpbmcoMCwgdGFnQ2xvc2UpOworICAgIGF1dG8gdGFn
ID0gbWFya3VwLmxlZnQodGFnQ2xvc2UpOwogICAgIHJldHVybiB0YWcuY29udGFpbnMoInhtbG5z
Om89XCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9mZmljZTpvZmZpY2VcIiIpCiAgICAgICAg
ICYmIHRhZy5jb250YWlucygieG1sbnM6dz1cInVybjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2Zm
aWNlOndvcmRcIiIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJl
UG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKaW5kZXgg
NTg0OGQwYWI5YzJkNzU2NGYwOGY0ODc1MmI5MzVlMTgxMGIxMTgxNy4uNDFlMDMxZDQ2MDJjZTI1
MjM4MzZkMjAzMzAxMmUxYTc2MzY3MDFkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9GZWF0dXJlUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xp
Y3kuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIHVwZGF0ZUxpc3Qo
RG9jdW1lbnQmIGRvY3VtZW50LCBGZWF0dXJlUG9saWN5OjpBbGxvd1J1bGUmIHJ1bGUKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHByb2Nlc3NPcmlnaW5JdGVtKGRv
Y3VtZW50LCBydWxlLCB2YWx1ZS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pKTsKKyAgICAgICAgcHJv
Y2Vzc09yaWdpbkl0ZW0oZG9jdW1lbnQsIHJ1bGUsIHZhbHVlLmxlZnQocG9zaXRpb24pKTsKICAg
ICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcocG9zaXRpb24gKyAxKS5zdHJpcExlYWRpbmdB
bmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzSFRNTFNwYWNlPFVDaGFyPik7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggYjQyZDk2MDRm
MzRjZGViZjc0ZWMzY2JhZjA2MmE3ZTkzN2RlNGQ0YS4uNTFlNWE0ZTA4YWM0MTQ4NTI5MGM0NTQy
OGUwMTNiNDkzZGQ3NDhiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQu
Y3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExvZ0FyZ3VtZW50PFVSTD4gewogCiAgICAg
ICAgIGlmICh1cmwuc3RyaW5nKCkubGVuZ3RoKCkgPCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2lu
ZykKICAgICAgICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCk7Ci0gICAgICAgIHJldHVybiB1cmwu
c3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxMZW5ndGhGb3JMb2dnaW5nKSArICIuLi4i
OworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHVybC5zdHJpbmcoKSkubGVm
dChtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZyksICIuLi4iKTsKICNlbHNlCiAgICAgICAgIFVO
VVNFRF9QQVJBTSh1cmwpOwogICAgICAgICByZXR1cm4gIlt1cmxdIl9zOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXggZTQ3YTViZDhiMzczZDViZDI1YTA0MjYw
NmI2OWI0NDQ5OWU0MTc0NS4uMGM5NjNkYTdiOGNhMDI4MDE0MzEyNjgyNGJjMzVlZDUwMDUzYWQw
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIHN0YXRpYyBTdHJpbmcgdXJsRm9yTG9nZ2luZ1RyYWNrKGNvbnN0IFVSTCYgdXJsKQog
ICAgIAogICAgIGlmICh1cmwuc3RyaW5nKCkubGVuZ3RoKCkgPCBtYXhpbXVtVVJMTGVuZ3RoRm9y
TG9nZ2luZykKICAgICAgICAgcmV0dXJuIHVybC5zdHJpbmcoKTsKLSAgICByZXR1cm4gdXJsLnN0
cmluZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykgKyAiLi4uIjsK
KyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KHVybC5zdHJpbmcoKSkubGVmdChtYXhp
bXVtVVJMTGVuZ3RoRm9yTG9nZ2luZyksICIuLi4iKTsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRleCBlNGUzMGE5YjYwNGVmMWE4NGQ3NzUy
YmJkOGIzNzA4NDUyYTFlMDhmLi45MzVjZTVkY2I3MjU5YTVlZDYwOTk1YTI4NTc4YjY2MGNlNTkw
NGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKQEAgLTExNywx
MyArMTE3LDEzIEBAIHZvaWQgVVJMRGVjb21wb3NpdGlvbjo6c2V0SG9zdChTdHJpbmdWaWV3IHZh
bHVlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0g
Y291bnRBU0NJSURpZ2l0cyh2YWx1ZS5zdWJzdHJpbmcoc2VwYXJhdG9yICsgMSkpOwogICAgICAg
ICBpZiAoIXBvcnRMZW5ndGgpIHsKLSAgICAgICAgICAgIGZ1bGxVUkwuc2V0SG9zdCh2YWx1ZS5z
dWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CisgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3QodmFs
dWUubGVmdChzZXBhcmF0b3IpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGF1dG8g
cG9ydE51bWJlciA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4odmFsdWUuc3Vic3RyaW5nKHNlcGFy
YXRvciArIDEsIHBvcnRMZW5ndGgpKTsKICAgICAgICAgICAgIGlmIChwb3J0TnVtYmVyICYmIFdU
Rjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0TnVtYmVyLCBmdWxsVVJMLnByb3RvY29s
KCkpKQotICAgICAgICAgICAgICAgIGZ1bGxVUkwuc2V0SG9zdEFuZFBvcnQodmFsdWUuc3Vic3Ry
aW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAgICAgIGZ1bGxVUkwuc2V0SG9zdEFuZFBv
cnQodmFsdWUubGVmdChzZXBhcmF0b3IpKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBmdWxsVVJMLnNldEhvc3RBbmRQb3J0KHZhbHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3Ig
KyAxICsgcG9ydExlbmd0aCkpOworICAgICAgICAgICAgICAgIGZ1bGxVUkwuc2V0SG9zdEFuZFBv
cnQodmFsdWUubGVmdChzZXBhcmF0b3IgKyAxICsgcG9ydExlbmd0aCkpOwogICAgICAgICB9CiAg
ICAgfQogICAgIGlmIChmdWxsVVJMLmlzVmFsaWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggNjFjNmE3YjM0YTk1NDRjODNkOWQ3
ZWY1MDEwYzQ3ZmI2OTI3ZGFiMC4uNWMxZWM3NDFjMjFhNDk3OTRiNGE4NmFiYjU3NTg2Nzg5YTEx
Y2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklk
aW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9t
cy5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZUhUVFBSZWZyZXNoSW50
ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRpb24sIGNvbnN0IENoYXJhYwogICAgIGlm
IChxdW90ZSAhPSAnXDAnKSB7CiAgICAgICAgIHNpemVfdCBpbmRleCA9IHVybC5maW5kKHF1b3Rl
KTsKICAgICAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5kKQotICAgICAgICAgICAgdXJsID0gdXJs
LnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgICAgICAgICB1cmwgPSB1cmwubGVmdChpbmRleCk7
CiAgICAgfQogCiAgICAgcGFyc2VkVVJMID0gdXJsLnRvU3RyaW5nKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCmluZGV4IDYwNjIwZjU2YzRl
YjhmMDRiNDNkZjJlMTUxOGE0ZjZmNmJkOTc5OGQuLmJhZWQzMmRjNTg5ZDYzOGVlNmVmNjJjZDli
MTU4MDAxOGM0M2ZjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxTcmNzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxT
cmNzZXRQYXJzZXIuY3BwCkBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VEZXNj
cmlwdG9ycyhWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2NyaXB0b3JzLCBEZXNjcmlwdG9yUGFyc2lu
Z1IKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB1bnNpZ25lZCBkZXNjcmlwdG9yQ2hh
clBvc2l0aW9uID0gZGVzY3JpcHRvci5sZW5ndGgoKSAtIDE7CiAgICAgICAgIFVDaGFyIGRlc2Ny
aXB0b3JDaGFyID0gZGVzY3JpcHRvcltkZXNjcmlwdG9yQ2hhclBvc2l0aW9uXTsKLSAgICAgICAg
ZGVzY3JpcHRvciA9IGRlc2NyaXB0b3Iuc3Vic3RyaW5nKDAsIGRlc2NyaXB0b3JDaGFyUG9zaXRp
b24pOworICAgICAgICBkZXNjcmlwdG9yID0gZGVzY3JpcHRvci5sZWZ0KGRlc2NyaXB0b3JDaGFy
UG9zaXRpb24pOwogICAgICAgICBpZiAoZGVzY3JpcHRvckNoYXIgPT0gJ3gnKSB7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0Lmhhc0RlbnNpdHkoKSB8fCByZXN1bHQuaGFzSGVpZ2h0KCkgfHwgcmVz
dWx0Lmhhc1dpZHRoKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKaW5kZXggZWRjYzZhZmQ2
YzZmMDM4Yjg0YzRlNzFmNTc4YTY4ODg0MjdjNzEwMy4uZjZhYThhNzc4OTlhZWNkZWQ3NWM4M2Mz
NDhiMTVhZWI0YTgxOWM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
VHJlZUJ1aWxkZXIuY3BwCkBAIC0yNDEsNyArMjQxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgc2tp
cExlYWRpbmc8Y2hhcmFjdGVyUHJlZGljYXRlPigpOwogICAgICAgICBpZiAoc3RhcnQubGVuZ3Ro
KCkgPT0gbV90ZXh0Lmxlbmd0aCgpKQogICAgICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhzdGFydC5zdWJzdHJpbmcoMCwgc3RhcnQubGVuZ3RoKCkg
LSBtX3RleHQubGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoc3RhcnQubGVm
dChzdGFydC5sZW5ndGgoKSAtIG1fdGV4dC5sZW5ndGgoKSkpOwogICAgIH0KIAogICAgIFN0cmlu
ZyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgc3RyaW5nVmlldykgY29uc3QKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAppbmRleCAyNmUxOGVjMDRh
YTZmN2RhZjNjN2I0MzNhOTZiMjYxYmI5MDI0OTRhLi4wOTAxNmU1YzcxMWQ1NjUxM2UzNWMzODRk
NGRkMzAwMmRkMzQ2NzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwCkBAIC0zODQsNyArMzg0LDcgQEAgdm9pZCBTdHlsZVNoZWV0SGFu
ZGxlcjo6b2JzZXJ2ZUNvbW1lbnQodW5zaWduZWQgc3RhcnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9m
ZnNldCkKICAgICAvLyBSZXF1aXJlIHdlbGwtZm9ybWVkIGNvbW1lbnRzLgogICAgIGlmICghY29t
bWVudFRleHQuZW5kc1dpdGgoIiovIikpCiAgICAgICAgIHJldHVybjsKLSAgICBjb21tZW50VGV4
dCA9IGNvbW1lbnRUZXh0LnN1YnN0cmluZygwLCBjb21tZW50VGV4dC5sZW5ndGgoKSAtIDIpLnN0
cmlwV2hpdGVTcGFjZSgpOworICAgIGNvbW1lbnRUZXh0ID0gY29tbWVudFRleHQubGVmdChjb21t
ZW50VGV4dC5sZW5ndGgoKSAtIDIpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIGlmIChjb21tZW50
VGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcAppbmRleCA0
ZGMzNTFlNDkyMmI3NTQ2NzZjZDA4YjgxNDRkMWVhZTA1MDlkNzg3Li42OTQyYjFmMjk2ZTUyZjQ3
NmM5Mjk2MDhkMGY5MTkyZjQ0ZDAyNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCkBAIC01MDMsNyArNTAzLDcg
QEAgc3RhdGljIHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRleHRTdHJlYW0mIHN0cmVhbSwgY29uc3Qg
Qm94JiBsYXlvdXRCb3gsIGNvbnN0IEJveEcKIAogICAgICAgICBjb25zdCBzaXplX3QgbWF4UHJp
bnRlZExlbmd0aCA9IDgwOwogICAgICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQ
cmludGVkTGVuZ3RoKSB7Ci0gICAgICAgICAgICBhdXRvIHN1YnN0cmluZyA9IHRleHRDb250ZW50
LnN1YnN0cmluZygwLCBtYXhQcmludGVkTGVuZ3RoKTsKKyAgICAgICAgICAgIGF1dG8gc3Vic3Ry
aW5nID0gU3RyaW5nVmlldyh0ZXh0Q29udGVudCkubGVmdChtYXhQcmludGVkTGVuZ3RoKTsKICAg
ICAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCBzdWJzdHJpbmcudXRmOCgpLmRhdGEoKSA8PCAi
XCIuLi4iOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCB0
ZXh0Q29udGVudC51dGY4KCkuZGF0YSgpIDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQ
YXJzZXIuY3BwCmluZGV4IDRhMTE0NDI1ZTExNmQyYzQyZDE5MDM5MjNlZGY4ODYzODNkOGYwNjQu
LjhkOTliOTM4ZDk5ZmI0MmY4MTdlOTBjMWU4ZDA3YmMyYThmYjhjMzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJz
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBTdHJpbmdWaWV3
IG1hbmlmZXN0UGF0aChjb25zdCBVUkwmIG1hbmlmZXN0VVJMKQogewogICAgIGF1dG8gbWFuaWZl
c3RQYXRoID0gbWFuaWZlc3RVUkwucGF0aCgpOwogICAgIEFTU0VSVChtYW5pZmVzdFBhdGhbMF0g
PT0gJy8nKTsKLSAgICBtYW5pZmVzdFBhdGggPSBtYW5pZmVzdFBhdGguc3Vic3RyaW5nKDAsIG1h
bmlmZXN0UGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7CisgICAgbWFuaWZlc3RQYXRoID0gbWFu
aWZlc3RQYXRoLmxlZnQobWFuaWZlc3RQYXRoLnJldmVyc2VGaW5kKCcvJykgKyAxKTsKICAgICBB
U1NFUlQobWFuaWZlc3RQYXRoWzBdID09IG1hbmlmZXN0UGF0aFttYW5pZmVzdFBhdGgubGVuZ3Ro
KCkgLSAxXSk7CiAgICAgcmV0dXJuIG1hbmlmZXN0UGF0aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcAppbmRleCA1MTAyMmM2
NzVkMjRmMGJiOGE1M2IxOTVmZTg4YjFhZjAzZDEzNzAzLi41ZTA3NjNkZjkwMWU5N2I1YTVmZWYw
ODIyMTQwNDJjZWZhZDg3NzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL01h
dGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgTWF0aE1MRWxl
bWVudDo6TGVuZ3RoIE1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTnVtYmVyQW5kVW5p
dChTdHJpbmdWaWV3IHMKICAgICB9CiAKICAgICBib29sIG9rOwotICAgIGZsb2F0IGxlbmd0aFZh
bHVlID0gc3RyaW5nLnN1YnN0cmluZygwLCBzdHJpbmdMZW5ndGgpLnRvRmxvYXQob2spOworICAg
IGZsb2F0IGxlbmd0aFZhbHVlID0gc3RyaW5nLmxlZnQoc3RyaW5nTGVuZ3RoKS50b0Zsb2F0KG9r
KTsKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4gTGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAKaW5kZXggOWZhZjhhZGY2OWI1Y2M1NWMyYjNhZmE3YWE2MWNlMmJkYzBhMDQ3Zi4uMjg4
OWM4MDY1ZDE3MDU4NTdhNDI5MDBiYmJhOGQ3YzJjZjI1MjNhOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5j
cHAKQEAgLTM4OSw4ICszODksOSBAQCBzdGF0aWMgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lv
biBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVjdG9yPFN0cmluZz4mCiAgICAgICAgIGJv
b2wgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICAgICAgYm9vbCBlbmRzV2l0
aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCgpKSB7Ci0g
ICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0
Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwotICAgICAgICAgICAgZW5kc1dpdGhXb3Jk
Q2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwu
bGVuZ3RoKCkgLSAxLCAxKSkgPj0gMDsKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcgbGFiZWxWaWV3
IHsgbGFiZWwgfTsKKyAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gd29yZFJl
Z0V4cC5nZXQoKS5tYXRjaChsYWJlbFZpZXcubGVmdCgxKSkgPj0gMDsKKyAgICAgICAgICAgIGVu
ZHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWxWaWV3LnJp
Z2h0KDEpKSA+PSAwOwogICAgICAgICB9CiAKICAgICAgICAgLy8gU2VhcmNoIGZvciB3b3JkIGJv
dW5kYXJpZXMgb25seSBpZiBsYWJlbCBzdGFydHMvZW5kcyB3aXRoICJ3b3JkIGNoYXJhY3RlcnMi
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCmluZGV4IGE2ODJj
Y2JhNzU0MjlkNzI4NTI2ZDhhY2Y4ZmIwZWU3NTIyZDIyNWIuLjg1YWE2NDJkMTE2NjZhYTYyOGJi
NWRlMTE1ZWU3NjZiNzE5ZWRkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3Jp
Z2luRGF0YS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3Jp
Z2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKFN0cgog
ICAgIGlmIChwb3J0ICYmICEqcG9ydCkKICAgICAgICAgcG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAot
ICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFy
YXRvcjEpOworICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50aWZpZXIubGVmdChzZXBh
cmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBkYXRhYmFzZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNl
cGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJhdG9yMSAtIDEpOwogICAgIHJldHVybiBT
ZWN1cml0eU9yaWdpbkRhdGEgeyBwcm90b2NvbC50b1N0cmluZygpLCBob3N0LnRvU3RyaW5nKCks
IHBvcnQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5j
cHAKaW5kZXggYjkzNGU2ZmEzYWYzZmNmYjExZDQ5NzAyMzU2MDE2MmJkYjViZmM1Mi4uYTg0ZjM1
OWMzNGI4NDQ2MTcwZjhiOWQwZWJlMWRkYzZiODNlZDhmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKQEAgLTI1OSwxMyArMjU5LDEzIEBAIHN0YXRp
YyBBTFdBWVNfSU5MSU5FIHZvaWQgY29tcHV0ZVNoYXJlZFN0cmluZ0hhc2hJbmxpbmUoY29uc3Qg
VVJMJiBiYXNlLCBjb25zdCBDCiAgICAgZWxzZSB7CiAgICAgICAgIHN3aXRjaCAoY2hhcmFjdGVy
c1swXSkgewogICAgICAgICBjYXNlICcvJzoKLSAgICAgICAgICAgIGFwcGVuZChidWZmZXIsIFN0
cmluZ1ZpZXcoYmFzZS5zdHJpbmcoKSkuc3Vic3RyaW5nKDAsIGJhc2UucGF0aFN0YXJ0KCkpKTsK
KyAgICAgICAgICAgIGFwcGVuZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFzZS5zdHJpbmcoKSkubGVm
dChiYXNlLnBhdGhTdGFydCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAn
Iyc6Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkp
LnN1YnN0cmluZygwLCBiYXNlLnBhdGhFbmQoKSkpOworICAgICAgICAgICAgYXBwZW5kKGJ1ZmZl
ciwgU3RyaW5nVmlldyhiYXNlLnN0cmluZygpKS5sZWZ0KGJhc2UucGF0aEVuZCgpKSk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGFwcGVuZChidWZm
ZXIsIFN0cmluZ1ZpZXcoYmFzZS5zdHJpbmcoKSkuc3Vic3RyaW5nKDAsIGJhc2UucGF0aEFmdGVy
TGFzdFNsYXNoKCkpKTsKKyAgICAgICAgICAgIGFwcGVuZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFz
ZS5zdHJpbmcoKSkubGVmdChiYXNlLnBhdGhBZnRlckxhc3RTbGFzaCgpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCmluZGV4IGE2M2ZjOGE3M2VjYmUxZDQ0
ZWU0N2I2M2IwYmNlMzlhMTE3Mzc2MGIuLjIzYjM5OTU4ZGRmNjUzODI2YmQ3YjI0MjcwNDJiMjc3
ODU3ODhjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0
cmluZ1RydW5jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
U3RyaW5nVHJ1bmNhdG9yLmNwcApAQCAtNjUsNyArNjUsNyBAQCBzdGF0aWMgdW5zaWduZWQgY2Vu
dGVyVHJ1bmNhdGVUb0J1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3Ro
LCB1bgogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGtlZXBDb3VudCA8IFNU
UklOR19CVUZGRVJfU0laRSk7CiAgICAgCiAgICAgdW5zaWduZWQgb21pdFN0YXJ0ID0gKGtlZXBD
b3VudCArIDEpIC8gMjsKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0
cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hhcmVkQ2hh
cmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgpKTsK
ICAgICB1bnNpZ25lZCBvbWl0RW5kID0gYm91bmRlZFRleHRCcmVha0ZvbGxvd2luZyhpdCwgb21p
dFN0YXJ0ICsgKGxlbmd0aCAtIGtlZXBDb3VudCkgLSAxLCBsZW5ndGgpOwogICAgIG9taXRTdGFy
dCA9IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIG9taXRTdGFydCk7CiAKQEAgLTkzLDcgKzkz
LDcgQEAgc3RhdGljIHVuc2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW4KICAgICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5n
dGggPSBvbWl0U3RhcnQgKyBzaG91bGRJbnNlcnRFbGxpcHNpcyArIChsZW5ndGggLSBvbWl0RW5k
KTsKICAgICBBU1NFUlQodHJ1bmNhdGVkTGVuZ3RoIDw9IGxlbmd0aCk7CiAKLSAgICBTdHJpbmdW
aWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIG9taXRTdGFydCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNv
bnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChvbWl0U3RhcnQpLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAgICAgaWYgKHNob3VsZEluc2VydEVs
bGlwc2lzKQogICAgICAgICBidWZmZXJbb21pdFN0YXJ0KytdID0gaG9yaXpvbnRhbEVsbGlwc2lz
OwogICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcob21pdEVuZCwgbGVuZ3RoIC0gb21p
dEVuZCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoJmJ1ZmZlcltvbWl0U3RhcnRdKTsKQEAg
LTExOSwxMSArMTE5LDExIEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodFRydW5jYXRlVG9CdWZmZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgICAgIC0ta2Vl
cENvdW50OwogI2VuZGlmCiAKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0
KFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hhcmVk
Q2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5ndGgp
KTsKICAgICB1bnNpZ25lZCBrZWVwTGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhpdCwg
a2VlcENvdW50KTsKICAgICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5ndGggPSBzaG91bGRJbnNlcnRF
bGxpcHNpcyA/IGtlZXBMZW5ndGggKyAxIDoga2VlcExlbmd0aDsKIAotICAgIFN0cmluZ1ZpZXco
c3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZl
cnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVwTGVuZ3RoKS5nZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogICAgIGlmIChzaG91bGRJbnNlcnRFbGxp
cHNpcykKICAgICAgICAgYnVmZmVyW2tlZXBMZW5ndGhdID0gaG9yaXpvbnRhbEVsbGlwc2lzOwog
CkBAIC0xMzUsOSArMTM1LDkgQEAgc3RhdGljIHVuc2lnbmVkIHJpZ2h0Q2xpcFRvQ2hhcmFjdGVy
QnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgKICAgICBBU1NFUlQo
a2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQoa2VlcENvdW50IDwgU1RSSU5HX0JVRkZF
Ul9TSVpFKTsKIAotICAgIE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5n
VmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgpKTsKKyAgICBOb25TaGFyZWRDaGFyYWN0
ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGxlbmd0aCkpOwogICAg
IHVuc2lnbmVkIGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291
bnQpOwotICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZyku
bGVmdChrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogCiAg
ICAgcmV0dXJuIGtlZXBMZW5ndGg7CiB9CkBAIC0xNDcsOSArMTQ3LDkgQEAgc3RhdGljIHVuc2ln
bmVkIHJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQg
bGVuZ3RoLCB1bnMKICAgICBBU1NFUlQoa2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQo
a2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsKIAotICAgIFVCcmVha0l0ZXJhdG9yKiBp
dCA9IHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVu
Z3RoKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ID0gd29yZEJyZWFrSXRlcmF0b3IoU3RyaW5n
VmlldyhzdHJpbmcpLmxlZnQobGVuZ3RoKSk7CiAgICAgdW5zaWduZWQga2VlcExlbmd0aCA9IHRl
eHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIGtlZXBDb3VudCk7Ci0gICAgU3RyaW5nVmlldyhzdHJp
bmcpLnN1YnN0cmluZygwLCBrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChi
dWZmZXIpOworICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGtlZXBMZW5ndGgpLmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQog
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhpcyBjb2RlIGJlaGluZCBhbiBlZGl0aW5n
IGJlaGF2aW9yLiBUaGVuIHdlIGNhbiByZW1vdmUgdGhlIFBMQVRGT1JNKElPU19GQU1JTFkpLWd1
YXJkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApp
bmRleCA1OThjMWEwMWQ4YTM4OWM4NmIzMDlhZGM1ZmIyMmUwZWRhYmIwMmJmLi5hMzVhM2EyMDZh
ZjE0NmRkYjU3MGVkNDQxYjYyNTQ1M2ZjZjkwNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtOTQxLDcgKzk0MSw3IEBAIHZvaWQgTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQbGF5YmluVVJMKGNvbnN0IFVSTCYgdXJsKQog
ICAgIC8vIENsZWFuIG91dCBldmVyeXRoaW5nIGFmdGVyIGZpbGU6Ly8gdXJsIHBhdGguCiAgICAg
U3RyaW5nIGNsZWFuVVJMU3RyaW5nKHVybC5zdHJpbmcoKSk7CiAgICAgaWYgKHVybC5pc0xvY2Fs
RmlsZSgpKQotICAgICAgICBjbGVhblVSTFN0cmluZyA9IGNsZWFuVVJMU3RyaW5nLnN1YnN0cmlu
ZygwLCB1cmwucGF0aEVuZCgpKTsKKyAgICAgICAgY2xlYW5VUkxTdHJpbmcgPSBjbGVhblVSTFN0
cmluZy5sZWZ0KHVybC5wYXRoRW5kKCkpOwogCiAgICAgbV91cmwgPSBVUkwgeyBjbGVhblVSTFN0
cmluZyB9OwogICAgIEdTVF9JTkZPX09CSkVDVChwaXBlbGluZSgpLCAiTG9hZCAlcyIsIG1fdXJs
LnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291
cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5kZXggNWQ1NDE5ZTg0OGVhNjZlNDVmNWQ4
MzM1YjVjOTYyY2U2NDQ1OWQ1YS4uZWJhYjA5ZGUxNTA3NmVhMmFjOGMwNTAxOTM5NTM1ODQwMTU2
YTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVH
U3RyZWFtZXIuY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAgc2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZh
dGVHU3RyZWFtZXI6OnBsYXRmb3JtTWF4aW11bUJ1ZmZlclNpemUoKSBjb25zdAogICAgICAgICAg
ICAgICAgIGVsc2UgaWYgKHZhbHVlLmVuZHNXaXRoKCdtJykpCiAgICAgICAgICAgICAgICAgICAg
IHVuaXRzID0gMTAyNCAqIDEwMjQ7CiAgICAgICAgICAgICAgICAgaWYgKHVuaXRzICE9IDEpCi0g
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHZhbHVlLmxlbmd0
aCgpLTEpOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmxlZnQodmFsdWUubGVu
Z3RoKCktMSk7CiAgICAgICAgICAgICAgICAgYXV0byBwYXJzZWRTaXplID0gcGFyc2VJbnRlZ2Vy
PHNpemVfdD4odmFsdWUpOwogICAgICAgICAgICAgICAgIGlmICghcGFyc2VkU2l6ZSkKICAgICAg
ICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDQ1MDRkMDE4ZjFkNzdkMjQ0
YjM3YzlhYjhlZTZiYmY0ODMyMTIxNGIuLjY2MTNmYzQxNmYyN2ExY2VlNjQ1YjVhM2ZiZjI1YTJj
YTdjNjBjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC01MTcsNyArNTE3LDcgQEAgc3RhdGljIEdESU9iamVj
dDxIRk9OVD4gY3JlYXRlR0RJRm9udChjb25zdCBBdG9tU3RyaW5nJiBmYW1pbHksIExPTkcgZGVz
aXJlZFdlaWcKIAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dGb250LmxmQ2hhclNldCA9
IERFRkFVTFRfQ0hBUlNFVDsKLSAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmlu
Z1ZpZXcoZmFtaWx5KS5zdWJzdHJpbmcoMCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VT
SVpFIC0gMSkpOworICAgIFN0cmluZ1ZpZXcgdHJ1bmNhdGVkRmFtaWx5ID0gU3RyaW5nVmlldyhm
YW1pbHkpLmxlZnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwogICAg
IHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20obG9n
Rm9udC5sZkZhY2VOYW1lKSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWls
eS5sZW5ndGgoKV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CkBAIC02
MzEsNyArNjMxLDcgQEAgVmVjdG9yPEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXM+IEZvbnRDYWNo
ZTo6Z2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllc0luRmFtaWwKIAogICAgIExPR0ZPTlQgbG9n
Rm9udDsKICAgICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKLSAgICBTdHJp
bmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkuc3Vic3RyaW5n
KDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihMRl9GQUNFU0laRSAtIDEpKTsKKyAgICBTdHJpbmdW
aWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5TmFtZSkubGVmdChzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7CiAgICAgdHJ1bmNhdGVkRmFtaWx5Lmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShsb2dGb250LmxmRmFjZU5hbWUpKTsK
ICAgICBsb2dGb250LmxmRmFjZU5hbWVbdHJ1bmNhdGVkRmFtaWx5Lmxlbmd0aCgpXSA9IDA7CiAg
ICAgbG9nRm9udC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDhkNWM0M2RlODM5NTU5OGMyMzk5YTM4YTgzZGVh
MzhjMTRkMjk2YTUuLjM3ZjE3MzQwNjNiNzhjMzE4NzM4OWQ2OTA1NWQzZDYxZWE2YjFkZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQpAQCAtNzQsNyAr
NzQsNyBAQCBzdGF0aWMgU3RyaW5nVmlldyBkZXZpY2VOYW1lRm9yVXNlckFnZW50KCkKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAgICAgICAgc2l6ZV90IGxvY2F0aW9uID0g
bmFtZS5maW5kKCIgU2ltdWxhdG9yIik7CiAgICAgICAgIGlmIChsb2NhdGlvbiAhPSBub3RGb3Vu
ZCkKLSAgICAgICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBsb2NhdGlvbik7CisgICAg
ICAgICAgICByZXR1cm4gbmFtZS5sZWZ0KGxvY2F0aW9uKTsKICNlbmRpZgogICAgICAgICByZXR1
cm4gbmFtZTsKICAgICB9KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggODVlMjRhNGE3ZmM4MGM2NTZjZjQ4ODhlOTI3
YWIwYjViYjA0ZjVhMS4uYzc0MzE4OTkyOGIzZjZhOWJiMzlmNmZmNGZjMDk5M2ZlMDkwY2I1NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0
aW9uLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGlubGluZSBib29sIGlzQ29udHJvbENoYXJhY3Rl
ck9yU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogCiBpbmxpbmUgU3RyaW5nVmlldyB0cmltVG9OZXh0
U2VwYXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewotICAgIHJldHVybiBzdHJpbmcuc3Vic3Ry
aW5nKDAsIHN0cmluZy5maW5kKGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3IpKTsKKyAgICByZXR1cm4g
c3RyaW5nLmxlZnQoc3RyaW5nLmZpbmQoaXNDYWNoZUhlYWRlclNlcGFyYXRvcikpOwogfQogCiBz
dGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIo
Y29uc3QgU3RyaW5nJiBoZWFkZXIpCkBAIC0yNjYsNyArMjY2LDcgQEAgc3RhdGljIFZlY3Rvcjxz
dGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNhY2hlSGVhZGVyKGNvbnN0IFN0cmluZyYg
aGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAv
LyBUaGUgdmFsdWUgaXMgZGVsaW1pdGVkIGJ5IHRoZSBuZXh0IGNvbW1hCi0gICAgICAgIHJlc3Vs
dC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUuc3Vic3RyaW5n
KDAsIG5leHRDb21tYVBvc2l0aW9uMikpLnRvU3RyaW5nKCkgfSk7CisgICAgICAgIHJlc3VsdC5h
cHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBhcmF0b3IodmFsdWUubGVmdChuZXh0Q29t
bWFQb3NpdGlvbjIpKS50b1N0cmluZygpIH0pOwogICAgICAgICBwb3MgKz0gKHNhZmVIZWFkZXIu
ZmluZCgnLCcsIHBvcykgLSBwb3MpICsgMTsKICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3Jh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFn
ZS5jcHAKaW5kZXggNGVlN2JkMTBmY2MyY2QwMzk1NzU5YjM2ZTA0NTY2ZjAyYWIxYTRjNy4uNjU0
YTZhNDBiZDQ0OWI3NzhmMDJmOTliM2Q0NzdjNjdiZWM2MmU5NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKQEAgLTQ2
LDEzICs0NiwxMyBAQCBzdGF0aWMgU3RyaW5nIHByb3RlY3Rpb25TcGFjZU1hcEtleUZyb21VUkwo
Y29uc3QgVVJMJiB1cmwpCiAKICAgICAvLyBSZW1vdmUgdGhlIGxhc3QgcGF0aCBjb21wb25lbnQg
dGhhdCBpcyBub3QgYSBkaXJlY3RvcnkgdG8gZGV0ZXJtaW5lIHRoZSBzdWJ0cmVlIGZvciB3aGlj
aCBjcmVkZW50aWFscyB3aWxsIGFwcGx5LgogICAgIC8vIFdlIGtlZXAgYSBsZWFkaW5nIHNsYXNo
LCBidXQgcmVtb3ZlIGEgdHJhaWxpbmcgb25lLgotICAgIFN0cmluZyBkaXJlY3RvcnlVUkwgPSB1
cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIHVybC5wYXRoRW5kKCkpOworICAgIFN0cmluZyBkaXJl
Y3RvcnlVUkwgPSB1cmwuc3RyaW5nKCkubGVmdCh1cmwucGF0aEVuZCgpKTsKICAgICB1bnNpZ25l
ZCBkaXJlY3RvcnlVUkxQYXRoU3RhcnQgPSB1cmwucGF0aFN0YXJ0KCk7CiAgICAgQVNTRVJUKGRp
cmVjdG9yeVVSTFtkaXJlY3RvcnlVUkxQYXRoU3RhcnRdID09ICcvJyk7CiAgICAgaWYgKGRpcmVj
dG9yeVVSTC5sZW5ndGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpIHsKICAgICAgICAg
c2l6ZV90IGluZGV4ID0gZGlyZWN0b3J5VVJMLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgICAgIEFT
U0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgICAgIGRpcmVjdG9yeVVSTCA9IGRpcmVjdG9y
eVVSTC5zdWJzdHJpbmcoMCwgKGluZGV4ICE9IGRpcmVjdG9yeVVSTFBhdGhTdGFydCkgPyBpbmRl
eCA6IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpOworICAgICAgICBkaXJlY3RvcnlVUkwgPSBk
aXJlY3RvcnlVUkwubGVmdCgoaW5kZXggIT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0KSA/IGluZGV4
IDogZGlyZWN0b3J5VVJMUGF0aFN0YXJ0ICsgMSk7CiAgICAgfQogCiAgICAgcmV0dXJuIGRpcmVj
dG9yeVVSTDsKQEAgLTE1NSw3ICsxNTUsNyBAQCBIYXNoTWFwPFN0cmluZywgUHJvdGVjdGlvblNw
YWNlPjo6aXRlcmF0b3IgQ3JlZGVudGlhbFN0b3JhZ2U6OmZpbmREZWZhdWx0UHJvdGVjdAogCiAg
ICAgICAgIHNpemVfdCBpbmRleCA9IGRpcmVjdG9yeVVSTC5yZXZlcnNlRmluZCgnLycsIGRpcmVj
dG9yeVVSTC5sZW5ndGgoKSAtIDIpOwogICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQp
OwotICAgICAgICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlVUkwuc3Vic3RyaW5nKDAsIChpbmRl
eCA9PSBkaXJlY3RvcnlVUkxQYXRoU3RhcnQpID8gaW5kZXggKyAxIDogaW5kZXgpOworICAgICAg
ICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlVUkwubGVmdCgoaW5kZXggPT0gZGlyZWN0b3J5VVJM
UGF0aFN0YXJ0KSA/IGluZGV4ICsgMSA6IGluZGV4KTsKICAgICAgICAgQVNTRVJUKGRpcmVjdG9y
eVVSTC5sZW5ndGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhTdGFydCk7CiAgICAgfQogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAppbmRl
eCBjY2I3MThjMDYwMWE0NTY1NzZkNGE2Mzc1ZTRiNjFlNmY4ZTM3Mzg3Li42NzkyNDQwZjBhZjkz
ZDViNmJhZjhjOWRkNzAxZWQ4ZTAyNGM5NTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHB1
YmxpYzoKICAgICAgICAgaXNCYXNlNjQgPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShm
b3JtYXRUeXBlLCAiYmFzZTY0Iik7CiAKICAgICAgICAgLy8gSWYgaGVhZGVyIGRvZXMgbm90IGVu
ZCB3aXRoICJiYXNlNjQiLCBtZWRpYVR5cGUgc2hvdWxkIGJlIHRoZSB3aG9sZSBoZWFkZXIuCi0g
ICAgICAgIGF1dG8gbWVkaWFUeXBlID0gKGlzQmFzZTY0ID8gaGVhZGVyLnN1YnN0cmluZygwLCBt
ZWRpYVR5cGVFbmQpIDogaGVhZGVyKS50b1N0cmluZygpOworICAgICAgICBhdXRvIG1lZGlhVHlw
ZSA9IChpc0Jhc2U2NCA/IGhlYWRlci5sZWZ0KG1lZGlhVHlwZUVuZCkgOiBoZWFkZXIpLnRvU3Ry
aW5nKCk7CiAgICAgICAgIG1lZGlhVHlwZSA9IHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNw
YWNlcyhtZWRpYVR5cGUpOwogICAgICAgICBpZiAobWVkaWFUeXBlLnN0YXJ0c1dpdGgoJzsnKSkK
ICAgICAgICAgICAgIG1lZGlhVHlwZS5pbnNlcnQoInRleHQvcGxhaW4iX3MsIDApOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAppbmRleCAzNzEz
NGQ5YTRmZTUwNmM4ZTQ4OWUwMzk0YzYyMWJlNTg5YWM1MmU0Li43M2U4MTJjMGRkZGQ0NTcwZDZm
NWE1YmY1YzkyMWNhMjdkYzllMGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtNTk3LDcgKzU5Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8
c3RkOjpwYWlyPFN0cmluZ1ZpZXcsIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Pj4gcGFyc2VTdHJ1
Y3R1cmVkRmllCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgKytpbmRleDsKICAgICB9Ci0g
ICAgU3RyaW5nVmlldyBiYXJlSXRlbSA9IGhlYWRlci5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAg
IFN0cmluZ1ZpZXcgYmFyZUl0ZW0gPSBoZWFkZXIubGVmdChpbmRleCk7CiAKICAgICAvLyBQYXJz
ZSBwYXJhbWV0ZXJzIChodHRwczovL2RhdGF0cmFja2VyLmlldGYub3JnL2RvYy9odG1sL3JmYzg5
NDEjc2VjdGlvbi00LjIuMy4yKS4KICAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBwYXJhbWV0
ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVh
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAK
aW5kZXggYjQyMzc5ZjMzYjM1YmYyZTVkNzJiMTI3YzJlMDNiNjQwYWNmY2I2ZC4uM2EwODc4Y2Zh
Nzc0MDNjZmU0YzgzYzk2ODE4MjQwOWZiNDYzNGFmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCkBAIC03Miw3ICs3Miw3IEBAIHN0YXRpYyBL
ZXlWYWx1ZU1hcCByZXRyaWV2ZUtleVZhbHVlUGFpcnMoV2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1
bmtSZWFkZXImIGJ1ZmZlCiAgICAgICAgICAgICAvLyBUaGlzIGlzIG5vdCBhIGtleSB2YWx1ZSBw
YWlyLCBpZ25vcmUuCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBr
ZXkgPSBsaW5lLnN1YnN0cmluZygwLCBzZW1pQ29sb25JbmRleCkuY29udmVydFRvQVNDSUlMb3dl
cmNhc2UoKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAga2V5ID0gU3RyaW5nVmlldyhsaW5l
KS5sZWZ0KHNlbWlDb2xvbkluZGV4KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2FzZSgpLnN0cmlwV2hp
dGVTcGFjZSgpOwogICAgICAgICB2YWx1ZS5hcHBlbmQobGluZS5zdWJzdHJpbmcoc2VtaUNvbG9u
SW5kZXggKyAxKSk7CiAgICAgfQogICAgIC8vIFN0b3JlIHRoZSBsYXN0IHByb3BlcnR5IGlmIHRo
ZXJlIGlzIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3Vy
bC9Db29raWVVdGlsLmNwcAppbmRleCAwNGU2NGNkMmM3YTkwZDljZTNkYzI5ZjhiMmQxNjc4MjQw
ZmEwMzRiLi43NWIxNmIxMmM5ZTMyYzE3OTQxODFiMWVkOTExNjZjYWY1NDA2YjcwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llVXRpbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nvb2tpZVV0aWwuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlQ29va2llQXR0cmlidXRlcyhjb25z
dCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFzTWF4QWdlLCBDb29rCiAgICAgU3RyaW5nIGF0
dHJpYnV0ZVZhbHVlOwogCiAgICAgaWYgKGFzc2lnbm1lbnRQb3NpdGlvbiAhPSBub3RGb3VuZCkg
ewotICAgICAgICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLnN1YnN0cmluZygwLCBhc3NpZ25t
ZW50UG9zaXRpb24pLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBhdHRyaWJ1dGVOYW1lID0g
YXR0cmlidXRlLmxlZnQoYXNzaWdubWVudFBvc2l0aW9uKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAg
ICAgICAgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGUuc3Vic3RyaW5nKGFzc2lnbm1lbnRQb3Np
dGlvbiArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIH0gZWxzZQogICAgICAgICBhdHRyaWJ1
dGVOYW1lID0gYXR0cmlidXRlLnN0cmlwV2hpdGVTcGFjZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBA
IHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRlcihjb25zdCBTdHJpbmcmIGNv
b2tpZUxpbmUpCiAKICAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRpb24gPSBjb29raWVMaW5lLmZp
bmQoJzsnKTsKIAotICAgIFN0cmluZyBjb29raWVQYWlyID0gc2VwYXJhdG9yUG9zaXRpb24gPT0g
bm90Rm91bmQgPyBjb29raWVMaW5lIDogY29va2llTGluZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9y
UG9zaXRpb24pOworICAgIFN0cmluZyBjb29raWVQYWlyID0gc2VwYXJhdG9yUG9zaXRpb24gPT0g
bm90Rm91bmQgPyBjb29raWVMaW5lIDogY29va2llTGluZS5sZWZ0KHNlcGFyYXRvclBvc2l0aW9u
KTsKIAogICAgIFN0cmluZyBjb29raWVOYW1lOwogICAgIFN0cmluZyBjb29raWVWYWx1ZTsKQEAg
LTE2NCw3ICsxNjQsNyBAQCBzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVIZWFkZXIo
Y29uc3QgU3RyaW5nJiBjb29raWVMaW5lKQogICAgIGlmIChhc3NpZ25tZW50UG9zaXRpb24gPT0g
bm90Rm91bmQpCiAgICAgICAgIGNvb2tpZVZhbHVlID0gY29va2llUGFpcjsKICAgICBlbHNlIHsK
LSAgICAgICAgY29va2llTmFtZSA9IGNvb2tpZVBhaXIuc3Vic3RyaW5nKDAsIGFzc2lnbm1lbnRQ
b3NpdGlvbik7CisgICAgICAgIGNvb2tpZU5hbWUgPSBjb29raWVQYWlyLmxlZnQoYXNzaWdubWVu
dFBvc2l0aW9uKTsKICAgICAgICAgY29va2llVmFsdWUgPSBjb29raWVQYWlyLnN1YnN0cmluZyhh
c3NpZ25tZW50UG9zaXRpb24gKyAxKTsKICAgICB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCBTdHJp
bmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAgICAgaWYgKCFsYXN0U2xhc2hQ
b3NpdGlvbikKICAgICAgICAgcmV0dXJuICIvIl9zOwogCi0gICAgcmV0dXJuIHBhdGguc3Vic3Ry
aW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKKyAgICByZXR1cm4gcGF0aC5sZWZ0KGxhc3RTbGFz
aFBvc2l0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29va2llVXRpbApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1NjcmlwdE1hcHBpbmcuY3BwCmlu
ZGV4IDcyMzA5ZWMwZGMxZTRmZDNiODFmM2Q1NDIxNThhOWVhYTAyZmE3MmMuLjg1N2I5M2JlNTM3
ZWRkMTZkYjA2OThiM2M5OGVjOGM0OTM4YTU1YzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5jcHAKQEAgLTM3NSw3ICsz
NzUsNyBAQCBVU2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKGNv
bnN0IFN0cmluZyYgbG9jYWxlKQogICAgICAgICBVU2NyaXB0Q29kZSBjb2RlID0gc2NyaXB0TmFt
ZVRvQ29kZShjYW5vbmljYWxMb2NhbGUuc3Vic3RyaW5nKHVuZGVyc2NvcmVQb3NpdGlvbiArIDEp
KTsKICAgICAgICAgaWYgKGNvZGUgIT0gVVNDUklQVF9JTlZBTElEX0NPREUgJiYgY29kZSAhPSBV
U0NSSVBUX1VOS05PV04pCiAgICAgICAgICAgICByZXR1cm4gY29kZTsKLSAgICAgICAgY2Fub25p
Y2FsTG9jYWxlID0gY2Fub25pY2FsTG9jYWxlLnN1YnN0cmluZygwLCB1bmRlcnNjb3JlUG9zaXRp
b24pOworICAgICAgICBjYW5vbmljYWxMb2NhbGUgPSBjYW5vbmljYWxMb2NhbGUubGVmdCh1bmRl
cnNjb3JlUG9zaXRpb24pOwogICAgIH0KICAgICByZXR1cm4gVVNDUklQVF9DT01NT047CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHAKaW5kZXggNGNl
MzI4YTgzMWM5MGJmNmJkMjI4ZTFmMDcyNDA4ZDY0YjMzYTQ1ZS4uN2QxNTM2YTdkNjRkM2ZjODM2
Mjc2MmYzYTcwNGRhNTM4YzZmN2E2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dp
bi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBAIHN0YXRpYyBTdHJpbmcgZmls
ZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZShjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29uc3Qg
U3RyaW5nCiAKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewogICAgICAgICBzaXplX3QgbGVu
ID0gc3RkOjptaW48c2l6ZV90Pih0aXRsZS5sZW5ndGgoKSwgZnNQYXRoTWF4TGVuZ3RoRXhjbHVk
aW5nRXh0ZW5zaW9uKTsKLSAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkuc3Vic3RyaW5nKDAsIGxl
bikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgU3Ry
aW5nVmlldyh0aXRsZSkubGVmdChsZW4pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0
aEJ1ZmZlcik7CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0gMDsKICAgICAgICAgcGF0aFJl
bW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVmZmVyKSwgbGVuKTsKICAgICB9
CkBAIC02MjAsMTAgKzYyMCwxMCBAQCBzdGF0aWMgU3RyaW5nIGZpbGVTeXN0ZW1QYXRoRnJvbVVS
TE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICBh
dXRvIGxhc3RDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgaWYg
KHVybC5pc0xvY2FsRmlsZSgpIHx8ICghaXNMaW5rICYmICFsYXN0Q29tcG9uZW50LmlzRW1wdHko
KSkpIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5ndGhF
eGNsdWRpbmdFeHRlbnNpb24sIGxhc3RDb21wb25lbnQubGVuZ3RoKCkpOwotICAgICAgICAgICAg
bGFzdENvbXBvbmVudC5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVy
dChmc1BhdGhCdWZmZXIpOworICAgICAgICAgICAgbGFzdENvbXBvbmVudC5sZWZ0KGxlbikuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1BhdGhNYXhMZW5ndGhFeGNsdWRp
bmdFeHRlbnNpb24sIHVybFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBTdHJpbmdWaWV3
KHVybFN0cmluZykuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
ZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgICAgIFN0cmluZ1ZpZXcodXJsU3RyaW5nKS5sZWZ0KGxl
bikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKICAgICAgICAgfQog
ICAgICAgICBmc1BhdGhCdWZmZXJbbGVuXSA9IDA7CiAgICAgICAgIHBhdGhSZW1vdmVCYWRGU0No
YXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7CkBAIC03MjEsNyArNzIxLDcg
QEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVjdChjb25zdCBVUkwmIGt1cmws
IGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2RbMF0ubkZpbGVTaXplTG93ID0g
Y29udGVudC5sZW5ndGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNpemUgPSBzdGQ6Om1pbjx1bnNp
Z25lZD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxl
TmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkp
OworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5sZWZ0KG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKICAgICBHbG9iYWxV
bmxvY2sodXJsRmlsZURlc2NyaXB0b3IpOwogCiAgICAgY2hhciogZmlsZUNvbnRlbnRzID0gc3Rh
dGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2sodXJsRmlsZUNvbnRlbnQpKTsKQEAgLTk2MCw3ICs5
NjAsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgaW50IG1heFNpemUg
PSBzdGQ6Om1pbjxpbnQ+KGZzUGF0aC5sZW5ndGgoKSwgV1RGX0FSUkFZX0xFTkdUSChmZ2QtPmZn
ZFswXS5jRmlsZU5hbWUpKTsKLSAgICBTdHJpbmdWaWV3KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1h
eFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5j
RmlsZU5hbWUpKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0aCkubGVmdChtYXhTaXplKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20oZmdkLT5mZ2RbMF0uY0ZpbGVOYW1lKSk7CiAg
ICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4gbWVtT2JqOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0UmVuZGVyZXIuY3BwCmluZGV4
IGU5YzNjOWFlZjAwYmYwN2QzMTBjNmE5NGM2MDc0YzI5ZjNjNzMzZjIuLmJiODBjNjdjYTEwNmZi
MjJkYWQ2N2E3MjhkZjgxYjRiYWZjYjljZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgc3Rh
dGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIHRleHQsIGNvbnMKIAogICAgICAgICBpbnQgYmVmb3JlV2lkdGg7CiAgICAgICAg
IGlmICh1bmRlcmxpbmVkSW5kZXggPiAwKSB7Ci0gICAgICAgICAgICBUZXh0UnVuIGJlZm9yZVJ1
bihTdHJpbmdWaWV3KHRleHQpLnN1YnN0cmluZygwLCB1bmRlcmxpbmVkSW5kZXgpKTsKKyAgICAg
ICAgICAgIFRleHRSdW4gYmVmb3JlUnVuKFN0cmluZ1ZpZXcodGV4dCkubGVmdCh1bmRlcmxpbmVk
SW5kZXgpKTsKICAgICAgICAgICAgIGJlZm9yZVdpZHRoID0gZm9udC53aWR0aChiZWZvcmVSdW4p
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJlZm9yZVdpZHRoID0gMDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXggMzg2MzJiMTQyODNiYzBhMTM4
MDQxMTQ2YWNhOWMwMjM4NjU0YWRmNy4uYTU5NzE2M2IwYzQzYjJhZDM1NGE2M2RkYTczOGI2Mzkz
YjllMzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAg
LTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0OjpvdXRwdXRSZW5kZXJPYmplY3Qo
VGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0aCkKICAgICAgICAgICAgIAog
ICAgICAgICAgICAgY29uc3QgaW50IG1heFByaW50ZWRMZW5ndGggPSA4MDsKICAgICAgICAgICAg
IGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1heFByaW50ZWRMZW5ndGgpIHsKLSAgICAgICAgICAgICAg
ICBTdHJpbmcgc3Vic3RyaW5nID0gdmFsdWUuc3Vic3RyaW5nKDAsIG1heFByaW50ZWRMZW5ndGgp
OworICAgICAgICAgICAgICAgIGF1dG8gc3Vic3RyaW5nID0gU3RyaW5nVmlldyh2YWx1ZSkubGVm
dChtYXhQcmludGVkTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBzdHJlYW0gPDwgIiBcIiIgPDwg
c3Vic3RyaW5nLnV0ZjgoKS5kYXRhKCkgPDwgIlwiLi4uIjsKICAgICAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCB2YWx1ZS51dGY4KCkuZGF0YSgpIDw8
ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBv
c2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9Hcmlk
UG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IGJjOGNkYmNjODk3YmE4ZTdkYjUxODI5NDdjNjkz
ZGU5YzI5MGIwMzEuLjg2YzI2Zjg3NThhNGVjZDlhMmQyZWU1NTU4MmNlOTg4MzZkOWJmNDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVz
b2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRp
b25zUmVzb2x2ZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgTmFtZWRMaW5lQ29sbGVjdGlvbkJh
c2U6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlKGNvbnN0IFJlbmRlckdyaWQmIGluaXRpYWxHcmlk
LAogICAgICAgICAgICAgICAgIHN0YXJ0U2lkZSA9IGZhbHNlOwogICAgICAgICAgICAgfSBlbHNl
CiAgICAgICAgICAgICAgICAgc3RhcnRTaWRlID0gdHJ1ZTsKLSAgICAgICAgICAgIGFyZWFOYW1l
ID0gbmFtZS5zdWJzdHJpbmcoMCwgc3VmZml4KTsKKyAgICAgICAgICAgIGFyZWFOYW1lID0gbmFt
ZS5sZWZ0KHN1ZmZpeCk7CiAgICAgICAgIH0KICAgICAgICAgYXV0byBpbXBsaWNpdExpbmUgPSBj
bGFtcGVkSW1wbGljaXRMaW5lRm9yQXJlYSgqZ3JpZENvbnRhaW5lclN0eWxlLCBhcmVhTmFtZSwg
MCwgbV9sYXN0TGluZSwgaXNSb3dBeGlzLCBzdGFydFNpZGUpOwogICAgICAgICBpZiAoaW1wbGlj
aXRMaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5kZXggZjA0YjRmYWYzZTc4MDViNWEzMmNk
YzljN2MyMDc2MGY5NjZmOTc1MC4uYmE5N2U1OTMxZWNkZjdhZjQ5ZGI2NjYzYzVkNmExMjUyM2Ix
MDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rlc3RzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCkBAIC0xMTgsOCArMTE4LDEwIEBAIGJvb2wg
U1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogICAgICAgICBpZiAoZmVhdHVyZS5pc0VtcHR5KCkg
fHwgIXN1cHBvcnRlZFNWR0ZlYXR1cmVTZXQuY29udGFpbnMoZmVhdHVyZSkpCiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIFN0cmluZyBkZWZhdWx0TGFuZ3VhZ2UgPSBXVEY6
OmRlZmF1bHRMYW5ndWFnZSgpOworICAgIGF1dG8gZ2VuZXJpY0RlZmF1bHRMYW5ndWFnZSA9IFN0
cmluZ1ZpZXcoZGVmYXVsdExhbmd1YWdlKS5sZWZ0KDIpOwogICAgIGZvciAoYXV0byYgbGFuZ3Vh
Z2UgOiBtX3N5c3RlbUxhbmd1YWdlLT5pdGVtcygpKSB7Ci0gICAgICAgIGlmIChsYW5ndWFnZSAh
PSBkZWZhdWx0TGFuZ3VhZ2UoKS5zdWJzdHJpbmcoMCwgMikpCisgICAgICAgIGlmIChsYW5ndWFn
ZSAhPSBnZW5lcmljRGVmYXVsdExhbmd1YWdlKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IG1fcmVxdWlyZWRFeHRlbnNpb25zLT5p
dGVtcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCmluZGV4IGVlNDVh
MjljYWUxZjE3ZmE3OGJmYjk3ZTEzN2M0MDZlMGM1NzYwZWQuLjRhOWJmZTg5MzgzN2MxZDI5MTdk
YTk1ZWNjOTMzODRmNmMyMDAyNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdV
UklSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2Uu
Y3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFN0cmluZyBTVkdVUklSZWZlcmVuY2U6OmZyYWdtZW50SWRl
bnRpZmllckZyb21JUklTdHJpbmcoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0CiAgICAgaWYgKCFz
dGFydCkKICAgICAgICAgcmV0dXJuIHVybC5zdWJzdHJpbmcoMSk7CiAKLSAgICBVUkwgYmFzZSA9
IFVSTChkb2N1bWVudC5iYXNlVVJMKCksIHVybC5zdWJzdHJpbmcoMCwgc3RhcnQpKTsKKyAgICBV
UkwgYmFzZSA9IFVSTChkb2N1bWVudC5iYXNlVVJMKCksIHVybC5sZWZ0KHN0YXJ0KSk7CiAgICAg
U3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5zdWJzdHJpbmcoc3RhcnQpOwogICAgIFVS
TCBrdXJsKGJhc2UsIGZyYWdtZW50SWRlbnRpZmllcik7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdG
cmFnbWVudElkZW50aWZpZXIoa3VybCwgZG9jdW1lbnQudXJsKCkpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCBjNDM2ZWFlMjM0OWI4
OWViZjA3ZjM5MDAwZGY1NjVkMzRkMGIzNTAzLi4xNmVhYjY1MjBlODhiY2NjMzUzNzQwYjc3NzE3
YWQ2ZTE5N2QzNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcApAQCAtMzQ4LDEzICszNDgsMTMgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1l
bnQ6OnBhcnNlQ2xvY2tWYWx1ZShTdHJpbmdWaWV3IGRhdGEpCiAgICAgc2l6ZV90IGRvdWJsZVBv
aW50T25lID0gcGFyc2UuZmluZCgnOicpOwogICAgIHNpemVfdCBkb3VibGVQb2ludFR3byA9IHBh
cnNlLmZpbmQoJzonLCBkb3VibGVQb2ludE9uZSArIDEpOwogICAgIGlmIChkb3VibGVQb2ludE9u
ZSA9PSAyICYmIGRvdWJsZVBvaW50VHdvID09IDUgJiYgcGFyc2UubGVuZ3RoKCkgPj0gOCkgewot
ICAgICAgICBhdXRvIGhvdXIgPSBwYXJzZUludGVnZXI8dWludDhfdD4ocGFyc2Uuc3Vic3RyaW5n
KDAsIDIpKTsKKyAgICAgICAgYXV0byBob3VyID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KHBhcnNl
LmxlZnQoMikpOwogICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90Pihw
YXJzZS5zdWJzdHJpbmcoMywgMikpOwogICAgICAgICBpZiAoIWhvdXIgfHwgIW1pbnV0ZSkKICAg
ICAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogICAgICAgICByZXN1bHQg
PSAqaG91ciAqIDYwICogNjAgKyAqbWludXRlICogNjAgKyBwYXJzZS5zdWJzdHJpbmcoNikudG9E
b3VibGUob2spOwogICAgIH0gZWxzZSBpZiAoZG91YmxlUG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQ
b2ludFR3byA9PSBub3RGb3VuZCAmJiBwYXJzZS5sZW5ndGgoKSA+PSA1KSB7IAotICAgICAgICBh
dXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90PihwYXJzZS5zdWJzdHJpbmcoMCwgMikp
OworICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90PihwYXJzZS5sZWZ0
KDIpKTsKICAgICAgICAgaWYgKCFtaW51dGUpCiAgICAgICAgICAgICByZXR1cm4gU01JTFRpbWU6
OnVucmVzb2x2ZWQoKTsKICAgICAgICAgcmVzdWx0ID0gKm1pbnV0ZSAqIDYwICsgcGFyc2Uuc3Vi
c3RyaW5nKDMpLnRvRG91YmxlKG9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRleCA4MDRlNmY0YzA4NGIwYjEzZTRkYWEw
ODUwYTUwODZhNjRhOTdiMjNhLi5mZWM1ZjM5NjBkZTQ5YTliMDI4YjFmMDE0MzljMzBkYWY3ZWNh
Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNlV29y
a2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZShjb25zdCBTZXJ2aWNlV29ya2UK
ICAgICBpZiAoc2VydmljZVdvcmtlckFsbG93ZWQuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBw
YXRoID0gam9iRGF0YS5zY3JpcHRVUkwucGF0aCgpOwogICAgICAgICAvLyBMYXN0IHBhcnQgb2Yg
dGhlIHBhdGggaXMgdGhlIHNjcmlwdCdzIGZpbGVuYW1lLgotICAgICAgICBtYXhTY29wZVN0cmlu
ZyA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpLnRvU3RyaW5n
KCk7CisgICAgICAgIG1heFNjb3BlU3RyaW5nID0gcGF0aC5sZWZ0KHBhdGgucmV2ZXJzZUZpbmQo
Jy8nKSArIDEpLnRvU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBtYXhTY29w
ZSA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwgc2VydmljZVdvcmtlckFsbG93ZWQpOwogICAgICAg
ICBpZiAoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYXhTY29wZSktPmlzU2FtZU9yaWdpbkFzKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmNwcAppbmRleCA3YTg4ZmE3NzRlZGMxMmUyNWVkYmMyNTA0NDNjZWEzMTJhYmEy
ZWYyLi4zYThmYWMxOTM5MWVhYzI5N2FmYWM3ZmUyMWZmOGY0NzEyMWQ2ZGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
Ojpmcm9tRGEKICAgICBpZiAoIXNjb3BlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBr
ZXkuc3Vic3RyaW5nKDAsIGZpcnN0KSwga2V5LnN1YnN0cmluZyhmaXJzdCArIDEsIHNlY29uZCAt
IGZpcnN0IC0gMSksIHNob3J0UG9ydCB9LCBXVEZNb3ZlKHNjb3BlKSB9OworICAgIHJldHVybiBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBrZXkubGVmdChmaXJzdCksIGtleS5zdWJz
dHJpbmcoZmlyc3QgKyAxLCBzZWNvbmQgLSBmaXJzdCAtIDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92
ZShzY29wZSkgfTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggN2MzNjQyZmUzMzgx
Yzk2YTk0ZDE1NWNjNDdhYWJlOWNlODU2YjdkNy4uZGM5NmI3OTNkZTJiYjMyMTZkMWEzMTA3ZmIw
ZGZjYjFmOWRlY2ZiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTEyNjgsNyArMTI2OCw3IEBAIGJvb2wgU1dTZXJ2ZXI6
OmNhbkhhbmRsZVNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkgY29uc3QKIHsKICAgICBpZiAoc2No
ZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hlbWUuc3Vic3RyaW5nKDAsIDQpLCAiaHR0cCIpKQorICAg
IGlmICghc2NoZW1lLnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiaHR0cCIpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHNjaGVtZS5sZW5ndGgoKSA9PSA1ICYmIGlzQVNDSUlB
bHBoYUNhc2VsZXNzRXF1YWwoc2NoZW1lWzRdLCAncycpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2Uv
V2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4IDgzNTk2OWJmYTM2Y2UxNmY2MzU2YzZi
YTE3Y2E5MmVhMWU5OGRlZGUuLjJiMWI3ZGIxMjE0YzlmZTZjZWFiOTUxZjM2MTUwMmMxOWVmOTRk
MjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKKysrIGIv
U291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcApAQCAtNzQsNyArNzQsNyBAQCBDb21t
YW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KFJlZlB0cjxKU09OOjpWYWx1ZT4mJiByZXN1bHQsIHN0
ZDo6b3B0aW9uYWw8RXJyb3JDbwogICAgICAgICBTdHJpbmcgZXJyb3JOYW1lOwogICAgICAgICBh
dXRvIHBvc2l0aW9uID0gZXJyb3JNZXNzYWdlLmZpbmQoJzsnKTsKICAgICAgICAgaWYgKHBvc2l0
aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBlcnJvck5hbWUgPSBlcnJvck1lc3NhZ2Uu
c3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAgICAgICAgICAgIGVycm9yTmFtZSA9IGVycm9yTWVz
c2FnZS5sZWZ0KHBvc2l0aW9uKTsKICAgICAgICAgICAgIG1fZXJyb3JNZXNzYWdlID0gZXJyb3JN
ZXNzYWdlLnN1YnN0cmluZyhwb3NpdGlvbiArIDEpOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIGVycm9yTmFtZSA9IGVycm9yTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZTA5ZDJlOWYzNmNhYjI1YzE3NTQxYzg3NDk2ZmYyOWI5
MWEwNTNiNS4uNzJlZDMzNzlkMzZmMmU3ZmY2ZjUzMDBkNWU2NjNkNzQwMDdhYzI5YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFn
ZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKQEAgLTEwNiw3ICsxMDYs
NyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBMb2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNr
ZXI6Om9yaWdpbnMoKSBjb25zdAogICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IGRhdGFi
YXNlT3JpZ2luczsKICAgICBmb3IgKGF1dG8mIHBhdGggOiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0
b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpKSkgewogICAgICAgICBhdXRvIGZpbGVuYW1lID0g
RmlsZVN5c3RlbTo6cGF0aEZpbGVOYW1lKHBhdGgpOwotICAgICAgICBhdXRvIG9yaWdpbklkZW50
aWZpZXIgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgZmlsZW5hbWUubGVuZ3RoKCkgLSBzdHJsZW4o
Ii5sb2NhbHN0b3JhZ2UiKSk7CisgICAgICAgIGF1dG8gb3JpZ2luSWRlbnRpZmllciA9IGZpbGVu
YW1lLmxlZnQoZmlsZW5hbWUubGVuZ3RoKCkgLSBzdHJsZW4oIi5sb2NhbHN0b3JhZ2UiKSk7CiAg
ICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVu
dGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwogICAgICAgICBpZiAob3JpZ2luKQogICAgICAgICAg
ICAgZGF0YWJhc2VPcmlnaW5zLmFwcGVuZChvcmlnaW4udmFsdWUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmNwcAppbmRleCBiMWU2ZmYzYzA3OGJlODcxZDk1MTBmYTM3NmM0NzAwZTMzYzE5ZmE2Li42MTE2
N2E4ZWJhODA1OTEyMGMzMTRkZWIzMjcyMjA5ZGMxNjhlZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgdm9pZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhj
b25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25zdCBTdHJpbmcmIGV4cGVjdAogICAgICAgICAg
ICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5RW50cnlUeXBlOjpGaWxlIHx8IGZpbGVO
YW1lLmxlbmd0aCgpIDwgS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpCiAgICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIFN0cmluZyBoYXNoU3RyaW5nID0gZmlsZU5h
bWUuc3Vic3RyaW5nKDAsIEtleTo6aGFzaFN0cmluZ0xlbmd0aCgpKTsKKyAgICAgICAgICAgICAg
ICBTdHJpbmcgaGFzaFN0cmluZyA9IGZpbGVOYW1lLmxlZnQoS2V5OjpoYXNoU3RyaW5nTGVuZ3Ro
KCkpOwogICAgICAgICAgICAgICAgIGF1dG8gaXNCbG9iID0gZmlsZU5hbWUubGVuZ3RoKCkgPiBL
ZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSAmJiBmaWxlTmFtZS5lbmRzV2l0aChibG9iU3VmZml4KTsK
ICAgICAgICAgICAgICAgICBmdW5jdGlvbihmaWxlTmFtZSwgaGFzaFN0cmluZywgYWN0dWFsVHlw
ZSwgaXNCbG9iLCByZWNvcmREaXJlY3RvcnlQYXRoKTsKICAgICAgICAgICAgIH0pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1h
bmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3Rv
cmFnZU1hbmFnZXIuY3BwCmluZGV4IDI2YmM5MDc5YmIyZjk2ZGU3OWFkMDUxOWQ3NzJhMGMwYjE2
NWFiYjMuLjJiMTA4NDZmOTYwOTlhM2IyNGVjNDY1NDVmNTE1N2NlYjY5MWQ3YTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5h
Z2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxT
dG9yYWdlTWFuYWdlci5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBmaWxlTmFtZVRvT3JpZ2luKGNvbnN0IFN0cmlu
ZyYKICAgICBpZiAoZmlsZU5hbWVMZW5ndGggPD0gc3VmZml4TGVuZ3RoKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBvcmlnaW5JZGVudGlmaWVyID0gZmlsZU5hbWUu
c3Vic3RyaW5nKDAsIGZpbGVOYW1lTGVuZ3RoIC0gc3VmZml4TGVuZ3RoKTsKKyAgICBhdXRvIG9y
aWdpbklkZW50aWZpZXIgPSBmaWxlTmFtZS5sZWZ0KGZpbGVOYW1lTGVuZ3RoIC0gc3VmZml4TGVu
Z3RoKTsKICAgICByZXR1cm4gV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJh
c2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9B
UEkvYy9XS1N0cmluZy5jcHAKaW5kZXggNGVkM2I4YWEyZDIzZTUxNWEzMDQ5MDVlYzQwMmYzZTQ4
YTRjNGQ2MS4uOWQ3NTVhN2YzYmE0ZThkZTM2MDRmOGYwYWExOTg4ODVkZjc2OTNlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcApAQCAtNTgsNyArNTgsNyBAQCBzaXpl
X3QgV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKFdLU3RyaW5nUmVmIHN0cmluZ1JlZiwgV0tDaGFyKiBi
dWZmZXIsIHNpemVfdCBidWZmZQogICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFdLQ2hhcikgPT0g
c2l6ZW9mKFVDaGFyKSwgIlNpemUgb2YgV0tDaGFyIG11c3QgbWF0Y2ggc2l6ZSBvZiBVQ2hhciIp
OwogCiAgICAgdW5zaWduZWQgdW5zaWduZWRCdWZmZXJMZW5ndGggPSBzdGQ6Om1pbjxzaXplX3Q+
KGJ1ZmZlckxlbmd0aCwgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpKTsKLSAg
ICBhdXRvIHN1YnN0cmluZyA9IFdlYktpdDo6dG9JbXBsKHN0cmluZ1JlZiktPnN0cmluZ1ZpZXco
KS5zdWJzdHJpbmcoMCwgdW5zaWduZWRCdWZmZXJMZW5ndGgpOworICAgIGF1dG8gc3Vic3RyaW5n
ID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLmxlZnQodW5zaWduZWRC
dWZmZXJMZW5ndGgpOwogCiAgICAgc3Vic3RyaW5nLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIpKTsKICAgICByZXR1cm4gc3Vic3RyaW5n
Lmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SW5wdXRNZXRob2RGaWx0ZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIv
SW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IGM3OGMxODJkMzNjY2FhMWZlNzhkNWQzOWY4NTJj
YWY4YmIxMTQyM2MuLjI4ZTBmNjUxMzdhMjU5YTRjNWExNjAwYjU4NmUzMzc3YTUzYjJlOTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmls
dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhv
ZEZpbHRlci5jcHAKQEAgLTI0MCwxMCArMjQwLDEwIEBAIHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6
Om5vdGlmeVN1cnJvdW5kaW5nKGNvbnN0IFN0cmluZyYgdGV4dCwgdWludDY0X3QgY3Vyc29yUG9z
CiAgICAgbV9zdXJyb3VuZGluZy5zZWxlY3Rpb25Qb3NpdGlvbiA9IHNlbGVjdGlvblBvc2l0aW9u
OwogCiAgICAgYXV0byB0ZXh0VVRGOCA9IG1fc3Vycm91bmRpbmcudGV4dC51dGY4KCk7Ci0gICAg
YXV0byBjdXJzb3JQb3NpdGlvblVURjggPSBjdXJzb3JQb3NpdGlvbiAhPSB0ZXh0Lmxlbmd0aCgp
ID8gdGV4dC5zdWJzdHJpbmcoMCwgY3Vyc29yUG9zaXRpb24pLnV0ZjgoKS5sZW5ndGgoKSA6IHRl
eHRVVEY4Lmxlbmd0aCgpOworICAgIGF1dG8gY3Vyc29yUG9zaXRpb25VVEY4ID0gY3Vyc29yUG9z
aXRpb24gIT0gdGV4dC5sZW5ndGgoKSA/IFN0cmluZ1ZpZXcodGV4dCkubGVmdChjdXJzb3JQb3Np
dGlvbikudXRmOCgpLmxlbmd0aCgpIDogdGV4dFVURjgubGVuZ3RoKCk7CiAgICAgYXV0byBzZWxl
Y3Rpb25Qb3NpdGlvblVURjggPSBjdXJzb3JQb3NpdGlvblVURjg7CiAgICAgaWYgKGN1cnNvclBv
c2l0aW9uICE9IHNlbGVjdGlvblBvc2l0aW9uKQotICAgICAgICBzZWxlY3Rpb25Qb3NpdGlvblVU
RjggPSBzZWxlY3Rpb25Qb3NpdGlvbiAhPSB0ZXh0Lmxlbmd0aCgpID8gdGV4dC5zdWJzdHJpbmco
MCwgc2VsZWN0aW9uUG9zaXRpb24pLnV0ZjgoKS5sZW5ndGgoKSA6IHRleHRVVEY4Lmxlbmd0aCgp
OworICAgICAgICBzZWxlY3Rpb25Qb3NpdGlvblVURjggPSBzZWxlY3Rpb25Qb3NpdGlvbiAhPSB0
ZXh0Lmxlbmd0aCgpID8gU3RyaW5nVmlldyh0ZXh0KS5sZWZ0KHNlbGVjdGlvblBvc2l0aW9uKS51
dGY4KCkubGVuZ3RoKCkgOiB0ZXh0VVRGOC5sZW5ndGgoKTsKICAgICB3ZWJraXRfaW5wdXRfbWV0
aG9kX2NvbnRleHRfbm90aWZ5X3N1cnJvdW5kaW5nKG1fY29udGV4dC5nZXQoKSwgdGV4dFVURjgu
ZGF0YSgpLCB0ZXh0VVRGOC5sZW5ndGgoKSwgY3Vyc29yUG9zaXRpb25VVEY4LCBzZWxlY3Rpb25Q
b3NpdGlvblVURjgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9n
dGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9H
dGtTZXR0aW5nc01hbmFnZXIuY3BwCmluZGV4IGM1MDJkMmRjNTJlN2Y3ZDQ4ODlkZjI2ZWJiZjMz
YWZjM2JjMTRiNjMuLjAwOWVmZThkZTg1Yzg4ZmFlYjViZjM2MTRhNWViYjY1MjFlZTFjNTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIu
Y3BwCkBAIC00Myw3ICs0Myw3IEBAIFN0cmluZyBHdGtTZXR0aW5nc01hbmFnZXI6OnRoZW1lTmFt
ZSgpIGNvbnN0CiAgICAgaWYgKGF1dG8qIHRoZW1lTmFtZUVudiA9IGdfZ2V0ZW52KCJHVEtfVEhF
TUUiKSkgewogICAgICAgICBTdHJpbmcgbmFtZSA9IFN0cmluZzo6ZnJvbVVURjgodGhlbWVOYW1l
RW52KTsKICAgICAgICAgaWYgKG5hbWUuZW5kc1dpdGgoIi1kYXJrIikgfHwgbmFtZS5lbmRzV2l0
aCgiLURhcmsiKSB8fCBuYW1lLmVuZHNXaXRoKCI6ZGFyayIpKQotICAgICAgICAgICAgcmV0dXJu
IG5hbWUuc3Vic3RyaW5nKDAsIG5hbWUubGVuZ3RoKCkgLSA1KTsKKyAgICAgICAgICAgIHJldHVy
biBuYW1lLmxlZnQobmFtZS5sZW5ndGgoKSAtIDUpOwogICAgICAgICByZXR1cm4gbmFtZTsKICAg
ICB9CiAKQEAgLTUxLDcgKzUxLDcgQEAgU3RyaW5nIEd0a1NldHRpbmdzTWFuYWdlcjo6dGhlbWVO
YW1lKCkgY29uc3QKICAgICBnX29iamVjdF9nZXQobV9zZXR0aW5ncywgImd0ay10aGVtZS1uYW1l
IiwgJnRoZW1lTmFtZVNldHRpbmcub3V0UHRyKCksIG51bGxwdHIpOwogICAgIFN0cmluZyBuYW1l
ID0gU3RyaW5nOjpmcm9tVVRGOCh0aGVtZU5hbWVTZXR0aW5nLmdldCgpKTsKICAgICBpZiAobmFt
ZS5lbmRzV2l0aCgiLWRhcmsiKSB8fCBuYW1lLmVuZHNXaXRoKCItRGFyayIpKQotICAgICAgICBy
ZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGgoKSAtIDUpOworICAgICAgICByZXR1
cm4gbmFtZS5sZWZ0KG5hbWUubGVuZ3RoKCkgLSA1KTsKICAgICByZXR1cm4gbmFtZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKaW5kZXgg
YmIwOTQ1ODkzNmM0NjY4MDQ0NjE5Zjc4YzZhYjE0ZjAyYjVkNmIyMi4uMDM2YTY2M2IwYmJmZjFk
ZTY3MjIwMzEwZTQ0NjkxMmRmNDQxMTFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0yNzMsNyArMjczLDcgQEAgVmVjdG9yPFRleHRD
aGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNrVGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9j
dW1lbnRUYWcgc3AKICAgICAgICAgcGFyYWdyYXBoQ2hlY2tpbmdSZXN1bHQuYXBwZW5kKG1pc3Nw
ZWxsaW5nUmVzdWx0KTsKICAgICAgICAgb2Zmc2V0ICs9IG1pc3NwZWxsaW5nTG9jYXRpb24gKyBt
aXNzcGVsbGluZ0xlbmd0aDsKICAgICAgICAgLy8gR2VuZXJhbGx5LCB3ZSBlbmQgdXAgY2hlY2tp
bmcgYXQgdGhlIHdvcmQgc2VwYXJhdG9yLCBtb3ZlIHRvIHRoZSBhZGphY2VudCB3b3JkLgotICAg
ICAgICBvZmZzZXQgPSBuZXh0V29yZE9mZnNldCh0ZXh0LnN1YnN0cmluZygwLCBsZW5ndGhTdHJp
cCksIG9mZnNldCk7CisgICAgICAgIG9mZnNldCA9IG5leHRXb3JkT2Zmc2V0KHRleHQubGVmdChs
ZW5ndGhTdHJpcCksIG9mZnNldCk7CiAgICAgfQogICAgIHJldHVybiBwYXJhZ3JhcGhDaGVja2lu
Z1Jlc3VsdDsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlBy
b2Nlc3NQb29sV2luLmNwcAppbmRleCBlMzE4ODlmMzQ0YzRhNjNkZjVlNWU2NTllMjQyMWY0Yzkx
MDQ4Y2M0Li4yM2IzZWNhNjQ3NWEwZjcwN2Q3ZjBkZDJlMjY2ZmMyNWVkYzM1MjM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKQEAg
LTYxLDcgKzYxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZl
cihTdHJpbmdWaWV3IGFkZHJlc3MpCiAgICAgaWYgKHBvcyA9PSBub3RGb3VuZCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byBob3N0ID0gYWRkcmVzcy5zdWJzdHJpbmcoMCwgcG9zKTsKKyAg
ICBhdXRvIGhvc3QgPSBhZGRyZXNzLmxlZnQocG9zKTsKICAgICBhdXRvIHBvcnQgPSBwYXJzZUlu
dGVnZXI8dWludDE2X3Q+KGFkZHJlc3Muc3Vic3RyaW5nKHBvcyArIDEpKTsKICAgICBpZiAoIXBv
cnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3Rv
cmFnZVRyYWNrZXIuY3BwCmluZGV4IDVkNGVlYzVmZWQ4YjM1NGMwZjFhNjc1ZDBjYjRkNDMyN2Qx
ZDI3YmQuLjM2MzYxOTZjYjU2YWEyZTQzMGMzYTNiMDc0MThlMjg0ZjkxZTc2MDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcApAQCAtMjYwLDcg
KzI2MCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRh
dGFiYXNlKCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGF1dG8gZmlsZVBhdGgg
PSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQobV9zdG9yYWdlRGlyZWN0b3J5
UGF0aCwgZmlsZU5hbWUpOwotICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGVO
YW1lLnN1YnN0cmluZygwLCBmaWxlTmFtZS5sZW5ndGgoKSAtIGZpbGVFeHRlbnNpb24ubGVuZ3Ro
KCkpOworICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciA9IGZpbGVOYW1lLmxlZnQoZmls
ZU5hbWUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9uLmxlbmd0aCgpKTsKICAgICAgICAgaWYgKCFv
cmlnaW5TZXRDb3B5LmNvbnRhaW5zKG9yaWdpbklkZW50aWZpZXIpKQogICAgICAgICAgICAgc3lu
Y1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRlbnRpZmllciwgZmlsZVBhdGgpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0
aW9uLm1tCmluZGV4IDNkYjI0ODhkNjBlYzQxYjA4MWY3YTkxN2QwZTI2MWIyN2U2MjRhMjcuLjZm
MWY5YTc5ZTJjYjlhZjA1NzU5ZDNlMTUzMDg0YWY4ODA0Mjg2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1t
CkBAIC0zNzUsOCArMzc1LDkgQEAgc3RhdGljIFJlZ3VsYXJFeHByZXNzaW9uKiByZWdFeHBGb3JM
YWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgICAgICAgICAgYm9vbCBzdGFydHNXaXRoV29yZENo
YXJhY3RlciA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbCBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIg
PSBmYWxzZTsKICAgICAgICAgICAgIGlmIChsYWJlbC5sZW5ndGgoKSkgewotICAgICAgICAgICAg
ICAgIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJl
bC5zdWJzdHJpbmcoMCwgMSkpID49IDA7Ci0gICAgICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hh
cmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVu
Z3RoKCkgLSAxLCAxKSkgPj0gMDsKKyAgICAgICAgICAgICAgICBTdHJpbmdWaWV3IGxhYmVsVmll
dyB7IGxhYmVsIH07CisgICAgICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3
b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsVmlldy5sZWZ0KDEpKSA+PSAwOworICAgICAgICAg
ICAgICAgIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFi
ZWxWaWV3LnJpZ2h0KDEpKSA+PSAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCiAgICAg
ICAgICAgICAvLyBTZWFyY2ggZm9yIHdvcmQgYm91bmRhcmllcyBvbmx5IGlmIGxhYmVsIHN0YXJ0
cy9lbmRzIHdpdGggIndvcmQgY2hhcmFjdGVycyIuCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYTg2MmYyOWM1YTYxNmMzMWRhOGQ2NjAyMGJlNzdi
M2U4NGEwMjEyYi4uMjc1YTBkM2I2ZmM2NzEyMjJlYzIyZGVhYmE2ODY1MDUzNGFiZjBlOCAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI2IEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAg
ICAgICAgUmVwbGFjZSBjYWxscyB0byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25j
aXNlIGxlZnQoeCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcDoKKyAgICAgICAgKGZp
bmRGb250RmFsbGJhY2spOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBh
cnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjppbnNlcnRUYWJBdExvY2F0aW9uKToK
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmVhZENvbnRlbnRzT2ZGaWxlKToKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcDoKKyAgICAgICAg
KGNhbm9uaWNhbGl6ZUhUVFBIZWFkZXIpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6aW5zZXJ0VGFiQXRMb2NhdGlvbik6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwOgorICAgICAgICAoV1RSOjpwYXRoU3Vp
dGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdUUjo6ZHVtcEZyYW1lVGV4dCk6CisgICAg
ICAgIChXVFI6OnN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKToKKyAgICAgICAgKFdUUjo6
SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2FnZVRvQ29uc29sZSk6CisKIDIwMjItMDQt
MTIgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W1dpbkNhaXJvXSBXRUJLSVRfTElCUkFSSUVTIGVudiB2YXIgc2hvdWxkIGJlIGN1c3RvbWl6YWJs
ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKaW5kZXggMzZh
ZThmNTczYzQyOGFhZTRkNWQ1ZmIyYTdlNGEyOTM3ZTRiY2M4Ny4uNzA3YzViNjljZjM1YjBiZmIz
MWZjOWNjMWQzNmExMDQxNzI0Y2QxMCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwCkBAIC0xMTEzLDcgKzExMTMsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRG
b250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogICAgIGlmICghOjpQYXRoSXNEaXJl
Y3RvcnlXKGZ1bGxQYXRoKSkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAKLSAgICBT
dHJpbmcgcGF0aFRvQ2hlY2sgPSBmdWxsUGF0aDsKKyAgICBTdHJpbmdWaWV3IHBhdGhUb0NoZWNr
ID0gZnVsbFBhdGg7CiAKICAgICBzdGF0aWMgY29uc3QgU3RyaW5nIGxheW91dFRlc3RzID0gIkxh
eW91dFRlc3RzIl9zOwogCkBAIC0xMTIyLDE1ICsxMTIyLDE1IEBAIHN0YXRpYyBTdHJpbmcgZmlu
ZEZvbnRGYWxsYmFjayhjb25zdCBjaGFyKiBwYXRoT3JVcmwpCiAgICAgaWYgKFdURjo6bm90Rm91
bmQgPT0gbG9jYXRpb24pCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogCi0gICAgU3Ry
aW5nIHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9jYXRpb24gKyBsYXlvdXRU
ZXN0cy5sZW5ndGgoKSArIDEpOwotICAgIFN0cmluZyBwb3NzaWJsZVBhdGhUb0xvZ3VlID0gRmls
ZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0NoZWNrLnN1YnN0cmluZygw
LCBsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSksICJwbGF0Zm9ybVxcd2luIl9z
KTsKKyAgICBTdHJpbmdWaWV3IHBhdGhUb1Rlc3QgPSBwYXRoVG9DaGVjay5zdWJzdHJpbmcobG9j
YXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpOworICAgIFN0cmluZyBwb3NzaWJsZVBh
dGhUb0xvZ3VlID0gRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBhdGhUb0No
ZWNrLmxlZnQobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1c
XHdpbiJfcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwb3NzaWJsZVBhdGhzOwogICAgIHBvc3Np
YmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3Nz
aWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXplX3QgbmV4dENhbmRpZGF0
ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgd2hpbGUgKG5leHRDYW5k
aWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7Ci0gICAgICAg
IHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5kKTsK
KyAgICAgICAgcGF0aFRvVGVzdCA9IHBhdGhUb1Rlc3QubGVmdChuZXh0Q2FuZGlkYXRlRW5kKTsK
ICAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5n
Q29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKICAgICAgICAgbmV4
dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKaW5kZXggOTBmZmM5OTQ0
ZTZiMjViZDQ1OTg1OTZmZGQ4NjU5NGIxYjNhZGY1OS4uNTJlMzk3ZDEwYTkzNmUwMGVlMjcyMThi
OTdlNDQ4NGUxNGNkMjE5NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
VEYvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQ
YXJzZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgZXEoVCYmIHMxLCBVJiYgczIpCiBzdGF0
aWMgU3RyaW5nIGluc2VydFRhYkF0TG9jYXRpb24oU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBs
b2NhdGlvbikKIHsKICAgICBBU1NFUlQobG9jYXRpb24gPD0gc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICByZXR1cm4gbWFrZVN0cmluZyhzdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKSwgIlx0Iiwg
c3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHN0cmlu
Zy5sZWZ0KGxvY2F0aW9uKSwgJ1x0Jywgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOwogfQog
CiBzdGF0aWMgRXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFydHMoU3RyaW5nVmlldyB1cmxTdHJpbmdX
aXRoVGFiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0Zp
bGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9u
aXRvci5jcHAKaW5kZXggOWUzNWQ5NWJiNTFhMDliMDA4NTM0ZDczMzVkODI4YTAwMGVjMmM0Mi4u
ZmFmYWIxY2FlZmI2MzRmMzE2ZmM0Mzg4YzVkODkyZTMxODExNTgzZCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xMTIsNyAr
MTEyLDcgQEAgc3RhdGljIFN0cmluZyByZWFkQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoKQogCiAgICAgU3RyaW5nIHJlc3VsdChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KGJ1ZmZl
ci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGlmIChyZXN1bHQuZW5kc1dpdGgoIlxu
IikpCi0gICAgICAgIHJldHVybiByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGgoKSAt
IDEpOworICAgICAgICByZXR1cm4gcmVzdWx0LmxlZnQocmVzdWx0Lmxlbmd0aCgpIC0gMSk7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcAppbmRleCA3MjNkNTg4YWE0OWM4N2UzNjY0
YjQ2ZjMxODBkZmQ3MDdmYzI3NWVhLi4wNDk5ZTFhNDIxZWM3MWVlODU5NmE1YTliNWU0NTU1ZDhk
MDk4YjgwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRU
UEhlYWRlckZpZWxkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
SFRUUEhlYWRlckZpZWxkLmNwcApAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9u
aWNhbGl6ZUhUVFBIZWFkZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgc2l6ZV90IGNvbG9u
TG9jYXRpb24gPSBzdHJpbmcuZmluZCgnOicpOwogICAgIGlmIChjb2xvbkxvY2F0aW9uID09IG5v
dEZvdW5kKQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8gZmllbGQgPSBXZWJDb3JlOjpI
VFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShzdHJpbmcuc3Vic3RyaW5nKDAsIGNvbG9uTG9jYXRpb24p
LCBzdHJpbmcuc3Vic3RyaW5nKGNvbG9uTG9jYXRpb24gKyAxKSk7CisgICAgYXV0byBmaWVsZCA9
IFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKHN0cmluZy5sZWZ0KGNvbG9uTG9jYXRp
b24pLCBzdHJpbmcuc3Vic3RyaW5nKGNvbG9uTG9jYXRpb24gKyAxKSk7CiAgICAgaWYgKCFmaWVs
ZCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gbWFrZVN0cmluZyhmaWVsZC0+bmFt
ZSgpLCAiOiAiLCBmaWVsZC0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCmluZGV4IDRk
MjdmNGZkNGI1NTIyODc0M2QzZTJmN2NjOTdmYmM0M2Y0NGE4ZWIuLmY1ODU5OTE4YzhhNWU4MDkw
NDVjYmMwNWU1YWE5ZGI1NTQxYjc5YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCkBAIC03MSwx
MCArNzEsMTAgQEAgYm9vbCBlcShUJiYgczEsIFUmJiBzMikKICAgICByZXR1cm4gczEudXRmOCgp
ID09IHMyLnV0ZjgoKTsKIH0KIAotc3RhdGljIFN0cmluZyBpbnNlcnRUYWJBdExvY2F0aW9uKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3QgbG9jYXRpb24pCitzdGF0aWMgU3RyaW5nIGluc2Vy
dFRhYkF0TG9jYXRpb24oU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBsb2NhdGlvbikKIHsKICAg
ICBBU1NFUlQobG9jYXRpb24gPD0gc3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWFrZVN0
cmluZyhzdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1YnN0cmlu
Zyhsb2NhdGlvbikpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHN0cmluZy5sZWZ0KGxvY2F0aW9u
KSwgJ1x0Jywgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOwogfQogCiBzdGF0aWMgRXhwZWN0
ZWRQYXJ0cyBpbnZhbGlkUGFydHMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmdXaXRoVGFiKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9Jbmpl
Y3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGQwMDZiNzg5Y2MxMWNlNWJiOTRiNDMzMWQzOWM5ZjYw
NDFjYjZlNzQuLjlmMDEyOWM3ZWE5MGZhNmJjYzU4YThhNDZkYzVhN2I0Y2FhYjVhNTcgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5k
bGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0lu
amVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgaW5saW5lIFdU
Rjo6U3RyaW5nIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tVUkxSZWYgZmlsZVVybCkKIAog
ICAgIFN0cmluZyBwYXRoU3RyaW5nID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlQYXRo
KGZpbGVVcmwpKSk7CiAgICAgU3RyaW5nIG1haW5GcmFtZVVSTFBhdGhTdHJpbmcgPSB0b1dURlN0
cmluZyhhZG9wdFdLKFdLVVJMQ29weVBhdGgobWFpbkZyYW1lVVJMLmdldCgpKSkpOwotICAgIFN0
cmluZyBiYXNlUGF0aCA9IG1haW5GcmFtZVVSTFBhdGhTdHJpbmcuc3Vic3RyaW5nKDAsIG1haW5G
cmFtZVVSTFBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcikgKyAxKTsKKyAgICBhdXRvIGJh
c2VQYXRoID0gU3RyaW5nVmlldyhtYWluRnJhbWVVUkxQYXRoU3RyaW5nKS5sZWZ0KG1haW5GcmFt
ZVVSTFBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcikgKyAxKTsKICAgICAKICAgICBpZiAo
IWJhc2VQYXRoLmlzRW1wdHkoKSAmJiBwYXRoU3RyaW5nLnN0YXJ0c1dpdGgoYmFzZVBhdGgpKQog
ICAgICAgICByZXR1cm4gcGF0aFN0cmluZy5zdWJzdHJpbmcoYmFzZVBhdGgubGVuZ3RoKCkpOwpA
QCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZVRleHQoV0tCdW5kbGVGcmFt
ZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKICAgICBhdXRvIHRleHQgPSB0b1dU
RlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0KGZyYW1lKSkpOwogICAg
IGZvciAoYXV0byBsaW5lIDogU3RyaW5nVmlldyh0ZXh0KS5zcGxpdEFsbG93aW5nRW1wdHlFbnRy
aWVzKCdcbicpKSB7CiAgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCi0gICAgICAg
ICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAgICAg
ICAgICAgbGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7CiAgICAgICAgIGJ1aWxk
ZXIuYXBwZW5kKGxpbmUsICdcbicpOwogICAgIH0KIH0KQEAgLTEzMDAsNyArMTMwMCw3IEBAIHN0
YXRpYyBXVEY6OlN0cmluZyBzdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZShjb25zdCBXVEY6
OlN0cmluZyYgc3RyaW5nKQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKGF1
dG8gbGluZSA6IFN0cmluZ1ZpZXcoc3RyaW5nKS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdc
bicpKSB7CiAgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCi0gICAgICAgICAgICBs
aW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAgICAgICAgICAg
bGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGxpbmUsICdcbicpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpA
QCAtMTMxMiw3ICsxMzEyLDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGFkZExlYWRpbmdTcGFjZVN0
cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKGNvbnN0IFdURjo6U3RyaW4KICAgICByZXR1cm4g
KHJlc3VsdC5pc0VtcHR5KCkgfHwgcmVzdWx0LnN0YXJ0c1dpdGgoJ1xuJykpID8gcmVzdWx0IDog
bWFrZVN0cmluZygnICcsIHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBXVEY6OlN0cmluZyBsYXN0Rmls
ZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpCitzdGF0aWMgU3RyaW5n
VmlldyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoU3RyaW5nVmlldyBwYXRoKQogewogICAgIGF1
dG8gcG9zID0gcGF0aC5maW5kKCJmaWxlOi8vIik7CiAgICAgQVNTRVJUKFdURjo6bm90Rm91bmQg
IT0gcG9zKTsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBsYXN0Rmls
ZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpCiAKICAgICAvLyBSZW1v
dmUgdGhlIHRyYWlsaW5nIGRlbGltaXRlcgogICAgIGlmICh0bXBQYXRoW3RtcFBhdGgubGVuZ3Ro
KCkgLSAxXSA9PSAnLycpCi0gICAgICAgIHRtcFBhdGgucmVtb3ZlKHRtcFBhdGgubGVuZ3RoKCkg
LSAxKTsKKyAgICAgICAgdG1wUGF0aCA9IHRtcFBhdGgubGVmdCh0bXBQYXRoLmxlbmd0aCgpIC0g
MSk7CiAKICAgICBwb3MgPSB0bXBQYXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKFdURjo6
bm90Rm91bmQgIT0gcG9zKQpAQCAtMTM0NCwxMCArMTM0NCwxMSBAQCB2b2lkIEluamVjdGVkQnVu
ZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSkKICAg
ICAgICAgbWVzc2FnZVN0cmluZy50cnVuY2F0ZShudWxsQ2hhclBvcyk7CiAKICAgICBzaXplX3Qg
ZmlsZVByb3RvY29sU3RhcnQgPSBtZXNzYWdlU3RyaW5nLmZpbmQoImZpbGU6Ly8iKTsKLSAgICBp
ZiAoZmlsZVByb3RvY29sU3RhcnQgIT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAoZmlsZVByb3Rv
Y29sU3RhcnQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBTdHJpbmdWaWV3IG1lc3NhZ2VT
dHJpbmdWaWV3IHsgbWVzc2FnZVN0cmluZyB9OwogICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUg
YmVsb3cgZG9lcyBub3QgaGFuZGxlIGFkZGl0aW9uYWwgdGV4dCBhZnRlciB1cmwgbm9yIG11bHRp
cGxlIHVybHMuIFRoaXMgbWF0Y2hlcyBEdW1wUmVuZGVyVHJlZSBpbXBsZW1lbnRhdGlvbi4KLSAg
ICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VTdHJpbmcuc3Vic3RyaW5nKDAsIGZpbGVQcm90
b2NvbFN0YXJ0KSArIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudChtZXNzYWdlU3RyaW5nLnN1YnN0
cmluZyhmaWxlUHJvdG9jb2xTdGFydCkpOwotCisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtYWtl
U3RyaW5nKG1lc3NhZ2VTdHJpbmdWaWV3LmxlZnQoZmlsZVByb3RvY29sU3RhcnQpLCBsYXN0Rmls
ZVVSTFBhdGhDb21wb25lbnQobWVzc2FnZVN0cmluZ1ZpZXcuc3Vic3RyaW5nKGZpbGVQcm90b2Nv
bFN0YXJ0KSkpOworICAgIH0KICAgICBtZXNzYWdlU3RyaW5nID0gbWFrZVN0cmluZygiQ09OU09M
RSBNRVNTQUdFOiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5l
KG1lc3NhZ2VTdHJpbmcpKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuZHVtcEpTQ29uc29sZUxv
Z0luU3RkRXJyKCkpCiAgICAgICAgIGluamVjdGVkQnVuZGxlLmR1bXBUb1N0ZEVycihtZXNzYWdl
U3RyaW5nKTsK
</data>
<flag name="commit-queue"
          id="486231"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457578</attachid>
            <date>2022-04-13 17:14:53 -0700</date>
            <delta_ts>2022-04-13 19:08:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239306-20220413171452.patch</filename>
            <type>text/plain</type>
            <size>94647</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODQ0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OWMxYTI5ZjAyZTE5MzBlMDIzYmIwMjM1YzU4ZGQ4NjY0ZDEzMmI3Li45M2YxNjExYTliOTQwNzEx
OWI3NDYyZGE1YjEyMDc0OTI1NzI1ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUg
Y29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1l
L0V4Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjbGFtcEVycm9yTWVzc2FnZSk6
CisgICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6
d2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpyZXNvbHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmJlc3RBdmFpbGFibGVMb2NhbGUpOgor
CiAyMDIyLTA0LTEzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AcmVkaGF0LmNvbT4K
IAogICAgICAgICBHQ0MgMTIgLVdkYW5nbGluZy1wb2ludGVyIHdhcm5pbmcgc3BhbSBmcm9tIEFi
c3RyYWN0U2xvdFZpc2l0b3JJbmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdl
TG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOThkMzZlMDk0NzQ1NTEyMDE0ZjRmN2Iw
ZjcxYjRhYjRlY2JmNmMyNi4uZDljY2JjNmIxODI5NzFlMGVjYTA5OWNlN2MyYTI0NGQzNzZlOGM5
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpA
YXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdp
dGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjpVUkw6OnBy
b3RvY29sIGNvbnN0KToKKyAgICAgICAgKFdURjo6VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNv
bnN0KToKKyAgICAgICAgKFdURjo6VVJMOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXVEY6OlVS
TDo6c2V0SG9zdCk6CisgICAgICAgIChXVEY6OlVSTDo6c2V0SG9zdEFuZFBvcnQpOgorICAgICAg
ICAoV1RGOjpVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6CisgICAgICAgICog
d3RmL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6YWRkTm9uU3BlY2lh
bERvdFNsYXNoKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3Jt
KToKKyAgICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIChXVEY6OlVVSUQ6OnBhcnNlKToK
KyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6
Omluc2VydCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMjItMDQtMTMg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIHVudXNlZCBB
dG9tU3RyaW5nKGNvbnN0IExDaGFyKikgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwOTMyN2Ez
NWIwZTdhYWQ3YTY3NDM3YWE0NzU1ZjYzMmYzMmRlOGM5Li5kODJiZmZkZjM1ZjNkMjk1MTg0NWQ2
NzdlZjE2YTQ3ZGJhZmJjYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMxIEBACisyMDIyLTA0
LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBj
YWxscyB0byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJlcGxhY2UgY2Fs
bHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpLiBBbHNv
IHVzZSBTdHJpbmdWaWV3IGluIG1vcmUgY2FzZXMKKyAgICAgICAgZm9yIHBlcmZvcm1hbmNlLgor
CisgICAgICAgICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZU1JTUVUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQp
OgorICAgICAgICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCS2V5UGF0aExleGVyOjpsZXhJZGVudGlmaWVyKToKKyAgICAgICAgKiBNb2R1
bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpzaG91bGRJZ25vcmVJY2VDYW5kaWRhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFz
dHJlYW0vUlRDRFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVy
OjpwbGF5TmV4dFRvbmUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVy
TWVkaWFFbmRwb2ludDo6YWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6dG9SdHBDb2RlY0NhcGFiaWxpdHkpOgorICAgICAgICAqIE1vZHVsZXMv
cGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
cHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBs
dWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKToKKyAgICAgICAgKiBk
aXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5
OjpUZXh0Qm94OjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZSk6
CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6c3BsaXRU
ZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9UZXh0
SXRlcmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpwcmVwZW5kQ29u
dGV4dCk6CisgICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c3VmZml4TGVuZ3RoRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRXb3Jk
Qm91bmRhcnkpOgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFy
eSk6CisgICAgICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAo
V2ViQ29yZTo6RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgorICAgICAgICAq
IGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFByZXNlcnZlTVNP
TGlzdHMpOgorICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjp1cGRhdGVMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgor
ICAgICAgICAoV1RGOjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVybEZvckxvZ2dpbmdU
cmFjayk6CisgICAgICAgICogaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlVSTERlY29tcG9zaXRpb246OnNldEhvc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQUmVmcmVz
aEludGVybmFsKToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRGVzY3JpcHRvcnMpOgorICAgICAgICAqIGh0bWwvcGFy
c2VyL0hUTUxUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxk
ZXI6OkV4dGVybmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OmNoYXJhY3RlclByZWRpY2F0ZSk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVTaGVldEhhbmRsZXI6Om9ic2VydmVDb21tZW50KToKKyAgICAgICAgKiBsYXlv
dXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6Om91dHB1dExheW91dEJveCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYW5pZmVz
dFBhdGgpOgorICAgICAgICAqIG1hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTnVtYmVy
QW5kVW5pdCk6CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpj
cmVhdGVSZWdFeHBGb3JMYWJlbHMpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNl
SWRlbnRpZmllcik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjb21wdXRlU2hhcmVkU3RyaW5nSGFzaElubGluZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNlbnRlclRydW5jYXRlVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRUcnVu
Y2F0ZVRvQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcik6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNl
dFBsYXliaW5VUkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2Uv
U291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9ybU1heGltdW1CdWZmZXJTaXplIGNvbnN0
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENh
Y2hlOjpnZXRGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgorICAgICAgICAqIHBs
YXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VOYW1l
Rm9yVXNlckFnZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmltVG9OZXh0U2VwYXJhdG9yKToKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Q3JlZGVudGlhbFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdGVjdGlvblNwYWNl
TWFwS2V5RnJvbVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6Zmlu
ZERlZmF1bHRQcm90ZWN0aW9uU3BhY2VGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvRGF0YVVSTERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6
OkRlY29kZVRhc2s6OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBh
cnNlcnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTdHJ1Y3R1cmVkRmllbGRWYWx1ZSk6
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJldHJpZXZlS2V5VmFsdWVQYWlycyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL0Nvb2tpZVV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFy
c2VDb29raWVBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OnBhcnNl
Q29va2llSGVhZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OmRlZmF1bHRQYXRo
Rm9yVVJMKToKKyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9u
KToKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpmaWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhc3RlYm9hcmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNy
ZWF0ZUdsb2JhbEltYWdlRmlsZURlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9X
ZWJDb3JlVGV4dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvRHJhd1RleHRBdFBv
aW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAgICAg
KiByZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFzZSk6
CisgICAgICAgICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3Rz
Ojppc1ZhbGlkIGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlS
SVN0cmluZyk6CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZSk6Cisg
ICAgICAgICogd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURh
dGFiYXNlS2V5KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29uc3QpOgor
CiAyMDIyLTA0LTEzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AcmVkaGF0LmNvbT4K
IAogICAgICAgICBNaXNjIGNvbXBpbGVyIHdhcm5pbmdzLCBBcHJpbCAyMDIyIGVkaXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkRyaXZlci9D
aGFuZ2VMb2cKaW5kZXggNzQ4MmFlMjM0MzRkMDNiYTE4Y2VmOTIyM2E3NjgwMDhiODEzNTVmNS4u
MjZhYzRmODlhMDJlMjU4YzJlOTkyNWI5M2RkYWZiMzI3ZmQzNjdmMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGggdGhl
IG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIENvbW1hbmRSZXN1bHQuY3BwOgorICAgICAgICAoV2ViRHJpdmVyOjpD
b21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KToKKwogMjAyMi0wNC0xMSAgRG9uIE9sbXN0ZWFk
ICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIEZpeCBQbGF5U3RhdGlvbiBidWls
ZCBhZnRlciByMjkyNjk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDJjMzE0YTU0Njc0Y2Y4ZTdlNDM4MDE0YmFkZjAy
YjBmNmQxNGRiOGIuLjc2NGVhNTU5ZmFjYzJiMjgzMmU1MTM5ZDUwYjQ2ZTBiNjRjYjc3NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGNhbGxzIHRvIHN1YnN0cmluZygwLCB4KSB3
aXRoIHRoZSBtb3JlIGNvbmNpc2UgbGVmdCh4KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3Rv
cmFnZURhdGFiYXNlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxvY2FsU3RvcmFnZURh
dGFiYXNlVHJhY2tlcjo6b3JpZ2lucyBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtD
YWNoZTo6dHJhdmVyc2VSZWNvcmRzRmlsZXMpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL3N0
b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OmZpbGVOYW1l
VG9PcmlnaW4pOgorICAgICAgICAqIFNoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHA6CisgICAgICAg
IChXS1N0cmluZ0dldENoYXJhY3RlcnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ2xpYi9J
bnB1dE1ldGhvZEZpbHRlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OklucHV0TWV0aG9kRmlsdGVy
Ojpub3RpZnlTdXJyb3VuZGluZyk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5n
c01hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpHdGtTZXR0aW5nc01hbmFnZXI6OnRoZW1l
TmFtZSBjb25zdCk6CisgICAgICAgICogVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OlRleHRDaGVja2VyOjpjaGVja1RleHRPZlBhcmFncmFwaCk6Cisg
ICAgICAgICogVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OmluaXRpYWxpemVSZW1vdGVJbnNwZWN0b3JTZXJ2ZXIpOgorCiAyMDIyLTA0LTEzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQ29udGVudCBjcmFz
aGVzIHdpdGggU0lHVEVSTV9USU1FT1VUIG9uIG1hY09TCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0TGVnYWN5L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCmluZGV4
IDdlNzYyZWU5YTA1NzA1NjUxZDU4MmQ2NDU5YzQ0NTM4ZWEzZDUyMjQuLjJmYjY3MWRkNTc2ZjVh
ZTFhM2VmZTA1Nzk5NzEzMzExNTFhODRmMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdh
Y3kvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTMgQEAKKzIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKwor
ICAgICAgICBSZXBsYWNlIGNhbGxzIHRvIHN1YnN0cmluZygwLCB4KSB3aXRoIHRoZSBtb3JlIGNv
bmNpc2UgbGVmdCh4KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjM5MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBTdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6U3Rv
cmFnZVRyYWNrZXI6OnN5bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKToKKwogMjAyMi0w
NC0xMiAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWppaUBzb255LmNvbT4KIAogICAgICAg
ICBbV2luQ2Fpcm9dIFdFQktJVF9MSUJSQVJJRVMgZW52IHZhciBzaG91bGQgYmUgY3VzdG9taXph
YmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKaW5kZXggOTY3YTJkMTAyN2Y3ZGM3Yjk4ZmI0
ZjU0MTlhMDYyM2EzYTBkNmNjZi4uYjJkMjlmZTYxNzUxY2UzMWMzOGQwNDM3ZDFmYTQ3MTNmMTMz
ZjhiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIy
LTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFj
ZSBjYWxscyB0byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW06CisgICAgICAgIChyZWdFeHBGb3JMYWJlbHMpOgor
CiAyMDIyLTA0LTEyICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbWGNvZGVdIEluIG9wZW4tc291cmNlIGJ1aWxkcywgZGlzYWJsZSBiaXRjb2RlIGluIHhjY29u
ZmlncyBpbnN0ZWFkIG9mIGJ1aWxkLXdlYmtpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKaW5kZXggNzdhMDgxOTE2ZjYxYzJmOWJkNzE2
YWM4M2YzMDlkZGRhN2U4MzI3NC4uMjJkYTdkZDE5NzkxODk3MDcxMjEyM2RjNTUxOTQyODFmMjlm
NGM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRB
cmd1bWVudHMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5oCkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgY29uc3RleHByIHNp
emVfdCBtYXhNZXNzYWdlTGVuZ3RoID0gMTAwMDA7CiAgICAgICAgIGlmIChtZXNzYWdlLmxlbmd0
aCgpIDw9IG1heE1lc3NhZ2VMZW5ndGgpCiAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZTsKLSAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcobWVzc2FnZS5zdWJzdHJpbmcoMCwgbWF4TWVzc2FnZUxl
bmd0aCksICIuLi4iX3MpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3KG1l
c3NhZ2UpLmxlZnQobWF4TWVzc2FnZUxlbmd0aCksICIuLi4iX3MpOwogICAgIH0KIAogcHJpdmF0
ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhl
bHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVy
cy5jcHAKaW5kZXggZGMxNjA5NzlmOWQ4NzM2NTlmYmY5YzgwZGI2MzMwNmFmZDVlOTQ5MS4uMTYx
ZjNlNjlkNDNiODlkODNmNTdmYzdmYzFmMzFjMGQyMmEwNDhlZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTc4LDcgKzc4
LDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgY2xhbXBFcnJvck1lc3NhZ2UoY29uc3QgU3RyaW5nJiBv
cmlnaW5hbE1lc3NhZ2UpCiB7CiAgICAgLy8gSG9wZWZ1bGx5IHRoaXMgaXMgc3VmZmljaWVudGx5
IGxvbmcuIE5vdGUsIHRoaXMgaXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIG5vdCB0aGUgbnVt
YmVyIG9mIGJ5dGVzIHVzZWQuCiAgICAgY29uc3RleHByIHVuc2lnbmVkIG1heExlbmd0aCA9IDIg
KiBLQjsKLSAgICByZXR1cm4gU3RyaW5nVmlldyhvcmlnaW5hbE1lc3NhZ2UpLnN1YnN0cmluZygw
LCBtYXhMZW5ndGgpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG9yaWdpbmFsTWVzc2FnZSkubGVm
dChtYXhMZW5ndGgpOwogfQogCiBzdGF0aWMgU3RyaW5nIGRlZmF1bHRBcHByb3hpbWF0ZVNvdXJj
ZUVycm9yKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBTdHJpbmdWaWV3IHNvdXJjZVRl
eHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVy
Rm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3Jt
YXQuY3BwCmluZGV4IDgzZTdkYWM2ZmJiYjVmOGI0ZjczNzNhMTNhZmZhZDU3NWNkM2Q5MTguLjMy
ODBkYWMyZDc1ZGQ0ODM2MGNmOGMzNDNiMmRkNThmMmI3ODkxNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMjMsNyAr
MjIzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRV
bml0SWRlbnRpZmllcihTdHJpbmdWaWV3IHVuaXRJZGUKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAogICAgIC8vIElmIHRoZSByZXN1bHQgb2YgSXNTYW5jdGlvbmVkU2ltcGxlVW5pdElk
ZW50aWZpZXIobnVtZXJhdG9yKSBpcyBmYWxzZSwgdGhlbiByZXR1cm4gZmFsc2UuCi0gICAgYXV0
byBudW1lcmF0b3IgPSB1bml0SWRlbnRpZmllci5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOworICAg
IGF1dG8gbnVtZXJhdG9yID0gdW5pdElkZW50aWZpZXIubGVmdChwb3NpdGlvbik7CiAgICAgYXV0
byBudW1lcmF0b3JVbml0ID0gc2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVyYXRv
cik7CiAgICAgaWYgKCFudW1lcmF0b3JVbml0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCAy
OWQ2ZjkzNWYwMjdiMjAyNzBlOTFmZWI5ZGI3NmRhNTRjYTRmMTYxLi45ZDZhYjU2YTJjZjU2Y2M3
NGY0YWE2OWMxOWVhNjllYWVmNWJlZWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcApAQCAtOTU3LDcgKzk1Nyw3IEBAIFJlc29sdmVkTG9jYWxlIHJl
c29sdmVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgTG9jYWxlU2V0
JiBhdmFpCiAKICAgICBpZiAoc3VwcG9ydGVkRXh0ZW5zaW9uLmxlbmd0aCgpID4gMikgewogICAg
ICAgICBTdHJpbmdWaWV3IGZvdW5kTG9jYWxlVmlldyhmb3VuZExvY2FsZSk7Ci0gICAgICAgIGZv
dW5kTG9jYWxlID0gbWFrZVN0cmluZyhmb3VuZExvY2FsZVZpZXcuc3Vic3RyaW5nKDAsIG1hdGNo
ZXJSZXN1bHQuZXh0ZW5zaW9uSW5kZXgpLCBzdXBwb3J0ZWRFeHRlbnNpb24sIGZvdW5kTG9jYWxl
Vmlldy5zdWJzdHJpbmcobWF0Y2hlclJlc3VsdC5leHRlbnNpb25JbmRleCkpOworICAgICAgICBm
b3VuZExvY2FsZSA9IG1ha2VTdHJpbmcoZm91bmRMb2NhbGVWaWV3LmxlZnQobWF0Y2hlclJlc3Vs
dC5leHRlbnNpb25JbmRleCksIHN1cHBvcnRlZEV4dGVuc2lvbiwgZm91bmRMb2NhbGVWaWV3LnN1
YnN0cmluZyhtYXRjaGVyUmVzdWx0LmV4dGVuc2lvbkluZGV4KSk7CiAgICAgfQogCiAgICAgcmVz
b2x2ZWQubG9jYWxlID0gV1RGTW92ZShmb3VuZExvY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCA0MWMyYmZkZjZlZTUx
NWMyMzRkY2JjZTYwY2RiMzMwM2VhYjMwYWZlLi5kYzU3OGUxOWJkNTUyMGVjNzRlN2JjM2IxMzIz
NTA5YTEyYTlmMmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3RJbmxpbmVzLmgKQEAgLTU4LDcgKzU4LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgUHJl
ZGljYXRlPiBTdHJpbmcgYmVzdEF2YWlsYWJsZUxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSwg
UHIKICAgICAgICAgaWYgKHBvcyA+PSAyICYmIGNhbmRpZGF0ZVtwb3MgLSAyXSA9PSAnLScpCiAg
ICAgICAgICAgICBwb3MgLT0gMjsKIAotICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUuc3Vi
c3RyaW5nKDAsIHBvcyk7CisgICAgICAgIGNhbmRpZGF0ZSA9IGNhbmRpZGF0ZS5sZWZ0KHBvcyk7
CiAgICAgfQogCiAgICAgcmV0dXJuIFN0cmluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvVVJMLmNwcCBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKaW5kZXggMmMyMjFmNGViMTk4ZWIx
N2U0ZmE5MGZkMjM5ZDQ4OGU1NGViZWFkYi4uNTc2OGUzODg3ODE4NzQ2ZTc1Y2RiNDVlYjY1ZDMz
ODU4MTc4N2IxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMLmNwcAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9VUkwuY3BwCkBAIC0xMzUsNyArMTM1LDcgQEAgU3RyaW5nVmlldyBVUkw6OnBy
b3RvY29sKCkgY29uc3QKICAgICBpZiAoIW1faXNWYWxpZCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV9zY2hlbWVF
bmQpOworICAgIHJldHVybiBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fc2NoZW1lRW5kKTsK
IH0KIAogU3RyaW5nVmlldyBVUkw6Omhvc3QoKSBjb25zdApAQCAtMTYyLDEwICsxNjIsMTAgQEAg
U3RyaW5nIFVSTDo6aG9zdEFuZFBvcnQoKSBjb25zdAogU3RyaW5nIFVSTDo6cHJvdG9jb2xIb3N0
QW5kUG9ydCgpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNDcmVkZW50aWFscygpKQotICAgICAgICBy
ZXR1cm4gbV9zdHJpbmcuc3Vic3RyaW5nKDAsIHBhdGhTdGFydCgpKTsKKyAgICAgICAgcmV0dXJu
IG1fc3RyaW5nLmxlZnQocGF0aFN0YXJ0KCkpOwogCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcoCi0g
ICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3VzZXJTdGFydCksCisg
ICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQpLAogICAgICAgICBT
dHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoaG9zdFN0YXJ0KCksIHBhdGhTdGFydCgpIC0g
aG9zdFN0YXJ0KCkpCiAgICAgKTsKIH0KQEAgLTM3Nyw3ICszNzcsNyBAQCBTdHJpbmdWaWV3IFVS
TDo6cGF0aCgpIGNvbnN0CiBib29sIFVSTDo6c2V0UHJvdG9jb2woU3RyaW5nVmlldyBuZXdQcm90
b2NvbCkKIHsKICAgICAvLyBGaXJlZm94IGFuZCBJRSByZW1vdmUgZXZlcnl0aGluZyBhZnRlciB0
aGUgZmlyc3QgJzonLgotICAgIGF1dG8gbmV3UHJvdG9jb2xQcmVmaXggPSBuZXdQcm90b2NvbC5z
dWJzdHJpbmcoMCwgbmV3UHJvdG9jb2wuZmluZCgnOicpKTsKKyAgICBhdXRvIG5ld1Byb3RvY29s
UHJlZml4ID0gbmV3UHJvdG9jb2wubGVmdChuZXdQcm90b2NvbC5maW5kKCc6JykpOwogICAgIGF1
dG8gbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkID0gVVJMUGFyc2VyOjptYXliZUNhbm9uaWNhbGl6
ZVNjaGVtZShuZXdQcm90b2NvbFByZWZpeCk7CiAgICAgaWYgKCFuZXdQcm90b2NvbENhbm9uaWNh
bGl6ZWQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTQ1Nyw3ICs0NTcsNyBAQCB2b2lkIFVS
TDo6c2V0SG9zdChTdHJpbmdWaWV3IG5ld0hvc3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlm
IChhdXRvIGluZGV4ID0gbmV3SG9zdC5maW5kKGhhc1NwZWNpYWxTY2hlbWUoKSA/IHNsYXNoSGFz
aE9yUXVlc3Rpb25NYXJrIDogZm9yd2FyZFNsYXNoSGFzaE9yUXVlc3Rpb25NYXJrKTsgaW5kZXgg
IT0gbm90Rm91bmQpCi0gICAgICAgIG5ld0hvc3QgPSBuZXdIb3N0LnN1YnN0cmluZygwLCBpbmRl
eCk7CisgICAgICAgIG5ld0hvc3QgPSBuZXdIb3N0LmxlZnQoaW5kZXgpOwogCiAgICAgVmVjdG9y
PFVDaGFyLCA1MTI+IGVuY29kZWRIb3N0TmFtZTsKICAgICBpZiAoaGFzU3BlY2lhbFNjaGVtZSgp
ICYmICFhcHBlbmRFbmNvZGVkSG9zdG5hbWUoZW5jb2RlZEhvc3ROYW1lLCBuZXdIb3N0KSkKQEAg
LTUwMCw3ICs1MDAsNyBAQCB2b2lkIFVSTDo6c2V0SG9zdEFuZFBvcnQoU3RyaW5nVmlldyBob3N0
QW5kUG9ydCkKICAgICBhdXRvIGNvbG9uSW5kZXggPSBob3N0TmFtZS5yZXZlcnNlRmluZCgnOicp
OwogICAgIGlmIChjb2xvbkluZGV4ICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIHBvcnRTdHJpbmcg
PSBob3N0TmFtZS5zdWJzdHJpbmcoY29sb25JbmRleCArIDEpOwotICAgICAgICBob3N0TmFtZSA9
IGhvc3ROYW1lLnN1YnN0cmluZygwLCBjb2xvbkluZGV4KTsKKyAgICAgICAgaG9zdE5hbWUgPSBo
b3N0TmFtZS5sZWZ0KGNvbG9uSW5kZXgpOwogICAgICAgICAvLyBNdWx0aXBsZSBjb2xvbnMgYXJl
IGFjY2VwdGFibGUgb25seSBpbiBjYXNlIG9mIElQdjYuCiAgICAgICAgIGlmIChob3N0TmFtZS5j
b250YWlucygnOicpICYmICFob3N0TmFtZS5zdGFydHNXaXRoKCdbJykpCiAgICAgICAgICAgICBy
ZXR1cm47CkBAIC04MzcsNyArODM3LDcgQEAgU3RyaW5nIFVSTDo6c3RyaXBwZWRGb3JVc2VBc1Jl
ZmVycmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJuIG1fc3RyaW5nOwogCiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoCi0gICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLnN1YnN0cmluZygwLCBtX3Vz
ZXJTdGFydCksCisgICAgICAgIFN0cmluZ1ZpZXcobV9zdHJpbmcpLmxlZnQobV91c2VyU3RhcnQp
LAogICAgICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoZW5kLCBtX3F1ZXJ5RW5k
IC0gZW5kKQogICAgICk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIu
Y3BwIGIvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAppbmRleCBmZmRjOGQzOGZlYjVkZDEx
ZTY2OTc1MDhjMjhkYjQ4MWNkM2YwMWQ5Li4xMWRhZDFlMTIyN2FlOTQ5MzlhNTVkYTc1NGQwYTJh
ZjU0YWM2ZWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkxQYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL1VSTFBhcnNlci5jcHAKQEAgLTI1MTIsNyArMjUxMiw3IEBAIHZvaWQg
VVJMUGFyc2VyOjphZGROb25TcGVjaWFsRG90U2xhc2goKQogewogICAgIGF1dG8gb2xkUGF0aFN0
YXJ0ID0gbV91cmwubV9ob3N0RW5kICsgbV91cmwubV9wb3J0TGVuZ3RoOwogICAgIGF1dG8mIG9s
ZFN0cmluZyA9IG1fdXJsLm1fc3RyaW5nOwotICAgIG1fdXJsLm1fc3RyaW5nID0gbWFrZVN0cmlu
ZyhvbGRTdHJpbmcuc3Vic3RyaW5nKDAsIG9sZFBhdGhTdGFydCArIDEpLCAiLi8iLCBvbGRTdHJp
bmcuc3Vic3RyaW5nKG9sZFBhdGhTdGFydCArIDEpKTsKKyAgICBtX3VybC5tX3N0cmluZyA9IG1h
a2VTdHJpbmcoU3RyaW5nVmlldyhvbGRTdHJpbmcpLmxlZnQob2xkUGF0aFN0YXJ0ICsgMSksICIu
LyIsIFN0cmluZ1ZpZXcob2xkU3RyaW5nKS5zdWJzdHJpbmcob2xkUGF0aFN0YXJ0ICsgMSkpOwog
ICAgIG1fdXJsLm1fcGF0aEFmdGVyTGFzdFNsYXNoICs9IDI7CiAgICAgbV91cmwubV9wYXRoRW5k
ICs9IDI7CiAgICAgbV91cmwubV9xdWVyeUVuZCArPSAyOwpAQCAtMjg5MSw3ICsyODkxLDcgQEAg
YXV0byBVUkxQYXJzZXI6OnBhcnNlVVJMRW5jb2RlZEZvcm0oU3RyaW5nVmlldyBpbnB1dCkgLT4g
VVJMRW5jb2RlZEZvcm0KICAgICAgICAgICAgIGlmIChuYW1lKQogICAgICAgICAgICAgICAgIG91
dHB1dC5hcHBlbmQoeyBuYW1lLnZhbHVlKCksIGVtcHR5U3RyaW5nKCkgfSk7CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLnN1YnN0
cmluZygwLCBlcXVhbEluZGV4KS50b1N0cmluZygpLnJlcGxhY2UoJysnLCAweDIwKSk7CisgICAg
ICAgICAgICBhdXRvIG5hbWUgPSBmb3JtVVJMRGVjb2RlKGJ5dGVzLmxlZnQoZXF1YWxJbmRleCku
dG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOwogICAgICAgICAgICAgYXV0byB2YWx1ZSA9
IGZvcm1VUkxEZWNvZGUoYnl0ZXMuc3Vic3RyaW5nKGVxdWFsSW5kZXggKyAxKS50b1N0cmluZygp
LnJlcGxhY2UoJysnLCAweDIwKSk7CiAgICAgICAgICAgICBpZiAobmFtZSAmJiB2YWx1ZSkKICAg
ICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsgbmFtZS52YWx1ZSgpLCB2YWx1ZS52YWx1ZSgp
IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVVJRC5jcHAgYi9Tb3VyY2UvV1RGL3d0
Zi9VVUlELmNwcAppbmRleCA0Yjg5MDAwNDdiZTliNTZiNmE2ZWMxNmUxMzkxNDU2NmVlZmQ5MWMw
Li5hODAxMzAwNDgwNzBmMTYyNWY0ODA2NTY0ZTQzZGVhYzI2NWQ0YmRmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi9VVUlELmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9VVUlELmNwcApAQCAt
MTEzLDcgKzExMyw3IEBAIHN0ZDo6b3B0aW9uYWw8VVVJRD4gVVVJRDo6cGFyc2UoU3RyaW5nVmll
dyB2YWx1ZSkKICAgICBpZiAodmFsdWVbMF0gPT0gJysnIHx8IHZhbHVlWzldID09ICcrJyAgfHwg
dmFsdWVbMTldID09ICcrJyB8fCB2YWx1ZVsyNF0gPT0gJysnKQogICAgICAgICByZXR1cm4geyB9
OwogCi0gICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1ZS5z
dWJzdHJpbmcoMCwgOCksIDE2KTsKKyAgICBhdXRvIGZpcnN0VmFsdWUgPSBwYXJzZUludGVnZXI8
dWludDY0X3Q+KHZhbHVlLmxlZnQoOCksIDE2KTsKICAgICBpZiAoIWZpcnN0VmFsdWUpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAppbmRleCBkNzc3YTk3
OWM4NDVlYzEyOWY0ZmZhNWUxZGUyMTE4M2FiYzY1MmM4Li5hMTY3M2E2M2U5Nzc0NDIyNWQwMmRl
Yjk5YjI0MzI4NzNiMzRmMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCkBAIC0xNzcs
MTQgKzE3NywxNCBAQCB2b2lkIFN0cmluZzo6aW5zZXJ0KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1
bnNpZ25lZCBwb3NpdGlvbikKICAgICBpZiAoaXM4Qml0KCkgJiYgc3RyaW5nLmlzOEJpdCgpKSB7
CiAgICAgICAgIExDaGFyKiBkYXRhOwogICAgICAgICBhdXRvIG5ld1N0cmluZyA9IFN0cmluZ0lt
cGw6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQobGVuZ3RoKCkgKyBsZW5ndGhUb0luc2VydCwgZGF0YSk7
Ci0gICAgICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKS5nZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKKyAgICAgICAgU3RyaW5nVmlldygqbV9pbXBs
KS5sZWZ0KHBvc2l0aW9uKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhKTsKICAgICAg
ICAgU3RyaW5nVmlldyhzdHJpbmcpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBw
b3NpdGlvbik7CiAgICAgICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkuc3Vic3RyaW5nKHBvc2l0aW9u
KS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhICsgcG9zaXRpb24gKyBsZW5ndGhUb0lu
c2VydCk7CiAgICAgICAgIG1faW1wbCA9IFdURk1vdmUobmV3U3RyaW5nKTsKICAgICB9IGVsc2Ug
ewogICAgICAgICBVQ2hhciogZGF0YTsKICAgICAgICAgYXV0byBuZXdTdHJpbmcgPSBTdHJpbmdJ
bXBsOjpjcmVhdGVVbmluaXRpYWxpemVkKGxlbmd0aCgpICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEp
OwotICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLnN1YnN0cmluZygwLCBwb3NpdGlvbikuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSk7CisgICAgICAgIFN0cmluZ1ZpZXcoKm1faW1w
bCkubGVmdChwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSk7CiAgICAg
ICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhICsg
cG9zaXRpb24pOwogICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLnN1YnN0cmluZyhwb3NpdGlv
bikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9J
bnNlcnQpOwogICAgICAgICBtX2ltcGwgPSBXVEZNb3ZlKG5ld1N0cmluZyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuaAppbmRleCBiNjQ5NzA5ODBhYmUzZjNjNzliOTQyZmEwODI2NTY2M2NlODI5YmQ1
Li5mMTczZmU2OTIzZDdhYWYyNGFlMzRkZDc0OWUwNzM0OGY4NTU4Mzg5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmgKQEAgLTIwNCw3ICsyMDQsOSBAQCBwdWJsaWM6CiAgICAgU3RyaW5nJiByZXBs
YWNlKHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgsIFN0cmluZ1ZpZXcgcmVwbGFjZW1l
bnQpOwogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlckNvdW50PiBTdHJpbmcmIHJlcGxh
Y2VXaXRoTGl0ZXJhbChVQ2hhciB0YXJnZXQsIGNvbnN0IGNoYXIgKCZyZXBsYWNlbWVudClbY2hh
cmFjdGVyQ291bnRdKTsKIAorICAgIC8vIEZJWE1FOiBUaGlzIGlzIGlkZW50aWZpY2FsIHRvIGxl
ZnQoKSBhbmQgc2hvdWxkIHByb2JhYmx5IGJlIGRyb3BwZWQuCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgdHJ1bmNhdGUodW5zaWduZWQgbGVuZ3RoKTsKKwogICAgIFdURl9FWFBPUlRfUFJJ
VkFURSB2b2lkIHJlbW92ZSh1bnNpZ25lZCBwb3NpdGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gMSk7
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nIHN1YnN0cmluZyh1bnNpZ25lZCBwb3Np
dGlvbiwgdW5zaWduZWQgbGVuZ3RoID0gTWF4TGVuZ3RoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKaW5kZXggMzJlYTFk
NDlmN2RmZTRhMjAwZDllNWMwYzU4MzcyNjA3YjVkZDIwMS4uMDNlMDE4MmQzOTIxNzhhYzY3YTQ2
YTU1OTQ3MGZmNjU3MmQ5NGU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9m
ZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHAKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxNaW1lVHlwZT4gcGFyc2VNSU1FVHlwZShjb25zdCBTdHJpbmcmIGNvbnRlbnRU
eXBlKQogICAgIGlmIChzbGFzaEluZGV4ID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgU3RyaW5nIHR5cGUgPSBpbnB1dC5zdWJzdHJpbmcoMCwgc2xhc2hJ
bmRleCk7CisgICAgU3RyaW5nIHR5cGUgPSBpbnB1dC5sZWZ0KHNsYXNoSW5kZXgpOwogICAgIGlm
ICghdHlwZS5sZW5ndGgoKSB8fCAhaXNWYWxpZEhUVFBUb2tlbih0eXBlKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4
ZWRkYi9JREJDdXJzb3IuY3BwCmluZGV4IGU0MzgyYjNkMzRhMjk0NzU4MGQ3ZDc5MGNhNDQ1ZmUw
OTU2ZDI1NDEuLjBlNmNkNWIzMWQ2M2YzZjE5MmIxMDE2YWYyNDRlMThlY2NmNWFkMTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29yLmNwcApAQCAtMzI2
LDcgKzMyNiw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxXZWJDb3JlOjpJREJSZXF1ZXN0Pj4gSURCQ3Vy
c29yOjpkZWxldGVGdW5jdGlvbigpCiAKIGJvb2wgSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQoSURC
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgSURCR2V0UmVzdWx0JiBnZXRSZXN1bHQsIHVpbnQ2NF90
IG9wZXJhdGlvbklEKQogewotICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OnNldEdldFJl
c3VsdCAtIGN1cnJlbnQga2V5ICVzIiwgZ2V0UmVzdWx0LmtleURhdGEoKS5sb2dnaW5nU3RyaW5n
KCkuc3Vic3RyaW5nKDAsIDEwMCkudXRmOCgpLmRhdGEoKSk7CisgICAgTE9HKEluZGV4ZWREQiwg
IklEQkN1cnNvcjo6c2V0R2V0UmVzdWx0IC0gY3VycmVudCBrZXkgJXMiLCBnZXRSZXN1bHQua2V5
RGF0YSgpLmxvZ2dpbmdTdHJpbmcoKS5sZWZ0KDEwMCkudXRmOCgpLmRhdGEoKSk7CiAgICAgQVNT
RVJUKGNhbkN1cnJlbnRUaHJlYWRBY2Nlc3NUaHJlYWRMb2NhbERhdGEoZWZmZWN0aXZlT2JqZWN0
U3RvcmUoKS50cmFuc2FjdGlvbigpLmRhdGFiYXNlKCkub3JpZ2luVGhyZWFkKCkpKTsKIAogICAg
IGF1dG8qIGNvbnRleHQgPSByZXF1ZXN0LnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAKaW5kZXggYzgy
OTExNmU2NDQ3NTZjYjc2NjFkNmNlOGVmNjdmNjUyOWJhOTMyYy4uYmQwMDhhMWUwNzMzZDIzMzIx
MzFkNzdiOTgxNmE2ZmZkMjk1ZjU5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9pbmRleGVkZGIvSURCS2V5UGF0aC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9p
bmRleGVkZGIvSURCS2V5UGF0aC5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBJREJLZXlQYXRoTGV4
ZXI6OlRva2VuVHlwZSBJREJLZXlQYXRoTGV4ZXI6OmxleElkZW50aWZpZXIoU3RyaW5nJiBlbGVt
ZW50KQogICAgIHdoaWxlICghbV9yZW1haW5pbmdUZXh0LmlzRW1wdHkoKSAmJiBpc0lkZW50aWZp
ZXJDaGFyYWN0ZXIobV9yZW1haW5pbmdUZXh0WzBdKSkKICAgICAgICAgbV9yZW1haW5pbmdUZXh0
ID0gbV9yZW1haW5pbmdUZXh0LnN1YnN0cmluZygxKTsKIAotICAgIGVsZW1lbnQgPSBzdGFydC5z
dWJzdHJpbmcoMCwgc3RhcnQubGVuZ3RoKCkgLSBtX3JlbWFpbmluZ1RleHQubGVuZ3RoKCkpLnRv
U3RyaW5nKCk7CisgICAgZWxlbWVudCA9IHN0YXJ0LmxlZnQoc3RhcnQubGVuZ3RoKCkgLSBtX3Jl
bWFpbmluZ1RleHQubGVuZ3RoKCkpLnRvU3RyaW5nKCk7CiAgICAgcmV0dXJuIFRva2VuSWRlbnRp
ZmllcjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9QZWVyQ29ubmVjdGlvbkJhY2tlbmQuY3BwCmluZGV4IDFjMDM0NTdlZGY4ODdmNzU5
OTdjNDQ0NWYwZDM0YmZhZGEyMTdiMGQuLjc1YzBhMDk3NTE4NTFlMGVmMTM5ZWY0YzQ3NTk0NTNj
NWYyMjQ2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
UGVlckNvbm5lY3Rpb25CYWNrZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHAKQEAgLTI5OSw3ICsyOTksNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkSWdub3JlSWNlQ2FuZGlkYXRlKGNvbnN0IFJUQ0ljZUNh
bmRpZGF0ZSYgaWNlQ2FuZGlkYXRlKQogICAgIGlmICghYWRkcmVzcy5lbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKCIubG9jYWwiKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKCFX
VEY6OmlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgeyBhZGRyZXNzIH0uc3Vic3RyaW5nKDAsIGFk
ZHJlc3MubGVuZ3RoKCkgLSA2KSkpIHsKKyAgICBpZiAoIVdURjo6aXNWZXJzaW9uNFVVSUQoU3Ry
aW5nVmlldyB7IGFkZHJlc3MgfS5sZWZ0KGFkZHJlc3MubGVuZ3RoKCkgLSA2KSkpIHsKICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1IoV2ViUlRDLCAibUROUyBjYW5kaWRhdGUgaXMgbm90IGEgVmVy
c2lvbiA0IFVVSUQiKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAKaW5kZXgg
YWM2NmM1ZWFjMzc4YzI5NzYzYWU0MjM1NWZjYjM3ZWIyZjQxYjVjZS4uYTNiNjFlYzBjZTVjMDE1
NGRiNTlmZDc3MDczNmZmYmE1NDEzYzg5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9SVENEVE1GU2VuZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAg
dm9pZCBSVENEVE1GU2VuZGVyOjpwbGF5TmV4dFRvbmUoKQogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgYXV0byBjdXJyZW50VG9uZSA9IG1fdG9uZXMuc3Vic3RyaW5nKDAsIDEpOworICAg
IGF1dG8gY3VycmVudFRvbmUgPSBtX3RvbmVzLmxlZnQoMSk7CiAgICAgbV90b25lcy5yZW1vdmUo
MCk7CiAKICAgICBtX2JhY2tlbmQtPnBsYXlUb25lKGN1cnJlbnRUb25lLCBtX2R1cmF0aW9uLCBt
X2ludGVyVG9uZUdhcCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9pbnQu
Y3BwCmluZGV4IGUxNjQ3MGI4YTQyOWQzYTg1MmM0ZDdiYjFiNjVmMWViNDNhMDI1N2YuLjFmOWE3
ZjVjZjJhMjE0ZmViOTE0MGU0YTBlNTEyOTkyMWZiMjg1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1lck1lZGlhRW5kcG9p
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVy
L0dTdHJlYW1lck1lZGlhRW5kcG9pbnQuY3BwCkBAIC03NDAsNyArNzQwLDcgQEAgdm9pZCBHU3Ry
ZWFtZXJNZWRpYUVuZHBvaW50OjphZGRSZW1vdGVTdHJlYW0oR3N0UGFkKiBwYWQpCiAgICAgICAg
IGF1dG8gaSA9IGxpbmUuZmluZChrZXkpOwogICAgICAgICBpZiAoaSAhPSBub3RGb3VuZCkgewog
ICAgICAgICAgICAgYXV0byB0bXAgPSBsaW5lLnN1YnN0cmluZyhpICsga2V5LmFzY2lpKCkubGVu
Z3RoKCkpOwotICAgICAgICAgICAgbGFiZWwgPSB0bXAuc3Vic3RyaW5nKDAsIHRtcC5maW5kKCcg
JykpOworICAgICAgICAgICAgbGFiZWwgPSB0bXAubGVmdCh0bXAuZmluZCgnICcpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJC
YWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRj
L0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKaW5kZXggNDE3NmU4ZDZmNzgzYTUy
NWE4MGY3YTYwZWFkYzY3ZjZiZmQ3MDE2Yy4uOTQ5MzdmMDRkYjhjM2I0ZGQ1YmQ4MWY1NDNmZjEw
MGY0ZjdmZWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5kLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFu
c2NlaXZlckJhY2tlbmQuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGlubGluZSBFeGNl
cHRpb25Pcjx3ZWJydGM6OlJ0cENvZGVjQ2FwYWJpbGl0eT4gdG9SdHBDb2RlY0NhcGFiaWxpdHko
Y29uc3QKICAgICAgICAgYXV0byBwb3NpdGlvbiA9IHBhcmFtZXRlci5maW5kKCc9Jyk7CiAgICAg
ICAgIGlmIChwb3NpdGlvbiA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybiBFeGNlcHRp
b24geyBJbnZhbGlkTW9kaWZpY2F0aW9uRXJyb3IsICJSVENSdHBDb2RlY0NhcGFiaWxpdHkgc2Rw
Rm10TGluZSBiYWRseSBmb3JtYXRlZCJfcyB9OwotICAgICAgICBydGNDb2RlYy5wYXJhbWV0ZXJz
LmVtcGxhY2UocGFyYW1ldGVyLnN1YnN0cmluZygwLCBwb3NpdGlvbikudXRmOCgpLmRhdGEoKSwg
cGFyYW1ldGVyLnN1YnN0cmluZyhwb3NpdGlvbiArIDEpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBydGNDb2RlYy5wYXJhbWV0ZXJzLmVtcGxhY2UocGFyYW1ldGVyLmxlZnQocG9zaXRpb24pLnV0
ZjgoKS5kYXRhKCksIHBhcmFtZXRlci5zdWJzdHJpbmcocG9zaXRpb24gKyAxKS51dGY4KCkuZGF0
YSgpKTsKICAgICB9CiAKICAgICByZXR1cm4gcnRjQ29kZWM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CmluZGV4IDg1N2M5YzI0YmI4ZGU0NjBlMmMyNzVmOTJmMzhhMTIwYjAyMDNjNWUuLmNiYWY0NmYw
ZWU1ZmU3ZTQwOTA1YTQ5NmRhZDg3ZTRlOWZhOWFhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvcGx1Z2lucy9Zb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3Bw
CkBAIC0yMjIsNyArMjIyLDcgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVS
TChjb25zdCBVUkwmIHVybCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgICAg
IHBhdGggPSBmcmFnbWVudDsKICAgICAgICAgICAgIHF1ZXJ5ID0gZW1wdHlTdHJpbmcoKTsKICAg
ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHBhdGggPSBmcmFnbWVudC5zdWJzdHJpbmcoMCwg
bG9jYXRpb24pOworICAgICAgICAgICAgcGF0aCA9IGZyYWdtZW50LmxlZnQobG9jYXRpb24pOwog
ICAgICAgICAgICAgcXVlcnkgPSBmcmFnbWVudC5zdWJzdHJpbmcobG9jYXRpb24gKyAxKTsKICAg
ICAgICAgfQogICAgICAgICBmcmFnbWVudCA9IGVtcHR5U3RyaW5nKCk7CkBAIC0yNjIsNyArMjYy
LDcgQEAgc3RhdGljIFVSTCBwcm9jZXNzQW5kQ3JlYXRlWW91VHViZVVSTChjb25zdCBVUkwmIHVy
bCwgYm9vbCYgaXNZb3VUdWJlU2hvcnRlbmVkVVIKICAgICAgICAgc2l6ZV90IGFtcGVyc2FuZExv
Y2F0aW9uID0gbGFzdFBhdGhDb21wb25lbnQuZmluZCgnJicpOwogICAgICAgICBpZiAoYW1wZXJz
YW5kTG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIC8vIFNvbWUgVVJMcyB3ZSBj
YXJlIGFib3V0IHVzZSAmIGluIHBsYWNlIG9mID8gZm9yIHRoZSBmaXJzdCBxdWVyeSBwYXJhbWV0
ZXIuCi0gICAgICAgICAgICB2aWRlb0lEID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKDAs
IGFtcGVyc2FuZExvY2F0aW9uKTsKKyAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0aENvbXBv
bmVudC5sZWZ0KGFtcGVyc2FuZExvY2F0aW9uKTsKICAgICAgICAgICAgIHBhdGhBZnRlckZpcnN0
QW1wZXJzYW5kID0gbGFzdFBhdGhDb21wb25lbnQuc3Vic3RyaW5nKGFtcGVyc2FuZExvY2F0aW9u
ICsgMSwgbGFzdFBhdGhDb21wb25lbnQubGVuZ3RoKCkgLSBhbXBlcnNhbmRMb2NhdGlvbik7CiAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50OwpA
QCAtMzA0LDcgKzMwNCw3IEBAIFN0cmluZyBZb3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQ6OnlvdVR1
YmVVUkxGcm9tQWJzb2x1dGVVUkwoY29uc3QgVVJMJiBzcmNVUkwsIGNvCiAgICAgICAgIEFTU0VS
VChsb2NhdGlvbk9mVmlkZW9JREluUGF0aCk7CiAgICAgCiAgICAgICAgIC8vIEZyb20gdGhlIG9y
aWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhlIHBhcnQgYmVmb3JlIC9wYXRoL1ZpZGVvSWQu
Ci0gICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IFN0cmluZ1ZpZXcoc3JjU3Ry
aW5nKS5maW5kKHNyY1BhdGguc3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZWaWRlb0lESW5QYXRoKSk7
CisgICAgICAgIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCA9IFN0cmluZ1ZpZXcoc3JjU3Ry
aW5nKS5maW5kKHNyY1BhdGgubGVmdChsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOwogICAgIH0g
ZWxzZSBpZiAoZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3JjUGF0aCwgIi93YXRjaCIp
KSB7CiAgICAgICAgIC8vIEZyb20gdGhlIG9yaWdpbmFsIFVSTCwgd2UgbmVlZCB0byBnZXQgdGhl
IHBhcnQgYmVmb3JlIC93YXRjaC8jIXY9VmlkZW9JRAogICAgICAgICAvLyBGSVhNRTogU2hvdWxk
bid0IHRoaXMgYmUgQVNDSUkgY2FzZS1pbnNlbnNpdGl2ZT8KQEAgLTMxNCw3ICszMTQsNyBAQCBT
dHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJM
KGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogCiAgICAgQVNTRVJUKGxvY2F0aW9uT2ZQYXRoQmVmb3Jl
VmlkZW9JRCAhPSBub3RGb3VuZCk7CiAKLSAgICBhdXRvIHNyY1VSTFByZWZpeCA9IFN0cmluZ1Zp
ZXcoc3JjU3RyaW5nKS5zdWJzdHJpbmcoMCwgbG9jYXRpb25PZlBhdGhCZWZvcmVWaWRlb0lEKTsK
KyAgICBhdXRvIHNyY1VSTFByZWZpeCA9IFN0cmluZ1ZpZXcoc3JjU3RyaW5nKS5sZWZ0KGxvY2F0
aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCk7CiAgICAgYXV0byBxdWVyeSA9IHNyY1VSTC5xdWVyeSgp
OwogCiAgICAgLy8gSWYgdGhlIFVSTCBoYXMgbm8gcXVlcnksIHVzZSB0aGUgcG9zc2libHkgbWFs
Zm9ybWVkIHF1ZXJ5IHdlIGZvdW5kLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZGlzcGxh
eS9jc3MvRGlzcGxheVRleHRCb3guY3BwIGIvU291cmNlL1dlYkNvcmUvZGlzcGxheS9jc3MvRGlz
cGxheVRleHRCb3guY3BwCmluZGV4IGU1ODBjMzRiODgxZWE0ODEyYTI1MmMxMDY1MzhkMzI5NTEy
MjA0MjAuLjZhZWYwMWQwMDYzZWYwMmIxNjMwOGY3Zjc2YjkxYzkwOWE1OTQyYzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgU3RyaW5nIFRleHRCb3g6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAogICAgIHRleHRD
b250ZW50LnJlcGxhY2VXaXRoTGl0ZXJhbCgnXG4nLCAiXFxuIik7CiAgICAgY29uc3Qgc2l6ZV90
IG1heFByaW50ZWRMZW5ndGggPSA4MDsKICAgICBpZiAodGV4dENvbnRlbnQubGVuZ3RoKCkgPiBt
YXhQcmludGVkTGVuZ3RoKSB7Ci0gICAgICAgIGF1dG8gc3Vic3RyaW5nID0gdGV4dENvbnRlbnQu
c3Vic3RyaW5nKDAsIG1heFByaW50ZWRMZW5ndGgpOworICAgICAgICBhdXRvIHN1YnN0cmluZyA9
IFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLmxlZnQobWF4UHJpbnRlZExlbmd0aCk7CiAgICAgICAg
IHN0cmVhbSA8PCAiIFwiIiA8PCBzdWJzdHJpbmcgPDwgIlwi4oCmIjsKICAgICB9IGVsc2UKICAg
ICAgICAgc3RyZWFtIDw8ICIgXCIiIDw8IHRleHRDb250ZW50IDw8ICJcIiI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCAzODAxYmVkM2NmMjI1YmFiMTgyYWJjYTkzZmI5NzFlOGJkOTY2NGUy
Li4yMWVmY2RjNWNkNGUzYjE2MDdkMTQwMzMwOWI4NGMzYTlkYWZjNDRlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTU1NjksNyArNTU2OSw3IEBAIEV4Y2VwdGlvbk9yPHN0ZDo6cGFpcjxB
dG9tU3RyaW5nLCBBdG9tU3RyaW5nPj4gRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShjb25z
CiAgICAgaWYgKCFjb2xvblBvc2l0aW9uIHx8IGxlbmd0aCAtIGNvbG9uUG9zaXRpb24gPD0gMSkK
ICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRDaGFyYWN0ZXJFcnJvciB9OwogCi0g
ICAgcmV0dXJuIHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiB7IFN0cmluZ1ZpZXcg
eyBxdWFsaWZpZWROYW1lIH0uc3Vic3RyaW5nKDAsIGNvbG9uUG9zaXRpb24pLnRvQXRvbVN0cmlu
ZygpLCBTdHJpbmdWaWV3IHsgcXVhbGlmaWVkTmFtZSB9LnN1YnN0cmluZyhjb2xvblBvc2l0aW9u
ICsgMSkudG9BdG9tU3RyaW5nKCkgfTsKKyAgICByZXR1cm4gc3RkOjpwYWlyPEF0b21TdHJpbmcs
IEF0b21TdHJpbmc+IHsgU3RyaW5nVmlldyB7IHF1YWxpZmllZE5hbWUgfS5sZWZ0KGNvbG9uUG9z
aXRpb24pLnRvQXRvbVN0cmluZygpLCBTdHJpbmdWaWV3IHsgcXVhbGlmaWVkTmFtZSB9LnN1YnN0
cmluZyhjb2xvblBvc2l0aW9uICsgMSkudG9BdG9tU3RyaW5nKCkgfTsKIH0KIAogRXhjZXB0aW9u
T3I8UXVhbGlmaWVkTmFtZT4gRG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZShjb25zdCBBdG9t
U3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmluZyYgcXVhbGlmaWVkTmFtZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
ZXh0LmNwcAppbmRleCA2OGE2ZmJiMzU4NDQxNDQxYTJiMTFiNThmYzZmMTk0MjlmMWYwZWVhLi5k
YzgzOTFmNjM5ZjhkMTYzMDk4MzUzZjQ5Y2JhYzAyNmE4YjdkODEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3Bw
CkBAIC02NCw3ICs2NCw3IEBAIEV4Y2VwdGlvbk9yPFJlZjxUZXh0Pj4gVGV4dDo6c3BsaXRUZXh0
KHVuc2lnbmVkIG9mZnNldCkKICAgICBFdmVudFF1ZXVlU2NvcGUgc2NvcGU7CiAgICAgYXV0byBv
bGREYXRhID0gZGF0YSgpOwogICAgIGF1dG8gbmV3VGV4dCA9IHZpcnR1YWxDcmVhdGUob2xkRGF0
YS5zdWJzdHJpbmcob2Zmc2V0KSk7Ci0gICAgc2V0RGF0YVdpdGhvdXRVcGRhdGUob2xkRGF0YS5z
dWJzdHJpbmcoMCwgb2Zmc2V0KSk7CisgICAgc2V0RGF0YVdpdGhvdXRVcGRhdGUob2xkRGF0YS5s
ZWZ0KG9mZnNldCkpOwogCiAgICAgZGlzcGF0Y2hNb2RpZmllZEV2ZW50KG9sZERhdGEpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHAKaW5kZXggODBh
ODc4NmNmMzg3NWEzMzQ0NWZiMTQ2N2ViZDQ2YzI3NDIxYTg0Mi4uMzE4MzQ0MWM4NTI2YTBjZGJl
ZTM5MGVjZDNmYjM5OTc2ZTdmZWQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4
dENoZWNraW5nSGVscGVyLmNwcApAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgY2hlY2tUZXh0T2ZQ
YXJhZ3JhcGgoVGV4dENoZWNrZXJDbGllbnQmIGNsaWVudCwgU3RyaW5nVmlldyB0ZXh0LCBPcHRp
b25TZXQ8CiAgICAgICAgIHVuc2lnbmVkIGdyYW1tYXJDaGVja0xlbmd0aCA9IHRleHQubGVuZ3Ro
KCk7CiAgICAgICAgIGZvciAoYXV0byYgbWlzc3BlbGxpbmcgOiBtaXNzcGVsbGluZ3MpCiAgICAg
ICAgICAgICBncmFtbWFyQ2hlY2tMZW5ndGggPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZ3JhbW1hckNo
ZWNrTGVuZ3RoLCBtaXNzcGVsbGluZy5yYW5nZS5sb2NhdGlvbik7Ci0gICAgICAgIGZpbmRHcmFt
bWF0aWNhbEVycm9ycyhjbGllbnQsIHRleHQuc3Vic3RyaW5nKDAsIGdyYW1tYXJDaGVja0xlbmd0
aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsKKyAgICAgICAgZmluZEdyYW1tYXRpY2FsRXJyb3JzKGNs
aWVudCwgdGV4dC5sZWZ0KGdyYW1tYXJDaGVja0xlbmd0aCksIGdyYW1tYXRpY2FsRXJyb3JzKTsK
ICAgICB9CiAKICAgICByZXN1bHRzID0gV1RGTW92ZShncmFtbWF0aWNhbEVycm9ycyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKaW5kZXggZTFhODkyNWU5ZmViOWNiZmIz
ZDU3ZWZmOTc5NzlkZTJlZjU4NmY4OC4uYmZhMjJlM2ZlYTM5NTZjMDhmYjFlMmI0MGEwODdkMWMy
NWVhNzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcApAQCAtMjAz
MCw3ICsyMDMwLDcgQEAgaW5saW5lIHZvaWQgU2VhcmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dChT
dHJpbmdWaWV3IHRleHQpCiAgICAgc2l6ZV90IHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHRl
eHQubGVuZ3RoKCk7CiAgICAgaWYgKHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCkgewogICAgICAg
ICBVMTZfQkFDS18xKHRleHQsIDAsIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7Ci0gICAgICAg
IHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCA9IHN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4
dCh0ZXh0LnN1YnN0cmluZygwLCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpKTsKKyAgICAgICAg
d29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0ID0gc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0
KHRleHQubGVmdCh3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpKTsKICAgICB9CiAKICAgICBzaXpl
X3QgdXNhYmxlTGVuZ3RoID0gc3RkOjptaW4obV9idWZmZXIuY2FwYWNpdHkoKSAtIG1fcHJlZml4
TGVuZ3RoLCB0ZXh0Lmxlbmd0aCgpIC0gd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcAppbmRleCA0NTE4YWQ0MzkzMWM4NTI1Yjhl
ZmYyMGM0MDliZDI2M2M4MDcyZWZkLi41YmVjODcxNDA1MThiODM0MGM4NmFkNzQ5NGZmY2VhZDg3
YWNiNjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCkBAIC00NTAs
NyArNDUwLDcgQEAgdW5zaWduZWQgc3VmZml4TGVuZ3RoRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFu
Z2UmIGZvcndhcmRzU2NhblJhbmdlLCBWZWN0b3I8VUNoYXIKICAgICB3aGlsZSAoIWZvcndhcmRz
SXRlcmF0b3IuYXRFbmQoKSkgewogICAgICAgICBTdHJpbmdWaWV3IHRleHQgPSBmb3J3YXJkc0l0
ZXJhdG9yLnRleHQoKTsKICAgICAgICAgdW5zaWduZWQgaSA9IGVuZE9mRmlyc3RXb3JkQm91bmRh
cnlDb250ZXh0KHRleHQpOwotICAgICAgICBhcHBlbmQoc3RyaW5nLCB0ZXh0LnN1YnN0cmluZygw
LCBpKSk7CisgICAgICAgIGFwcGVuZChzdHJpbmcsIHRleHQubGVmdChpKSk7CiAgICAgICAgIHN1
ZmZpeExlbmd0aCArPSBpOwogICAgICAgICBpZiAoaSA8IHRleHQubGVuZ3RoKCkpCiAgICAgICAg
ICAgICBicmVhazsKQEAgLTYzOCw3ICs2MzgsNyBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9uIG5l
eHRCb3VuZGFyeShjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMsIEJvdW5kYXJ5U2VhcmNoRnVuYwog
dW5zaWduZWQgc3RhcnRXb3JkQm91bmRhcnkoU3RyaW5nVmlldyB0ZXh0LCB1bnNpZ25lZCBvZmZz
ZXQsIEJvdW5kYXJ5U2VhcmNoQ29udGV4dEF2YWlsYWJpbGl0eSBtYXlIYXZlTW9yZUNvbnRleHQs
IGJvb2wmIG5lZWRNb3JlQ29udGV4dCkKIHsKICAgICBBU1NFUlQob2Zmc2V0KTsKLSAgICBpZiAo
bWF5SGF2ZU1vcmVDb250ZXh0ICYmICFzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4
dC5zdWJzdHJpbmcoMCwgb2Zmc2V0KSkpIHsKKyAgICBpZiAobWF5SGF2ZU1vcmVDb250ZXh0ICYm
ICFzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5sZWZ0KG9mZnNldCkpKSB7CiAg
ICAgICAgIG5lZWRNb3JlQ29udGV4dCA9IHRydWU7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
QEAgLTY5Nyw3ICs2OTcsNyBAQCBWaXNpYmxlUG9zaXRpb24gZW5kT2ZXb3JkKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgYywgRVdvcmRTaWRlIHNpZGUpCiAKIHN0YXRpYyB1bnNpZ25lZCBwcmV2aW91
c1dvcmRQb3NpdGlvbkJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBC
b3VuZGFyeVNlYXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29s
JiBuZWVkTW9yZUNvbnRleHQpCiB7Ci0gICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3Rh
cnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQuc3Vic3RyaW5nKDAsIG9mZnNldCkpKSB7
CisgICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlD
b250ZXh0KHRleHQubGVmdChvZmZzZXQpKSkgewogICAgICAgICBuZWVkTW9yZUNvbnRleHQgPSB0
cnVlOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0gYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KaW5kZXggZWZlYzU3MmVkYjI4MGVlMWYzYTczNGUxN2Yx
ZDZhYTAyODU5YjRkMC4uZDYzYmI5YTJhZjUyNjJmMGUxNDcyMTU3YTQ2YjM0MzJlODBlNjdhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQpAQCAt
NTc5LDcgKzU3OSw3IEBAIE5TQXJyYXkgKkRhdGFEZXRlY3Rpb246OmRldGVjdENvbnRlbnRJblJh
bmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBjb250ZXh0UmFuZ2UsIE9wCiAgICAgICAgICAgICAgICAg
ICAgIGxhc3RUZXh0Tm9kZVRvVXBkYXRlLT5zZXREYXRhKGxhc3ROb2RlQ29udGVudCk7CiAgICAg
ICAgICAgICAgICAgY29udGVudE9mZnNldCA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKHJhbmdl
LnN0YXJ0Lm9mZnNldCA+IDApCi0gICAgICAgICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1
cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5nKDAsIHJhbmdlLnN0YXJ0Lm9mZnNldCk7Cisg
ICAgICAgICAgICAgICAgICAgIHRleHROb2RlRGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCku
bGVmdChyYW5nZS5zdGFydC5vZmZzZXQpOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAg
ICAgICAgdGV4dE5vZGVEYXRhID0gY3VycmVudFRleHROb2RlLmRhdGEoKS5zdWJzdHJpbmcoY29u
dGVudE9mZnNldCwgcmFuZ2Uuc3RhcnQub2Zmc2V0IC0gY29udGVudE9mZnNldCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCA3ZTU5NTJiN2E5NjI4NzA3MGU4MDM3OThkNTlkOGZj
MmY3YjM5YjliLi5mMDhkZDk5ODk0NDkzNGM4ZmYwNjI5NmI5ODVhOWZhMGRhZDc5NTY1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC05OTUsNyArOTk1LDcgQEAgc3RhdGljIGJvb2wg
c2hvdWxkUHJlc2VydmVNU09MaXN0cyhTdHJpbmdWaWV3IG1hcmt1cCkKICAgICBhdXRvIHRhZ0Ns
b3NlID0gbWFya3VwLmZpbmQoJz4nKTsKICAgICBpZiAodGFnQ2xvc2UgPT0gbm90Rm91bmQpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBhdXRvIHRhZyA9IG1hcmt1cC5zdWJzdHJpbmcoMCwg
dGFnQ2xvc2UpOworICAgIGF1dG8gdGFnID0gbWFya3VwLmxlZnQodGFnQ2xvc2UpOwogICAgIHJl
dHVybiB0YWcuY29udGFpbnMoInhtbG5zOm89XCJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOm9m
ZmljZTpvZmZpY2VcIiIpCiAgICAgICAgICYmIHRhZy5jb250YWlucygieG1sbnM6dz1cInVybjpz
Y2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOndvcmRcIiIpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
RmVhdHVyZVBvbGljeS5jcHAKaW5kZXggNTg0OGQwYWI5YzJkNzU2NGYwOGY0ODc1MmI5MzVlMTgx
MGIxMTgxNy4uNDFlMDMxZDQ2MDJjZTI1MjM4MzZkMjAzMzAxMmUxYTc2MzY3MDFkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9GZWF0dXJlUG9saWN5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3kuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgc3RhdGlj
IGlubGluZSB2b2lkIHVwZGF0ZUxpc3QoRG9jdW1lbnQmIGRvY3VtZW50LCBGZWF0dXJlUG9saWN5
OjpBbGxvd1J1bGUmIHJ1bGUKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIHByb2Nlc3NPcmlnaW5JdGVtKGRvY3VtZW50LCBydWxlLCB2YWx1ZS5zdWJzdHJpbmcoMCwg
cG9zaXRpb24pKTsKKyAgICAgICAgcHJvY2Vzc09yaWdpbkl0ZW0oZG9jdW1lbnQsIHJ1bGUsIHZh
bHVlLmxlZnQocG9zaXRpb24pKTsKICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdWJzdHJpbmcocG9z
aXRpb24gKyAxKS5zdHJpcExlYWRpbmdBbmRUcmFpbGluZ01hdGNoZWRDaGFyYWN0ZXJzKGlzSFRN
TFNwYWNlPFVDaGFyPik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAKaW5kZXggYjQyZDk2MDRmMzRjZGViZjc0ZWMzY2JhZjA2MmE3ZTkzN2RlNGQ0YS4u
NTFlNWE0ZTA4YWM0MTQ4NTI5MGM0NTQyOGUwMTNiNDkzZGQ3NDhiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RydWN0IExv
Z0FyZ3VtZW50PFVSTD4gewogCiAgICAgICAgIGlmICh1cmwuc3RyaW5nKCkubGVuZ3RoKCkgPCBt
YXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykKICAgICAgICAgICAgIHJldHVybiB1cmwuc3RyaW5n
KCk7Ci0gICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIG1heGltdW1VUkxM
ZW5ndGhGb3JMb2dnaW5nKSArICIuLi4iOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJp
bmdWaWV3KHVybC5zdHJpbmcoKSkubGVmdChtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZyksICIu
Li4iKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJBTSh1cmwpOwogICAgICAgICByZXR1cm4g
Ilt1cmxdIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAKaW5kZXgg
ZTQ3YTViZDhiMzczZDViZDI1YTA0MjYwNmI2OWI0NDQ5OWU0MTc0NS4uMGM5NjNkYTdiOGNhMDI4
MDE0MzEyNjgyNGJjMzVlZDUwMDUzYWQwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFj
a0VsZW1lbnQuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBTdHJpbmcgdXJsRm9yTG9nZ2lu
Z1RyYWNrKGNvbnN0IFVSTCYgdXJsKQogICAgIAogICAgIGlmICh1cmwuc3RyaW5nKCkubGVuZ3Ro
KCkgPCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZykKICAgICAgICAgcmV0dXJuIHVybC5zdHJp
bmcoKTsKLSAgICByZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVu
Z3RoRm9yTG9nZ2luZykgKyAiLi4uIjsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhTdHJpbmdWaWV3
KHVybC5zdHJpbmcoKSkubGVmdChtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2luZyksICIuLi4iKTsK
IH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9z
aXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRl
eCBlNGUzMGE5YjYwNGVmMWE4NGQ3NzUyYmJkOGIzNzA4NDUyYTFlMDhmLi45MzVjZTVkY2I3MjU5
YTVlZDYwOTk1YTI4NTc4YjY2MGNlNTkwNGI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL1VSTERlY29tcG9zaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVj
b21wb3NpdGlvbi5jcHAKQEAgLTExNywxMyArMTE3LDEzIEBAIHZvaWQgVVJMRGVjb21wb3NpdGlv
bjo6c2V0SG9zdChTdHJpbmdWaWV3IHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB1bnNpZ25lZCBwb3J0TGVuZ3RoID0gY291bnRBU0NJSURpZ2l0cyh2YWx1ZS5zdWJzdHJpbmco
c2VwYXJhdG9yICsgMSkpOwogICAgICAgICBpZiAoIXBvcnRMZW5ndGgpIHsKLSAgICAgICAgICAg
IGZ1bGxVUkwuc2V0SG9zdCh2YWx1ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yKSk7CisgICAgICAg
ICAgICBmdWxsVVJMLnNldEhvc3QodmFsdWUubGVmdChzZXBhcmF0b3IpKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGF1dG8gcG9ydE51bWJlciA9IHBhcnNlSW50ZWdlcjx1aW50MTZf
dD4odmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEsIHBvcnRMZW5ndGgpKTsKICAgICAgICAg
ICAgIGlmIChwb3J0TnVtYmVyICYmIFdURjo6aXNEZWZhdWx0UG9ydEZvclByb3RvY29sKCpwb3J0
TnVtYmVyLCBmdWxsVVJMLnByb3RvY29sKCkpKQotICAgICAgICAgICAgICAgIGZ1bGxVUkwuc2V0
SG9zdEFuZFBvcnQodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAg
ICAgIGZ1bGxVUkwuc2V0SG9zdEFuZFBvcnQodmFsdWUubGVmdChzZXBhcmF0b3IpKTsKICAgICAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQb3J0KHZhbHVl
LnN1YnN0cmluZygwLCBzZXBhcmF0b3IgKyAxICsgcG9ydExlbmd0aCkpOworICAgICAgICAgICAg
ICAgIGZ1bGxVUkwuc2V0SG9zdEFuZFBvcnQodmFsdWUubGVmdChzZXBhcmF0b3IgKyAxICsgcG9y
dExlbmd0aCkpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChmdWxsVVJMLmlzVmFsaWQoKSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5k
ZXggNjFjNmE3YjM0YTk1NDRjODNkOWQ3ZWY1MDEwYzQ3ZmI2OTI3ZGFiMC4uNWMxZWM3NDFjMjFh
NDk3OTRiNGE4NmFiYjU3NTg2Nzg5YTExY2VlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTQ1Miw3ICs0NTIsNyBAQCBzdGF0aWMg
Ym9vbCBwYXJzZUhUVFBSZWZyZXNoSW50ZXJuYWwoY29uc3QgQ2hhcmFjdGVyVHlwZSogcG9zaXRp
b24sIGNvbnN0IENoYXJhYwogICAgIGlmIChxdW90ZSAhPSAnXDAnKSB7CiAgICAgICAgIHNpemVf
dCBpbmRleCA9IHVybC5maW5kKHF1b3RlKTsKICAgICAgICAgaWYgKGluZGV4ICE9IG5vdEZvdW5k
KQotICAgICAgICAgICAgdXJsID0gdXJsLnN1YnN0cmluZygwLCBpbmRleCk7CisgICAgICAgICAg
ICB1cmwgPSB1cmwubGVmdChpbmRleCk7CiAgICAgfQogCiAgICAgcGFyc2VkVVJMID0gdXJsLnRv
U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jj
c2V0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJz
ZXIuY3BwCmluZGV4IDYwNjIwZjU2YzRlYjhmMDRiNDNkZjJlMTUxOGE0ZjZmNmJkOTc5OGQuLmJh
ZWQzMmRjNTg5ZDYzOGVlNmVmNjJjZDliMTU4MDAxOGM0M2ZjNDAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxTcmNzZXRQYXJzZXIuY3BwCkBAIC0xMzAsNyArMTMwLDcg
QEAgc3RhdGljIGJvb2wgcGFyc2VEZXNjcmlwdG9ycyhWZWN0b3I8U3RyaW5nVmlldz4mIGRlc2Ny
aXB0b3JzLCBEZXNjcmlwdG9yUGFyc2luZ1IKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICB1bnNpZ25lZCBkZXNjcmlwdG9yQ2hhclBvc2l0aW9uID0gZGVzY3JpcHRvci5sZW5ndGgoKSAt
IDE7CiAgICAgICAgIFVDaGFyIGRlc2NyaXB0b3JDaGFyID0gZGVzY3JpcHRvcltkZXNjcmlwdG9y
Q2hhclBvc2l0aW9uXTsKLSAgICAgICAgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3Iuc3Vic3RyaW5n
KDAsIGRlc2NyaXB0b3JDaGFyUG9zaXRpb24pOworICAgICAgICBkZXNjcmlwdG9yID0gZGVzY3Jp
cHRvci5sZWZ0KGRlc2NyaXB0b3JDaGFyUG9zaXRpb24pOwogICAgICAgICBpZiAoZGVzY3JpcHRv
ckNoYXIgPT0gJ3gnKSB7CiAgICAgICAgICAgICBpZiAocmVzdWx0Lmhhc0RlbnNpdHkoKSB8fCBy
ZXN1bHQuaGFzSGVpZ2h0KCkgfHwgcmVzdWx0Lmhhc1dpZHRoKCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHAKaW5kZXggZWRjYzZhZmQ2YzZmMDM4Yjg0YzRlNzFmNTc4YTY4ODg0MjdjNzEwMy4u
ZjZhYThhNzc4OTlhZWNkZWQ3NWM4M2MzNDhiMTVhZWI0YTgxOWM4ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCkBAIC0yNDEsNyArMjQxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgc2tpcExlYWRpbmc8Y2hhcmFjdGVyUHJlZGljYXRlPigpOwog
ICAgICAgICBpZiAoc3RhcnQubGVuZ3RoKCkgPT0gbV90ZXh0Lmxlbmd0aCgpKQogICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwotICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhzdGFydC5zdWJz
dHJpbmcoMCwgc3RhcnQubGVuZ3RoKCkgLSBtX3RleHQubGVuZ3RoKCkpKTsKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcoc3RhcnQubGVmdChzdGFydC5sZW5ndGgoKSAtIG1fdGV4dC5sZW5ndGgo
KSkpOwogICAgIH0KIAogICAgIFN0cmluZyBtYWtlU3RyaW5nKFN0cmluZ1ZpZXcgc3RyaW5nVmll
dykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNo
ZWV0LmNwcAppbmRleCAyNmUxOGVjMDRhYTZmN2RhZjNjN2I0MzNhOTZiMjYxYmI5MDI0OTRhLi4w
OTAxNmU1YzcxMWQ1NjUxM2UzNWMzODRkNGRkMzAwMmRkMzQ2NzJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC0zODQsNyArMzg0
LDcgQEAgdm9pZCBTdHlsZVNoZWV0SGFuZGxlcjo6b2JzZXJ2ZUNvbW1lbnQodW5zaWduZWQgc3Rh
cnRPZmZzZXQsIHVuc2lnbmVkIGVuZE9mZnNldCkKICAgICAvLyBSZXF1aXJlIHdlbGwtZm9ybWVk
IGNvbW1lbnRzLgogICAgIGlmICghY29tbWVudFRleHQuZW5kc1dpdGgoIiovIikpCiAgICAgICAg
IHJldHVybjsKLSAgICBjb21tZW50VGV4dCA9IGNvbW1lbnRUZXh0LnN1YnN0cmluZygwLCBjb21t
ZW50VGV4dC5sZW5ndGgoKSAtIDIpLnN0cmlwV2hpdGVTcGFjZSgpOworICAgIGNvbW1lbnRUZXh0
ID0gY29tbWVudFRleHQubGVmdChjb21tZW50VGV4dC5sZW5ndGgoKSAtIDIpLnN0cmlwV2hpdGVT
cGFjZSgpOwogICAgIGlmIChjb21tZW50VGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsK
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91
dFRyZWVCdWlsZGVyLmNwcAppbmRleCA0ZGMzNTFlNDkyMmI3NTQ2NzZjZDA4YjgxNDRkMWVhZTA1
MDlkNzg3Li42OTQyYjFmMjk2ZTUyZjQ3NmM5Mjk2MDhkMGY5MTkyZjQ0ZDAyNWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxk
ZXIuY3BwCkBAIC01MDMsNyArNTAzLDcgQEAgc3RhdGljIHZvaWQgb3V0cHV0TGF5b3V0Qm94KFRl
eHRTdHJlYW0mIHN0cmVhbSwgY29uc3QgQm94JiBsYXlvdXRCb3gsIGNvbnN0IEJveEcKIAogICAg
ICAgICBjb25zdCBzaXplX3QgbWF4UHJpbnRlZExlbmd0aCA9IDgwOwogICAgICAgICBpZiAodGV4
dENvbnRlbnQubGVuZ3RoKCkgPiBtYXhQcmludGVkTGVuZ3RoKSB7Ci0gICAgICAgICAgICBhdXRv
IHN1YnN0cmluZyA9IHRleHRDb250ZW50LnN1YnN0cmluZygwLCBtYXhQcmludGVkTGVuZ3RoKTsK
KyAgICAgICAgICAgIGF1dG8gc3Vic3RyaW5nID0gU3RyaW5nVmlldyh0ZXh0Q29udGVudCkubGVm
dChtYXhQcmludGVkTGVuZ3RoKTsKICAgICAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCBzdWJz
dHJpbmcudXRmOCgpLmRhdGEoKSA8PCAiXCIuLi4iOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIHN0cmVhbSA8PCAiIFwiIiA8PCB0ZXh0Q29udGVudC51dGY4KCkuZGF0YSgpIDw8ICJcIiI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDRhMTE0NDI1ZTExNmQyYzQy
ZDE5MDM5MjNlZGY4ODYzODNkOGYwNjQuLjhkOTliOTM4ZDk5ZmI0MmY4MTdlOTBjMWU4ZDA3YmMy
YThmYjhjMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCkBAIC00MCw3ICs0
MCw3IEBAIHN0YXRpYyBTdHJpbmdWaWV3IG1hbmlmZXN0UGF0aChjb25zdCBVUkwmIG1hbmlmZXN0
VVJMKQogewogICAgIGF1dG8gbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RVUkwucGF0aCgpOwogICAg
IEFTU0VSVChtYW5pZmVzdFBhdGhbMF0gPT0gJy8nKTsKLSAgICBtYW5pZmVzdFBhdGggPSBtYW5p
ZmVzdFBhdGguc3Vic3RyaW5nKDAsIG1hbmlmZXN0UGF0aC5yZXZlcnNlRmluZCgnLycpICsgMSk7
CisgICAgbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RQYXRoLmxlZnQobWFuaWZlc3RQYXRoLnJldmVy
c2VGaW5kKCcvJykgKyAxKTsKICAgICBBU1NFUlQobWFuaWZlc3RQYXRoWzBdID09IG1hbmlmZXN0
UGF0aFttYW5pZmVzdFBhdGgubGVuZ3RoKCkgLSAxXSk7CiAgICAgcmV0dXJuIG1hbmlmZXN0UGF0
aDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRp
b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25F
bGVtZW50LmNwcAppbmRleCA1MTAyMmM2NzVkMjRmMGJiOGE1M2IxOTVmZTg4YjFhZjAzZDEzNzAz
Li41ZTA3NjNkZjkwMWU5N2I1YTVmZWYwODIyMTQwNDJjZWZhZDg3NzQ1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCkBAIC0y
MzUsNyArMjM1LDcgQEAgTWF0aE1MRWxlbWVudDo6TGVuZ3RoIE1hdGhNTFByZXNlbnRhdGlvbkVs
ZW1lbnQ6OnBhcnNlTnVtYmVyQW5kVW5pdChTdHJpbmdWaWV3IHMKICAgICB9CiAKICAgICBib29s
IG9rOwotICAgIGZsb2F0IGxlbmd0aFZhbHVlID0gc3RyaW5nLnN1YnN0cmluZygwLCBzdHJpbmdM
ZW5ndGgpLnRvRmxvYXQob2spOworICAgIGZsb2F0IGxlbmd0aFZhbHVlID0gc3RyaW5nLmxlZnQo
c3RyaW5nTGVuZ3RoKS50b0Zsb2F0KG9rKTsKICAgICBpZiAoIW9rKQogICAgICAgICByZXR1cm4g
TGVuZ3RoKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKaW5kZXggOWZhZjhhZGY2OWI1Y2M1NWMyYjNh
ZmE3YWE2MWNlMmJkYzBhMDQ3Zi4uMjg4OWM4MDY1ZDE3MDU4NTdhNDI5MDBiYmJhOGQ3YzJjZjI1
MjNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5jcHAKQEAgLTM4OSw4ICszODksOSBAQCBzdGF0aWMgSlND
OjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVSZWdFeHBGb3JMYWJlbHMoY29uc3QgVmVj
dG9yPFN0cmluZz4mCiAgICAgICAgIGJvb2wgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxz
ZTsKICAgICAgICAgYm9vbCBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICAgICAg
aWYgKGxhYmVsLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3Rl
ciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3RyaW5nKDAsIDEpKSA+PSAwOwot
ICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRj
aChsYWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAxLCAxKSkgPj0gMDsKKyAgICAgICAg
ICAgIFN0cmluZ1ZpZXcgbGFiZWxWaWV3IHsgbGFiZWwgfTsKKyAgICAgICAgICAgIHN0YXJ0c1dp
dGhXb3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbFZpZXcubGVmdCgx
KSkgPj0gMDsKKyAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAu
Z2V0KCkubWF0Y2gobGFiZWxWaWV3LnJpZ2h0KDEpKSA+PSAwOwogICAgICAgICB9CiAKICAgICAg
ICAgLy8gU2VhcmNoIGZvciB3b3JkIGJvdW5kYXJpZXMgb25seSBpZiBsYWJlbCBzdGFydHMvZW5k
cyB3aXRoICJ3b3JkIGNoYXJhY3RlcnMiLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9y
aWdpbkRhdGEuY3BwCmluZGV4IGE2ODJjY2JhNzU0MjlkNzI4NTI2ZDhhY2Y4ZmIwZWU3NTIyZDIy
NWIuLjg1YWE2NDJkMTE2NjZhYTYyOGJiNWRlMTE1ZWU3NjZiNzE5ZWRkZGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKQEAgLTExNSw3ICsxMTUsNyBAQCBz
dGQ6Om9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9t
RGF0YWJhc2VJZGVudGlmaWVyKFN0cgogICAgIGlmIChwb3J0ICYmICEqcG9ydCkKICAgICAgICAg
cG9ydCA9IHN0ZDo6bnVsbG9wdDsKIAotICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRhYmFzZUlkZW50
aWZpZXIuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcjEpOworICAgIGF1dG8gcHJvdG9jb2wgPSBkYXRh
YmFzZUlkZW50aWZpZXIubGVmdChzZXBhcmF0b3IxKTsKICAgICBhdXRvIGhvc3QgPSBkYXRhYmFz
ZUlkZW50aWZpZXIuc3Vic3RyaW5nKHNlcGFyYXRvcjEgKyAxLCBzZXBhcmF0b3IyIC0gc2VwYXJh
dG9yMSAtIDEpOwogICAgIHJldHVybiBTZWN1cml0eU9yaWdpbkRhdGEgeyBwcm90b2NvbC50b1N0
cmluZygpLCBob3N0LnRvU3RyaW5nKCksIHBvcnQgfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKaW5kZXggYjkzNGU2ZmEzYWYzZmNmYjExZDQ5NzAy
MzU2MDE2MmJkYjViZmM1Mi4uYTg0ZjM1OWMzNGI4NDQ2MTcwZjhiOWQwZWJlMWRkYzZiODNlZDhm
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHAKQEAg
LTI1OSwxMyArMjU5LDEzIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgY29tcHV0ZVNoYXJl
ZFN0cmluZ0hhc2hJbmxpbmUoY29uc3QgVVJMJiBiYXNlLCBjb25zdCBDCiAgICAgZWxzZSB7CiAg
ICAgICAgIHN3aXRjaCAoY2hhcmFjdGVyc1swXSkgewogICAgICAgICBjYXNlICcvJzoKLSAgICAg
ICAgICAgIGFwcGVuZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFzZS5zdHJpbmcoKSkuc3Vic3RyaW5n
KDAsIGJhc2UucGF0aFN0YXJ0KCkpKTsKKyAgICAgICAgICAgIGFwcGVuZChidWZmZXIsIFN0cmlu
Z1ZpZXcoYmFzZS5zdHJpbmcoKSkubGVmdChiYXNlLnBhdGhTdGFydCgpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSAnIyc6Ci0gICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBT
dHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhFbmQoKSkpOwor
ICAgICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgU3RyaW5nVmlldyhiYXNlLnN0cmluZygpKS5sZWZ0
KGJhc2UucGF0aEVuZCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIGFwcGVuZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFzZS5zdHJpbmcoKSkuc3Vi
c3RyaW5nKDAsIGJhc2UucGF0aEFmdGVyTGFzdFNsYXNoKCkpKTsKKyAgICAgICAgICAgIGFwcGVu
ZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFzZS5zdHJpbmcoKSkubGVmdChiYXNlLnBhdGhBZnRlckxh
c3RTbGFzaCgpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3Bw
CmluZGV4IGE2M2ZjOGE3M2VjYmUxZDQ0ZWU0N2I2M2IwYmNlMzlhMTE3Mzc2MGIuLjIzYjM5OTU4
ZGRmNjUzODI2YmQ3YjI0MjcwNDJiMjc3ODU3ODhjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcApAQCAtNjUsNyArNjUs
NyBAQCBzdGF0aWMgdW5zaWduZWQgY2VudGVyVHJ1bmNhdGVUb0J1ZmZlcihjb25zdCBTdHJpbmcm
IHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bgogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKGtlZXBDb3VudCA8IFNUUklOR19CVUZGRVJfU0laRSk7CiAgICAgCiAgICAgdW5z
aWduZWQgb21pdFN0YXJ0ID0gKGtlZXBDb3VudCArIDEpIC8gMjsKLSAgICBOb25TaGFyZWRDaGFy
YWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVu
Z3RoKSk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3
KHN0cmluZykubGVmdChsZW5ndGgpKTsKICAgICB1bnNpZ25lZCBvbWl0RW5kID0gYm91bmRlZFRl
eHRCcmVha0ZvbGxvd2luZyhpdCwgb21pdFN0YXJ0ICsgKGxlbmd0aCAtIGtlZXBDb3VudCkgLSAx
LCBsZW5ndGgpOwogICAgIG9taXRTdGFydCA9IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIG9t
aXRTdGFydCk7CiAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIHVuc2lnbmVkIGNlbnRlclRydW5j
YXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxlbmd0aCwgdW4KICAg
ICB1bnNpZ25lZCB0cnVuY2F0ZWRMZW5ndGggPSBvbWl0U3RhcnQgKyBzaG91bGRJbnNlcnRFbGxp
cHNpcyArIChsZW5ndGggLSBvbWl0RW5kKTsKICAgICBBU1NFUlQodHJ1bmNhdGVkTGVuZ3RoIDw9
IGxlbmd0aCk7CiAKLSAgICBTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIG9taXRTdGFy
dCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0
cmluZykubGVmdChvbWl0U3RhcnQpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7
CiAgICAgaWYgKHNob3VsZEluc2VydEVsbGlwc2lzKQogICAgICAgICBidWZmZXJbb21pdFN0YXJ0
KytdID0gaG9yaXpvbnRhbEVsbGlwc2lzOwogICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJp
bmcob21pdEVuZCwgbGVuZ3RoIC0gb21pdEVuZCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQo
JmJ1ZmZlcltvbWl0U3RhcnRdKTsKQEAgLTExOSwxMSArMTE5LDExIEBAIHN0YXRpYyB1bnNpZ25l
ZCByaWdodFRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zCiAgICAgICAgIC0ta2VlcENvdW50OwogI2VuZGlmCiAKLSAgICBOb25TaGFyZWRD
aGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwg
bGVuZ3RoKSk7CisgICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdW
aWV3KHN0cmluZykubGVmdChsZW5ndGgpKTsKICAgICB1bnNpZ25lZCBrZWVwTGVuZ3RoID0gdGV4
dEJyZWFrQXRPclByZWNlZGluZyhpdCwga2VlcENvdW50KTsKICAgICB1bnNpZ25lZCB0cnVuY2F0
ZWRMZW5ndGggPSBzaG91bGRJbnNlcnRFbGxpcHNpcyA/IGtlZXBMZW5ndGggKyAxIDoga2VlcExl
bmd0aDsKIAotICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCku
Z2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmlu
ZykubGVmdChrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwog
ICAgIGlmIChzaG91bGRJbnNlcnRFbGxpcHNpcykKICAgICAgICAgYnVmZmVyW2tlZXBMZW5ndGhd
ID0gaG9yaXpvbnRhbEVsbGlwc2lzOwogCkBAIC0xMzUsOSArMTM1LDkgQEAgc3RhdGljIHVuc2ln
bmVkIHJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNp
Z25lZCBsZW5ndGgKICAgICBBU1NFUlQoa2VlcENvdW50IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQo
a2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsKIAotICAgIE5vblNoYXJlZENoYXJhY3Rl
ckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBsZW5ndGgp
KTsKKyAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9yIGl0KFN0cmluZ1ZpZXcoc3Ry
aW5nKS5sZWZ0KGxlbmd0aCkpOwogICAgIHVuc2lnbmVkIGtlZXBMZW5ndGggPSB0ZXh0QnJlYWtB
dE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291bnQpOwotICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJz
dHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsK
KyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVwTGVuZ3RoKS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydChidWZmZXIpOwogCiAgICAgcmV0dXJuIGtlZXBMZW5ndGg7CiB9CkBAIC0xNDcs
OSArMTQ3LDkgQEAgc3RhdGljIHVuc2lnbmVkIHJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcihjb25zdCBT
dHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoLCB1bnMKICAgICBBU1NFUlQoa2VlcENvdW50
IDwgbGVuZ3RoKTsKICAgICBBU1NFUlQoa2VlcENvdW50IDwgU1RSSU5HX0JVRkZFUl9TSVpFKTsK
IAotICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJhdG9yKFN0cmluZ1ZpZXco
c3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgVUJyZWFrSXRlcmF0b3IqIGl0ID0g
d29yZEJyZWFrSXRlcmF0b3IoU3RyaW5nVmlldyhzdHJpbmcpLmxlZnQobGVuZ3RoKSk7CiAgICAg
dW5zaWduZWQga2VlcExlbmd0aCA9IHRleHRCcmVha0F0T3JQcmVjZWRpbmcoaXQsIGtlZXBDb3Vu
dCk7Ci0gICAgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBrZWVwTGVuZ3RoKS5nZXRD
aGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOworICAgIFN0cmluZ1ZpZXcoc3RyaW5nKS5s
ZWZ0KGtlZXBMZW5ndGgpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CiAKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZ3VhcmQgdGhp
cyBjb2RlIGJlaGluZCBhbiBlZGl0aW5nIGJlaGF2aW9yLiBUaGVuIHdlIGNhbiByZW1vdmUgdGhl
IFBMQVRGT1JNKElPU19GQU1JTFkpLWd1YXJkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA1OThjMWEwMWQ4YTM4OWM4NmIzMDlhZGM1ZmIy
MmUwZWRhYmIwMmJmLi5hMzVhM2EyMDZhZjE0NmRkYjU3MGVkNDQxYjYyNTQ1M2ZjZjkwNWJjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVk
aWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAt
OTQxLDcgKzk0MSw3IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzZXRQbGF5
YmluVVJMKGNvbnN0IFVSTCYgdXJsKQogICAgIC8vIENsZWFuIG91dCBldmVyeXRoaW5nIGFmdGVy
IGZpbGU6Ly8gdXJsIHBhdGguCiAgICAgU3RyaW5nIGNsZWFuVVJMU3RyaW5nKHVybC5zdHJpbmco
KSk7CiAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpKQotICAgICAgICBjbGVhblVSTFN0cmluZyA9
IGNsZWFuVVJMU3RyaW5nLnN1YnN0cmluZygwLCB1cmwucGF0aEVuZCgpKTsKKyAgICAgICAgY2xl
YW5VUkxTdHJpbmcgPSBjbGVhblVSTFN0cmluZy5sZWZ0KHVybC5wYXRoRW5kKCkpOwogCiAgICAg
bV91cmwgPSBVUkwgeyBjbGVhblVSTFN0cmluZyB9OwogICAgIEdTVF9JTkZPX09CSkVDVChwaXBl
bGluZSgpLCAiTG9hZCAlcyIsIG1fdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3Vy
Y2VCdWZmZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKaW5k
ZXggNWQ1NDE5ZTg0OGVhNjZlNDVmNWQ4MzM1YjVjOTYyY2U2NDQ1OWQ1YS4uZWJhYjA5ZGUxNTA3
NmVhMmFjOGMwNTAxOTM5NTM1ODQwMTU2YTJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZmZXJQcml2YXRlR1N0cmVh
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
bXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zMTAsNyArMzEwLDcgQEAg
c2l6ZV90IFNvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXI6OnBsYXRmb3JtTWF4aW11bUJ1ZmZl
clNpemUoKSBjb25zdAogICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLmVuZHNXaXRoKCdt
JykpCiAgICAgICAgICAgICAgICAgICAgIHVuaXRzID0gMTAyNCAqIDEwMjQ7CiAgICAgICAgICAg
ICAgICAgaWYgKHVuaXRzICE9IDEpCi0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUu
c3Vic3RyaW5nKDAsIHZhbHVlLmxlbmd0aCgpLTEpOworICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IHZhbHVlLmxlZnQodmFsdWUubGVuZ3RoKCktMSk7CiAgICAgICAgICAgICAgICAgYXV0byBw
YXJzZWRTaXplID0gcGFyc2VJbnRlZ2VyPHNpemVfdD4odmFsdWUpOwogICAgICAgICAgICAgICAg
IGlmICghcGFyc2VkU2l6ZSkKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3Bw
CmluZGV4IDQ1MDRkMDE4ZjFkNzdkMjQ0YjM3YzlhYjhlZTZiYmY0ODMyMTIxNGIuLjY2MTNmYzQx
NmYyN2ExY2VlNjQ1YjVhM2ZiZjI1YTJjYTdjNjBjZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC01MTcsNyAr
NTE3LDcgQEAgc3RhdGljIEdESU9iamVjdDxIRk9OVD4gY3JlYXRlR0RJRm9udChjb25zdCBBdG9t
U3RyaW5nJiBmYW1pbHksIExPTkcgZGVzaXJlZFdlaWcKIAogICAgIExPR0ZPTlQgbG9nRm9udDsK
ICAgICBsb2dGb250LmxmQ2hhclNldCA9IERFRkFVTFRfQ0hBUlNFVDsKLSAgICBTdHJpbmdWaWV3
IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXcoZmFtaWx5KS5zdWJzdHJpbmcoMCwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOworICAgIFN0cmluZ1ZpZXcgdHJ1bmNh
dGVkRmFtaWx5ID0gU3RyaW5nVmlldyhmYW1pbHkpLmxlZnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KExGX0ZBQ0VTSVpFIC0gMSkpOwogICAgIHRydW5jYXRlZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0
aFVwY29udmVydCh1Y2hhckZyb20obG9nRm9udC5sZkZhY2VOYW1lKSk7CiAgICAgbG9nRm9udC5s
ZkZhY2VOYW1lW3RydW5jYXRlZEZhbWlseS5sZW5ndGgoKV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQ
aXRjaEFuZEZhbWlseSA9IDA7CkBAIC02MzEsNyArNjMxLDcgQEAgVmVjdG9yPEZvbnRTZWxlY3Rp
b25DYXBhYmlsaXRpZXM+IEZvbnRDYWNoZTo6Z2V0Rm9udFNlbGVjdGlvbkNhcGFiaWxpdGllc0lu
RmFtaWwKIAogICAgIExPR0ZPTlQgbG9nRm9udDsKICAgICBsb2dGb250LmxmQ2hhclNldCA9IERF
RkFVTFRfQ0hBUlNFVDsKLSAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1Zp
ZXcoZmFtaWx5TmFtZSkuc3Vic3RyaW5nKDAsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihMRl9GQUNF
U0laRSAtIDEpKTsKKyAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0cmluZ1ZpZXco
ZmFtaWx5TmFtZSkubGVmdChzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7
CiAgICAgdHJ1bmNhdGVkRmFtaWx5LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJv
bShsb2dGb250LmxmRmFjZU5hbWUpKTsKICAgICBsb2dGb250LmxmRmFjZU5hbWVbdHJ1bmNhdGVk
RmFtaWx5Lmxlbmd0aCgpXSA9IDA7CiAgICAgbG9nRm9udC5sZlBpdGNoQW5kRmFtaWx5ID0gMDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tCmluZGV4IDhkNWM0
M2RlODM5NTU5OGMyMzk5YTM4YTgzZGVhMzhjMTRkMjk2YTUuLjM3ZjE3MzQwNjNiNzhjMzE4NzM4
OWQ2OTA1NWQzZDYxZWE2YjFkZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2lvcy9Vc2VyQWdlbnRJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1Vz
ZXJBZ2VudElPUy5tbQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgU3RyaW5nVmlldyBkZXZpY2VO
YW1lRm9yVXNlckFnZW50KCkKICNpZiBQTEFURk9STShJT1NfRkFNSUxZX1NJTVVMQVRPUikKICAg
ICAgICAgc2l6ZV90IGxvY2F0aW9uID0gbmFtZS5maW5kKCIgU2ltdWxhdG9yIik7CiAgICAgICAg
IGlmIChsb2NhdGlvbiAhPSBub3RGb3VuZCkKLSAgICAgICAgICAgIHJldHVybiBuYW1lLnN1YnN0
cmluZygwLCBsb2NhdGlvbik7CisgICAgICAgICAgICByZXR1cm4gbmFtZS5sZWZ0KGxvY2F0aW9u
KTsKICNlbmRpZgogICAgICAgICByZXR1cm4gbmFtZTsKICAgICB9KCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHAKaW5kZXggODVl
MjRhNGE3ZmM4MGM2NTZjZjQ4ODhlOTI3YWIwYjViYjA0ZjVhMS4uYzc0MzE4OTkyOGIzZjZhOWJi
MzlmNmZmNGZjMDk5M2ZlMDkwY2I1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvQ2FjaGVWYWxpZGF0aW9uLmNwcApAQCAtMjEwLDcgKzIxMCw3IEBAIGlubGlu
ZSBib29sIGlzQ29udHJvbENoYXJhY3Rlck9yU3BhY2UoVUNoYXIgY2hhcmFjdGVyKQogCiBpbmxp
bmUgU3RyaW5nVmlldyB0cmltVG9OZXh0U2VwYXJhdG9yKFN0cmluZ1ZpZXcgc3RyaW5nKQogewot
ICAgIHJldHVybiBzdHJpbmcuc3Vic3RyaW5nKDAsIHN0cmluZy5maW5kKGlzQ2FjaGVIZWFkZXJT
ZXBhcmF0b3IpKTsKKyAgICByZXR1cm4gc3RyaW5nLmxlZnQoc3RyaW5nLmZpbmQoaXNDYWNoZUhl
YWRlclNlcGFyYXRvcikpOwogfQogCiBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0
cmluZz4+IHBhcnNlQ2FjaGVIZWFkZXIoY29uc3QgU3RyaW5nJiBoZWFkZXIpCkBAIC0yNjYsNyAr
MjY2LDcgQEAgc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNh
Y2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQogICAgICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICAgICAgfQogICAgICAgICAvLyBUaGUgdmFsdWUgaXMgZGVsaW1pdGVkIGJ5IHRoZSBu
ZXh0IGNvbW1hCi0gICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRT
ZXBhcmF0b3IodmFsdWUuc3Vic3RyaW5nKDAsIG5leHRDb21tYVBvc2l0aW9uMikpLnRvU3RyaW5n
KCkgfSk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoeyBkaXJlY3RpdmUsIHRyaW1Ub05leHRTZXBh
cmF0b3IodmFsdWUubGVmdChuZXh0Q29tbWFQb3NpdGlvbjIpKS50b1N0cmluZygpIH0pOwogICAg
ICAgICBwb3MgKz0gKHNhZmVIZWFkZXIuZmluZCgnLCcsIHBvcykgLSBwb3MpICsgMTsKICAgICB9
CiAgICAgcmV0dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9DcmVkZW50aWFsU3RvcmFnZS5jcHAKaW5kZXggNGVlN2JkMTBmY2MyY2QwMzk1NzU5
YjM2ZTA0NTY2ZjAyYWIxYTRjNy4uNjU0YTZhNDBiZDQ0OWI3NzhmMDJmOTliM2Q0NzdjNjdiZWM2
MmU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVkZW50
aWFsU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9DcmVk
ZW50aWFsU3RvcmFnZS5jcHAKQEAgLTQ2LDEzICs0NiwxMyBAQCBzdGF0aWMgU3RyaW5nIHByb3Rl
Y3Rpb25TcGFjZU1hcEtleUZyb21VUkwoY29uc3QgVVJMJiB1cmwpCiAKICAgICAvLyBSZW1vdmUg
dGhlIGxhc3QgcGF0aCBjb21wb25lbnQgdGhhdCBpcyBub3QgYSBkaXJlY3RvcnkgdG8gZGV0ZXJt
aW5lIHRoZSBzdWJ0cmVlIGZvciB3aGljaCBjcmVkZW50aWFscyB3aWxsIGFwcGx5LgogICAgIC8v
IFdlIGtlZXAgYSBsZWFkaW5nIHNsYXNoLCBidXQgcmVtb3ZlIGEgdHJhaWxpbmcgb25lLgotICAg
IFN0cmluZyBkaXJlY3RvcnlVUkwgPSB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKDAsIHVybC5wYXRo
RW5kKCkpOworICAgIFN0cmluZyBkaXJlY3RvcnlVUkwgPSB1cmwuc3RyaW5nKCkubGVmdCh1cmwu
cGF0aEVuZCgpKTsKICAgICB1bnNpZ25lZCBkaXJlY3RvcnlVUkxQYXRoU3RhcnQgPSB1cmwucGF0
aFN0YXJ0KCk7CiAgICAgQVNTRVJUKGRpcmVjdG9yeVVSTFtkaXJlY3RvcnlVUkxQYXRoU3RhcnRd
ID09ICcvJyk7CiAgICAgaWYgKGRpcmVjdG9yeVVSTC5sZW5ndGgoKSA+IGRpcmVjdG9yeVVSTFBh
dGhTdGFydCArIDEpIHsKICAgICAgICAgc2l6ZV90IGluZGV4ID0gZGlyZWN0b3J5VVJMLnJldmVy
c2VGaW5kKCcvJyk7CiAgICAgICAgIEFTU0VSVChpbmRleCAhPSBub3RGb3VuZCk7Ci0gICAgICAg
IGRpcmVjdG9yeVVSTCA9IGRpcmVjdG9yeVVSTC5zdWJzdHJpbmcoMCwgKGluZGV4ICE9IGRpcmVj
dG9yeVVSTFBhdGhTdGFydCkgPyBpbmRleCA6IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpOwor
ICAgICAgICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlVUkwubGVmdCgoaW5kZXggIT0gZGlyZWN0
b3J5VVJMUGF0aFN0YXJ0KSA/IGluZGV4IDogZGlyZWN0b3J5VVJMUGF0aFN0YXJ0ICsgMSk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIGRpcmVjdG9yeVVSTDsKQEAgLTE1NSw3ICsxNTUsNyBAQCBIYXNo
TWFwPFN0cmluZywgUHJvdGVjdGlvblNwYWNlPjo6aXRlcmF0b3IgQ3JlZGVudGlhbFN0b3JhZ2U6
OmZpbmREZWZhdWx0UHJvdGVjdAogCiAgICAgICAgIHNpemVfdCBpbmRleCA9IGRpcmVjdG9yeVVS
TC5yZXZlcnNlRmluZCgnLycsIGRpcmVjdG9yeVVSTC5sZW5ndGgoKSAtIDIpOwogICAgICAgICBB
U1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgICAgICBkaXJlY3RvcnlVUkwgPSBkaXJlY3Rv
cnlVUkwuc3Vic3RyaW5nKDAsIChpbmRleCA9PSBkaXJlY3RvcnlVUkxQYXRoU3RhcnQpID8gaW5k
ZXggKyAxIDogaW5kZXgpOworICAgICAgICBkaXJlY3RvcnlVUkwgPSBkaXJlY3RvcnlVUkwubGVm
dCgoaW5kZXggPT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0KSA/IGluZGV4ICsgMSA6IGluZGV4KTsK
ICAgICAgICAgQVNTRVJUKGRpcmVjdG9yeVVSTC5sZW5ndGgoKSA+IGRpcmVjdG9yeVVSTFBhdGhT
dGFydCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9EYXRhVVJMRGVjb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L0RhdGFVUkxEZWNvZGVyLmNwcAppbmRleCBjY2I3MThjMDYwMWE0NTY1NzZkNGE2Mzc1ZTRiNjFl
NmY4ZTM3Mzg3Li42NzkyNDQwZjBhZjkzZDViNmJhZjhjOWRkNzAxZWQ4ZTAyNGM5NTAyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0RhdGFVUkxEZWNvZGVyLmNw
cApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoKICAgICAgICAgaXNCYXNlNjQgPSBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShmb3JtYXRUeXBlLCAiYmFzZTY0Iik7CiAKICAgICAgICAg
Ly8gSWYgaGVhZGVyIGRvZXMgbm90IGVuZCB3aXRoICJiYXNlNjQiLCBtZWRpYVR5cGUgc2hvdWxk
IGJlIHRoZSB3aG9sZSBoZWFkZXIuCi0gICAgICAgIGF1dG8gbWVkaWFUeXBlID0gKGlzQmFzZTY0
ID8gaGVhZGVyLnN1YnN0cmluZygwLCBtZWRpYVR5cGVFbmQpIDogaGVhZGVyKS50b1N0cmluZygp
OworICAgICAgICBhdXRvIG1lZGlhVHlwZSA9IChpc0Jhc2U2NCA/IGhlYWRlci5sZWZ0KG1lZGlh
VHlwZUVuZCkgOiBoZWFkZXIpLnRvU3RyaW5nKCk7CiAgICAgICAgIG1lZGlhVHlwZSA9IHN0cmlw
TGVhZGluZ0FuZFRyYWlsaW5nSFRUUFNwYWNlcyhtZWRpYVR5cGUpOwogICAgICAgICBpZiAobWVk
aWFUeXBlLnN0YXJ0c1dpdGgoJzsnKSkKICAgICAgICAgICAgIG1lZGlhVHlwZS5pbnNlcnQoInRl
eHQvcGxhaW4iX3MsIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9IVFRQUGFyc2Vycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hU
VFBQYXJzZXJzLmNwcAppbmRleCAzNzEzNGQ5YTRmZTUwNmM4ZTQ4OWUwMzk0YzYyMWJlNTg5YWM1
MmU0Li43M2U4MTJjMGRkZGQ0NTcwZDZmNWE1YmY1YzkyMWNhMjdkYzllMGFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtNTk3LDcg
KzU5Nyw3IEBAIHN0ZDo6b3B0aW9uYWw8c3RkOjpwYWlyPFN0cmluZ1ZpZXcsIEhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+Pj4gcGFyc2VTdHJ1Y3R1cmVkRmllCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgKytpbmRleDsKICAgICB9Ci0gICAgU3RyaW5nVmlldyBiYXJlSXRlbSA9IGhlYWRlci5z
dWJzdHJpbmcoMCwgaW5kZXgpOworICAgIFN0cmluZ1ZpZXcgYmFyZUl0ZW0gPSBoZWFkZXIubGVm
dChpbmRleCk7CiAKICAgICAvLyBQYXJzZSBwYXJhbWV0ZXJzIChodHRwczovL2RhdGF0cmFja2Vy
LmlldGYub3JnL2RvYy9odG1sL3JmYzg5NDEjc2VjdGlvbi00LjIuMy4yKS4KICAgICBIYXNoTWFw
PFN0cmluZywgU3RyaW5nPiBwYXJhbWV0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvTUlNRUhlYWRlci5jcHAKaW5kZXggYjQyMzc5ZjMzYjM1YmYyZTVkNzJiMTI3YzJl
MDNiNjQwYWNmY2I2ZC4uM2EwODc4Y2ZhNzc0MDNjZmU0YzgzYzk2ODE4MjQwOWZiNDYzNGFmZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVIZWFkZXIuY3BwCkBA
IC03Miw3ICs3Miw3IEBAIHN0YXRpYyBLZXlWYWx1ZU1hcCByZXRyaWV2ZUtleVZhbHVlUGFpcnMo
V2ViQ29yZTo6U2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlCiAgICAgICAgICAgICAvLyBU
aGlzIGlzIG5vdCBhIGtleSB2YWx1ZSBwYWlyLCBpZ25vcmUuCiAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgfQotICAgICAgICBrZXkgPSBsaW5lLnN1YnN0cmluZygwLCBzZW1pQ29sb25J
bmRleCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAg
ICAga2V5ID0gU3RyaW5nVmlldyhsaW5lKS5sZWZ0KHNlbWlDb2xvbkluZGV4KS5jb252ZXJ0VG9B
U0NJSUxvd2VyY2FzZSgpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgICAgICB2YWx1ZS5hcHBlbmQo
bGluZS5zdWJzdHJpbmcoc2VtaUNvbG9uSW5kZXggKyAxKSk7CiAgICAgfQogICAgIC8vIFN0b3Jl
IHRoZSBsYXN0IHByb3BlcnR5IGlmIHRoZXJlIGlzIG9uZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCAwNGU2NGNkMmM3
YTkwZDljZTNkYzI5ZjhiMmQxNjc4MjQwZmEwMzRiLi43NWIxNmIxMmM5ZTMyYzE3OTQxODFiMWVk
OTExNjZjYWY1NDA2YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyB2b2lkIHBh
cnNlQ29va2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFzTWF4
QWdlLCBDb29rCiAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVlOwogCiAgICAgaWYgKGFzc2lnbm1l
bnRQb3NpdGlvbiAhPSBub3RGb3VuZCkgewotICAgICAgICBhdHRyaWJ1dGVOYW1lID0gYXR0cmli
dXRlLnN1YnN0cmluZygwLCBhc3NpZ25tZW50UG9zaXRpb24pLnN0cmlwV2hpdGVTcGFjZSgpOwor
ICAgICAgICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLmxlZnQoYXNzaWdubWVudFBvc2l0aW9u
KS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGUu
c3Vic3RyaW5nKGFzc2lnbm1lbnRQb3NpdGlvbiArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAg
IH0gZWxzZQogICAgICAgICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLnN0cmlwV2hpdGVTcGFj
ZSgpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tp
ZUhlYWRlcihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUpCiAKICAgICBzaXplX3Qgc2VwYXJhdG9y
UG9zaXRpb24gPSBjb29raWVMaW5lLmZpbmQoJzsnKTsKIAotICAgIFN0cmluZyBjb29raWVQYWly
ID0gc2VwYXJhdG9yUG9zaXRpb24gPT0gbm90Rm91bmQgPyBjb29raWVMaW5lIDogY29va2llTGlu
ZS5zdWJzdHJpbmcoMCwgc2VwYXJhdG9yUG9zaXRpb24pOworICAgIFN0cmluZyBjb29raWVQYWly
ID0gc2VwYXJhdG9yUG9zaXRpb24gPT0gbm90Rm91bmQgPyBjb29raWVMaW5lIDogY29va2llTGlu
ZS5sZWZ0KHNlcGFyYXRvclBvc2l0aW9uKTsKIAogICAgIFN0cmluZyBjb29raWVOYW1lOwogICAg
IFN0cmluZyBjb29raWVWYWx1ZTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGQ6Om9wdGlvbmFsPENv
b2tpZT4gcGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lKQogICAgIGlm
IChhc3NpZ25tZW50UG9zaXRpb24gPT0gbm90Rm91bmQpCiAgICAgICAgIGNvb2tpZVZhbHVlID0g
Y29va2llUGFpcjsKICAgICBlbHNlIHsKLSAgICAgICAgY29va2llTmFtZSA9IGNvb2tpZVBhaXIu
c3Vic3RyaW5nKDAsIGFzc2lnbm1lbnRQb3NpdGlvbik7CisgICAgICAgIGNvb2tpZU5hbWUgPSBj
b29raWVQYWlyLmxlZnQoYXNzaWdubWVudFBvc2l0aW9uKTsKICAgICAgICAgY29va2llVmFsdWUg
PSBjb29raWVQYWlyLnN1YnN0cmluZyhhc3NpZ25tZW50UG9zaXRpb24gKyAxKTsKICAgICB9CiAK
QEAgLTE5Myw3ICsxOTMsNyBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1
cmwpCiAgICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikKICAgICAgICAgcmV0dXJuICIvIl9zOwog
Ci0gICAgcmV0dXJuIHBhdGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKKyAgICBy
ZXR1cm4gcGF0aC5sZWZ0KGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
Q29va2llVXRpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVUb1NjcmlwdE1hcHBpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2Nh
bGVUb1NjcmlwdE1hcHBpbmcuY3BwCmluZGV4IDcyMzA5ZWMwZGMxZTRmZDNiODFmM2Q1NDIxNThh
OWVhYTAyZmE3MmMuLjg1N2I5M2JlNTM3ZWRkMTZkYjA2OThiM2M5OGVjOGM0OTM4YTU1YzEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBw
aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0
TWFwcGluZy5jcHAKQEAgLTM3NSw3ICszNzUsNyBAQCBVU2NyaXB0Q29kZSBsb2NhbGVUb1Njcmlw
dENvZGVGb3JGb250U2VsZWN0aW9uKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgICAgICBVU2Ny
aXB0Q29kZSBjb2RlID0gc2NyaXB0TmFtZVRvQ29kZShjYW5vbmljYWxMb2NhbGUuc3Vic3RyaW5n
KHVuZGVyc2NvcmVQb3NpdGlvbiArIDEpKTsKICAgICAgICAgaWYgKGNvZGUgIT0gVVNDUklQVF9J
TlZBTElEX0NPREUgJiYgY29kZSAhPSBVU0NSSVBUX1VOS05PV04pCiAgICAgICAgICAgICByZXR1
cm4gY29kZTsKLSAgICAgICAgY2Fub25pY2FsTG9jYWxlID0gY2Fub25pY2FsTG9jYWxlLnN1YnN0
cmluZygwLCB1bmRlcnNjb3JlUG9zaXRpb24pOworICAgICAgICBjYW5vbmljYWxMb2NhbGUgPSBj
YW5vbmljYWxMb2NhbGUubGVmdCh1bmRlcnNjb3JlUG9zaXRpb24pOwogICAgIH0KICAgICByZXR1
cm4gVVNDUklQVF9DT01NT047CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW4vUGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFz
dGVib2FyZFdpbi5jcHAKaW5kZXggNGNlMzI4YTgzMWM5MGJmNmJkMjI4ZTFmMDcyNDA4ZDY0YjMz
YTQ1ZS4uN2QxNTM2YTdkNjRkM2ZjODM2Mjc2MmYzYTcwNGRhNTM4YzZmN2E2MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNjA1LDcgKzYw
NSw3IEBAIHN0YXRpYyBTdHJpbmcgZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZShjb25zdCBT
dHJpbmcmIHVybFN0cmluZywgY29uc3QgU3RyaW5nCiAKICAgICBpZiAoIXRpdGxlLmlzRW1wdHko
KSkgewogICAgICAgICBzaXplX3QgbGVuID0gc3RkOjptaW48c2l6ZV90Pih0aXRsZS5sZW5ndGgo
KSwgZnNQYXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uKTsKLSAgICAgICAgU3RyaW5nVmll
dyh0aXRsZSkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQ
YXRoQnVmZmVyKTsKKyAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkubGVmdChsZW4pLmdldENoYXJh
Y3RlcnNXaXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIGZzUGF0aEJ1ZmZlclts
ZW5dID0gMDsKICAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQ
YXRoQnVmZmVyKSwgbGVuKTsKICAgICB9CkBAIC02MjAsMTAgKzYyMCwxMCBAQCBzdGF0aWMgU3Ry
aW5nIGZpbGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcs
IGNvbnN0IFN0cmluZwogICAgICAgICBhdXRvIGxhc3RDb21wb25lbnQgPSB1cmwubGFzdFBhdGhD
b21wb25lbnQoKTsKICAgICAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpIHx8ICghaXNMaW5rICYm
ICFsYXN0Q29tcG9uZW50LmlzRW1wdHkoKSkpIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWlu
PERXT1JEPihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24sIGxhc3RDb21wb25lbnQu
bGVuZ3RoKCkpOwotICAgICAgICAgICAgbGFzdENvbXBvbmVudC5zdWJzdHJpbmcoMCwgbGVuKS5n
ZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOworICAgICAgICAgICAgbGFz
dENvbXBvbmVudC5sZWZ0KGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVm
ZmVyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JE
Pihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24sIHVybFN0cmluZy5sZW5ndGgoKSk7
Ci0gICAgICAgICAgICBTdHJpbmdWaWV3KHVybFN0cmluZykuc3Vic3RyaW5nKDAsIGxlbikuZ2V0
Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgICAgIFN0cmlu
Z1ZpZXcodXJsU3RyaW5nKS5sZWZ0KGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQ
YXRoQnVmZmVyKTsKICAgICAgICAgfQogICAgICAgICBmc1BhdGhCdWZmZXJbbGVuXSA9IDA7CiAg
ICAgICAgIHBhdGhSZW1vdmVCYWRGU0NoYXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciks
IGxlbik7CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0
YU9iamVjdChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgZmdk
LT5mZ2RbMF0ubkZpbGVTaXplTG93ID0gY29udGVudC5sZW5ndGgoKTsKIAogICAgIHVuc2lnbmVk
IG1heFNpemUgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlf
TEVOR1RIKGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5z
dWJzdHJpbmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9t
KGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5sZWZ0KG1h
eFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5j
RmlsZU5hbWUpKTsKICAgICBHbG9iYWxVbmxvY2sodXJsRmlsZURlc2NyaXB0b3IpOwogCiAgICAg
Y2hhciogZmlsZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2sodXJsRmls
ZUNvbnRlbnQpKTsKQEAgLTk2MCw3ICs5NjAsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9i
YWxJbWFnZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAg
ICAgfQogCiAgICAgaW50IG1heFNpemUgPSBzdGQ6Om1pbjxpbnQ+KGZzUGF0aC5sZW5ndGgoKSwg
V1RGX0FSUkFZX0xFTkdUSChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKLSAgICBTdHJpbmdWaWV3
KGZzUGF0aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0
KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0
aCkubGVmdChtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20oZmdk
LT5mZ2RbMF0uY0ZpbGVOYW1lKSk7CiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICBy
ZXR1cm4gbWVtT2JqOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dl
YkNvcmVUZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNv
cmVUZXh0UmVuZGVyZXIuY3BwCmluZGV4IGU5YzNjOWFlZjAwYmYwN2QzMTBjNmE5NGM2MDc0YzI5
ZjNjNzMzZjIuLmJiODBjNjdjYTEwNmZiMjJkYWQ2N2E3MjhkZjgxYjRiYWZjYjljZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5j
cHAKQEAgLTYwLDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKIAogICAgICAgICBp
bnQgYmVmb3JlV2lkdGg7CiAgICAgICAgIGlmICh1bmRlcmxpbmVkSW5kZXggPiAwKSB7Ci0gICAg
ICAgICAgICBUZXh0UnVuIGJlZm9yZVJ1bihTdHJpbmdWaWV3KHRleHQpLnN1YnN0cmluZygwLCB1
bmRlcmxpbmVkSW5kZXgpKTsKKyAgICAgICAgICAgIFRleHRSdW4gYmVmb3JlUnVuKFN0cmluZ1Zp
ZXcodGV4dCkubGVmdCh1bmRlcmxpbmVkSW5kZXgpKTsKICAgICAgICAgICAgIGJlZm9yZVdpZHRo
ID0gZm9udC53aWR0aChiZWZvcmVSdW4pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJl
Zm9yZVdpZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAK
aW5kZXggMzg2MzJiMTQyODNiYzBhMTM4MDQxMTQ2YWNhOWMwMjM4NjU0YWRmNy4uYTU5NzE2M2Iw
YzQzYjJhZDM1NGE2M2RkYTczOGI2MzkzYjllMzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgUmVuZGVyT2Jq
ZWN0OjpvdXRwdXRSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGlu
dCBkZXB0aCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgY29uc3QgaW50IG1heFByaW50ZWRM
ZW5ndGggPSA4MDsKICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1heFByaW50ZWRM
ZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3Vic3RyaW5nID0gdmFsdWUuc3Vic3Ry
aW5nKDAsIG1heFByaW50ZWRMZW5ndGgpOworICAgICAgICAgICAgICAgIGF1dG8gc3Vic3RyaW5n
ID0gU3RyaW5nVmlldyh2YWx1ZSkubGVmdChtYXhQcmludGVkTGVuZ3RoKTsKICAgICAgICAgICAg
ICAgICBzdHJlYW0gPDwgIiBcIiIgPDwgc3Vic3RyaW5nLnV0ZjgoKS5kYXRhKCkgPDwgIlwiLi4u
IjsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8
PCB2YWx1ZS51dGY4KCkuZGF0YSgpIDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IGJjOGNk
YmNjODk3YmE4ZTdkYjUxODI5NDdjNjkzZGU5YzI5MGIwMzEuLjg2YzI2Zjg3NThhNGVjZDlhMmQy
ZWU1NTU4MmNlOTg4MzZkOWJmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcg
QEAgTmFtZWRMaW5lQ29sbGVjdGlvbkJhc2U6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlKGNvbnN0
IFJlbmRlckdyaWQmIGluaXRpYWxHcmlkLAogICAgICAgICAgICAgICAgIHN0YXJ0U2lkZSA9IGZh
bHNlOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgc3RhcnRTaWRlID0gdHJ1
ZTsKLSAgICAgICAgICAgIGFyZWFOYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgc3VmZml4KTsKKyAg
ICAgICAgICAgIGFyZWFOYW1lID0gbmFtZS5sZWZ0KHN1ZmZpeCk7CiAgICAgICAgIH0KICAgICAg
ICAgYXV0byBpbXBsaWNpdExpbmUgPSBjbGFtcGVkSW1wbGljaXRMaW5lRm9yQXJlYSgqZ3JpZENv
bnRhaW5lclN0eWxlLCBhcmVhTmFtZSwgMCwgbV9sYXN0TGluZSwgaXNSb3dBeGlzLCBzdGFydFNp
ZGUpOwogICAgICAgICBpZiAoaW1wbGljaXRMaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1Rlc3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5k
ZXggZjA0YjRmYWYzZTc4MDViNWEzMmNkYzljN2MyMDc2MGY5NjZmOTc1MC4uYmE5N2U1OTMxZWNk
ZjdhZjQ5ZGI2NjYzYzVkNmExMjUyM2IxMDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1Rlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCkBA
IC0xMTgsOCArMTE4LDEwIEBAIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogICAgICAg
ICBpZiAoZmVhdHVyZS5pc0VtcHR5KCkgfHwgIXN1cHBvcnRlZFNWR0ZlYXR1cmVTZXQuY29udGFp
bnMoZmVhdHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIFN0cmlu
ZyBkZWZhdWx0TGFuZ3VhZ2UgPSBXVEY6OmRlZmF1bHRMYW5ndWFnZSgpOworICAgIGF1dG8gZ2Vu
ZXJpY0RlZmF1bHRMYW5ndWFnZSA9IFN0cmluZ1ZpZXcoZGVmYXVsdExhbmd1YWdlKS5sZWZ0KDIp
OwogICAgIGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBtX3N5c3RlbUxhbmd1YWdlLT5pdGVtcygpKSB7
Ci0gICAgICAgIGlmIChsYW5ndWFnZSAhPSBkZWZhdWx0TGFuZ3VhZ2UoKS5zdWJzdHJpbmcoMCwg
MikpCisgICAgICAgIGlmIChsYW5ndWFnZSAhPSBnZW5lcmljRGVmYXVsdExhbmd1YWdlKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6
IG1fcmVxdWlyZWRFeHRlbnNpb25zLT5pdGVtcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklS
ZWZlcmVuY2UuY3BwCmluZGV4IGVlNDVhMjljYWUxZjE3ZmE3OGJmYjk3ZTEzN2M0MDZlMGM1NzYw
ZWQuLjRhOWJmZTg5MzgzN2MxZDI5MTdkYTk1ZWNjOTMzODRmNmMyMDAyNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIFN0cmluZyBTVkdV
UklSZWZlcmVuY2U6OmZyYWdtZW50SWRlbnRpZmllckZyb21JUklTdHJpbmcoY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0CiAgICAgaWYgKCFzdGFydCkKICAgICAgICAgcmV0dXJuIHVybC5zdWJzdHJp
bmcoMSk7CiAKLSAgICBVUkwgYmFzZSA9IFVSTChkb2N1bWVudC5iYXNlVVJMKCksIHVybC5zdWJz
dHJpbmcoMCwgc3RhcnQpKTsKKyAgICBVUkwgYmFzZSA9IFVSTChkb2N1bWVudC5iYXNlVVJMKCks
IHVybC5sZWZ0KHN0YXJ0KSk7CiAgICAgU3RyaW5nIGZyYWdtZW50SWRlbnRpZmllciA9IHVybC5z
dWJzdHJpbmcoc3RhcnQpOwogICAgIFVSTCBrdXJsKGJhc2UsIGZyYWdtZW50SWRlbnRpZmllcik7
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoa3VybCwgZG9jdW1lbnQu
dXJsKCkpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmNwcAppbmRleCBjNDM2ZWFlMjM0OWI4OWViZjA3ZjM5MDAwZGY1NjVkMzRkMGIzNTAzLi4xNmVh
YjY1MjBlODhiY2NjMzUzNzQwYjc3NzE3YWQ2ZTE5N2QzNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMzQ4LDEzICszNDgsMTMg
QEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShTdHJpbmdWaWV3IGRh
dGEpCiAgICAgc2l6ZV90IGRvdWJsZVBvaW50T25lID0gcGFyc2UuZmluZCgnOicpOwogICAgIHNp
emVfdCBkb3VibGVQb2ludFR3byA9IHBhcnNlLmZpbmQoJzonLCBkb3VibGVQb2ludE9uZSArIDEp
OwogICAgIGlmIChkb3VibGVQb2ludE9uZSA9PSAyICYmIGRvdWJsZVBvaW50VHdvID09IDUgJiYg
cGFyc2UubGVuZ3RoKCkgPj0gOCkgewotICAgICAgICBhdXRvIGhvdXIgPSBwYXJzZUludGVnZXI8
dWludDhfdD4ocGFyc2Uuc3Vic3RyaW5nKDAsIDIpKTsKKyAgICAgICAgYXV0byBob3VyID0gcGFy
c2VJbnRlZ2VyPHVpbnQ4X3Q+KHBhcnNlLmxlZnQoMikpOwogICAgICAgICBhdXRvIG1pbnV0ZSA9
IHBhcnNlSW50ZWdlcjx1aW50OF90PihwYXJzZS5zdWJzdHJpbmcoMywgMikpOwogICAgICAgICBp
ZiAoIWhvdXIgfHwgIW1pbnV0ZSkKICAgICAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNv
bHZlZCgpOwogICAgICAgICByZXN1bHQgPSAqaG91ciAqIDYwICogNjAgKyAqbWludXRlICogNjAg
KyBwYXJzZS5zdWJzdHJpbmcoNikudG9Eb3VibGUob2spOwogICAgIH0gZWxzZSBpZiAoZG91Ymxl
UG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQb2ludFR3byA9PSBub3RGb3VuZCAmJiBwYXJzZS5sZW5n
dGgoKSA+PSA1KSB7IAotICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90
PihwYXJzZS5zdWJzdHJpbmcoMCwgMikpOworICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50
ZWdlcjx1aW50OF90PihwYXJzZS5sZWZ0KDIpKTsKICAgICAgICAgaWYgKCFtaW51dGUpCiAgICAg
ICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKICAgICAgICAgcmVzdWx0ID0g
Km1pbnV0ZSAqIDYwICsgcGFyc2Uuc3Vic3RyaW5nKDMpLnRvRG91YmxlKG9rKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRl
eCA4MDRlNmY0YzA4NGIwYjEzZTRkYWEwODUwYTUwODZhNjRhOTdiMjNhLi5mZWM1ZjM5NjBkZTQ5
YTliMDI4YjFmMDE0MzljMzBkYWY3ZWNhY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAg
UmVzb3VyY2VFcnJvciBTZXJ2aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNw
b25zZShjb25zdCBTZXJ2aWNlV29ya2UKICAgICBpZiAoc2VydmljZVdvcmtlckFsbG93ZWQuaXNO
dWxsKCkpIHsKICAgICAgICAgYXV0byBwYXRoID0gam9iRGF0YS5zY3JpcHRVUkwucGF0aCgpOwog
ICAgICAgICAvLyBMYXN0IHBhcnQgb2YgdGhlIHBhdGggaXMgdGhlIHNjcmlwdCdzIGZpbGVuYW1l
LgotICAgICAgICBtYXhTY29wZVN0cmluZyA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgucmV2ZXJz
ZUZpbmQoJy8nKSArIDEpLnRvU3RyaW5nKCk7CisgICAgICAgIG1heFNjb3BlU3RyaW5nID0gcGF0
aC5sZWZ0KHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpLnRvU3RyaW5nKCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgYXV0byBtYXhTY29wZSA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwgc2Vydmlj
ZVdvcmtlckFsbG93ZWQpOwogICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYXhT
Y29wZSktPmlzU2FtZU9yaWdpbkFzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3Jp
cHRVUkwpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAppbmRleCA3YTg4ZmE3NzRlZGMx
MmUyNWVkYmMyNTA0NDNjZWEzMTJhYmEyZWYyLi4zYThmYWMxOTM5MWVhYzI5N2FmYWM3ZmUyMWZm
OGY0NzEyMWQ2ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0xMTgsNyAr
MTE4LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGEKICAgICBpZiAoIXNjb3BlLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBrZXkuc3Vic3RyaW5nKDAsIGZpcnN0KSwga2V5LnN1YnN0
cmluZyhmaXJzdCArIDEsIHNlY29uZCAtIGZpcnN0IC0gMSksIHNob3J0UG9ydCB9LCBXVEZNb3Zl
KHNjb3BlKSB9OworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBr
ZXkubGVmdChmaXJzdCksIGtleS5zdWJzdHJpbmcoZmlyc3QgKyAxLCBzZWNvbmQgLSBmaXJzdCAt
IDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92ZShzY29wZSkgfTsKIH0KIAogI2lmICFMT0dfRElTQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKaW5kZXggN2MzNjQyZmUzMzgxYzk2YTk0ZDE1NWNjNDdhYWJlOWNlODU2YjdkNy4uZGM5
NmI3OTNkZTJiYjMyMTZkMWEzMTA3ZmIwZGZjYjFmOWRlY2ZiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTEyNjgsNyAr
MTI2OCw3IEBAIGJvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNjaGVtZShTdHJpbmdWaWV3IHNjaGVt
ZSkgY29uc3QKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hlbWUuc3Vic3Ry
aW5nKDAsIDQpLCAiaHR0cCIpKQorICAgIGlmICghc2NoZW1lLnN0YXJ0c1dpdGhJZ25vcmluZ0FT
Q0lJQ2FzZSgiaHR0cCIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKHNjaGVtZS5s
ZW5ndGgoKSA9PSA1ICYmIGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwoc2NoZW1lWzRdLCAncycp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJEcml2ZXIvQ29t
bWFuZFJlc3VsdC5jcHAgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCmluZGV4
IDgzNTk2OWJmYTM2Y2UxNmY2MzU2YzZiYTE3Y2E5MmVhMWU5OGRlZGUuLjJiMWI3ZGIxMjE0Yzlm
ZTZjZWFiOTUxZjM2MTUwMmMxOWVmOTRkMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJEcml2ZXIv
Q29tbWFuZFJlc3VsdC5jcHAKKysrIGIvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNw
cApAQCAtNzQsNyArNzQsNyBAQCBDb21tYW5kUmVzdWx0OjpDb21tYW5kUmVzdWx0KFJlZlB0cjxK
U09OOjpWYWx1ZT4mJiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8RXJyb3JDbwogICAgICAgICBTdHJp
bmcgZXJyb3JOYW1lOwogICAgICAgICBhdXRvIHBvc2l0aW9uID0gZXJyb3JNZXNzYWdlLmZpbmQo
JzsnKTsKICAgICAgICAgaWYgKHBvc2l0aW9uICE9IG5vdEZvdW5kKSB7Ci0gICAgICAgICAgICBl
cnJvck5hbWUgPSBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAgICAgICAg
ICAgIGVycm9yTmFtZSA9IGVycm9yTWVzc2FnZS5sZWZ0KHBvc2l0aW9uKTsKICAgICAgICAgICAg
IG1fZXJyb3JNZXNzYWdlID0gZXJyb3JNZXNzYWdlLnN1YnN0cmluZyhwb3NpdGlvbiArIDEpOwog
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGVycm9yTmFtZSA9IGVycm9yTWVzc2FnZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvV2ViU3RvcmFnZS9Mb2NhbFN0
b3JhZ2VEYXRhYmFzZVRyYWNrZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9X
ZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKaW5kZXggZTA5ZDJlOWYz
NmNhYjI1YzE3NTQxYzg3NDk2ZmYyOWI5MWEwNTNiNS4uNzJlZDMzNzlkMzZmMmU3ZmY2ZjUzMDBk
NWU2NjNkNzQwMDdhYzI5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBM
b2NhbFN0b3JhZ2VEYXRhYmFzZVRyYWNrZXI6Om9yaWdpbnMoKSBjb25zdAogICAgIFZlY3RvcjxT
ZWN1cml0eU9yaWdpbkRhdGE+IGRhdGFiYXNlT3JpZ2luczsKICAgICBmb3IgKGF1dG8mIHBhdGgg
OiBGaWxlU3lzdGVtOjpsaXN0RGlyZWN0b3J5KGxvY2FsU3RvcmFnZURpcmVjdG9yeSgpKSkgewog
ICAgICAgICBhdXRvIGZpbGVuYW1lID0gRmlsZVN5c3RlbTo6cGF0aEZpbGVOYW1lKHBhdGgpOwot
ICAgICAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlbmFtZS5zdWJzdHJpbmcoMCwgZmls
ZW5hbWUubGVuZ3RoKCkgLSBzdHJsZW4oIi5sb2NhbHN0b3JhZ2UiKSk7CisgICAgICAgIGF1dG8g
b3JpZ2luSWRlbnRpZmllciA9IGZpbGVuYW1lLmxlZnQoZmlsZW5hbWUubGVuZ3RoKCkgLSBzdHJs
ZW4oIi5sb2NhbHN0b3JhZ2UiKSk7CiAgICAgICAgIGF1dG8gb3JpZ2luID0gU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwogICAgICAg
ICBpZiAob3JpZ2luKQogICAgICAgICAgICAgZGF0YWJhc2VPcmlnaW5zLmFwcGVuZChvcmlnaW4u
dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcAppbmRleCBiMWU2ZmYzYzA3OGJlODcxZDk1MTBm
YTM3NmM0NzAwZTMzYzE5ZmE2Li42MTE2N2E4ZWJhODA1OTEyMGMzMTRkZWIzMjcyMjA5ZGMxNjhl
ZDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZVN0b3JhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKQEAgLTIzNSw3ICsyMzUsNyBAQCBzdGF0aWMgdm9p
ZCB0cmF2ZXJzZVJlY29yZHNGaWxlcyhjb25zdCBTdHJpbmcmIHJlY29yZHNQYXRoLCBjb25zdCBT
dHJpbmcmIGV4cGVjdAogICAgICAgICAgICAgICAgIGlmIChlbnRyeVR5cGUgIT0gRGlyZWN0b3J5
RW50cnlUeXBlOjpGaWxlIHx8IGZpbGVOYW1lLmxlbmd0aCgpIDwgS2V5OjpoYXNoU3RyaW5nTGVu
Z3RoKCkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgICAgIFN0
cmluZyBoYXNoU3RyaW5nID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIEtleTo6aGFzaFN0cmluZ0xl
bmd0aCgpKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaGFzaFN0cmluZyA9IGZpbGVOYW1lLmxl
ZnQoS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpOwogICAgICAgICAgICAgICAgIGF1dG8gaXNCbG9i
ID0gZmlsZU5hbWUubGVuZ3RoKCkgPiBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSAmJiBmaWxlTmFt
ZS5lbmRzV2l0aChibG9iU3VmZml4KTsKICAgICAgICAgICAgICAgICBmdW5jdGlvbihmaWxlTmFt
ZSwgaGFzaFN0cmluZywgYWN0dWFsVHlwZSwgaXNCbG9iLCByZWNvcmREaXJlY3RvcnlQYXRoKTsK
ICAgICAgICAgICAgIH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDI2YmM5MDc5YmIy
Zjk2ZGU3OWFkMDUxOWQ3NzJhMGMwYjE2NWFiYjMuLjJiMTA4NDZmOTYwOTlhM2IyNGVjNDY1NDVm
NTE1N2NlYjY5MWQ3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKQEAgLTUwLDcgKzUwLDcg
QEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBmaWxl
TmFtZVRvT3JpZ2luKGNvbnN0IFN0cmluZyYKICAgICBpZiAoZmlsZU5hbWVMZW5ndGggPD0gc3Vm
Zml4TGVuZ3RoKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBvcmln
aW5JZGVudGlmaWVyID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIGZpbGVOYW1lTGVuZ3RoIC0gc3Vm
Zml4TGVuZ3RoKTsKKyAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlTmFtZS5sZWZ0KGZp
bGVOYW1lTGVuZ3RoIC0gc3VmZml4TGVuZ3RoKTsKICAgICByZXR1cm4gV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklkZW50aWZpZXIpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKaW5kZXggNGVkM2I4YWEy
ZDIzZTUxNWEzMDQ5MDVlYzQwMmYzZTQ4YTRjNGQ2MS4uOWQ3NTVhN2YzYmE0ZThkZTM2MDRmOGYw
YWExOTg4ODVkZjc2OTNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2Mv
V0tTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNw
cApAQCAtNTgsNyArNTgsNyBAQCBzaXplX3QgV0tTdHJpbmdHZXRDaGFyYWN0ZXJzKFdLU3RyaW5n
UmVmIHN0cmluZ1JlZiwgV0tDaGFyKiBidWZmZXIsIHNpemVfdCBidWZmZQogICAgIHN0YXRpY19h
c3NlcnQoc2l6ZW9mKFdLQ2hhcikgPT0gc2l6ZW9mKFVDaGFyKSwgIlNpemUgb2YgV0tDaGFyIG11
c3QgbWF0Y2ggc2l6ZSBvZiBVQ2hhciIpOwogCiAgICAgdW5zaWduZWQgdW5zaWduZWRCdWZmZXJM
ZW5ndGggPSBzdGQ6Om1pbjxzaXplX3Q+KGJ1ZmZlckxlbmd0aCwgc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKTsKLSAgICBhdXRvIHN1YnN0cmluZyA9IFdlYktpdDo6dG9JbXBs
KHN0cmluZ1JlZiktPnN0cmluZ1ZpZXcoKS5zdWJzdHJpbmcoMCwgdW5zaWduZWRCdWZmZXJMZW5n
dGgpOworICAgIGF1dG8gc3Vic3RyaW5nID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3Ry
aW5nVmlldygpLmxlZnQodW5zaWduZWRCdWZmZXJMZW5ndGgpOwogCiAgICAgc3Vic3RyaW5nLmdl
dENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIqPihidWZmZXIp
KTsKICAgICByZXR1cm4gc3Vic3RyaW5nLmxlbmd0aCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCmluZGV4IGM3OGMx
ODJkMzNjY2FhMWZlNzhkNWQzOWY4NTJjYWY4YmIxMTQyM2MuLjI4ZTBmNjUxMzdhMjU5YTRjNWEx
NjAwYjU4NmUzMzc3YTUzYjJlOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAKQEAgLTI0MCwxMCArMjQwLDEwIEBA
IHZvaWQgSW5wdXRNZXRob2RGaWx0ZXI6Om5vdGlmeVN1cnJvdW5kaW5nKGNvbnN0IFN0cmluZyYg
dGV4dCwgdWludDY0X3QgY3Vyc29yUG9zCiAgICAgbV9zdXJyb3VuZGluZy5zZWxlY3Rpb25Qb3Np
dGlvbiA9IHNlbGVjdGlvblBvc2l0aW9uOwogCiAgICAgYXV0byB0ZXh0VVRGOCA9IG1fc3Vycm91
bmRpbmcudGV4dC51dGY4KCk7Ci0gICAgYXV0byBjdXJzb3JQb3NpdGlvblVURjggPSBjdXJzb3JQ
b3NpdGlvbiAhPSB0ZXh0Lmxlbmd0aCgpID8gdGV4dC5zdWJzdHJpbmcoMCwgY3Vyc29yUG9zaXRp
b24pLnV0ZjgoKS5sZW5ndGgoKSA6IHRleHRVVEY4Lmxlbmd0aCgpOworICAgIGF1dG8gY3Vyc29y
UG9zaXRpb25VVEY4ID0gY3Vyc29yUG9zaXRpb24gIT0gdGV4dC5sZW5ndGgoKSA/IFN0cmluZ1Zp
ZXcodGV4dCkubGVmdChjdXJzb3JQb3NpdGlvbikudXRmOCgpLmxlbmd0aCgpIDogdGV4dFVURjgu
bGVuZ3RoKCk7CiAgICAgYXV0byBzZWxlY3Rpb25Qb3NpdGlvblVURjggPSBjdXJzb3JQb3NpdGlv
blVURjg7CiAgICAgaWYgKGN1cnNvclBvc2l0aW9uICE9IHNlbGVjdGlvblBvc2l0aW9uKQotICAg
ICAgICBzZWxlY3Rpb25Qb3NpdGlvblVURjggPSBzZWxlY3Rpb25Qb3NpdGlvbiAhPSB0ZXh0Lmxl
bmd0aCgpID8gdGV4dC5zdWJzdHJpbmcoMCwgc2VsZWN0aW9uUG9zaXRpb24pLnV0ZjgoKS5sZW5n
dGgoKSA6IHRleHRVVEY4Lmxlbmd0aCgpOworICAgICAgICBzZWxlY3Rpb25Qb3NpdGlvblVURjgg
PSBzZWxlY3Rpb25Qb3NpdGlvbiAhPSB0ZXh0Lmxlbmd0aCgpID8gU3RyaW5nVmlldyh0ZXh0KS5s
ZWZ0KHNlbGVjdGlvblBvc2l0aW9uKS51dGY4KCkubGVuZ3RoKCkgOiB0ZXh0VVRGOC5sZW5ndGgo
KTsKICAgICB3ZWJraXRfaW5wdXRfbWV0aG9kX2NvbnRleHRfbm90aWZ5X3N1cnJvdW5kaW5nKG1f
Y29udGV4dC5nZXQoKSwgdGV4dFVURjguZGF0YSgpLCB0ZXh0VVRGOC5sZW5ndGgoKSwgY3Vyc29y
UG9zaXRpb25VVEY4LCBzZWxlY3Rpb25Qb3NpdGlvblVURjgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvR3RrU2V0dGluZ3NNYW5hZ2VyLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuY3BwCmluZGV4IGM1MDJk
MmRjNTJlN2Y3ZDQ4ODlkZjI2ZWJiZjMzYWZjM2JjMTRiNjMuLjAwOWVmZThkZTg1Yzg4ZmFlYjVi
ZjM2MTRhNWViYjY1MjFlZTFjNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIFN0cmluZyBHdGtT
ZXR0aW5nc01hbmFnZXI6OnRoZW1lTmFtZSgpIGNvbnN0CiAgICAgaWYgKGF1dG8qIHRoZW1lTmFt
ZUVudiA9IGdfZ2V0ZW52KCJHVEtfVEhFTUUiKSkgewogICAgICAgICBTdHJpbmcgbmFtZSA9IFN0
cmluZzo6ZnJvbVVURjgodGhlbWVOYW1lRW52KTsKICAgICAgICAgaWYgKG5hbWUuZW5kc1dpdGgo
Ii1kYXJrIikgfHwgbmFtZS5lbmRzV2l0aCgiLURhcmsiKSB8fCBuYW1lLmVuZHNXaXRoKCI6ZGFy
ayIpKQotICAgICAgICAgICAgcmV0dXJuIG5hbWUuc3Vic3RyaW5nKDAsIG5hbWUubGVuZ3RoKCkg
LSA1KTsKKyAgICAgICAgICAgIHJldHVybiBuYW1lLmxlZnQobmFtZS5sZW5ndGgoKSAtIDUpOwog
ICAgICAgICByZXR1cm4gbmFtZTsKICAgICB9CiAKQEAgLTUxLDcgKzUxLDcgQEAgU3RyaW5nIEd0
a1NldHRpbmdzTWFuYWdlcjo6dGhlbWVOYW1lKCkgY29uc3QKICAgICBnX29iamVjdF9nZXQobV9z
ZXR0aW5ncywgImd0ay10aGVtZS1uYW1lIiwgJnRoZW1lTmFtZVNldHRpbmcub3V0UHRyKCksIG51
bGxwdHIpOwogICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh0aGVtZU5hbWVTZXR0
aW5nLmdldCgpKTsKICAgICBpZiAobmFtZS5lbmRzV2l0aCgiLWRhcmsiKSB8fCBuYW1lLmVuZHNX
aXRoKCItRGFyayIpKQotICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5n
dGgoKSAtIDUpOworICAgICAgICByZXR1cm4gbmFtZS5sZWZ0KG5hbWUubGVuZ3RoKCkgLSA1KTsK
ICAgICByZXR1cm4gbmFtZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9U
ZXh0Q2hlY2tlckd0ay5jcHAKaW5kZXggYmIwOTQ1ODkzNmM0NjY4MDQ0NjE5Zjc4YzZhYjE0ZjAy
YjVkNmIyMi4uMDM2YTY2M2IwYmJmZjFkZTY3MjIwMzEwZTQ0NjkxMmRmNDQxMTFmOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCkBAIC0yNzMs
NyArMjczLDcgQEAgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3VsdD4gVGV4dENoZWNrZXI6OmNoZWNr
VGV4dE9mUGFyYWdyYXBoKFNwZWxsRG9jdW1lbnRUYWcgc3AKICAgICAgICAgcGFyYWdyYXBoQ2hl
Y2tpbmdSZXN1bHQuYXBwZW5kKG1pc3NwZWxsaW5nUmVzdWx0KTsKICAgICAgICAgb2Zmc2V0ICs9
IG1pc3NwZWxsaW5nTG9jYXRpb24gKyBtaXNzcGVsbGluZ0xlbmd0aDsKICAgICAgICAgLy8gR2Vu
ZXJhbGx5LCB3ZSBlbmQgdXAgY2hlY2tpbmcgYXQgdGhlIHdvcmQgc2VwYXJhdG9yLCBtb3ZlIHRv
IHRoZSBhZGphY2VudCB3b3JkLgotICAgICAgICBvZmZzZXQgPSBuZXh0V29yZE9mZnNldCh0ZXh0
LnN1YnN0cmluZygwLCBsZW5ndGhTdHJpcCksIG9mZnNldCk7CisgICAgICAgIG9mZnNldCA9IG5l
eHRXb3JkT2Zmc2V0KHRleHQubGVmdChsZW5ndGhTdHJpcCksIG9mZnNldCk7CiAgICAgfQogICAg
IHJldHVybiBwYXJhZ3JhcGhDaGVja2luZ1Jlc3VsdDsKICNlbHNlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcAppbmRleCBlMzE4ODlmMzQ0
YzRhNjNkZjVlNWU2NTllMjQyMWY0YzkxMDQ4Y2M0Li4yM2IzZWNhNjQ3NWEwZjcwN2Q3ZjBkZDJl
MjY2ZmMyNWVkYzM1MjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4v
V2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9X
ZWJQcm9jZXNzUG9vbFdpbi5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIHZvaWQgaW5pdGlh
bGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcihTdHJpbmdWaWV3IGFkZHJlc3MpCiAgICAgaWYgKHBv
cyA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBob3N0ID0gYWRkcmVz
cy5zdWJzdHJpbmcoMCwgcG9zKTsKKyAgICBhdXRvIGhvc3QgPSBhZGRyZXNzLmxlZnQocG9zKTsK
ICAgICBhdXRvIHBvcnQgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KGFkZHJlc3Muc3Vic3RyaW5n
KHBvcyArIDEpKTsKICAgICBpZiAoIXBvcnQpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCmluZGV4IDVkNGVlYzVmZWQ4
YjM1NGMwZjFhNjc1ZDBjYjRkNDMyN2QxZDI3YmQuLjM2MzYxOTZjYjU2YWEyZTQzMGMzYTNiMDc0
MThlMjg0ZjkxZTc2MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9T
dG9yYWdlVHJhY2tlci5jcHAKKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3Jh
Z2VUcmFja2VyLmNwcApAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgU3RvcmFnZVRyYWNrZXI6OnN5
bmNGaWxlU3lzdGVtQW5kVHJhY2tlckRhdGFiYXNlKCkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGF1dG8gZmlsZVBhdGggPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQobV9zdG9yYWdlRGlyZWN0b3J5UGF0aCwgZmlsZU5hbWUpOwotICAgICAgICBTdHJpbmcg
b3JpZ2luSWRlbnRpZmllciA9IGZpbGVOYW1lLnN1YnN0cmluZygwLCBmaWxlTmFtZS5sZW5ndGgo
KSAtIGZpbGVFeHRlbnNpb24ubGVuZ3RoKCkpOworICAgICAgICBTdHJpbmcgb3JpZ2luSWRlbnRp
ZmllciA9IGZpbGVOYW1lLmxlZnQoZmlsZU5hbWUubGVuZ3RoKCkgLSBmaWxlRXh0ZW5zaW9uLmxl
bmd0aCgpKTsKICAgICAgICAgaWYgKCFvcmlnaW5TZXRDb3B5LmNvbnRhaW5zKG9yaWdpbklkZW50
aWZpZXIpKQogICAgICAgICAgICAgc3luY1NldE9yaWdpbkRldGFpbHMob3JpZ2luSWRlbnRpZmll
ciwgZmlsZVBhdGgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJW
aWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dl
YlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCmluZGV4IDNkYjI0ODhkNjBlYzQxYjA4MWY3
YTkxN2QwZTI2MWIyN2U2MjRhMjcuLjZmMWY5YTc5ZTJjYjlhZjA1NzU5ZDNlMTUzMDg0YWY4ODA0
Mjg2ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRN
TFJlcHJlc2VudGF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tCkBAIC0zNzUsOCArMzc1LDkgQEAgc3RhdGljIFJlZ3Vs
YXJFeHByZXNzaW9uKiByZWdFeHBGb3JMYWJlbHMoTlNBcnJheSAqbGFiZWxzKQogICAgICAgICAg
ICAgYm9vbCBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwogICAgICAgICAgICAgYm9v
bCBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChsYWJlbC5s
ZW5ndGgoKSkgewotICAgICAgICAgICAgICAgIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gd29y
ZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbC5zdWJzdHJpbmcoMCwgMSkpID49IDA7Ci0gICAgICAg
ICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChs
YWJlbC5zdWJzdHJpbmcobGFiZWwubGVuZ3RoKCkgLSAxLCAxKSkgPj0gMDsKKyAgICAgICAgICAg
ICAgICBTdHJpbmdWaWV3IGxhYmVsVmlldyB7IGxhYmVsIH07CisgICAgICAgICAgICAgICAgc3Rh
cnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsVmlldy5s
ZWZ0KDEpKSA+PSAwOworICAgICAgICAgICAgICAgIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IHdv
cmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWxWaWV3LnJpZ2h0KDEpKSA+PSAwOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCiAgICAgICAgICAgICAvLyBTZWFyY2ggZm9yIHdvcmQgYm91bmRh
cmllcyBvbmx5IGlmIGxhYmVsIHN0YXJ0cy9lbmRzIHdpdGggIndvcmQgY2hhcmFjdGVycyIuCmRp
ZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYWZhNzIy
YjA1NzdjZDljNTlkNDBhODZlNTg1Mzk2ODZkNjc2M2E3ZC4uMmZjM2NmYTFjZmVmZDFiODAzNDc3
MzBiYTUxODZiNTEwZGU1YTIzNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rv
b2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0byBzdWJzdHJpbmco
MCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5k
ZXJUcmVlLmNwcDoKKyAgICAgICAgKGZpbmRGb250RmFsbGJhY2spOgorICAgICAgICAqIFRlc3RX
ZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJ
OjppbnNlcnRUYWJBdExvY2F0aW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YkNvcmUvRmlsZU1vbml0b3IuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6cmVhZENvbnRl
bnRzT2ZGaWxlKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhl
YWRlckZpZWxkLmNwcDoKKyAgICAgICAgKGNhbm9uaWNhbGl6ZUhUVFBIZWFkZXIpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3Bw
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6aW5zZXJ0VGFiQXRMb2NhdGlvbik6CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
OgorICAgICAgICAoV1RSOjpwYXRoU3VpdGFibGVGb3JUZXN0UmVzdWx0KToKKyAgICAgICAgKFdU
Ujo6ZHVtcEZyYW1lVGV4dCk6CisgICAgICAgIChXVFI6OnN0cmlwVHJhaWxpbmdTcGFjZXNBZGRO
ZXdsaW5lKToKKyAgICAgICAgKFdUUjo6SW5qZWN0ZWRCdW5kbGVQYWdlOjp3aWxsQWRkTWVzc2Fn
ZVRvQ29uc29sZSk6CisKIDIwMjItMDQtMTMgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtnaXQtd2Via2l0XSBGb3VuZCBicmFuY2ggbmFtZSBpbnN0ZWFk
IG9mIGhhc2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVy
VHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmlu
ZGV4IDM2YWU4ZjU3M2M0MjhhYWU0ZDVkNWZiMmE3ZTRhMjkzN2U0YmNjODcuLjU0NGJmNDc0YmJi
NmRmYmFmNDM3ZGI2MGUzODRhN2EzYTY5MzkyNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTExNCwyMyArMTExNCwyNCBAQCBzdGF0aWMgU3Ry
aW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogICAgICAgICByZXR1
cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBwYXRoVG9DaGVjayA9IGZ1bGxQYXRoOwor
ICAgIFN0cmluZ1ZpZXcgcGF0aFRvQ2hlY2tWaWV3IHsgcGF0aFRvQ2hlY2sgfTsKIAogICAgIHN0
YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMgPSAiTGF5b3V0VGVzdHMiX3M7CiAKICAgICAv
LyBGaW5kIHRoZSBsYXlvdXQgdGVzdCByb290IG9uIHRoZSBjdXJyZW50IHBhdGg6Ci0gICAgc2l6
ZV90IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2suZmluZChsYXlvdXRUZXN0cyk7CisgICAgc2l6ZV90
IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2tWaWV3LmZpbmQobGF5b3V0VGVzdHMpOwogICAgIGlmIChX
VEY6Om5vdEZvdW5kID09IGxvY2F0aW9uKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsK
IAotICAgIFN0cmluZyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2suc3Vic3RyaW5nKGxvY2F0aW9u
ICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKTsKLSAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9M
b2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9DaGVjay5z
dWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZv
cm1cXHdpbiJfcyk7CisgICAgU3RyaW5nVmlldyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2tWaWV3
LnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSk7CisgICAgU3Ry
aW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21w
b25lbnQocGF0aFRvQ2hlY2tWaWV3LmxlZnQobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgo
KSArIDEpLCAicGxhdGZvcm1cXHdpbiJfcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwb3NzaWJs
ZVBhdGhzOwogICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBz
aXplX3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAg
ICAgd2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5v
dEZvdW5kKSB7Ci0gICAgICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBu
ZXh0Q2FuZGlkYXRlRW5kKTsKKyAgICAgICAgcGF0aFRvVGVzdCA9IHBhdGhUb1Rlc3QubGVmdChu
ZXh0Q2FuZGlkYXRlRW5kKTsKICAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5c3Rl
bTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rl
c3QpKTsKICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQo
J1xcJyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5j
cHAKaW5kZXggOTBmZmM5OTQ0ZTZiMjViZDQ1OTg1OTZmZGQ4NjU5NGIxYjNhZGY1OS4uNTJlMzk3
ZDEwYTkzNmUwMGVlMjcyMThiOTdlNDQ4NGUxNGNkMjE5NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgZXEoVCYm
IHMxLCBVJiYgczIpCiBzdGF0aWMgU3RyaW5nIGluc2VydFRhYkF0TG9jYXRpb24oU3RyaW5nVmll
dyBzdHJpbmcsIHNpemVfdCBsb2NhdGlvbikKIHsKICAgICBBU1NFUlQobG9jYXRpb24gPD0gc3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhzdHJpbmcuc3Vic3RyaW5nKDAs
IGxvY2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOworICAgIHJldHVy
biBtYWtlU3RyaW5nKHN0cmluZy5sZWZ0KGxvY2F0aW9uKSwgJ1x0Jywgc3RyaW5nLnN1YnN0cmlu
Zyhsb2NhdGlvbikpOwogfQogCiBzdGF0aWMgRXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFydHMoU3Ry
aW5nVmlldyB1cmxTdHJpbmdXaXRoVGFiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggOWUzNWQ5NWJiNTFhMDliMDA4NTM0ZDcz
MzVkODI4YTAwMGVjMmM0Mi4uZmFmYWIxY2FlZmI2MzRmMzE2ZmM0Mzg4YzVkODkyZTMxODExNTgz
ZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25p
dG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0
b3IuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFN0cmluZyByZWFkQ29udGVudHNPZkZp
bGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiAgICAgU3RyaW5nIHJlc3VsdChzdGF0aWNfY2FzdDxj
b25zdCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGlmIChy
ZXN1bHQuZW5kc1dpdGgoIlxuIikpCi0gICAgICAgIHJldHVybiByZXN1bHQuc3Vic3RyaW5nKDAs
IHJlc3VsdC5sZW5ndGgoKSAtIDEpOworICAgICAgICByZXR1cm4gcmVzdWx0LmxlZnQocmVzdWx0
Lmxlbmd0aCgpIC0gMSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5jcHAgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcAppbmRleCA3
MjNkNTg4YWE0OWM4N2UzNjY0YjQ2ZjMxODBkZmQ3MDdmYzI3NWVhLi4wNDk5ZTFhNDIxZWM3MWVl
ODU5NmE1YTliNWU0NTU1ZDhkMDk4YjgwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcApAQCAtMzMsNyArMzMsNyBAQCBz
dGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZUhUVFBIZWFkZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CiAgICAgc2l6ZV90IGNvbG9uTG9jYXRpb24gPSBzdHJpbmcuZmluZCgnOicpOwogICAgIGlmIChj
b2xvbkxvY2F0aW9uID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8g
ZmllbGQgPSBXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShzdHJpbmcuc3Vic3RyaW5n
KDAsIGNvbG9uTG9jYXRpb24pLCBzdHJpbmcuc3Vic3RyaW5nKGNvbG9uTG9jYXRpb24gKyAxKSk7
CisgICAgYXV0byBmaWVsZCA9IFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKHN0cmlu
Zy5sZWZ0KGNvbG9uTG9jYXRpb24pLCBzdHJpbmcuc3Vic3RyaW5nKGNvbG9uTG9jYXRpb24gKyAx
KSk7CiAgICAgaWYgKCFmaWVsZCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gbWFr
ZVN0cmluZyhmaWVsZC0+bmFtZSgpLCAiOiAiLCBmaWVsZC0+dmFsdWUoKSk7CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5n
LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5j
b2RpbmcuY3BwCmluZGV4IDRkMjdmNGZkNGI1NTIyODc0M2QzZTJmN2NjOTdmYmM0M2Y0NGE4ZWIu
LmY1ODU5OTE4YzhhNWU4MDkwNDVjYmMwNWU1YWE5ZGI1NTQxYjc5YTEgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5j
b2RpbmcuY3BwCkBAIC03MSwxMCArNzEsMTAgQEAgYm9vbCBlcShUJiYgczEsIFUmJiBzMikKICAg
ICByZXR1cm4gczEudXRmOCgpID09IHMyLnV0ZjgoKTsKIH0KIAotc3RhdGljIFN0cmluZyBpbnNl
cnRUYWJBdExvY2F0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3QgbG9jYXRpb24pCitz
dGF0aWMgU3RyaW5nIGluc2VydFRhYkF0TG9jYXRpb24oU3RyaW5nVmlldyBzdHJpbmcsIHNpemVf
dCBsb2NhdGlvbikKIHsKICAgICBBU1NFUlQobG9jYXRpb24gPD0gc3RyaW5nLmxlbmd0aCgpKTsK
LSAgICByZXR1cm4gbWFrZVN0cmluZyhzdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKSwgIlx0
Iiwgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHN0
cmluZy5sZWZ0KGxvY2F0aW9uKSwgJ1x0Jywgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOwog
fQogCiBzdGF0aWMgRXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFydHMoY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmdXaXRoVGFiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGQwMDZiNzg5Y2MxMWNl
NWJiOTRiNDMzMWQzOWM5ZjYwNDFjYjZlNzQuLjlmMDEyOWM3ZWE5MGZhNmJjYzU4YThhNDZkYzVh
N2I0Y2FhYjVhNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBA
QCBzdGF0aWMgaW5saW5lIFdURjo6U3RyaW5nIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tV
UkxSZWYgZmlsZVVybCkKIAogICAgIFN0cmluZyBwYXRoU3RyaW5nID0gdG9XVEZTdHJpbmcoYWRv
cHRXSyhXS1VSTENvcHlQYXRoKGZpbGVVcmwpKSk7CiAgICAgU3RyaW5nIG1haW5GcmFtZVVSTFBh
dGhTdHJpbmcgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVBhdGgobWFpbkZyYW1lVVJM
LmdldCgpKSkpOwotICAgIFN0cmluZyBiYXNlUGF0aCA9IG1haW5GcmFtZVVSTFBhdGhTdHJpbmcu
c3Vic3RyaW5nKDAsIG1haW5GcmFtZVVSTFBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcikg
KyAxKTsKKyAgICBhdXRvIGJhc2VQYXRoID0gU3RyaW5nVmlldyhtYWluRnJhbWVVUkxQYXRoU3Ry
aW5nKS5sZWZ0KG1haW5GcmFtZVVSTFBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcikgKyAx
KTsKICAgICAKICAgICBpZiAoIWJhc2VQYXRoLmlzRW1wdHkoKSAmJiBwYXRoU3RyaW5nLnN0YXJ0
c1dpdGgoYmFzZVBhdGgpKQogICAgICAgICByZXR1cm4gcGF0aFN0cmluZy5zdWJzdHJpbmcoYmFz
ZVBhdGgubGVuZ3RoKCkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFt
ZVRleHQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKICAg
ICBhdXRvIHRleHQgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5SW5uZXJU
ZXh0KGZyYW1lKSkpOwogICAgIGZvciAoYXV0byBsaW5lIDogU3RyaW5nVmlldyh0ZXh0KS5zcGxp
dEFsbG93aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CiAgICAgICAgIHdoaWxlIChsaW5lLmVuZHNX
aXRoKCcgJykpCi0gICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5n
dGgoKSAtIDEpOworICAgICAgICAgICAgbGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0g
MSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOwogICAgIH0KIH0KQEAgLTEz
MDAsNyArMTMwMCw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBzdHJpcFRyYWlsaW5nU3BhY2VzQWRk
TmV3bGluZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQogICAgIFN0cmluZ0J1aWxkZXIgYnVp
bGRlcjsKICAgICBmb3IgKGF1dG8gbGluZSA6IFN0cmluZ1ZpZXcoc3RyaW5nKS5zcGxpdEFsbG93
aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CiAgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcg
JykpCi0gICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAt
IDEpOworICAgICAgICAgICAgbGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOwogICAgIH0KICAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOwpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgc3RhdGljIFdURjo6U3RyaW5n
IGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKGNvbnN0IFdURjo6
U3RyaW4KICAgICByZXR1cm4gKHJlc3VsdC5pc0VtcHR5KCkgfHwgcmVzdWx0LnN0YXJ0c1dpdGgo
J1xuJykpID8gcmVzdWx0IDogbWFrZVN0cmluZygnICcsIHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBX
VEY6OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RGOjpTdHJpbmcmIHBh
dGgpCitzdGF0aWMgU3RyaW5nVmlldyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoU3RyaW5nVmll
dyBwYXRoKQogewogICAgIGF1dG8gcG9zID0gcGF0aC5maW5kKCJmaWxlOi8vIik7CiAgICAgQVNT
RVJUKFdURjo6bm90Rm91bmQgIT0gcG9zKTsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHN0YXRpYyBX
VEY6OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RGOjpTdHJpbmcmIHBh
dGgpCiAKICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGRlbGltaXRlcgogICAgIGlmICh0bXBQ
YXRoW3RtcFBhdGgubGVuZ3RoKCkgLSAxXSA9PSAnLycpCi0gICAgICAgIHRtcFBhdGgucmVtb3Zl
KHRtcFBhdGgubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgdG1wUGF0aCA9IHRtcFBhdGgubGVmdCh0
bXBQYXRoLmxlbmd0aCgpIC0gMSk7CiAKICAgICBwb3MgPSB0bXBQYXRoLnJldmVyc2VGaW5kKCcv
Jyk7CiAgICAgaWYgKFdURjo6bm90Rm91bmQgIT0gcG9zKQpAQCAtMTM0NCwxMCArMTM0NCwxMSBA
QCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJp
bmdSZWYgbWVzc2FnZSkKICAgICAgICAgbWVzc2FnZVN0cmluZy50cnVuY2F0ZShudWxsQ2hhclBv
cyk7CiAKICAgICBzaXplX3QgZmlsZVByb3RvY29sU3RhcnQgPSBtZXNzYWdlU3RyaW5nLmZpbmQo
ImZpbGU6Ly8iKTsKLSAgICBpZiAoZmlsZVByb3RvY29sU3RhcnQgIT0gV1RGOjpub3RGb3VuZCkK
KyAgICBpZiAoZmlsZVByb3RvY29sU3RhcnQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBT
dHJpbmdWaWV3IG1lc3NhZ2VTdHJpbmdWaWV3IHsgbWVzc2FnZVN0cmluZyB9OwogICAgICAgICAv
LyBGSVhNRTogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGFkZGl0aW9uYWwgdGV4dCBh
ZnRlciB1cmwgbm9yIG11bHRpcGxlIHVybHMuIFRoaXMgbWF0Y2hlcyBEdW1wUmVuZGVyVHJlZSBp
bXBsZW1lbnRhdGlvbi4KLSAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VTdHJpbmcuc3Vi
c3RyaW5nKDAsIGZpbGVQcm90b2NvbFN0YXJ0KSArIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudCht
ZXNzYWdlU3RyaW5nLnN1YnN0cmluZyhmaWxlUHJvdG9jb2xTdGFydCkpOwotCisgICAgICAgIG1l
c3NhZ2VTdHJpbmcgPSBtYWtlU3RyaW5nKG1lc3NhZ2VTdHJpbmdWaWV3LmxlZnQoZmlsZVByb3Rv
Y29sU3RhcnQpLCBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQobWVzc2FnZVN0cmluZ1ZpZXcuc3Vi
c3RyaW5nKGZpbGVQcm90b2NvbFN0YXJ0KSkpOworICAgIH0KICAgICBtZXNzYWdlU3RyaW5nID0g
bWFrZVN0cmluZygiQ09OU09MRSBNRVNTQUdFOiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxp
bmdTcGFjZXNBZGROZXdsaW5lKG1lc3NhZ2VTdHJpbmcpKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5k
bGUuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpCiAgICAgICAgIGluamVjdGVkQnVuZGxlLmR1
bXBUb1N0ZEVycihtZXNzYWdlU3RyaW5nKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457586</attachid>
            <date>2022-04-13 19:08:53 -0700</date>
            <delta_ts>2022-04-13 19:46:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239306-20220413190851.patch</filename>
            <type>text/plain</type>
            <size>95328</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OWMxYTI5ZjAyZTE5MzBlMDIzYmIwMjM1YzU4ZGQ4NjY0ZDEzMmI3Li5lODJhOTQzYzZlNDliZDFl
ZjkwZjg3NDg4NWM2NDBlYzg4NmFjOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUg
Y29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjbGFtcEVycm9yTWVzc2FnZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6d2Vs
bEZvcm1lZFVuaXRJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpyZXNvbHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxP
YmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmJlc3RBdmFpbGFibGVMb2NhbGUpOgorCiAy
MDIyLTA0LTEzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AcmVkaGF0LmNvbT4KIAog
ICAgICAgICBHQ0MgMTIgLVdkYW5nbGluZy1wb2ludGVyIHdhcm5pbmcgc3BhbSBmcm9tIEFic3Ry
YWN0U2xvdFZpc2l0b3JJbmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOThkMzZlMDk0NzQ1NTEyMDE0ZjRmN2IwZjcx
YjRhYjRlY2JmNmMyNi4uODQyNTA0MzFmOWE0YmI4M2ZmOTM1YjBjOGJiNjFiNWUzZjQ5YjgxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGgg
dGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjpVUkw6OnByb3RvY29s
IGNvbnN0KToKKyAgICAgICAgKFdURjo6VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KToK
KyAgICAgICAgKFdURjo6VVJMOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXVEY6OlVSTDo6c2V0
SG9zdCk6CisgICAgICAgIChXVEY6OlVSTDo6c2V0SG9zdEFuZFBvcnQpOgorICAgICAgICAoV1RG
OjpVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6CisgICAgICAgICogd3RmL1VS
TFBhcnNlci5jcHA6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6YWRkTm9uU3BlY2lhbERvdFNs
YXNoKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKToKKyAg
ICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIChXVEY6OlVVSUQ6OnBhcnNlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omluc2Vy
dCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMjItMDQtMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIHVudXNlZCBBdG9tU3Ry
aW5nKGNvbnN0IExDaGFyKikgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYzE4MmFlZjhlMmIx
MjA4MWRkNzQ3M2Y4OGIwODY4Nzc3MTZkZWFmLi42ODBjMTAxNGQyZWYxZDE1ZTQ3ZWY1NjcyOTIx
MTFhMmJmMDA2YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMxIEBACisyMDIyLTA0LTEzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0
byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vi
c3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpLiBBbHNvIHVzZSBTdHJp
bmdWaWV3IGluIG1vcmUgY2FzZXMKKyAgICAgICAgZm9yIHBlcmZvcm1hbmNlLgorCisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZU1JTUVUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCS2V5UGF0aExleGVyOjpsZXhJZGVudGlmaWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91
bGRJZ25vcmVJY2VDYW5kaWRhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpwbGF5TmV4
dFRvbmUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ck1lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFFbmRw
b2ludDo6YWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9SdHBDb2RlY0NhcGFiaWxpdHkpOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Z
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc0Fu
ZENyZWF0ZVlvdVR1YmVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxh
Y2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKToKKyAgICAgICAgKiBkaXNwbGF5L2Nz
cy9EaXNwbGF5VGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUZXh0Qm94
OjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZSk6CisgICAgICAg
ICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6c3BsaXRUZXh0KToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3Vm
Zml4TGVuZ3RoRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRXb3JkQm91bmRhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFByZXNlcnZlTVNPTGlzdHMpOgor
ICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRh
dGVMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V1RGOjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVybEZvckxvZ2dpbmdUcmFjayk6Cisg
ICAgICAgICogaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVS
TERlY29tcG9zaXRpb246OnNldEhvc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQUmVmcmVzaEludGVybmFs
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlRGVzY3JpcHRvcnMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVy
bmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OmNoYXJhY3RlclByZWRpY2F0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVTaGVldEhhbmRsZXI6Om9ic2VydmVDb21tZW50KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91
dHB1dExheW91dEJveCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYW5pZmVzdFBhdGgpOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTnVtYmVyQW5kVW5pdCk6
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWdF
eHBGb3JMYWJlbHMpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlU2hhcmVkU3RyaW5nSGFzaElubGluZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNlbnRl
clRydW5jYXRlVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRUcnVuY2F0ZVRvQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5V
UkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9ybU1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRG
b250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9Vc2VyQWdlbnRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VOYW1lRm9yVXNlckFn
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0cmltVG9OZXh0U2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdGVjdGlvblNwYWNlTWFwS2V5RnJv
bVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6ZmluZERlZmF1bHRQ
cm90ZWN0aW9uU3BhY2VGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kZVRh
c2s6OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTdHJ1Y3R1cmVkRmllbGRWYWx1ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
dHJpZXZlS2V5VmFsdWVQYWlycyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OnBhcnNlQ29va2llSGVh
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OmRlZmF1bHRQYXRoRm9yVVJMKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpm
aWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2Jh
bEltYWdlRmlsZURlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XZWJDb3JlVGV4
dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvRHJhd1RleHRBdFBvaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
bWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFzZSk6CisgICAgICAg
ICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjppc1ZhbGlk
IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyk6
CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZSk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29uc3QpOgorCiAyMDIyLTA0
LTEzICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVd
IEZpeCBwdWJsaWMgd2F0Y2hPUyB3b3Jrc3BhY2UgYnVpbGQgYnkgdXBkYXRpbmcgc2NoZW1lIGFu
ZCBidWlsZCBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA3NDgyYWUyMzQzNGQwM2JhMThjZWY5
MjIzYTc2ODAwOGI4MTM1NWY1Li4xNDFhZjllNDMzZWNlZjIxNThlN2M4ODZiOGIyMmYwZGQ2ZGM0
NWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0byBzdWJz
dHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5jcHA6CisgICAg
ICAgIChXZWJEcml2ZXI6OkNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQpOgorCiAyMDIyLTA0
LTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRml4
IFBsYXlTdGF0aW9uIGJ1aWxkIGFmdGVyIHIyOTI2OTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGJjMjc0YzZkMDkw
NTJkNGJiNTc5NjIzMDBkZDYwYzRiNjc3NzIwNy4uNGY4MmRmMjU0NTRhMzFhZTFiMjFjZWMxYTU1
OGVhMGQzMjQzMDJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMi0wNC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8g
c3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjp0cmF2ZXJzZVJlY29yZHNGaWxlcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6ZmlsZU5hbWVUb09yaWdpbik6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdLU3RyaW5nR2V0Q2hhcmFjdGVycyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5w
dXRNZXRob2RGaWx0ZXI6Om5vdGlmeVN1cnJvdW5kaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdz
TWFuYWdlcjo6dGhlbWVOYW1lIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1RleHRD
aGVja2VyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9m
UGFyYWdyYXBoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcik6CisK
IDIwMjItMDQtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGp1c3Qgd2hlbiBfc2V0UHJpdmFjeVByb3h5RmFpbENsb3NlZEZvclVucmVh
Y2hhYmxlTm9uTWFpbkhvc3RzIGlzIGNhbGxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA3ZTc2
MmVlOWEwNTcwNTY1MWQ1ODJkNjQ1OWM0NDUzOGVhM2Q1MjI0Li5mNmE0Y2FhOTkxYzgzZTVlYTFh
MTU3OTgwNjcxNDI0M2M1ZjY3MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVwbGFjZSBjYWxscyB0byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNl
IGxlZnQoeCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFj
a2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6CisKIDIwMjItMDQtMTIgIEZ1
amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNh
aXJvXSBXRUJLSVRfTElCUkFSSUVTIGVudiB2YXIgc2hvdWxkIGJlIGN1c3RvbWl6YWJsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDFjYjllMmEwYzhkOWMxZDc0ODI3NGExNzQ1Yzdi
OTI4MWZmZTY5MzAuLjBjN2M4ZmEzNWY4ZDhjNzI2ZmY3MzNjYzYyZWY1ODE3YTRmMDFmNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0xMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMg
dG8gc3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tOgorICAgICAgICAocmVnRXhwRm9yTGFiZWxzKToKKwogMjAyMi0wNC0x
MyAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgW1hjb2RlXSBG
aXggcHVibGljIHdhdGNoT1Mgd29ya3NwYWNlIGJ1aWxkIGJ5IHVwZGF0aW5nIHNjaGVtZSBhbmQg
YnVpbGQgc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdEFyZ3VtZW50cy5oCmluZGV4IDc3YTA4MTkxNmY2MWMyZjliZDcxNmFjODNmMzA5ZGRkYTdl
ODMyNzQuLjIyZGE3ZGQxOTc5MTg5NzA3MTIxMjNkYzU1MTk0MjgxZjI5ZjRjOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaApAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgbWF4TWVzc2Fn
ZUxlbmd0aCA9IDEwMDAwOwogICAgICAgICBpZiAobWVzc2FnZS5sZW5ndGgoKSA8PSBtYXhNZXNz
YWdlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7Ci0gICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKG1lc3NhZ2Uuc3Vic3RyaW5nKDAsIG1heE1lc3NhZ2VMZW5ndGgpLCAiLi4uIl9z
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtZXNzYWdlKS5sZWZ0KG1h
eE1lc3NhZ2VMZW5ndGgpLCAiLi4uIl9zKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGRj
MTYwOTc5ZjlkODczNjU5ZmJmOWM4MGRiNjMzMDZhZmQ1ZTk0OTEuLjE2MWYzZTY5ZDQzYjg5ZDgz
ZjU3ZmM3ZmMxZjMxYzBkMjJhMDQ4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBT
dHJpbmdWaWV3IGNsYW1wRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdl
KQogewogICAgIC8vIEhvcGVmdWxseSB0aGlzIGlzIHN1ZmZpY2llbnRseSBsb25nLiBOb3RlLCB0
aGlzIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBub3QgdGhlIG51bWJlciBvZiBieXRlcyB1
c2VkLgogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5ndGggPSAyICogS0I7Ci0gICAgcmV0
dXJuIFN0cmluZ1ZpZXcob3JpZ2luYWxNZXNzYWdlKS5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKTsK
KyAgICByZXR1cm4gU3RyaW5nVmlldyhvcmlnaW5hbE1lc3NhZ2UpLmxlZnQobWF4TGVuZ3RoKTsK
IH0KIAogc3RhdGljIFN0cmluZyBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgU3RyaW5nVmlldyBzb3VyY2VUZXh0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCA4
M2U3ZGFjNmZiYmI1ZjhiNGY3MzczYTEzYWZmYWQ1NzVjZDNkOTE4Li4zMjgwZGFjMmQ3NWRkNDgz
NjBjZjhjMzQzYjJkZDU4ZjJiNzg5MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIo
U3RyaW5nVmlldyB1bml0SWRlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVy
YXRvcikgaXMgZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgotICAgIGF1dG8gbnVtZXJhdG9yID0g
dW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAgICBhdXRvIG51bWVyYXRv
ciA9IHVuaXRJZGVudGlmaWVyLmxlZnQocG9zaXRpb24pOwogICAgIGF1dG8gbnVtZXJhdG9yVW5p
dCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpOwogICAgIGlmICgh
bnVtZXJhdG9yVW5pdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMjlkNmY5MzVmMDI3YjIw
MjcwZTkxZmViOWRiNzZkYTU0Y2E0ZjE2MS4uOWQ2YWI1NmEyY2Y1NmNjNzRmNGFhNjljMTllYTY5
ZWFlZjViZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKQEAgLTk1Nyw3ICs5NTcsNyBAQCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IExvY2FsZVNldCYgYXZhaQogCiAgICAg
aWYgKHN1cHBvcnRlZEV4dGVuc2lvbi5sZW5ndGgoKSA+IDIpIHsKICAgICAgICAgU3RyaW5nVmll
dyBmb3VuZExvY2FsZVZpZXcoZm91bmRMb2NhbGUpOwotICAgICAgICBmb3VuZExvY2FsZSA9IG1h
a2VTdHJpbmcoZm91bmRMb2NhbGVWaWV3LnN1YnN0cmluZygwLCBtYXRjaGVyUmVzdWx0LmV4dGVu
c2lvbkluZGV4KSwgc3VwcG9ydGVkRXh0ZW5zaW9uLCBmb3VuZExvY2FsZVZpZXcuc3Vic3RyaW5n
KG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uSW5kZXgpKTsKKyAgICAgICAgZm91bmRMb2NhbGUgPSBt
YWtlU3RyaW5nKGZvdW5kTG9jYWxlVmlldy5sZWZ0KG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uSW5k
ZXgpLCBzdXBwb3J0ZWRFeHRlbnNpb24sIGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmcobWF0Y2hl
clJlc3VsdC5leHRlbnNpb25JbmRleCkpOwogICAgIH0KIAogICAgIHJlc29sdmVkLmxvY2FsZSA9
IFdURk1vdmUoZm91bmRMb2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggNDFjMmJmZGY2ZWU1MTVjMjM0ZGNiY2U2MGNk
YjMzMDNlYWIzMGFmZS4uZGM1NzhlMTliZDU1MjBlYzc0ZTdiYzNiMTMyMzUwOWExMmE5ZjJjZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5l
cy5oCkBAIC01OCw3ICs1OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gU3RyaW5n
IGJlc3RBdmFpbGFibGVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUsIFByCiAgICAgICAgIGlm
IChwb3MgPj0gMiAmJiBjYW5kaWRhdGVbcG9zIC0gMl0gPT0gJy0nKQogICAgICAgICAgICAgcG9z
IC09IDI7CiAKLSAgICAgICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlLnN1YnN0cmluZygwLCBwb3Mp
OworICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUubGVmdChwb3MpOwogICAgIH0KIAogICAg
IHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDJjMjIxZjRlYjE5OGViMTdlNGZhOTBmZDIzOWQ0
ODhlNTRlYmVhZGIuLjU3NjhlMzg4NzgxODc0NmU3NWNkYjQ1ZWI2NWQzMzg1ODE3ODdiMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJM
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0
CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKKyAgICByZXR1
cm4gU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3NjaGVtZUVuZCk7CiB9CiAKIFN0cmluZ1Zp
ZXcgVVJMOjpob3N0KCkgY29uc3QKQEAgLTE2MiwxMCArMTYyLDEwIEBAIFN0cmluZyBVUkw6Omhv
c3RBbmRQb3J0KCkgY29uc3QKIFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25z
dAogewogICAgIGlmICghaGFzQ3JlZGVudGlhbHMoKSkKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5n
LnN1YnN0cmluZygwLCBwYXRoU3RhcnQoKSk7CisgICAgICAgIHJldHVybiBtX3N0cmluZy5sZWZ0
KHBhdGhTdGFydCgpKTsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGhvc3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgpKQog
ICAgICk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgU3RyaW5nVmlldyBVUkw6OnBhdGgoKSBjb25z
dAogYm9vbCBVUkw6OnNldFByb3RvY29sKFN0cmluZ1ZpZXcgbmV3UHJvdG9jb2wpCiB7CiAgICAg
Ly8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4K
LSAgICBhdXRvIG5ld1Byb3RvY29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5l
d1Byb3RvY29sLmZpbmQoJzonKSk7CisgICAgYXV0byBuZXdQcm90b2NvbFByZWZpeCA9IG5ld1By
b3RvY29sLmxlZnQobmV3UHJvdG9jb2wuZmluZCgnOicpKTsKICAgICBhdXRvIG5ld1Byb3RvY29s
Q2Fub25pY2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJv
dG9jb2xQcmVmaXgpOwogICAgIGlmICghbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBVUkw6OnNldEhvc3QoU3Ry
aW5nVmlldyBuZXdIb3N0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBpbmRleCA9
IG5ld0hvc3QuZmluZChoYXNTcGVjaWFsU2NoZW1lKCkgPyBzbGFzaEhhc2hPclF1ZXN0aW9uTWFy
ayA6IGZvcndhcmRTbGFzaEhhc2hPclF1ZXN0aW9uTWFyayk7IGluZGV4ICE9IG5vdEZvdW5kKQot
ICAgICAgICBuZXdIb3N0ID0gbmV3SG9zdC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICBu
ZXdIb3N0ID0gbmV3SG9zdC5sZWZ0KGluZGV4KTsKIAogICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBl
bmNvZGVkSG9zdE5hbWU7CiAgICAgaWYgKGhhc1NwZWNpYWxTY2hlbWUoKSAmJiAhYXBwZW5kRW5j
b2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgbmV3SG9zdCkpCkBAIC01MDAsNyArNTAwLDcg
QEAgdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KFN0cmluZ1ZpZXcgaG9zdEFuZFBvcnQpCiAgICAg
YXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUucmV2ZXJzZUZpbmQoJzonKTsKICAgICBpZiAoY29s
b25JbmRleCAhPSBub3RGb3VuZCkgewogICAgICAgICBwb3J0U3RyaW5nID0gaG9zdE5hbWUuc3Vi
c3RyaW5nKGNvbG9uSW5kZXggKyAxKTsKLSAgICAgICAgaG9zdE5hbWUgPSBob3N0TmFtZS5zdWJz
dHJpbmcoMCwgY29sb25JbmRleCk7CisgICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUubGVmdChj
b2xvbkluZGV4KTsKICAgICAgICAgLy8gTXVsdGlwbGUgY29sb25zIGFyZSBhY2NlcHRhYmxlIG9u
bHkgaW4gY2FzZSBvZiBJUHY2LgogICAgICAgICBpZiAoaG9zdE5hbWUuY29udGFpbnMoJzonKSAm
JiAhaG9zdE5hbWUuc3RhcnRzV2l0aCgnWycpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODM3
LDcgKzgzNyw3IEBAIFN0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0
CiAgICAgICAgIHJldHVybiBtX3N0cmluZzsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCwgbV9xdWVyeUVuZCAtIGVuZCkKICAgICAp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggZmZkYzhkMzhmZWI1ZGQxMWU2Njk3NTA4YzI4ZGI0
ODFjZDNmMDFkOS4uMTFkYWQxZTEyMjdhZTk0OTM5YTU1ZGE3NTRkMGEyYWY1NGFjNmVkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9VUkxQYXJzZXIuY3BwCkBAIC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFVSTFBhcnNlcjo6YWRk
Tm9uU3BlY2lhbERvdFNsYXNoKCkKIHsKICAgICBhdXRvIG9sZFBhdGhTdGFydCA9IG1fdXJsLm1f
aG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKICAgICBhdXRvJiBvbGRTdHJpbmcgPSBtX3Vy
bC5tX3N0cmluZzsKLSAgICBtX3VybC5tX3N0cmluZyA9IG1ha2VTdHJpbmcob2xkU3RyaW5nLnN1
YnN0cmluZygwLCBvbGRQYXRoU3RhcnQgKyAxKSwgIi4vIiwgb2xkU3RyaW5nLnN1YnN0cmluZyhv
bGRQYXRoU3RhcnQgKyAxKSk7CisgICAgbV91cmwubV9zdHJpbmcgPSBtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcob2xkU3RyaW5nKS5sZWZ0KG9sZFBhdGhTdGFydCArIDEpLCAiLi8iLCBTdHJpbmdWaWV3
KG9sZFN0cmluZykuc3Vic3RyaW5nKG9sZFBhdGhTdGFydCArIDEpKTsKICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCArPSAyOwogICAgIG1fdXJsLm1fcGF0aEVuZCArPSAyOwogICAgIG1f
dXJsLm1fcXVlcnlFbmQgKz0gMjsKQEAgLTI4OTEsNyArMjg5MSw3IEBAIGF1dG8gVVJMUGFyc2Vy
OjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRGb3Jt
CiAgICAgICAgICAgICBpZiAobmFtZSkKICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsg
bmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJ
bmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAgICAgICAgICAgYXV0byBu
YW1lID0gZm9ybVVSTERlY29kZShieXRlcy5sZWZ0KGVxdWFsSW5kZXgpLnRvU3RyaW5nKCkucmVw
bGFjZSgnKycsIDB4MjApKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBmb3JtVVJMRGVjb2Rl
KGJ5dGVzLnN1YnN0cmluZyhlcXVhbEluZGV4ICsgMSkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywg
MHgyMCkpOwogICAgICAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUpCiAgICAgICAgICAgICAgICAg
b3V0cHV0LmFwcGVuZCh7IG5hbWUudmFsdWUoKSwgdmFsdWUudmFsdWUoKSB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKaW5k
ZXggNGI4OTAwMDQ3YmU5YjU2YjZhNmVjMTZlMTM5MTQ1NjZlZWZkOTFjMC4uYTgwMTMwMDQ4MDcw
ZjE2MjVmNDgwNjU2NGU0M2RlYWMyNjVkNGJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTExMyw3ICsxMTMsNyBA
QCBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmluZ1ZpZXcgdmFsdWUpCiAgICAg
aWYgKHZhbHVlWzBdID09ICcrJyB8fCB2YWx1ZVs5XSA9PSAnKycgIHx8IHZhbHVlWzE5XSA9PSAn
KycgfHwgdmFsdWVbMjRdID09ICcrJykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8g
Zmlyc3RWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4odmFsdWUuc3Vic3RyaW5nKDAsIDgp
LCAxNik7CisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1
ZS5sZWZ0KDgpLCAxNik7CiAgICAgaWYgKCFmaXJzdFZhbHVlKQogICAgICAgICByZXR1cm4geyB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggZDc3N2E5NzljODQ1ZWMxMjlmNGZm
YTVlMWRlMjExODNhYmM2NTJjOC4uYTE2NzNhNjNlOTc3NDQyMjVkMDJkZWI5OWIyNDMyODczYjM0
ZjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMTc3LDE0ICsxNzcsMTQgQEAg
dm9pZCBTdHJpbmc6Omluc2VydChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgcG9zaXRp
b24pCiAgICAgaWYgKGlzOEJpdCgpICYmIHN0cmluZy5pczhCaXQoKSkgewogICAgICAgICBMQ2hh
ciogZGF0YTsKICAgICAgICAgYXV0byBuZXdTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGxlbmd0aCgpICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwotICAgICAgICBTdHJp
bmdWaWV3KCptX2ltcGwpLnN1YnN0cmluZygwLCBwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQoZGF0YSk7CisgICAgICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkubGVmdChwb3NpdGlv
bikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSk7CiAgICAgICAgIFN0cmluZ1ZpZXco
c3RyaW5nKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhICsgcG9zaXRpb24pOwogICAg
ICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLnN1YnN0cmluZyhwb3NpdGlvbikuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQpOwogICAgICAg
ICBtX2ltcGwgPSBXVEZNb3ZlKG5ld1N0cmluZyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUNo
YXIqIGRhdGE7CiAgICAgICAgIGF1dG8gbmV3U3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsKLSAgICAgICAgU3Ry
aW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOworICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmxlZnQocG9zaXRp
b24pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3
KHN0cmluZykuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uKTsKICAg
ICAgICAgU3RyaW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcocG9zaXRpb24pLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0KTsKICAgICAg
ICAgbV9pbXBsID0gV1RGTW92ZShuZXdTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5k
ZXggYjY0OTcwOTgwYWJlM2YzYzc5Yjk0MmZhMDgyNjU2NjNjZTgyOWJkNS4uZjE3M2ZlNjkyM2Q3
YWFmMjRhZTM0ZGQ3NDllMDczNDhmODU1ODM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBA
IC0yMDQsNyArMjA0LDkgQEAgcHVibGljOgogICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5nJiByZXBsYWNlV2l0aExpdGVyYWwo
VUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFjZW1lbnQpW2NoYXJhY3RlckNvdW50XSk7
CiAKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGlmaWNhbCB0byBsZWZ0KCkgYW5kIHNob3Vs
ZCBwcm9iYWJseSBiZSBkcm9wcGVkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHRydW5j
YXRlKHVuc2lnbmVkIGxlbmd0aCk7CisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1v
dmUodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IDEpOwogCiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aCA9IE1heExlbmd0aCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDMyZWExZDQ5ZjdkZmU0YTIwMGQ5
ZTVjMGM1ODM3MjYwN2I1ZGQyMDEuLjAzZTAxODJkMzkyMTc4YWM2N2E0NmE1NTk0NzBmZjY1NzJk
OTRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWlt
ZVR5cGU+IHBhcnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBpZiAo
c2xhc2hJbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIFN0cmluZyB0eXBlID0gaW5wdXQuc3Vic3RyaW5nKDAsIHNsYXNoSW5kZXgpOworICAgIFN0
cmluZyB0eXBlID0gaW5wdXQubGVmdChzbGFzaEluZGV4KTsKICAgICBpZiAoIXR5cGUubGVuZ3Ro
KCkgfHwgIWlzVmFsaWRIVFRQVG9rZW4odHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmNwcAppbmRleCBlNDM4MmIzZDM0YTI5NDc1ODBkN2Q3OTBjYTQ0NWZlMDk1NmQyNTQxLi4wZTZj
ZDViMzFkNjNmM2YxOTJiMTAxNmFmMjQ0ZTE4ZWNjZjVhZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBF
eGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6ZGVsZXRlRnVu
Y3Rpb24oKQogCiBib29sIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0LCB1aW50NjRfdCBvcGVyYXRpb25JRCkK
IHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50
IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygw
LCAxMDApLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OnNl
dEdldFJlc3VsdCAtIGN1cnJlbnQga2V5ICVzIiwgZ2V0UmVzdWx0LmtleURhdGEoKS5sb2dnaW5n
U3RyaW5nKCkubGVmdCgxMDApLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNh
Y3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CiAKICAgICBhdXRvKiBjb250ZXh0
ID0gcmVxdWVzdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCmluZGV4IGM4MjkxMTZlNjQ0NzU2Y2I3
NjYxZDZjZThlZjY3ZjY1MjliYTkzMmMuLmJkMDA4YTFlMDczM2QyMzMyMTMxZDc3Yjk4MTZhNmZm
ZDI5NWY1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVBhdGguY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSURCS2V5UGF0aExleGVyOjpUb2tlblR5cGUg
SURCS2V5UGF0aExleGVyOjpsZXhJZGVudGlmaWVyKFN0cmluZyYgZWxlbWVudCkKICAgICB3aGls
ZSAoIW1fcmVtYWluaW5nVGV4dC5pc0VtcHR5KCkgJiYgaXNJZGVudGlmaWVyQ2hhcmFjdGVyKG1f
cmVtYWluaW5nVGV4dFswXSkpCiAgICAgICAgIG1fcmVtYWluaW5nVGV4dCA9IG1fcmVtYWluaW5n
VGV4dC5zdWJzdHJpbmcoMSk7CiAKLSAgICBlbGVtZW50ID0gc3RhcnQuc3Vic3RyaW5nKDAsIHN0
YXJ0Lmxlbmd0aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxlbmd0aCgpKS50b1N0cmluZygpOworICAg
IGVsZW1lbnQgPSBzdGFydC5sZWZ0KHN0YXJ0Lmxlbmd0aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxl
bmd0aCgpKS50b1N0cmluZygpOwogICAgIHJldHVybiBUb2tlbklkZW50aWZpZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAxYzAzNDU3ZWRmODg3Zjc1OTk3YzQ0NDVmMGQzNGJm
YWRhMjE3YjBkLi43NWMwYTA5NzUxODUxZTBlZjEzOWVmNGM0NzU5NDUzYzVmMjI0NmNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZElnbm9yZUljZUNhbmRpZGF0ZShjb25zdCBSVENJY2VDYW5kaWRhdGUmIGljZUNh
bmRpZGF0ZSkKICAgICBpZiAoIWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxv
Y2FsIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghV1RGOjppc1ZlcnNpb240
VVVJRChTdHJpbmdWaWV3IHsgYWRkcmVzcyB9LnN1YnN0cmluZygwLCBhZGRyZXNzLmxlbmd0aCgp
IC0gNikpKSB7CisgICAgaWYgKCFXVEY6OmlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgeyBhZGRy
ZXNzIH0ubGVmdChhZGRyZXNzLmxlbmd0aCgpIC0gNikpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFdlYlJUQywgIm1ETlMgY2FuZGlkYXRlIGlzIG5vdCBhIFZlcnNpb24gNCBVVUlEIik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCmluZGV4IGFjNjZjNWVhYzM3OGMy
OTc2M2FlNDIzNTVmY2IzN2ViMmY0MWI1Y2UuLmEzYjYxZWMwY2U1YzAxNTRkYjU5ZmQ3NzA3MzZm
ZmJhNTQxM2M4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEVE1GU2VuZGVyLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgUlRDRFRNRlNl
bmRlcjo6cGxheU5leHRUb25lKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Y3VycmVudFRvbmUgPSBtX3RvbmVzLnN1YnN0cmluZygwLCAxKTsKKyAgICBhdXRvIGN1cnJlbnRU
b25lID0gbV90b25lcy5sZWZ0KDEpOwogICAgIG1fdG9uZXMucmVtb3ZlKDApOwogCiAgICAgbV9i
YWNrZW5kLT5wbGF5VG9uZShjdXJyZW50VG9uZSwgbV9kdXJhdGlvbiwgbV9pbnRlclRvbmVHYXAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcAppbmRleCBlMTY0
NzBiOGE0MjlkM2E4NTJjNGQ3YmIxYjY1ZjFlYjQzYTAyNTdmLi4xZjlhN2Y1Y2YyYTIxNGZlYjkx
NDBlNGEwZTUxMjk5MjFmYjI4NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcApAQCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRw
b2ludDo6YWRkUmVtb3RlU3RyZWFtKEdzdFBhZCogcGFkKQogICAgICAgICBhdXRvIGkgPSBsaW5l
LmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIGF1
dG8gdG1wID0gbGluZS5zdWJzdHJpbmcoaSArIGtleS5hc2NpaSgpLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIGxhYmVsID0gdG1wLnN1YnN0cmluZygwLCB0bXAuZmluZCgnICcpKTsKKyAgICAgICAg
ICAgIGxhYmVsID0gdG1wLmxlZnQodG1wLmZpbmQoJyAnKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IDQxNzZlOGQ2Zjc4M2E1MjVhODBmN2E2MGVhZGM2
N2Y2YmZkNzAxNmMuLjk0OTM3ZjA0ZGI4YzNiNGRkNWJkODFmNTQzZmYxMDBmNGY3ZmViNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8d2VicnRj
OjpSdHBDb2RlY0NhcGFiaWxpdHk+IHRvUnRwQ29kZWNDYXBhYmlsaXR5KGNvbnN0CiAgICAgICAg
IGF1dG8gcG9zaXRpb24gPSBwYXJhbWV0ZXIuZmluZCgnPScpOwogICAgICAgICBpZiAocG9zaXRp
b24gPT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1v
ZGlmaWNhdGlvbkVycm9yLCAiUlRDUnRwQ29kZWNDYXBhYmlsaXR5IHNkcEZtdExpbmUgYmFkbHkg
Zm9ybWF0ZWQiX3MgfTsKLSAgICAgICAgcnRjQ29kZWMucGFyYW1ldGVycy5lbXBsYWNlKHBhcmFt
ZXRlci5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksIHBhcmFtZXRlci5zdWJz
dHJpbmcocG9zaXRpb24gKyAxKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcnRjQ29kZWMucGFy
YW1ldGVycy5lbXBsYWNlKHBhcmFtZXRlci5sZWZ0KHBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCBw
YXJhbWV0ZXIuc3Vic3RyaW5nKHBvc2l0aW9uICsgMSkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJ0Y0NvZGVjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCA4NTdjOWMy
NGJiOGRlNDYwZTJjMjc1ZjkyZjM4YTEyMGIwMjAzYzVlLi5jYmFmNDZmMGVlNWZlN2U0MDkwNWE0
OTZkYWQ4N2U0ZTlmYTlhYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtMjIyLDcgKzIy
Miw3IEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1
cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICBwYXRoID0gZnJhZ21l
bnQ7CiAgICAgICAgICAgICBxdWVyeSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIHBhdGggPSBmcmFnbWVudC5sZWZ0KGxvY2F0aW9uKTsKICAgICAgICAgICAgIHF1
ZXJ5ID0gZnJhZ21lbnQuc3Vic3RyaW5nKGxvY2F0aW9uICsgMSk7CiAgICAgICAgIH0KICAgICAg
ICAgZnJhZ21lbnQgPSBlbXB0eVN0cmluZygpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBV
UkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91
VHViZVNob3J0ZW5lZFVSCiAgICAgICAgIHNpemVfdCBhbXBlcnNhbmRMb2NhdGlvbiA9IGxhc3RQ
YXRoQ29tcG9uZW50LmZpbmQoJyYnKTsKICAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0aW9uICE9
IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBTb21lIFVSTHMgd2UgY2FyZSBhYm91dCB1c2Ug
JiBpbiBwbGFjZSBvZiA/IGZvciB0aGUgZmlyc3QgcXVlcnkgcGFyYW1ldGVyLgotICAgICAgICAg
ICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZygwLCBhbXBlcnNhbmRMb2Nh
dGlvbik7CisgICAgICAgICAgICB2aWRlb0lEID0gbGFzdFBhdGhDb21wb25lbnQubGVmdChhbXBl
cnNhbmRMb2NhdGlvbik7CiAgICAgICAgICAgICBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IGxh
c3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhhbXBlcnNhbmRMb2NhdGlvbiArIDEsIGxhc3RQYXRo
Q29tcG9uZW50Lmxlbmd0aCgpIC0gYW1wZXJzYW5kTG9jYXRpb24pOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0aENvbXBvbmVudDsKQEAgLTMwNCw3ICszMDQs
NyBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29s
dXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogICAgICAgICBBU1NFUlQobG9jYXRpb25PZlZp
ZGVvSURJblBhdGgpOwogICAgIAogICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdl
IG5lZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvcGF0aC9WaWRlb0lkLgotICAgICAgICBsb2Nh
dGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmluZChzcmNQ
YXRoLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOworICAgICAgICBsb2Nh
dGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmluZChzcmNQ
YXRoLmxlZnQobG9jYXRpb25PZlZpZGVvSURJblBhdGgpKTsKICAgICB9IGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNyY1BhdGgsICIvd2F0Y2giKSkgewogICAgICAgICAv
LyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAv
d2F0Y2gvIyF2PVZpZGVvSUQKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGJlIEFT
Q0lJIGNhc2UtaW5zZW5zaXRpdmU/CkBAIC0zMTQsNyArMzE0LDcgQEAgU3RyaW5nIFlvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNy
Y1VSTCwgY28KIAogICAgIEFTU0VSVChsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgIT0gbm90
Rm91bmQpOwogCi0gICAgYXV0byBzcmNVUkxQcmVmaXggPSBTdHJpbmdWaWV3KHNyY1N0cmluZyku
c3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCk7CisgICAgYXV0byBzcmNV
UkxQcmVmaXggPSBTdHJpbmdWaWV3KHNyY1N0cmluZykubGVmdChsb2NhdGlvbk9mUGF0aEJlZm9y
ZVZpZGVvSUQpOwogICAgIGF1dG8gcXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKIAogICAgIC8vIElm
IHRoZSBVUkwgaGFzIG5vIHF1ZXJ5LCB1c2UgdGhlIHBvc3NpYmx5IG1hbGZvcm1lZCBxdWVyeSB3
ZSBmb3VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNw
cAppbmRleCBlNTgwYzM0Yjg4MWVhNDgxMmEyNTJjMTA2NTM4ZDMyOTUxMjIwNDIwLi42YWVmMDFk
MDA2M2VmMDJiMTYzMDhmN2Y3NmI5MWM5MDlhNTk0MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwCkBAIC01OCw3ICs1OCw3IEBAIFN0cmluZyBU
ZXh0Qm94OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICB0ZXh0Q29udGVudC5yZXBsYWNl
V2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOwogICAgIGNvbnN0IHNpemVfdCBtYXhQcmludGVkTGVu
Z3RoID0gODA7CiAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0
aCkgewotICAgICAgICBhdXRvIHN1YnN0cmluZyA9IHRleHRDb250ZW50LnN1YnN0cmluZygwLCBt
YXhQcmludGVkTGVuZ3RoKTsKKyAgICAgICAgYXV0byBzdWJzdHJpbmcgPSBTdHJpbmdWaWV3KHRl
eHRDb250ZW50KS5sZWZ0KG1heFByaW50ZWRMZW5ndGgpOwogICAgICAgICBzdHJlYW0gPDwgIiBc
IiIgPDwgc3Vic3RyaW5nIDw8ICJcIuKApiI7CiAgICAgfSBlbHNlCiAgICAgICAgIHN0cmVhbSA8
PCAiIFwiIiA8PCB0ZXh0Q29udGVudCA8PCAiXCIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggMzgwMWJlZDNjZjIyNWJhYjE4MmFiY2E5M2ZiOTcxZThiZDk2NjRlMi4uMjFlZmNkYzVjZDRl
M2IxNjA3ZDE0MDMzMDliODRjM2E5ZGFmYzQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC01NTY5LDcgKzU1NjksNyBAQCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRv
bVN0cmluZz4+IERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29ucwogICAgIGlmICghY29s
b25Qb3NpdGlvbiB8fCBsZW5ndGggLSBjb2xvblBvc2l0aW9uIDw9IDEpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IgfTsKIAotICAgIHJldHVybiBzdGQ6
OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4geyBTdHJpbmdWaWV3IHsgcXVhbGlmaWVkTmFt
ZSB9LnN1YnN0cmluZygwLCBjb2xvblBvc2l0aW9uKS50b0F0b21TdHJpbmcoKSwgU3RyaW5nVmll
dyB7IHF1YWxpZmllZE5hbWUgfS5zdWJzdHJpbmcoY29sb25Qb3NpdGlvbiArIDEpLnRvQXRvbVN0
cmluZygpIH07CisgICAgcmV0dXJuIHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiB7
IFN0cmluZ1ZpZXcgeyBxdWFsaWZpZWROYW1lIH0ubGVmdChjb2xvblBvc2l0aW9uKS50b0F0b21T
dHJpbmcoKSwgU3RyaW5nVmlldyB7IHF1YWxpZmllZE5hbWUgfS5zdWJzdHJpbmcoY29sb25Qb3Np
dGlvbiArIDEpLnRvQXRvbVN0cmluZygpIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFF1YWxpZmllZE5h
bWU+IERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNw
YWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXgg
NjhhNmZiYjM1ODQ0MTQ0MWEyYjExYjU4ZmM2ZjE5NDI5ZjFmMGVlYS4uZGM4MzkxZjYzOWY4ZDE2
MzA5ODM1M2Y0OWNiYWMwMjZhOGI3ZDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtNjQsNyArNjQs
NyBAQCBFeGNlcHRpb25PcjxSZWY8VGV4dD4+IFRleHQ6OnNwbGl0VGV4dCh1bnNpZ25lZCBvZmZz
ZXQpCiAgICAgRXZlbnRRdWV1ZVNjb3BlIHNjb3BlOwogICAgIGF1dG8gb2xkRGF0YSA9IGRhdGEo
KTsKICAgICBhdXRvIG5ld1RleHQgPSB2aXJ0dWFsQ3JlYXRlKG9sZERhdGEuc3Vic3RyaW5nKG9m
ZnNldCkpOwotICAgIHNldERhdGFXaXRob3V0VXBkYXRlKG9sZERhdGEuc3Vic3RyaW5nKDAsIG9m
ZnNldCkpOworICAgIHNldERhdGFXaXRob3V0VXBkYXRlKG9sZERhdGEubGVmdChvZmZzZXQpKTsK
IAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDgwYTg3ODZjZjM4NzVhMzM0
NDVmYjE0NjdlYmQ0NmMyNzQyMWE4NDIuLjMxODM0NDFjODUyNmEwY2RiZWUzOTBlY2QzZmIzOTk3
NmU3ZmVkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRD
aGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgT3B0aW9uU2V0PAogICAgICAg
ICB1bnNpZ25lZCBncmFtbWFyQ2hlY2tMZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAgICBm
b3IgKGF1dG8mIG1pc3NwZWxsaW5nIDogbWlzc3BlbGxpbmdzKQogICAgICAgICAgICAgZ3JhbW1h
ckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xlbmd0aCwgbWlz
c3BlbGxpbmcucmFuZ2UubG9jYXRpb24pOwotICAgICAgICBmaW5kR3JhbW1hdGljYWxFcnJvcnMo
Y2xpZW50LCB0ZXh0LnN1YnN0cmluZygwLCBncmFtbWFyQ2hlY2tMZW5ndGgpLCBncmFtbWF0aWNh
bEVycm9ycyk7CisgICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhjbGllbnQsIHRleHQubGVm
dChncmFtbWFyQ2hlY2tMZW5ndGgpLCBncmFtbWF0aWNhbEVycm9ycyk7CiAgICAgfQogCiAgICAg
cmVzdWx0cyA9IFdURk1vdmUoZ3JhbW1hdGljYWxFcnJvcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGUxYTg5MjVlOWZlYjljYmZiM2Q1N2VmZjk3OTc5ZGUy
ZWY1ODZmODguLmJmYTIyZTNmZWEzOTU2YzA4ZmIxZTJiNDBhMDg3ZDFjMjVlYTc0NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIwMzAsNyArMjAzMCw3IEBA
IGlubGluZSB2b2lkIFNlYXJjaEJ1ZmZlcjo6cHJlcGVuZENvbnRleHQoU3RyaW5nVmlldyB0ZXh0
KQogICAgIHNpemVfdCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQgPSB0ZXh0Lmxlbmd0aCgpOwog
ICAgIGlmICh3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpIHsKICAgICAgICAgVTE2X0JBQ0tfMSh0
ZXh0LCAwLCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpOwotICAgICAgICB3b3JkQm91bmRhcnlD
b250ZXh0U3RhcnQgPSBzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJp
bmcoMCwgd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KSk7CisgICAgICAgIHdvcmRCb3VuZGFyeUNv
bnRleHRTdGFydCA9IHN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LmxlZnQod29y
ZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KSk7CiAgICAgfQogCiAgICAgc2l6ZV90IHVzYWJsZUxlbmd0
aCA9IHN0ZDo6bWluKG1fYnVmZmVyLmNhcGFjaXR5KCkgLSBtX3ByZWZpeExlbmd0aCwgdGV4dC5s
ZW5ndGgoKSAtIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKaW5kZXggNDUxOGFkNDM5MzFjODUyNWI4ZWZmMjBjNDA5YmQyNjNj
ODA3MmVmZC4uNWJlYzg3MTQwNTE4YjgzNDBjODZhZDc0OTRmZmNlYWQ4N2FjYjY0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHVu
c2lnbmVkIHN1ZmZpeExlbmd0aEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBmb3J3YXJkc1Nj
YW5SYW5nZSwgVmVjdG9yPFVDaGFyCiAgICAgd2hpbGUgKCFmb3J3YXJkc0l0ZXJhdG9yLmF0RW5k
KCkpIHsKICAgICAgICAgU3RyaW5nVmlldyB0ZXh0ID0gZm9yd2FyZHNJdGVyYXRvci50ZXh0KCk7
CiAgICAgICAgIHVuc2lnbmVkIGkgPSBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0
KTsKLSAgICAgICAgYXBwZW5kKHN0cmluZywgdGV4dC5zdWJzdHJpbmcoMCwgaSkpOworICAgICAg
ICBhcHBlbmQoc3RyaW5nLCB0ZXh0LmxlZnQoaSkpOwogICAgICAgICBzdWZmaXhMZW5ndGggKz0g
aTsKICAgICAgICAgaWYgKGkgPCB0ZXh0Lmxlbmd0aCgpKQogICAgICAgICAgICAgYnJlYWs7CkBA
IC02MzgsNyArNjM4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMKIHVuc2lnbmVkIHN0YXJ0
V29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNl
YXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9y
ZUNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG9mZnNldCk7Ci0gICAgaWYgKG1heUhhdmVNb3JlQ29u
dGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQuc3Vic3RyaW5nKDAs
IG9mZnNldCkpKSB7CisgICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RX
b3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdChvZmZzZXQpKSkgewogICAgICAgICBuZWVkTW9y
ZUNvbnRleHQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC02OTcsNyArNjk3
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMs
IEVXb3JkU2lkZSBzaWRlKQogCiBzdGF0aWMgdW5zaWduZWQgcHJldmlvdXNXb3JkUG9zaXRpb25C
b3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkIG9mZnNldCwgQm91bmRhcnlTZWFyY2hD
b250ZXh0QXZhaWxhYmlsaXR5IG1heUhhdmVNb3JlQ29udGV4dCwgYm9vbCYgbmVlZE1vcmVDb250
ZXh0KQogewotICAgIGlmIChtYXlIYXZlTW9yZUNvbnRleHQgJiYgIXN0YXJ0T2ZMYXN0V29yZEJv
dW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZygwLCBvZmZzZXQpKSkgeworICAgIGlmIChtYXlI
YXZlTW9yZUNvbnRleHQgJiYgIXN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0Lmxl
ZnQob2Zmc2V0KSkpIHsKICAgICAgICAgbmVlZE1vcmVDb250ZXh0ID0gdHJ1ZTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCmluZGV4IGVmZWM1NzJlZGIyODBlZTFmM2E3MzRlMTdmMWQ2YWEwMjg1OWI0ZDAu
LmQ2M2JiOWEyYWY1MjYyZjBlMTQ3MjE1N2E0NmIzNDMyZTgwZTY3YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTU3OSw3ICs1NzksNyBA
QCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYgY29udGV4dFJhbmdlLCBPcAogICAgICAgICAgICAgICAgICAgICBsYXN0VGV4dE5v
ZGVUb1VwZGF0ZS0+c2V0RGF0YShsYXN0Tm9kZUNvbnRlbnQpOwogICAgICAgICAgICAgICAgIGNv
bnRlbnRPZmZzZXQgPSAwOwogICAgICAgICAgICAgICAgIGlmIChyYW5nZS5zdGFydC5vZmZzZXQg
PiAwKQotICAgICAgICAgICAgICAgICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUu
ZGF0YSgpLnN1YnN0cmluZygwLCByYW5nZS5zdGFydC5vZmZzZXQpOworICAgICAgICAgICAgICAg
ICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuZGF0YSgpLmxlZnQocmFuZ2Uuc3Rh
cnQub2Zmc2V0KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHRleHROb2Rl
RGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5nKGNvbnRlbnRPZmZzZXQsIHJh
bmdlLnN0YXJ0Lm9mZnNldCAtIGNvbnRlbnRPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggN2U1OTUyYjdhOTYyODcwNzBlODAzNzk4ZDU5ZDhmYzJmN2IzOWI5Yi4uZjA4
ZGQ5OTg5NDQ5MzRjOGZmMDYyOTZiOTg1YTlmYTBkYWQ3OTU2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtOTk1LDcgKzk5NSw3IEBAIHN0YXRpYyBib29sIHNob3VsZFByZXNlcnZl
TVNPTGlzdHMoU3RyaW5nVmlldyBtYXJrdXApCiAgICAgYXV0byB0YWdDbG9zZSA9IG1hcmt1cC5m
aW5kKCc+Jyk7CiAgICAgaWYgKHRhZ0Nsb3NlID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgYXV0byB0YWcgPSBtYXJrdXAuc3Vic3RyaW5nKDAsIHRhZ0Nsb3NlKTsKKyAg
ICBhdXRvIHRhZyA9IG1hcmt1cC5sZWZ0KHRhZ0Nsb3NlKTsKICAgICByZXR1cm4gdGFnLmNvbnRh
aW5zKCJ4bWxuczpvPVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlXCIi
KQogICAgICAgICAmJiB0YWcuY29udGFpbnMoInhtbG5zOnc9XCJ1cm46c2NoZW1hcy1taWNyb3Nv
ZnQtY29tOm9mZmljZTp3b3JkXCIiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmVhdHVyZVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3ku
Y3BwCmluZGV4IDU4NDhkMGFiOWMyZDc1NjRmMDhmNDg3NTJiOTM1ZTE4MTBiMTE4MTcuLjQxZTAz
MWQ0NjAyY2UyNTIzODM2ZDIwMzMwMTJlMWE3NjM2NzAxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
ZWF0dXJlUG9saWN5LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1
cGRhdGVMaXN0KERvY3VtZW50JiBkb2N1bWVudCwgRmVhdHVyZVBvbGljeTo6QWxsb3dSdWxlJiBy
dWxlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwcm9jZXNzT3Jp
Z2luSXRlbShkb2N1bWVudCwgcnVsZSwgdmFsdWUuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKSk7Cisg
ICAgICAgIHByb2Nlc3NPcmlnaW5JdGVtKGRvY3VtZW50LCBydWxlLCB2YWx1ZS5sZWZ0KHBvc2l0
aW9uKSk7CiAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKHBvc2l0aW9uICsgMSkuc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0hUTUxTcGFjZTxVQ2hhcj4p
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IGI0MmQ5NjA0ZjM0Y2RlYmY3NGVjM2NiYWYwNjJhN2U5MzdkZTRkNGEuLjUxZTVhNGUwOGFjNDE0
ODUyOTBjNDU0MjhlMDEzYjQ5M2RkNzQ4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+
IHsKIAogICAgICAgICBpZiAodXJsLnN0cmluZygpLmxlbmd0aCgpIDwgbWF4aW11bVVSTExlbmd0
aEZvckxvZ2dpbmcpCiAgICAgICAgICAgICByZXR1cm4gdXJsLnN0cmluZygpOwotICAgICAgICBy
ZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2lu
ZykgKyAiLi4uIjsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyh1cmwuc3Ry
aW5nKCkpLmxlZnQobWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpLCAiLi4uIik7CiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKICAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IGU0N2E1YmQ4YjM3M2Q1
YmQyNWEwNDI2MDZiNjliNDQ0OTllNDE3NDUuLjBjOTYzZGE3YjhjYTAyODAxNDMxMjY4MjRiYzM1
ZWQ1MDA1M2FkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApA
QCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmdUcmFjayhjb25zdCBV
UkwmIHVybCkKICAgICAKICAgICBpZiAodXJsLnN0cmluZygpLmxlbmd0aCgpIDwgbWF4aW11bVVS
TExlbmd0aEZvckxvZ2dpbmcpCiAgICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCk7Ci0gICAgcmV0
dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcp
ICsgIi4uLiI7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkp
LmxlZnQobWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpLCAiLi4uIik7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKaW5kZXggZTRlMzBhOWI2MDRl
ZjFhODRkNzc1MmJiZDhiMzcwODQ1MmExZTA4Zi4uOTM1Y2U1ZGNiNzI1OWE1ZWQ2MDk5NWEyODU3
OGI2NjBjZTU5MDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBv
c2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3Bw
CkBAIC0xMTcsMTMgKzExNywxMyBAQCB2b2lkIFVSTERlY29tcG9zaXRpb246OnNldEhvc3QoU3Ry
aW5nVmlldyB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgcG9y
dExlbmd0aCA9IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEp
KTsKICAgICAgICAgaWYgKCFwb3J0TGVuZ3RoKSB7Ci0gICAgICAgICAgICBmdWxsVVJMLnNldEhv
c3QodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAgZnVsbFVSTC5z
ZXRIb3N0KHZhbHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBhdXRvIHBvcnROdW1iZXIgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KHZhbHVlLnN1YnN0
cmluZyhzZXBhcmF0b3IgKyAxLCBwb3J0TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAocG9ydE51
bWJlciAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydE51bWJlciwgZnVsbFVS
TC5wcm90b2NvbCgpKSkKLSAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQb3J0KHZh
bHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNl
dEhvc3RBbmRQb3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgZnVsbFVSTC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwg
c2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNl
dEhvc3RBbmRQb3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBpZiAoZnVsbFVSTC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDYxYzZhN2IzNGE5
NTQ0YzgzZDlkN2VmNTAxMGM0N2ZiNjkyN2RhYjAuLjVjMWVjNzQxYzIxYTQ5Nzk0YjRhODZhYmI1
NzU4Njc4OWExMWNlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VIVFRQ
UmVmcmVzaEludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb25zdCBDaGFy
YWMKICAgICBpZiAocXVvdGUgIT0gJ1wwJykgewogICAgICAgICBzaXplX3QgaW5kZXggPSB1cmwu
ZmluZChxdW90ZSk7CiAgICAgICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgICAg
IHVybCA9IHVybC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICAgICAgdXJsID0gdXJsLmxl
ZnQoaW5kZXgpOwogICAgIH0KIAogICAgIHBhcnNlZFVSTCA9IHVybC50b1N0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAppbmRleCA2
MDYyMGY1NmM0ZWI4ZjA0YjQzZGYyZTE1MThhNGY2ZjZiZDk3OThkLi5iYWVkMzJkYzU4OWQ2Mzhl
ZTZlZjYyY2Q5YjE1ODAwMThjNDNmYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBib29s
IHBhcnNlRGVzY3JpcHRvcnMoVmVjdG9yPFN0cmluZ1ZpZXc+JiBkZXNjcmlwdG9ycywgRGVzY3Jp
cHRvclBhcnNpbmdSCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdW5zaWduZWQgZGVz
Y3JpcHRvckNoYXJQb3NpdGlvbiA9IGRlc2NyaXB0b3IubGVuZ3RoKCkgLSAxOwogICAgICAgICBV
Q2hhciBkZXNjcmlwdG9yQ2hhciA9IGRlc2NyaXB0b3JbZGVzY3JpcHRvckNoYXJQb3NpdGlvbl07
Ci0gICAgICAgIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnN1YnN0cmluZygwLCBkZXNjcmlwdG9y
Q2hhclBvc2l0aW9uKTsKKyAgICAgICAgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3IubGVmdChkZXNj
cmlwdG9yQ2hhclBvc2l0aW9uKTsKICAgICAgICAgaWYgKGRlc2NyaXB0b3JDaGFyID09ICd4Jykg
ewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0Lmhhc0hlaWdo
dCgpIHx8IHJlc3VsdC5oYXNXaWR0aCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4
IGVkY2M2YWZkNmM2ZjAzOGI4NGM0ZTcxZjU3OGE2ODg4NDI3YzcxMDMuLmY2YWE4YTc3ODk5YWVj
ZGVkNzVjODNjMzQ4YjE1YWViNGE4MTljOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHNraXBMZWFkaW5nPGNoYXJhY3RlclByZWRpY2F0ZT4oKTsKICAgICAgICAgaWYgKHN0
YXJ0Lmxlbmd0aCgpID09IG1fdGV4dC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoc3RhcnQuc3Vic3RyaW5nKDAsIHN0YXJ0
Lmxlbmd0aCgpIC0gbV90ZXh0Lmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KHN0YXJ0LmxlZnQoc3RhcnQubGVuZ3RoKCkgLSBtX3RleHQubGVuZ3RoKCkpKTsKICAgICB9CiAK
ICAgICBTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZ1ZpZXcpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXgg
MjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YS4uMDkwMTZlNWM3MTFkNTY1
MTNlMzVjMzg0ZDRkZDMwMDJkZDM0NjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgU3R5
bGVTaGVldEhhbmRsZXI6Om9ic2VydmVDb21tZW50KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCiAgICAgLy8gUmVxdWlyZSB3ZWxsLWZvcm1lZCBjb21tZW50cy4KICAg
ICBpZiAoIWNvbW1lbnRUZXh0LmVuZHNXaXRoKCIqLyIpKQogICAgICAgICByZXR1cm47Ci0gICAg
Y29tbWVudFRleHQgPSBjb21tZW50VGV4dC5zdWJzdHJpbmcoMCwgY29tbWVudFRleHQubGVuZ3Ro
KCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBjb21tZW50VGV4dCA9IGNvbW1lbnRUZXh0
LmxlZnQoY29tbWVudFRleHQubGVuZ3RoKCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBp
ZiAoY29tbWVudFRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAKaW5kZXggNGRjMzUxZTQ5MjJiNzU0Njc2Y2QwOGI4MTQ0ZDFlYWUwNTA5ZDc4Ny4uNjk0MmIx
ZjI5NmU1MmY0NzZjOTI5NjA4ZDBmOTE5MmY0NGQwMjVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtNTAz
LDcgKzUwMyw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJl
YW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBCb3hHCiAKICAgICAgICAgY29uc3Qgc2l6
ZV90IG1heFByaW50ZWRMZW5ndGggPSA4MDsKICAgICAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0
aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewotICAgICAgICAgICAgYXV0byBzdWJzdHJpbmcgPSB0
ZXh0Q29udGVudC5zdWJzdHJpbmcoMCwgbWF4UHJpbnRlZExlbmd0aCk7CisgICAgICAgICAgICBh
dXRvIHN1YnN0cmluZyA9IFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLmxlZnQobWF4UHJpbnRlZExl
bmd0aCk7CiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBcIiIgPDwgc3Vic3RyaW5nLnV0ZjgoKS5k
YXRhKCkgPDwgIlwiLi4uIjsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJlYW0gPDwg
IiBcIiIgPDwgdGV4dENvbnRlbnQudXRmOCgpLmRhdGEoKSA8PCAiXCIiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCA0YTExNDQyNWUxMTZkMmM0MmQxOTAzOTIzZWRmODg2
MzgzZDhmMDY0Li44ZDk5YjkzOGQ5OWZiNDJmODE3ZTkwYzFlOGQwN2JjMmE4ZmI4YzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMg
U3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKICAgICBh
dXRvIG1hbmlmZXN0UGF0aCA9IG1hbmlmZXN0VVJMLnBhdGgoKTsKICAgICBBU1NFUlQobWFuaWZl
c3RQYXRoWzBdID09ICcvJyk7Ci0gICAgbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RQYXRoLnN1YnN0
cmluZygwLCBtYW5pZmVzdFBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOworICAgIG1hbmlmZXN0
UGF0aCA9IG1hbmlmZXN0UGF0aC5sZWZ0KG1hbmlmZXN0UGF0aC5yZXZlcnNlRmluZCgnLycpICsg
MSk7CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSBtYW5pZmVzdFBhdGhbbWFuaWZlc3RQ
YXRoLmxlbmd0aCgpIC0gMV0pOwogICAgIHJldHVybiBtYW5pZmVzdFBhdGg7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKaW5k
ZXggNTEwMjJjNjc1ZDI0ZjBiYjhhNTNiMTk1ZmU4OGIxYWYwM2QxMzcwMy4uNWUwNzYzZGY5MDFl
OTdiNWE1ZmVmMDgyMjE0MDQyY2VmYWQ4Nzc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBA
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU51
bWJlckFuZFVuaXQoU3RyaW5nVmlldyBzCiAgICAgfQogCiAgICAgYm9vbCBvazsKLSAgICBmbG9h
dCBsZW5ndGhWYWx1ZSA9IHN0cmluZy5zdWJzdHJpbmcoMCwgc3RyaW5nTGVuZ3RoKS50b0Zsb2F0
KG9rKTsKKyAgICBmbG9hdCBsZW5ndGhWYWx1ZSA9IHN0cmluZy5sZWZ0KHN0cmluZ0xlbmd0aCku
dG9GbG9hdChvayk7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIExlbmd0aCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCmluZGV4IDlmYWY4YWRmNjliNWNjNTVjMmIzYWZhN2FhNjFjZTJiZGMw
YTA0N2YuLjI4ODljODA2NWQxNzA1ODU3YTQyOTAwYmJiYThkN2MyY2YyNTIzYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC0zODksOCArMzg5LDkgQEAgc3RhdGljIEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jgog
ICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAgICAgIGJv
b2wgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAgICAgIGlmIChsYWJlbC5sZW5n
dGgoKSkgewotICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhw
LmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKLSAgICAgICAgICAgIGVu
ZHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3Ry
aW5nKGxhYmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBTdHJpbmdWaWV3
IGxhYmVsVmlldyB7IGxhYmVsIH07CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3Rl
ciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWxWaWV3LmxlZnQoMSkpID49IDA7CisgICAg
ICAgICAgICBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxh
YmVsVmlldy5yaWdodCgxKSkgPj0gMDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNlYXJjaCBm
b3Igd29yZCBib3VuZGFyaWVzIG9ubHkgaWYgbGFiZWwgc3RhcnRzL2VuZHMgd2l0aCAid29yZCBj
aGFyYWN0ZXJzIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApp
bmRleCBhNjgyY2NiYTc1NDI5ZDcyODUyNmQ4YWNmOGZiMGVlNzUyMmQyMjViLi44NWFhNjQyZDEx
NjY2YWE2MjhiYjVkZTExNWVlNzY2YjcxOWVkZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RkOjpvcHRpb25hbDxT
ZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRp
ZmllcihTdHIKICAgICBpZiAocG9ydCAmJiAhKnBvcnQpCiAgICAgICAgIHBvcnQgPSBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmlu
ZygwLCBzZXBhcmF0b3IxKTsKKyAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVy
LmxlZnQoc2VwYXJhdG9yMSk7CiAgICAgYXV0byBob3N0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1
YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKTsKICAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9jb2wudG9TdHJpbmcoKSwgaG9zdC50
b1N0cmluZygpLCBwb3J0IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwCmluZGV4IGI5MzRlNmZhM2FmM2ZjZmIxMWQ0OTcwMjM1NjAxNjJiZGI1YmZj
NTIuLmE4NGYzNTljMzRiODQ0NjE3MGY4YjlkMGViZTFkZGM2YjgzZWQ4ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCkBAIC0yNTksMTMgKzI1OSwx
MyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoSW5s
aW5lKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQwogICAgIGVsc2UgewogICAgICAgICBzd2l0Y2gg
KGNoYXJhY3RlcnNbMF0pIHsKICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICBhcHBlbmQo
YnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhT
dGFydCgpKSk7CisgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3Ry
aW5nKCkpLmxlZnQoYmFzZS5wYXRoU3RhcnQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgU3RyaW5nVmlldyhiYXNl
LnN0cmluZygpKS5zdWJzdHJpbmcoMCwgYmFzZS5wYXRoRW5kKCkpKTsKKyAgICAgICAgICAgIGFw
cGVuZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFzZS5zdHJpbmcoKSkubGVmdChiYXNlLnBhdGhFbmQo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBh
cHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNl
LnBhdGhBZnRlckxhc3RTbGFzaCgpKSk7CisgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJp
bmdWaWV3KGJhc2Uuc3RyaW5nKCkpLmxlZnQoYmFzZS5wYXRoQWZ0ZXJMYXN0U2xhc2goKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCBhNjNmYzhh
NzNlY2JlMWQ0NGVlNDdiNjNiMGJjZTM5YTExNzM3NjBiLi4yM2IzOTk1OGRkZjY1MzgyNmJkN2Iy
NDI3MDQyYjI3Nzg1Nzg4Y2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHVu
c2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2ln
bmVkIGxlbmd0aCwgdW4KICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihrZWVw
Q291bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogICAgIAogICAgIHVuc2lnbmVkIG9taXRTdGFy
dCA9IChrZWVwQ291bnQgKyAxKSAvIDI7Ci0gICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOworICAgIE5v
blNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5nVmlldyhzdHJpbmcpLmxlZnQo
bGVuZ3RoKSk7CiAgICAgdW5zaWduZWQgb21pdEVuZCA9IGJvdW5kZWRUZXh0QnJlYWtGb2xsb3dp
bmcoaXQsIG9taXRTdGFydCArIChsZW5ndGggLSBrZWVwQ291bnQpIC0gMSwgbGVuZ3RoKTsKICAg
ICBvbWl0U3RhcnQgPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBvbWl0U3RhcnQpOwogCkBA
IC05Myw3ICs5Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuCiAgICAgdW5zaWduZWQgdHJ1
bmNhdGVkTGVuZ3RoID0gb21pdFN0YXJ0ICsgc2hvdWxkSW5zZXJ0RWxsaXBzaXMgKyAobGVuZ3Ro
IC0gb21pdEVuZCk7CiAgICAgQVNTRVJUKHRydW5jYXRlZExlbmd0aCA8PSBsZW5ndGgpOwogCi0g
ICAgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBvbWl0U3RhcnQpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CisgICAgU3RyaW5nVmlldyhzdHJpbmcpLmxlZnQob21p
dFN0YXJ0KS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogICAgIGlmIChzaG91
bGRJbnNlcnRFbGxpcHNpcykKICAgICAgICAgYnVmZmVyW29taXRTdGFydCsrXSA9IGhvcml6b250
YWxFbGxpcHNpczsKICAgICBTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKG9taXRFbmQsIGxl
bmd0aCAtIG9taXRFbmQpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KCZidWZmZXJbb21pdFN0
YXJ0XSk7CkBAIC0xMTksMTEgKzExOSwxMSBAQCBzdGF0aWMgdW5zaWduZWQgcmlnaHRUcnVuY2F0
ZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogICAg
ICAgICAtLWtlZXBDb3VudDsKICNlbmRpZgogCi0gICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOworICAg
IE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5nVmlldyhzdHJpbmcpLmxl
ZnQobGVuZ3RoKSk7CiAgICAgdW5zaWduZWQga2VlcExlbmd0aCA9IHRleHRCcmVha0F0T3JQcmVj
ZWRpbmcoaXQsIGtlZXBDb3VudCk7CiAgICAgdW5zaWduZWQgdHJ1bmNhdGVkTGVuZ3RoID0gc2hv
dWxkSW5zZXJ0RWxsaXBzaXMgPyBrZWVwTGVuZ3RoICsgMSA6IGtlZXBMZW5ndGg7CiAKLSAgICBT
dHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGtlZXBMZW5ndGgpLmdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KGJ1ZmZlcik7CisgICAgU3RyaW5nVmlldyhzdHJpbmcpLmxlZnQoa2VlcExl
bmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKICAgICBpZiAoc2hvdWxk
SW5zZXJ0RWxsaXBzaXMpCiAgICAgICAgIGJ1ZmZlcltrZWVwTGVuZ3RoXSA9IGhvcml6b250YWxF
bGxpcHNpczsKIApAQCAtMTM1LDkgKzEzNSw5IEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodENsaXBU
b0NoYXJhY3RlckJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoCiAg
ICAgQVNTRVJUKGtlZXBDb3VudCA8IGxlbmd0aCk7CiAgICAgQVNTRVJUKGtlZXBDb3VudCA8IFNU
UklOR19CVUZGRVJfU0laRSk7CiAKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
IGl0KFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5n
dGgpKTsKICAgICB1bnNpZ25lZCBrZWVwTGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhp
dCwga2VlcENvdW50KTsKLSAgICBTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGtlZXBM
ZW5ndGgpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CisgICAgU3RyaW5nVmll
dyhzdHJpbmcpLmxlZnQoa2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVm
ZmVyKTsKIAogICAgIHJldHVybiBrZWVwTGVuZ3RoOwogfQpAQCAtMTQ3LDkgKzE0Nyw5IEBAIHN0
YXRpYyB1bnNpZ25lZCByaWdodENsaXBUb1dvcmRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgQVNTRVJUKGtlZXBDb3VudCA8IGxlbmd0aCk7CiAg
ICAgQVNTRVJUKGtlZXBDb3VudCA8IFNUUklOR19CVUZGRVJfU0laRSk7CiAKLSAgICBVQnJlYWtJ
dGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZykuc3Vic3Ry
aW5nKDAsIGxlbmd0aCkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJh
dG9yKFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGxlbmd0aCkpOwogICAgIHVuc2lnbmVkIGtlZXBM
ZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291bnQpOwotICAgIFN0cmlu
Z1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVwTGVuZ3Ro
KS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGd1YXJkIHRoaXMgY29kZSBiZWhpbmQg
YW4gZWRpdGluZyBiZWhhdmlvci4gVGhlbiB3ZSBjYW4gcmVtb3ZlIHRoZSBQTEFURk9STShJT1Nf
RkFNSUxZKS1ndWFyZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggNTk4YzFhMDFkOGEzODljODZiMzA5YWRjNWZiMjJlMGVkYWJiMDJiZi4u
YTM1YTNhMjA2YWYxNDZkZGI1NzBlZDQ0MWI2MjU0NTNmY2Y5MDViYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTk0MSw3ICs5NDEsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UGxheWJpblVSTChjb25zdCBV
UkwmIHVybCkKICAgICAvLyBDbGVhbiBvdXQgZXZlcnl0aGluZyBhZnRlciBmaWxlOi8vIHVybCBw
YXRoLgogICAgIFN0cmluZyBjbGVhblVSTFN0cmluZyh1cmwuc3RyaW5nKCkpOwogICAgIGlmICh1
cmwuaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgY2xlYW5VUkxTdHJpbmcgPSBjbGVhblVSTFN0cmlu
Zy5zdWJzdHJpbmcoMCwgdXJsLnBhdGhFbmQoKSk7CisgICAgICAgIGNsZWFuVVJMU3RyaW5nID0g
Y2xlYW5VUkxTdHJpbmcubGVmdCh1cmwucGF0aEVuZCgpKTsKIAogICAgIG1fdXJsID0gVVJMIHsg
Y2xlYW5VUkxTdHJpbmcgfTsKICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIkxvYWQg
JXMiLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDVkNTQxOWU4NDhl
YTY2ZTQ1ZjVkODMzNWI1Yzk2MmNlNjQ0NTlkNWEuLmViYWIwOWRlMTUwNzZlYTJhYzhjMDUwMTkz
OTUzNTg0MDE1NmEyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIHNpemVfdCBTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9ybU1heGltdW1CdWZmZXJTaXplKCkgY29uc3QK
ICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5lbmRzV2l0aCgnbScpKQogICAgICAgICAg
ICAgICAgICAgICB1bml0cyA9IDEwMjQgKiAxMDI0OwogICAgICAgICAgICAgICAgIGlmICh1bml0
cyAhPSAxKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCB2
YWx1ZS5sZW5ndGgoKS0xKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5sZWZ0
KHZhbHVlLmxlbmd0aCgpLTEpOwogICAgICAgICAgICAgICAgIGF1dG8gcGFyc2VkU2l6ZSA9IHBh
cnNlSW50ZWdlcjxzaXplX3Q+KHZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFNp
emUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCA0NTA0ZDAx
OGYxZDc3ZDI0NGIzN2M5YWI4ZWU2YmJmNDgzMjEyMTRiLi42NjEzZmM0MTZmMjdhMWNlZTY0NWI1
YTNmYmYyNWEyY2E3YzYwY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIHN0YXRp
YyBHRElPYmplY3Q8SEZPTlQ+IGNyZWF0ZUdESUZvbnQoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5
LCBMT05HIGRlc2lyZWRXZWlnCiAKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5s
ZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7Ci0gICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1p
bHkgPSBTdHJpbmdWaWV3KGZhbWlseSkuc3Vic3RyaW5nKDAsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihMRl9GQUNFU0laRSAtIDEpKTsKKyAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0
cmluZ1ZpZXcoZmFtaWx5KS5sZWZ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihMRl9GQUNFU0laRSAt
IDEpKTsKICAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNo
YXJGcm9tKGxvZ0ZvbnQubGZGYWNlTmFtZSkpOwogICAgIGxvZ0ZvbnQubGZGYWNlTmFtZVt0cnVu
Y2F0ZWRGYW1pbHkubGVuZ3RoKCldID0gMDsKICAgICBsb2dGb250LmxmUGl0Y2hBbmRGYW1pbHkg
PSAwOwpAQCAtNjMxLDcgKzYzMSw3IEBAIFZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
PiBGb250Q2FjaGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlsCiAKICAgICBM
T0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7
Ci0gICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1pbHkgPSBTdHJpbmdWaWV3KGZhbWlseU5hbWUp
LnN1YnN0cmluZygwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7Cisg
ICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1pbHkgPSBTdHJpbmdWaWV3KGZhbWlseU5hbWUpLmxl
ZnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwogICAgIHRydW5jYXRl
ZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20obG9nRm9udC5sZkZh
Y2VOYW1lKSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWlseS5sZW5ndGgo
KV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA4ZDVjNDNkZTgzOTU1OThjMjM5
OWEzOGE4M2RlYTM4YzE0ZDI5NmE1Li4zN2YxNzM0MDYzYjc4YzMxODczODlkNjkwNTVkM2Q2MWVh
NmIxZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0K
QEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2Vu
dCgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAgICAgICAgIHNpemVfdCBs
b2NhdGlvbiA9IG5hbWUuZmluZCgiIFNpbXVsYXRvciIpOwogICAgICAgICBpZiAobG9jYXRpb24g
IT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbG9jYXRp
b24pOworICAgICAgICAgICAgcmV0dXJuIG5hbWUubGVmdChsb2NhdGlvbik7CiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuIG5hbWU7CiAgICAgfSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDg1ZTI0YTRhN2ZjODBjNjU2
Y2Y0ODg4ZTkyN2FiMGI1YmIwNGY1YTEuLmM3NDMxODk5MjhiM2Y2YTliYjM5ZjZmZjRmYzA5OTNm
ZTA5MGNiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBpbmxpbmUgYm9vbCBpc0NvbnRy
b2xDaGFyYWN0ZXJPclNwYWNlKFVDaGFyIGNoYXJhY3RlcikKIAogaW5saW5lIFN0cmluZ1ZpZXcg
dHJpbVRvTmV4dFNlcGFyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICByZXR1cm4gc3Ry
aW5nLnN1YnN0cmluZygwLCBzdHJpbmcuZmluZChpc0NhY2hlSGVhZGVyU2VwYXJhdG9yKSk7Cisg
ICAgcmV0dXJuIHN0cmluZy5sZWZ0KHN0cmluZy5maW5kKGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3Ip
KTsKIH0KIAogc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNh
Y2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRp
YyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gcGFyc2VDYWNoZUhlYWRlcihjb25z
dCBTdHJpbmcmIGhlYWRlcikKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGRlbGltaXRlZCBieSB0aGUgbmV4dCBjb21tYQotICAg
ICAgICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVl
LnN1YnN0cmluZygwLCBuZXh0Q29tbWFQb3NpdGlvbjIpKS50b1N0cmluZygpIH0pOworICAgICAg
ICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlLmxl
ZnQobmV4dENvbW1hUG9zaXRpb24yKSkudG9TdHJpbmcoKSB9KTsKICAgICAgICAgcG9zICs9IChz
YWZlSGVhZGVyLmZpbmQoJywnLCBwb3MpIC0gcG9zKSArIDE7CiAgICAgfQogICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWxTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVu
dGlhbFN0b3JhZ2UuY3BwCmluZGV4IDRlZTdiZDEwZmNjMmNkMDM5NTc1OWIzNmUwNDU2NmYwMmFi
MWE0YzcuLjY1NGE2YTQwYmQ0NDliNzc4ZjAyZjk5YjNkNDc3YzY3YmVjNjJlOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwCkBAIC00NiwxMyArNDYsMTMgQEAgc3RhdGljIFN0cmluZyBwcm90ZWN0aW9uU3BhY2VNYXBL
ZXlGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgLy8gUmVtb3ZlIHRoZSBsYXN0IHBhdGgg
Y29tcG9uZW50IHRoYXQgaXMgbm90IGEgZGlyZWN0b3J5IHRvIGRldGVybWluZSB0aGUgc3VidHJl
ZSBmb3Igd2hpY2ggY3JlZGVudGlhbHMgd2lsbCBhcHBseS4KICAgICAvLyBXZSBrZWVwIGEgbGVh
ZGluZyBzbGFzaCwgYnV0IHJlbW92ZSBhIHRyYWlsaW5nIG9uZS4KLSAgICBTdHJpbmcgZGlyZWN0
b3J5VVJMID0gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCB1cmwucGF0aEVuZCgpKTsKKyAgICBT
dHJpbmcgZGlyZWN0b3J5VVJMID0gdXJsLnN0cmluZygpLmxlZnQodXJsLnBhdGhFbmQoKSk7CiAg
ICAgdW5zaWduZWQgZGlyZWN0b3J5VVJMUGF0aFN0YXJ0ID0gdXJsLnBhdGhTdGFydCgpOwogICAg
IEFTU0VSVChkaXJlY3RvcnlVUkxbZGlyZWN0b3J5VVJMUGF0aFN0YXJ0XSA9PSAnLycpOwogICAg
IGlmIChkaXJlY3RvcnlVUkwubGVuZ3RoKCkgPiBkaXJlY3RvcnlVUkxQYXRoU3RhcnQgKyAxKSB7
CiAgICAgICAgIHNpemVfdCBpbmRleCA9IGRpcmVjdG9yeVVSTC5yZXZlcnNlRmluZCgnLycpOwog
ICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgICAgICBkaXJlY3RvcnlVUkwg
PSBkaXJlY3RvcnlVUkwuc3Vic3RyaW5nKDAsIChpbmRleCAhPSBkaXJlY3RvcnlVUkxQYXRoU3Rh
cnQpID8gaW5kZXggOiBkaXJlY3RvcnlVUkxQYXRoU3RhcnQgKyAxKTsKKyAgICAgICAgZGlyZWN0
b3J5VVJMID0gZGlyZWN0b3J5VVJMLmxlZnQoKGluZGV4ICE9IGRpcmVjdG9yeVVSTFBhdGhTdGFy
dCkgPyBpbmRleCA6IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpOwogICAgIH0KIAogICAgIHJl
dHVybiBkaXJlY3RvcnlVUkw7CkBAIC0xNTUsNyArMTU1LDcgQEAgSGFzaE1hcDxTdHJpbmcsIFBy
b3RlY3Rpb25TcGFjZT46Oml0ZXJhdG9yIENyZWRlbnRpYWxTdG9yYWdlOjpmaW5kRGVmYXVsdFBy
b3RlY3QKIAogICAgICAgICBzaXplX3QgaW5kZXggPSBkaXJlY3RvcnlVUkwucmV2ZXJzZUZpbmQo
Jy8nLCBkaXJlY3RvcnlVUkwubGVuZ3RoKCkgLSAyKTsKICAgICAgICAgQVNTRVJUKGluZGV4ICE9
IG5vdEZvdW5kKTsKLSAgICAgICAgZGlyZWN0b3J5VVJMID0gZGlyZWN0b3J5VVJMLnN1YnN0cmlu
ZygwLCAoaW5kZXggPT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0KSA/IGluZGV4ICsgMSA6IGluZGV4
KTsKKyAgICAgICAgZGlyZWN0b3J5VVJMID0gZGlyZWN0b3J5VVJMLmxlZnQoKGluZGV4ID09IGRp
cmVjdG9yeVVSTFBhdGhTdGFydCkgPyBpbmRleCArIDEgOiBpbmRleCk7CiAgICAgICAgIEFTU0VS
VChkaXJlY3RvcnlVUkwubGVuZ3RoKCkgPiBkaXJlY3RvcnlVUkxQYXRoU3RhcnQpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rl
ci5jcHAKaW5kZXggY2NiNzE4YzA2MDFhNDU2NTc2ZDRhNjM3NWU0YjYxZTZmOGUzNzM4Ny4uNjc5
MjQ0MGYwYWY5M2Q1YjZiYWY4YzlkZDcwMWVkOGUwMjRjOTUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTExNSw3ICsx
MTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlzQmFzZTY0ID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZm9ybWF0VHlwZSwgImJhc2U2NCIpOwogCiAgICAgICAgIC8vIElmIGhlYWRlciBk
b2VzIG5vdCBlbmQgd2l0aCAiYmFzZTY0IiwgbWVkaWFUeXBlIHNob3VsZCBiZSB0aGUgd2hvbGUg
aGVhZGVyLgotICAgICAgICBhdXRvIG1lZGlhVHlwZSA9IChpc0Jhc2U2NCA/IGhlYWRlci5zdWJz
dHJpbmcoMCwgbWVkaWFUeXBlRW5kKSA6IGhlYWRlcikudG9TdHJpbmcoKTsKKyAgICAgICAgYXV0
byBtZWRpYVR5cGUgPSAoaXNCYXNlNjQgPyBoZWFkZXIubGVmdChtZWRpYVR5cGVFbmQpIDogaGVh
ZGVyKS50b1N0cmluZygpOwogICAgICAgICBtZWRpYVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUVFBTcGFjZXMobWVkaWFUeXBlKTsKICAgICAgICAgaWYgKG1lZGlhVHlwZS5zdGFydHNX
aXRoKCc7JykpCiAgICAgICAgICAgICBtZWRpYVR5cGUuaW5zZXJ0KCJ0ZXh0L3BsYWluIl9zLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAK
aW5kZXggMzcxMzRkOWE0ZmU1MDZjOGU0ODllMDM5NGM2MjFiZTU4OWFjNTJlNC4uNzNlODEyYzBk
ZGRkNDU3MGQ2ZjVhNWJmNWM5MjFjYTI3ZGM5ZTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTU5Nyw3ICs1OTcsNyBAQCBzdGQ6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmdWaWV3LCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4+
IHBhcnNlU3RydWN0dXJlZEZpZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICsraW5kZXg7
CiAgICAgfQotICAgIFN0cmluZ1ZpZXcgYmFyZUl0ZW0gPSBoZWFkZXIuc3Vic3RyaW5nKDAsIGlu
ZGV4KTsKKyAgICBTdHJpbmdWaWV3IGJhcmVJdGVtID0gaGVhZGVyLmxlZnQoaW5kZXgpOwogCiAg
ICAgLy8gUGFyc2UgcGFyYW1ldGVycyAoaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2Mv
aHRtbC9yZmM4OTQxI3NlY3Rpb24tNC4yLjMuMikuCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwCmluZGV4IGI0MjM3OWYzM2IzNWJmMmU1ZDcyYjEyN2MyZTAzYjY0MGFjZmNiNmQu
LjQyZmE2MTE4Y2VmMWFjYmZlMmVjYWNlZGFhZWEyNjIxNzAzNmVhMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcApAQCAtNjcsMTMgKzY3LDEz
IEBAIHN0YXRpYyBLZXlWYWx1ZU1hcCByZXRyaWV2ZUtleVZhbHVlUGFpcnMoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlCiAgICAgICAgICAgICBrZXkgPSBTdHJpbmcoKTsK
ICAgICAgICAgICAgIHZhbHVlLmNsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgc2l6ZV90IHNl
bWlDb2xvbkluZGV4ID0gbGluZS5maW5kKCc6Jyk7Ci0gICAgICAgIGlmIChzZW1pQ29sb25JbmRl
eCA9PSBub3RGb3VuZCkgeworICAgICAgICBzaXplX3Qgc2VtaWNvbG9uSW5kZXggPSBsaW5lLmZp
bmQoJzonKTsKKyAgICAgICAgaWYgKHNlbWljb2xvbkluZGV4ID09IG5vdEZvdW5kKSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlzIG5vdCBhIGtleSB2YWx1ZSBwYWlyLCBpZ25vcmUuCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBrZXkgPSBsaW5lLnN1YnN0cmluZygw
LCBzZW1pQ29sb25JbmRleCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKLSAgICAgICAgdmFsdWUuYXBwZW5kKGxpbmUuc3Vic3RyaW5nKHNlbWlDb2xvbkluZGV4
ICsgMSkpOworICAgICAgICBrZXkgPSBTdHJpbmdWaWV3KGxpbmUpLmxlZnQoc2VtaWNvbG9uSW5k
ZXgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAg
IHZhbHVlLmFwcGVuZChTdHJpbmdWaWV3KGxpbmUpLnN1YnN0cmluZyhzZW1pY29sb25JbmRleCAr
IDEpKTsKICAgICB9CiAgICAgLy8gU3RvcmUgdGhlIGxhc3QgcHJvcGVydHkgaWYgdGhlcmUgaXMg
b25lLgogICAgIGlmICgha2V5LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCAwNGU2NGNkMmM3YTkwZDlj
ZTNkYzI5ZjhiMmQxNjc4MjQwZmEwMzRiLi43NWIxNmIxMmM5ZTMyYzE3OTQxODFiMWVkOTExNjZj
YWY1NDA2YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlQ29v
a2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFzTWF4QWdlLCBD
b29rCiAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVlOwogCiAgICAgaWYgKGFzc2lnbm1lbnRQb3Np
dGlvbiAhPSBub3RGb3VuZCkgewotICAgICAgICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLnN1
YnN0cmluZygwLCBhc3NpZ25tZW50UG9zaXRpb24pLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAg
ICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLmxlZnQoYXNzaWdubWVudFBvc2l0aW9uKS5zdHJp
cFdoaXRlU3BhY2UoKTsKICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGUuc3Vic3Ry
aW5nKGFzc2lnbm1lbnRQb3NpdGlvbiArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIH0gZWxz
ZQogICAgICAgICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLnN0cmlwV2hpdGVTcGFjZSgpOwpA
QCAtMTUzLDcgKzE1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRl
cihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUpCiAKICAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRp
b24gPSBjb29raWVMaW5lLmZpbmQoJzsnKTsKIAotICAgIFN0cmluZyBjb29raWVQYWlyID0gc2Vw
YXJhdG9yUG9zaXRpb24gPT0gbm90Rm91bmQgPyBjb29raWVMaW5lIDogY29va2llTGluZS5zdWJz
dHJpbmcoMCwgc2VwYXJhdG9yUG9zaXRpb24pOworICAgIFN0cmluZyBjb29raWVQYWlyID0gc2Vw
YXJhdG9yUG9zaXRpb24gPT0gbm90Rm91bmQgPyBjb29raWVMaW5lIDogY29va2llTGluZS5sZWZ0
KHNlcGFyYXRvclBvc2l0aW9uKTsKIAogICAgIFN0cmluZyBjb29raWVOYW1lOwogICAgIFN0cmlu
ZyBjb29raWVWYWx1ZTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGQ6Om9wdGlvbmFsPENvb2tpZT4g
cGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lKQogICAgIGlmIChhc3Np
Z25tZW50UG9zaXRpb24gPT0gbm90Rm91bmQpCiAgICAgICAgIGNvb2tpZVZhbHVlID0gY29va2ll
UGFpcjsKICAgICBlbHNlIHsKLSAgICAgICAgY29va2llTmFtZSA9IGNvb2tpZVBhaXIuc3Vic3Ry
aW5nKDAsIGFzc2lnbm1lbnRQb3NpdGlvbik7CisgICAgICAgIGNvb2tpZU5hbWUgPSBjb29raWVQ
YWlyLmxlZnQoYXNzaWdubWVudFBvc2l0aW9uKTsKICAgICAgICAgY29va2llVmFsdWUgPSBjb29r
aWVQYWlyLnN1YnN0cmluZyhhc3NpZ25tZW50UG9zaXRpb24gKyAxKTsKICAgICB9CiAKQEAgLTE5
Myw3ICsxOTMsNyBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAg
ICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikKICAgICAgICAgcmV0dXJuICIvIl9zOwogCi0gICAg
cmV0dXJuIHBhdGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKKyAgICByZXR1cm4g
cGF0aC5sZWZ0KGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29va2ll
VXRpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1Nj
cmlwdE1hcHBpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1Nj
cmlwdE1hcHBpbmcuY3BwCmluZGV4IDcyMzA5ZWMwZGMxZTRmZDNiODFmM2Q1NDIxNThhOWVhYTAy
ZmE3MmMuLjg1N2I5M2JlNTM3ZWRkMTZkYjA2OThiM2M5OGVjOGM0OTM4YTU1YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGlu
Zy5jcHAKQEAgLTM3NSw3ICszNzUsNyBAQCBVU2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGVG
b3JGb250U2VsZWN0aW9uKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgICAgICBVU2NyaXB0Q29k
ZSBjb2RlID0gc2NyaXB0TmFtZVRvQ29kZShjYW5vbmljYWxMb2NhbGUuc3Vic3RyaW5nKHVuZGVy
c2NvcmVQb3NpdGlvbiArIDEpKTsKICAgICAgICAgaWYgKGNvZGUgIT0gVVNDUklQVF9JTlZBTElE
X0NPREUgJiYgY29kZSAhPSBVU0NSSVBUX1VOS05PV04pCiAgICAgICAgICAgICByZXR1cm4gY29k
ZTsKLSAgICAgICAgY2Fub25pY2FsTG9jYWxlID0gY2Fub25pY2FsTG9jYWxlLnN1YnN0cmluZygw
LCB1bmRlcnNjb3JlUG9zaXRpb24pOworICAgICAgICBjYW5vbmljYWxMb2NhbGUgPSBjYW5vbmlj
YWxMb2NhbGUubGVmdCh1bmRlcnNjb3JlUG9zaXRpb24pOwogICAgIH0KICAgICByZXR1cm4gVVND
UklQVF9DT01NT047CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKaW5kZXggNGNlMzI4YTgzMWM5MGJmNmJkMjI4ZTFmMDcyNDA4ZDY0YjMzYTQ1ZS4u
N2QxNTM2YTdkNjRkM2ZjODM2Mjc2MmYzYTcwNGRhNTM4YzZmN2E2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBA
IHN0YXRpYyBTdHJpbmcgZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZShjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgU3RyaW5nCiAKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewog
ICAgICAgICBzaXplX3QgbGVuID0gc3RkOjptaW48c2l6ZV90Pih0aXRsZS5sZW5ndGgoKSwgZnNQ
YXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uKTsKLSAgICAgICAgU3RyaW5nVmlldyh0aXRs
ZSkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVm
ZmVyKTsKKyAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkubGVmdChsZW4pLmdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0g
MDsKICAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVm
ZmVyKSwgbGVuKTsKICAgICB9CkBAIC02MjAsMTAgKzYyMCwxMCBAQCBzdGF0aWMgU3RyaW5nIGZp
bGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZwogICAgICAgICBhdXRvIGxhc3RDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25l
bnQoKTsKICAgICAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpIHx8ICghaXNMaW5rICYmICFsYXN0
Q29tcG9uZW50LmlzRW1wdHkoKSkpIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JE
Pihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24sIGxhc3RDb21wb25lbnQubGVuZ3Ro
KCkpOwotICAgICAgICAgICAgbGFzdENvbXBvbmVudC5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOworICAgICAgICAgICAgbGFzdENvbXBv
bmVudC5sZWZ0KGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1Bh
dGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24sIHVybFN0cmluZy5sZW5ndGgoKSk7Ci0gICAg
ICAgICAgICBTdHJpbmdWaWV3KHVybFN0cmluZykuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgICAgIFN0cmluZ1ZpZXco
dXJsU3RyaW5nKS5sZWZ0KGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVm
ZmVyKTsKICAgICAgICAgfQogICAgICAgICBmc1BhdGhCdWZmZXJbbGVuXSA9IDA7CiAgICAgICAg
IHBhdGhSZW1vdmVCYWRGU0NoYXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7
CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVj
dChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2Rb
MF0ubkZpbGVTaXplTG93ID0gY29udGVudC5sZW5ndGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNp
emUgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RI
KGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJp
bmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+
ZmdkWzBdLmNGaWxlTmFtZSkpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5sZWZ0KG1heFNpemUp
LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5h
bWUpKTsKICAgICBHbG9iYWxVbmxvY2sodXJsRmlsZURlc2NyaXB0b3IpOwogCiAgICAgY2hhciog
ZmlsZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2sodXJsRmlsZUNvbnRl
bnQpKTsKQEAgLTk2MCw3ICs5NjAsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFn
ZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgfQog
CiAgICAgaW50IG1heFNpemUgPSBzdGQ6Om1pbjxpbnQ+KGZzUGF0aC5sZW5ndGgoKSwgV1RGX0FS
UkFZX0xFTkdUSChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKLSAgICBTdHJpbmdWaWV3KGZzUGF0
aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFy
RnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0aCkubGVm
dChtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20oZmdkLT5mZ2Rb
MF0uY0ZpbGVOYW1lKSk7CiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4g
bWVtT2JqOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVU
ZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0
UmVuZGVyZXIuY3BwCmluZGV4IGU5YzNjOWFlZjAwYmYwN2QzMTBjNmE5NGM2MDc0YzI5ZjNjNzMz
ZjIuLmJiODBjNjdjYTEwNmZiMjJkYWQ2N2E3MjhkZjgxYjRiYWZjYjljZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKIAogICAgICAgICBpbnQgYmVm
b3JlV2lkdGg7CiAgICAgICAgIGlmICh1bmRlcmxpbmVkSW5kZXggPiAwKSB7Ci0gICAgICAgICAg
ICBUZXh0UnVuIGJlZm9yZVJ1bihTdHJpbmdWaWV3KHRleHQpLnN1YnN0cmluZygwLCB1bmRlcmxp
bmVkSW5kZXgpKTsKKyAgICAgICAgICAgIFRleHRSdW4gYmVmb3JlUnVuKFN0cmluZ1ZpZXcodGV4
dCkubGVmdCh1bmRlcmxpbmVkSW5kZXgpKTsKICAgICAgICAgICAgIGJlZm9yZVdpZHRoID0gZm9u
dC53aWR0aChiZWZvcmVSdW4pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJlZm9yZVdp
ZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXgg
Mzg2MzJiMTQyODNiYzBhMTM4MDQxMTQ2YWNhOWMwMjM4NjU0YWRmNy4uYTU5NzE2M2IwYzQzYjJh
ZDM1NGE2M2RkYTczOGI2MzkzYjllMzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpv
dXRwdXRSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0
aCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgY29uc3QgaW50IG1heFByaW50ZWRMZW5ndGgg
PSA4MDsKICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1heFByaW50ZWRMZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3Vic3RyaW5nID0gdmFsdWUuc3Vic3RyaW5nKDAs
IG1heFByaW50ZWRMZW5ndGgpOworICAgICAgICAgICAgICAgIGF1dG8gc3Vic3RyaW5nID0gU3Ry
aW5nVmlldyh2YWx1ZSkubGVmdChtYXhQcmludGVkTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBz
dHJlYW0gPDwgIiBcIiIgPDwgc3Vic3RyaW5nLnV0ZjgoKS5kYXRhKCkgPDwgIlwiLi4uIjsKICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCB2YWx1
ZS51dGY4KCkuZGF0YSgpIDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IGJjOGNkYmNjODk3
YmE4ZTdkYjUxODI5NDdjNjkzZGU5YzI5MGIwMzEuLjg2YzI2Zjg3NThhNGVjZDlhMmQyZWU1NTU4
MmNlOTg4MzZkOWJmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgTmFt
ZWRMaW5lQ29sbGVjdGlvbkJhc2U6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlKGNvbnN0IFJlbmRl
ckdyaWQmIGluaXRpYWxHcmlkLAogICAgICAgICAgICAgICAgIHN0YXJ0U2lkZSA9IGZhbHNlOwog
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgc3RhcnRTaWRlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGFyZWFOYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgc3VmZml4KTsKKyAgICAgICAg
ICAgIGFyZWFOYW1lID0gbmFtZS5sZWZ0KHN1ZmZpeCk7CiAgICAgICAgIH0KICAgICAgICAgYXV0
byBpbXBsaWNpdExpbmUgPSBjbGFtcGVkSW1wbGljaXRMaW5lRm9yQXJlYSgqZ3JpZENvbnRhaW5l
clN0eWxlLCBhcmVhTmFtZSwgMCwgbV9sYXN0TGluZSwgaXNSb3dBeGlzLCBzdGFydFNpZGUpOwog
ICAgICAgICBpZiAoaW1wbGljaXRMaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1Rlc3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5kZXggZjA0
YjRmYWYzZTc4MDViNWEzMmNkYzljN2MyMDc2MGY5NjZmOTc1MC4uYmE5N2U1OTMxZWNkZjdhZjQ5
ZGI2NjYzYzVkNmExMjUyM2IxMDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1Rlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCkBAIC0xMTgs
OCArMTE4LDEwIEBAIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogICAgICAgICBpZiAo
ZmVhdHVyZS5pc0VtcHR5KCkgfHwgIXN1cHBvcnRlZFNWR0ZlYXR1cmVTZXQuY29udGFpbnMoZmVh
dHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIFN0cmluZyBkZWZh
dWx0TGFuZ3VhZ2UgPSBXVEY6OmRlZmF1bHRMYW5ndWFnZSgpOworICAgIGF1dG8gZ2VuZXJpY0Rl
ZmF1bHRMYW5ndWFnZSA9IFN0cmluZ1ZpZXcoZGVmYXVsdExhbmd1YWdlKS5sZWZ0KDIpOwogICAg
IGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBtX3N5c3RlbUxhbmd1YWdlLT5pdGVtcygpKSB7Ci0gICAg
ICAgIGlmIChsYW5ndWFnZSAhPSBkZWZhdWx0TGFuZ3VhZ2UoKS5zdWJzdHJpbmcoMCwgMikpCisg
ICAgICAgIGlmIChsYW5ndWFnZSAhPSBnZW5lcmljRGVmYXVsdExhbmd1YWdlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IG1fcmVx
dWlyZWRFeHRlbnNpb25zLT5pdGVtcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVu
Y2UuY3BwCmluZGV4IGVlNDVhMjljYWUxZjE3ZmE3OGJmYjk3ZTEzN2M0MDZlMGM1NzYwZWQuLjAy
NDU5NDcyNmZiOWVhZDJjMWMzZDkwYzc3NmQ2MmRlY2ZkZGM4MTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVUklSZWZlcmVuY2UuY3BwCkBAIC02NywxMCArNjcsMTAgQEAgU3RyaW5nIFNWR1VSSVJl
ZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QKICAgICBpZiAoIXN0YXJ0KQogICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZygx
KTsKIAotICAgIFVSTCBiYXNlID0gVVJMKGRvY3VtZW50LmJhc2VVUkwoKSwgdXJsLnN1YnN0cmlu
ZygwLCBzdGFydCkpOworICAgIFVSTCBiYXNlID0gVVJMKGRvY3VtZW50LmJhc2VVUkwoKSwgdXJs
LmxlZnQoc3RhcnQpKTsKICAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLnN1YnN0
cmluZyhzdGFydCk7Ci0gICAgVVJMIGt1cmwoYmFzZSwgZnJhZ21lbnRJZGVudGlmaWVyKTsKLSAg
ICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihrdXJsLCBkb2N1bWVudC51cmwo
KSkpCisgICAgVVJMIHVybChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIpOworICAgIGlmIChlcXVh
bElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybCwgZG9jdW1lbnQudXJsKCkpKQogICAgICAg
ICByZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVyLnN1YnN0cmluZygxKTsKIAogICAgIC8vIFRoZSB1
cmwgZG9lc24ndCBoYXZlIGFueSBmcmFnbWVudCBpZGVudGlmaWVyLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAppbmRleCBjNDM2ZWFlMjM0OWI4
OWViZjA3ZjM5MDAwZGY1NjVkMzRkMGIzNTAzLi4xNmVhYjY1MjBlODhiY2NjMzUzNzQwYjc3NzE3
YWQ2ZTE5N2QzNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NW
R1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NN
SUxFbGVtZW50LmNwcApAQCAtMzQ4LDEzICszNDgsMTMgQEAgU01JTFRpbWUgU1ZHU01JTEVsZW1l
bnQ6OnBhcnNlQ2xvY2tWYWx1ZShTdHJpbmdWaWV3IGRhdGEpCiAgICAgc2l6ZV90IGRvdWJsZVBv
aW50T25lID0gcGFyc2UuZmluZCgnOicpOwogICAgIHNpemVfdCBkb3VibGVQb2ludFR3byA9IHBh
cnNlLmZpbmQoJzonLCBkb3VibGVQb2ludE9uZSArIDEpOwogICAgIGlmIChkb3VibGVQb2ludE9u
ZSA9PSAyICYmIGRvdWJsZVBvaW50VHdvID09IDUgJiYgcGFyc2UubGVuZ3RoKCkgPj0gOCkgewot
ICAgICAgICBhdXRvIGhvdXIgPSBwYXJzZUludGVnZXI8dWludDhfdD4ocGFyc2Uuc3Vic3RyaW5n
KDAsIDIpKTsKKyAgICAgICAgYXV0byBob3VyID0gcGFyc2VJbnRlZ2VyPHVpbnQ4X3Q+KHBhcnNl
LmxlZnQoMikpOwogICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90Pihw
YXJzZS5zdWJzdHJpbmcoMywgMikpOwogICAgICAgICBpZiAoIWhvdXIgfHwgIW1pbnV0ZSkKICAg
ICAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNvbHZlZCgpOwogICAgICAgICByZXN1bHQg
PSAqaG91ciAqIDYwICogNjAgKyAqbWludXRlICogNjAgKyBwYXJzZS5zdWJzdHJpbmcoNikudG9E
b3VibGUob2spOwogICAgIH0gZWxzZSBpZiAoZG91YmxlUG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQ
b2ludFR3byA9PSBub3RGb3VuZCAmJiBwYXJzZS5sZW5ndGgoKSA+PSA1KSB7IAotICAgICAgICBh
dXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90PihwYXJzZS5zdWJzdHJpbmcoMCwgMikp
OworICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90PihwYXJzZS5sZWZ0
KDIpKTsKICAgICAgICAgaWYgKCFtaW51dGUpCiAgICAgICAgICAgICByZXR1cm4gU01JTFRpbWU6
OnVucmVzb2x2ZWQoKTsKICAgICAgICAgcmVzdWx0ID0gKm1pbnV0ZSAqIDYwICsgcGFyc2Uuc3Vi
c3RyaW5nKDMpLnRvRG91YmxlKG9rKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRleCA4MDRlNmY0YzA4NGIwYjEzZTRkYWEw
ODUwYTUwODZhNjRhOTdiMjNhLi5mZWM1ZjM5NjBkZTQ5YTliMDI4YjFmMDE0MzljMzBkYWY3ZWNh
Y2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdv
cmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VX
b3JrZXJKb2IuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgUmVzb3VyY2VFcnJvciBTZXJ2aWNlV29y
a2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZShjb25zdCBTZXJ2aWNlV29ya2UK
ICAgICBpZiAoc2VydmljZVdvcmtlckFsbG93ZWQuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byBw
YXRoID0gam9iRGF0YS5zY3JpcHRVUkwucGF0aCgpOwogICAgICAgICAvLyBMYXN0IHBhcnQgb2Yg
dGhlIHBhdGggaXMgdGhlIHNjcmlwdCdzIGZpbGVuYW1lLgotICAgICAgICBtYXhTY29wZVN0cmlu
ZyA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpLnRvU3RyaW5n
KCk7CisgICAgICAgIG1heFNjb3BlU3RyaW5nID0gcGF0aC5sZWZ0KHBhdGgucmV2ZXJzZUZpbmQo
Jy8nKSArIDEpLnRvU3RyaW5nKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYXV0byBtYXhTY29w
ZSA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwgc2VydmljZVdvcmtlckFsbG93ZWQpOwogICAgICAg
ICBpZiAoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYXhTY29wZSktPmlzU2FtZU9yaWdpbkFzKFNl
Y3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3JpcHRVUkwpKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0
cmF0aW9uS2V5LmNwcAppbmRleCA3YTg4ZmE3NzRlZGMxMmUyNWVkYmMyNTA0NDNjZWEzMTJhYmEy
ZWYyLi4zYThmYWMxOTM5MWVhYzI5N2FmYWM3ZmUyMWZmOGY0NzEyMWQ2ZGZkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgc3RkOjpvcHRpb25hbDxT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5
Ojpmcm9tRGEKICAgICBpZiAoIXNjb3BlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBr
ZXkuc3Vic3RyaW5nKDAsIGZpcnN0KSwga2V5LnN1YnN0cmluZyhmaXJzdCArIDEsIHNlY29uZCAt
IGZpcnN0IC0gMSksIHNob3J0UG9ydCB9LCBXVEZNb3ZlKHNjb3BlKSB9OworICAgIHJldHVybiBT
ZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBrZXkubGVmdChmaXJzdCksIGtleS5zdWJz
dHJpbmcoZmlyc3QgKyAxLCBzZWNvbmQgLSBmaXJzdCAtIDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92
ZShzY29wZSkgfTsKIH0KIAogI2lmICFMT0dfRElTQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKaW5kZXggN2MzNjQyZmUzMzgx
Yzk2YTk0ZDE1NWNjNDdhYWJlOWNlODU2YjdkNy4uOGRmMTM5MTQwMzc3YTNhOWJiZTE1MjE1MDkz
Y2NkNmRhNDc4OGY4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTEyNjgsNyArMTI2OCw3IEBAIGJvb2wgU1dTZXJ2ZXI6
OmNhbkhhbmRsZVNjaGVtZShTdHJpbmdWaWV3IHNjaGVtZSkgY29uc3QKIHsKICAgICBpZiAoc2No
ZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hlbWUuc3Vic3RyaW5nKDAsIDQpLCAiaHR0cCIpKQorICAg
IGlmICghc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hlbWUsICJodHRwIikp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAoc2NoZW1lLmxlbmd0aCgpID09IDUgJiYg
aXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChzY2hlbWVbNF0sICdzJykpCiAgICAgICAgIHJldHVy
biB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcCBi
L1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5jcHAKaW5kZXggODM1OTY5YmZhMzZjZTE2
ZjYzNTZjNmJhMTdjYTkyZWExZTk4ZGVkZS4uMmIxYjdkYjEyMTRjOWZlNmNlYWI5NTFmMzYxNTAy
YzE5ZWY5NGQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkRyaXZlci9Db21tYW5kUmVzdWx0LmNw
cAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRSZXN1bHQuY3BwCkBAIC03NCw3ICs3NCw3
IEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiYmIHJl
c3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvCiAgICAgICAgIFN0cmluZyBlcnJvck5hbWU7CiAg
ICAgICAgIGF1dG8gcG9zaXRpb24gPSBlcnJvck1lc3NhZ2UuZmluZCgnOycpOwogICAgICAgICBp
ZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAgICAgICAgIGVycm9yTmFtZSA9IGVycm9y
TWVzc2FnZS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOworICAgICAgICAgICAgZXJyb3JOYW1lID0g
ZXJyb3JNZXNzYWdlLmxlZnQocG9zaXRpb24pOwogICAgICAgICAgICAgbV9lcnJvck1lc3NhZ2Ug
PSBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKHBvc2l0aW9uICsgMSk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgZXJyb3JOYW1lID0gZXJyb3JNZXNzYWdlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlVHJh
Y2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxT
dG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBlMDlkMmU5ZjM2Y2FiMjVjMTc1NDFjODc0
OTZmZjI5YjkxYTA1M2I1Li43MmVkMzM3OWQzNmYyZTdmZjZmNTMwMGQ1ZTY2M2Q3NDAwN2FjMjlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9j
YWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcApAQCAtMTA2
LDcgKzEwNiw3IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IExvY2FsU3RvcmFnZURhdGFi
YXNlVHJhY2tlcjo6b3JpZ2lucygpIGNvbnN0CiAgICAgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0
YT4gZGF0YWJhc2VPcmlnaW5zOwogICAgIGZvciAoYXV0byYgcGF0aCA6IEZpbGVTeXN0ZW06Omxp
c3REaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5KCkpKSB7CiAgICAgICAgIGF1dG8gZmls
ZW5hbWUgPSBGaWxlU3lzdGVtOjpwYXRoRmlsZU5hbWUocGF0aCk7Ci0gICAgICAgIGF1dG8gb3Jp
Z2luSWRlbnRpZmllciA9IGZpbGVuYW1lLnN1YnN0cmluZygwLCBmaWxlbmFtZS5sZW5ndGgoKSAt
IHN0cmxlbigiLmxvY2Fsc3RvcmFnZSIpKTsKKyAgICAgICAgYXV0byBvcmlnaW5JZGVudGlmaWVy
ID0gZmlsZW5hbWUubGVmdChmaWxlbmFtZS5sZW5ndGgoKSAtIHN0cmxlbigiLmxvY2Fsc3RvcmFn
ZSIpKTsKICAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRh
YmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcik7CiAgICAgICAgIGlmIChvcmlnaW4pCiAg
ICAgICAgICAgICBkYXRhYmFzZU9yaWdpbnMuYXBwZW5kKG9yaWdpbi52YWx1ZSgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3Rv
cmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNo
ZVN0b3JhZ2UuY3BwCmluZGV4IGIxZTZmZjNjMDc4YmU4NzFkOTUxMGZhMzc2YzQ3MDBlMzNjMTlm
YTYuLjYxMTY3YThlYmE4MDU5MTIwYzMxNGRlYjMyNzIyMDlkYzE2OGVkOTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVT
dG9yYWdlLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHN0YXRpYyB2b2lkIHRyYXZlcnNlUmVjb3Jk
c0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgsIGNvbnN0IFN0cmluZyYgZXhwZWN0CiAg
ICAgICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBEaXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUg
fHwgZmlsZU5hbWUubGVuZ3RoKCkgPCBLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICAgICAgU3RyaW5nIGhhc2hTdHJpbmcg
PSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgS2V5OjpoYXNoU3RyaW5nTGVuZ3RoKCkpOworICAgICAg
ICAgICAgICAgIFN0cmluZyBoYXNoU3RyaW5nID0gZmlsZU5hbWUubGVmdChLZXk6Omhhc2hTdHJp
bmdMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgYXV0byBpc0Jsb2IgPSBmaWxlTmFtZS5sZW5n
dGgoKSA+IEtleTo6aGFzaFN0cmluZ0xlbmd0aCgpICYmIGZpbGVOYW1lLmVuZHNXaXRoKGJsb2JT
dWZmaXgpOwogICAgICAgICAgICAgICAgIGZ1bmN0aW9uKGZpbGVOYW1lLCBoYXNoU3RyaW5nLCBh
Y3R1YWxUeXBlLCBpc0Jsb2IsIHJlY29yZERpcmVjdG9yeVBhdGgpOwogICAgICAgICAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxT
dG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
TG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMjZiYzkwNzliYjJmOTZkZTc5YWQwNTE5ZDc3
MmEwYzBiMTY1YWJiMy4uMmIxMDg0NmY5NjA5OWEzYjI0ZWM0NjU0NWY1MTU3Y2ViNjkxZDdhNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3Rv
cmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IGZpbGVOYW1lVG9PcmlnaW4oY29u
c3QgU3RyaW5nJgogICAgIGlmIChmaWxlTmFtZUxlbmd0aCA8PSBzdWZmaXhMZW5ndGgpCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIG9yaWdpbklkZW50aWZpZXIgPSBm
aWxlTmFtZS5zdWJzdHJpbmcoMCwgZmlsZU5hbWVMZW5ndGggLSBzdWZmaXhMZW5ndGgpOworICAg
IGF1dG8gb3JpZ2luSWRlbnRpZmllciA9IGZpbGVOYW1lLmxlZnQoZmlsZU5hbWVMZW5ndGggLSBz
dWZmaXhMZW5ndGgpOwogICAgIHJldHVybiBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAppbmRleCA0ZWQzYjhhYTJkMjNlNTE1YTMwNDkwNWVj
NDAyZjNlNDhhNGM0ZDYxLi45ZDc1NWE3ZjNiYTRlOGRlMzYwNGY4ZjBhYTE5ODg4NWRmNzY5M2Uw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvYy9XS1N0cmluZy5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tTdHJpbmcuY3BwCkBAIC01OCw3ICs1OCw3
IEBAIHNpemVfdCBXS1N0cmluZ0dldENoYXJhY3RlcnMoV0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBX
S0NoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlCiAgICAgc3RhdGljX2Fzc2VydChzaXplb2YoV0tD
aGFyKSA9PSBzaXplb2YoVUNoYXIpLCAiU2l6ZSBvZiBXS0NoYXIgbXVzdCBtYXRjaCBzaXplIG9m
IFVDaGFyIik7CiAKICAgICB1bnNpZ25lZCB1bnNpZ25lZEJ1ZmZlckxlbmd0aCA9IHN0ZDo6bWlu
PHNpemVfdD4oYnVmZmVyTGVuZ3RoLCBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4
KCkpOwotICAgIGF1dG8gc3Vic3RyaW5nID0gV2ViS2l0Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3Ry
aW5nVmlldygpLnN1YnN0cmluZygwLCB1bnNpZ25lZEJ1ZmZlckxlbmd0aCk7CisgICAgYXV0byBz
dWJzdHJpbmcgPSBXZWJLaXQ6OnRvSW1wbChzdHJpbmdSZWYpLT5zdHJpbmdWaWV3KCkubGVmdCh1
bnNpZ25lZEJ1ZmZlckxlbmd0aCk7CiAKICAgICBzdWJzdHJpbmcuZ2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+KGJ1ZmZlcikpOwogICAgIHJldHVybiBz
dWJzdHJpbmcubGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5kZXggYzc4YzE4MmQzM2NjYWExZmU3OGQ1
ZDM5Zjg1MmNhZjhiYjExNDIzYy4uMjhlMGY2NTEzN2EyNTlhNGM1YTE2MDBiNTg2ZTMzNzdhNTNi
MmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRN
ZXRob2RGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL0lu
cHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtMjQwLDEwICsyNDAsMTAgQEAgdm9pZCBJbnB1dE1ldGhv
ZEZpbHRlcjo6bm90aWZ5U3Vycm91bmRpbmcoY29uc3QgU3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBj
dXJzb3JQb3MKICAgICBtX3N1cnJvdW5kaW5nLnNlbGVjdGlvblBvc2l0aW9uID0gc2VsZWN0aW9u
UG9zaXRpb247CiAKICAgICBhdXRvIHRleHRVVEY4ID0gbV9zdXJyb3VuZGluZy50ZXh0LnV0Zjgo
KTsKLSAgICBhdXRvIGN1cnNvclBvc2l0aW9uVVRGOCA9IGN1cnNvclBvc2l0aW9uICE9IHRleHQu
bGVuZ3RoKCkgPyB0ZXh0LnN1YnN0cmluZygwLCBjdXJzb3JQb3NpdGlvbikudXRmOCgpLmxlbmd0
aCgpIDogdGV4dFVURjgubGVuZ3RoKCk7CisgICAgYXV0byBjdXJzb3JQb3NpdGlvblVURjggPSBj
dXJzb3JQb3NpdGlvbiAhPSB0ZXh0Lmxlbmd0aCgpID8gU3RyaW5nVmlldyh0ZXh0KS5sZWZ0KGN1
cnNvclBvc2l0aW9uKS51dGY4KCkubGVuZ3RoKCkgOiB0ZXh0VVRGOC5sZW5ndGgoKTsKICAgICBh
dXRvIHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IGN1cnNvclBvc2l0aW9uVVRGODsKICAgICBpZiAo
Y3Vyc29yUG9zaXRpb24gIT0gc2VsZWN0aW9uUG9zaXRpb24pCi0gICAgICAgIHNlbGVjdGlvblBv
c2l0aW9uVVRGOCA9IHNlbGVjdGlvblBvc2l0aW9uICE9IHRleHQubGVuZ3RoKCkgPyB0ZXh0LnN1
YnN0cmluZygwLCBzZWxlY3Rpb25Qb3NpdGlvbikudXRmOCgpLmxlbmd0aCgpIDogdGV4dFVURjgu
bGVuZ3RoKCk7CisgICAgICAgIHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IHNlbGVjdGlvblBvc2l0
aW9uICE9IHRleHQubGVuZ3RoKCkgPyBTdHJpbmdWaWV3KHRleHQpLmxlZnQoc2VsZWN0aW9uUG9z
aXRpb24pLnV0ZjgoKS5sZW5ndGgoKSA6IHRleHRVVEY4Lmxlbmd0aCgpOwogICAgIHdlYmtpdF9p
bnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlfc3Vycm91bmRpbmcobV9jb250ZXh0LmdldCgpLCB0
ZXh0VVRGOC5kYXRhKCksIHRleHRVVEY4Lmxlbmd0aCgpLCBjdXJzb3JQb3NpdGlvblVURjgsIHNl
bGVjdGlvblBvc2l0aW9uVVRGOCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAKaW5kZXggYzUwMmQyZGM1MmU3ZjdkNDg4OWRm
MjZlYmJmMzNhZmMzYmMxNGI2My4uMDA5ZWZlOGRlODVjODhmYWViNWJmMzYxNGE1ZWJiNjUyMWVl
MWM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdz
TWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdz
TWFuYWdlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgU3RyaW5nIEd0a1NldHRpbmdzTWFuYWdlcjo6
dGhlbWVOYW1lKCkgY29uc3QKICAgICBpZiAoYXV0byogdGhlbWVOYW1lRW52ID0gZ19nZXRlbnYo
IkdUS19USEVNRSIpKSB7CiAgICAgICAgIFN0cmluZyBuYW1lID0gU3RyaW5nOjpmcm9tVVRGOCh0
aGVtZU5hbWVFbnYpOwogICAgICAgICBpZiAobmFtZS5lbmRzV2l0aCgiLWRhcmsiKSB8fCBuYW1l
LmVuZHNXaXRoKCItRGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIjpkYXJrIikpCi0gICAgICAgICAg
ICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5sZW5ndGgoKSAtIDUpOworICAgICAgICAg
ICAgcmV0dXJuIG5hbWUubGVmdChuYW1lLmxlbmd0aCgpIC0gNSk7CiAgICAgICAgIHJldHVybiBu
YW1lOwogICAgIH0KIApAQCAtNTEsNyArNTEsNyBAQCBTdHJpbmcgR3RrU2V0dGluZ3NNYW5hZ2Vy
Ojp0aGVtZU5hbWUoKSBjb25zdAogICAgIGdfb2JqZWN0X2dldChtX3NldHRpbmdzLCAiZ3RrLXRo
ZW1lLW5hbWUiLCAmdGhlbWVOYW1lU2V0dGluZy5vdXRQdHIoKSwgbnVsbHB0cik7CiAgICAgU3Ry
aW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHRoZW1lTmFtZVNldHRpbmcuZ2V0KCkpOwogICAg
IGlmIChuYW1lLmVuZHNXaXRoKCItZGFyayIpIHx8IG5hbWUuZW5kc1dpdGgoIi1EYXJrIikpCi0g
ICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBuYW1lLmxlbmd0aCgpIC0gNSk7CisgICAg
ICAgIHJldHVybiBuYW1lLmxlZnQobmFtZS5sZW5ndGgoKSAtIDUpOwogICAgIHJldHVybiBuYW1l
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNr
ZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL1RleHRDaGVja2VyR3RrLmNw
cAppbmRleCBiYjA5NDU4OTM2YzQ2NjgwNDQ2MTlmNzhjNmFiMTRmMDJiNWQ2YjIyLi4wMzZhNjYz
YjBiYmZmMWRlNjcyMjAzMTBlNDQ2OTEyZGY0NDExMWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAKQEAgLTI3Myw3ICsyNzMsNyBAQCBWZWN0
b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tlcjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgo
U3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICBwYXJhZ3JhcGhDaGVja2luZ1Jlc3VsdC5hcHBl
bmQobWlzc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxpbmdMb2Nh
dGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAgICAvLyBHZW5lcmFsbHksIHdlIGVuZCB1
cCBjaGVja2luZyBhdCB0aGUgd29yZCBzZXBhcmF0b3IsIG1vdmUgdG8gdGhlIGFkamFjZW50IHdv
cmQuCi0gICAgICAgIG9mZnNldCA9IG5leHRXb3JkT2Zmc2V0KHRleHQuc3Vic3RyaW5nKDAsIGxl
bmd0aFN0cmlwKSwgb2Zmc2V0KTsKKyAgICAgICAgb2Zmc2V0ID0gbmV4dFdvcmRPZmZzZXQodGV4
dC5sZWZ0KGxlbmd0aFN0cmlwKSwgb2Zmc2V0KTsKICAgICB9CiAgICAgcmV0dXJuIHBhcmFncmFw
aENoZWNraW5nUmVzdWx0OwogI2Vsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93
aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGUzMTg4OWYzNDRjNGE2M2RmNWU1ZTY1OWUy
NDIxZjRjOTEwNDhjYzQuLjIzYjNlY2E2NDc1YTBmNzA3ZDdmMGRkMmUyNjZmYzI1ZWRjMzUyMzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdp
bi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2lu
LmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplUmVtb3RlSW5zcGVj
dG9yU2VydmVyKFN0cmluZ1ZpZXcgYWRkcmVzcykKICAgICBpZiAocG9zID09IG5vdEZvdW5kKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGhvc3QgPSBhZGRyZXNzLnN1YnN0cmluZygwLCBw
b3MpOworICAgIGF1dG8gaG9zdCA9IGFkZHJlc3MubGVmdChwb3MpOwogICAgIGF1dG8gcG9ydCA9
IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oYWRkcmVzcy5zdWJzdHJpbmcocG9zICsgMSkpOwogICAg
IGlmICghcG9ydCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJLaXRMZWdhY3kvU3Rv
cmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggNWQ0ZWVjNWZlZDhiMzU0YzBmMWE2NzVkMGNi
NGQ0MzI3ZDFkMjdiZC4uMzYzNjE5NmNiNTZhYTJlNDMwYzNhM2IwNzQxOGUyODRmOTFlNzYwNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3JhZ2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBA
IC0yNjAsNyArMjYwLDcgQEAgdm9pZCBTdG9yYWdlVHJhY2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRU
cmFja2VyRGF0YWJhc2UoKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgYXV0byBm
aWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VE
aXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7Ci0gICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVy
ID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIGZpbGVOYW1lLmxlbmd0aCgpIC0gZmlsZUV4dGVuc2lv
bi5sZW5ndGgoKSk7CisgICAgICAgIFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZU5hbWUu
bGVmdChmaWxlTmFtZS5sZW5ndGgoKSAtIGZpbGVFeHRlbnNpb24ubGVuZ3RoKCkpOwogICAgICAg
ICBpZiAoIW9yaWdpblNldENvcHkuY29udGFpbnMob3JpZ2luSWRlbnRpZmllcikpCiAgICAgICAg
ICAgICBzeW5jU2V0T3JpZ2luRGV0YWlscyhvcmlnaW5JZGVudGlmaWVyLCBmaWxlUGF0aCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJl
c2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVw
cmVzZW50YXRpb24ubW0KaW5kZXggM2RiMjQ4OGQ2MGVjNDFiMDgxZjdhOTE3ZDBlMjYxYjI3ZTYy
NGEyNy4uNmYxZjlhNzllMmNiOWFmMDU3NTlkM2UxNTMwODRhZjg4MDQyODZkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24u
bW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50
YXRpb24ubW0KQEAgLTM3NSw4ICszNzUsOSBAQCBzdGF0aWMgUmVndWxhckV4cHJlc3Npb24qIHJl
Z0V4cEZvckxhYmVscyhOU0FycmF5ICpsYWJlbHMpCiAgICAgICAgICAgICBib29sIHN0YXJ0c1dp
dGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAgICAgICAgICBib29sIGVuZHNXaXRoV29yZENo
YXJhY3RlciA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCgpKSB7Ci0gICAg
ICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1h
dGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKLSAgICAgICAgICAgICAgICBlbmRzV2l0
aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZyhs
YWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOworICAgICAgICAgICAgICAgIFN0cmluZ1ZpZXcg
bGFiZWxWaWV3IHsgbGFiZWwgfTsKKyAgICAgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJh
Y3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWxWaWV3LmxlZnQoMSkpID49IDA7Cisg
ICAgICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0gd29yZFJlZ0V4cC5nZXQoKS5t
YXRjaChsYWJlbFZpZXcucmlnaHQoMSkpID49IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIC8vIFNlYXJjaCBmb3Igd29yZCBib3VuZGFyaWVzIG9ubHkgaWYgbGFi
ZWwgc3RhcnRzL2VuZHMgd2l0aCAid29yZCBjaGFyYWN0ZXJzIi4KZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBiZWFlMzkwYWI2ZWU1NTZhNGYxMTVm
NGU3MDdmMTIyNzBmNDJjZGY0Li4wMWM0YjVlZmI5MWJjNGFlY2FhYjdmNTkwNTY5YTYxNTk0ZDll
ZTg2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjYgQEAKKzIwMjItMDQtMTMgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNv
bT4KKworICAgICAgICBSZXBsYWNlIGNhbGxzIHRvIHN1YnN0cmluZygwLCB4KSB3aXRoIHRoZSBt
b3JlIGNvbmNpc2UgbGVmdCh4KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjM5MzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwOgorICAgICAg
ICAoZmluZEZvbnRGYWxsYmFjayk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
VVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6Omluc2VydFRhYkF0TG9jYXRp
b24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5j
cHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWFkQ29udGVudHNPZkZpbGUpOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9IVFRQSGVhZGVyRmllbGQuY3BwOgorICAg
ICAgICAoY2Fub25pY2FsaXplSFRUUEhlYWRlcik6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGluZy5jcHA6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjppbnNlcnRUYWJBdExvY2F0aW9uKToKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVy
L0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHA6CisgICAgICAgIChXVFI6OnBh
dGhTdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAgICAoV1RSOjpkdW1wRnJhbWVUZXh0KToK
KyAgICAgICAgKFdUUjo6c3RyaXBUcmFpbGluZ1NwYWNlc0FkZE5ld2xpbmUpOgorICAgICAgICAo
V1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxBZGRNZXNzYWdlVG9Db25zb2xlKToKKwogMjAy
Mi0wNC0xMyAgTWF0dGVvIEZsb3JlcyAgPG1hdHRlb19mbG9yZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIFJFR1JFU1NJT04ocjI5MjQwMS1yMjkyMzEwKTogWyBpT1MgXSBUZXN0V2ViS2l0QVBJLkdQ
VVByb2Nlc3MuQ2FudmFzQmFzaWNDcmFzaEhhbmRsaW5nIGlzIGEgY29uc3RhbnQgZmFpbHVyZSBv
biBpT1MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJl
ZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4vRHVtcFJlbmRlclRyZWUuY3BwCmluZGV4
IDM2YWU4ZjU3M2M0MjhhYWU0ZDVkNWZiMmE3ZTRhMjkzN2U0YmNjODcuLjU0NGJmNDc0YmJiNmRm
YmFmNDM3ZGI2MGUzODRhN2EzYTY5MzkyNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTExNCwyMyArMTExNCwyNCBAQCBzdGF0aWMgU3RyaW5n
IGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0aE9yVXJsKQogICAgICAgICByZXR1cm4g
ZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBwYXRoVG9DaGVjayA9IGZ1bGxQYXRoOworICAg
IFN0cmluZ1ZpZXcgcGF0aFRvQ2hlY2tWaWV3IHsgcGF0aFRvQ2hlY2sgfTsKIAogICAgIHN0YXRp
YyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMgPSAiTGF5b3V0VGVzdHMiX3M7CiAKICAgICAvLyBG
aW5kIHRoZSBsYXlvdXQgdGVzdCByb290IG9uIHRoZSBjdXJyZW50IHBhdGg6Ci0gICAgc2l6ZV90
IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2suZmluZChsYXlvdXRUZXN0cyk7CisgICAgc2l6ZV90IGxv
Y2F0aW9uID0gcGF0aFRvQ2hlY2tWaWV3LmZpbmQobGF5b3V0VGVzdHMpOwogICAgIGlmIChXVEY6
Om5vdEZvdW5kID09IGxvY2F0aW9uKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAot
ICAgIFN0cmluZyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2suc3Vic3RyaW5nKGxvY2F0aW9uICsg
bGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKTsKLSAgICBTdHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1
ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwYXRoVG9DaGVjay5zdWJz
dHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1c
XHdpbiJfcyk7CisgICAgU3RyaW5nVmlldyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hlY2tWaWV3LnN1
YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxlbmd0aCgpICsgMSk7CisgICAgU3RyaW5n
IHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVtOjpwYXRoQnlBcHBlbmRpbmdDb21wb25l
bnQocGF0aFRvQ2hlY2tWaWV3LmxlZnQobG9jYXRpb24gKyBsYXlvdXRUZXN0cy5sZW5ndGgoKSAr
IDEpLCAicGxhdGZvcm1cXHdpbiJfcyk7CiAKICAgICBWZWN0b3I8U3RyaW5nPiBwb3NzaWJsZVBh
dGhzOwogICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGlu
Z0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBwYXRoVG9UZXN0KSk7CiAKICAgICBzaXpl
X3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAg
d2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYgbmV4dENhbmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZv
dW5kKSB7Ci0gICAgICAgIHBhdGhUb1Rlc3QgPSBwYXRoVG9UZXN0LnN1YnN0cmluZygwLCBuZXh0
Q2FuZGlkYXRlRW5kKTsKKyAgICAgICAgcGF0aFRvVGVzdCA9IHBhdGhUb1Rlc3QubGVmdChuZXh0
Q2FuZGlkYXRlRW5kKTsKICAgICAgICAgcG9zc2libGVQYXRocy5hcHBlbmQoRmlsZVN5c3RlbTo6
cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxlUGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3Qp
KTsKICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xc
Jyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJM
UGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1VSTFBhcnNlci5jcHAK
aW5kZXggOTBmZmM5OTQ0ZTZiMjViZDQ1OTg1OTZmZGQ4NjU5NGIxYjNhZGY1OS4uNTJlMzk3ZDEw
YTkzNmUwMGVlMjcyMThiOTdlNDQ4NGUxNGNkMjE5NiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIGJvb2wgZXEoVCYmIHMx
LCBVJiYgczIpCiBzdGF0aWMgU3RyaW5nIGluc2VydFRhYkF0TG9jYXRpb24oU3RyaW5nVmlldyBz
dHJpbmcsIHNpemVfdCBsb2NhdGlvbikKIHsKICAgICBBU1NFUlQobG9jYXRpb24gPD0gc3RyaW5n
Lmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhzdHJpbmcuc3Vic3RyaW5nKDAsIGxv
Y2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOworICAgIHJldHVybiBt
YWtlU3RyaW5nKHN0cmluZy5sZWZ0KGxvY2F0aW9uKSwgJ1x0Jywgc3RyaW5nLnN1YnN0cmluZyhs
b2NhdGlvbikpOwogfQogCiBzdGF0aWMgRXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFydHMoU3RyaW5n
VmlldyB1cmxTdHJpbmdXaXRoVGFiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggOWUzNWQ5NWJiNTFhMDliMDA4NTM0ZDczMzVk
ODI4YTAwMGVjMmM0Mi4uZmFmYWIxY2FlZmI2MzRmMzE2ZmM0Mzg4YzVkODkyZTMxODExNTgzZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9y
LmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvRmlsZU1vbml0b3Iu
Y3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFN0cmluZyByZWFkQ29udGVudHNPZkZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKQogCiAgICAgU3RyaW5nIHJlc3VsdChzdGF0aWNfY2FzdDxjb25z
dCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVyLT5zaXplKCkpOwogICAgIGlmIChyZXN1
bHQuZW5kc1dpdGgoIlxuIikpCi0gICAgICAgIHJldHVybiByZXN1bHQuc3Vic3RyaW5nKDAsIHJl
c3VsdC5sZW5ndGgoKSAtIDEpOworICAgICAgICByZXR1cm4gcmVzdWx0LmxlZnQocmVzdWx0Lmxl
bmd0aCgpIC0gMSk7CiAKICAgICByZXR1cm4gcmVzdWx0OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBIZWFkZXJGaWVsZC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcAppbmRleCA3MjNk
NTg4YWE0OWM4N2UzNjY0YjQ2ZjMxODBkZmQ3MDdmYzI3NWVhLi4wNDk5ZTFhNDIxZWM3MWVlODU5
NmE1YTliNWU0NTU1ZDhkMDk4YjgwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcApAQCAtMzMsNyArMzMsNyBAQCBzdGF0
aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZUhUVFBIZWFkZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgc2l6ZV90IGNvbG9uTG9jYXRpb24gPSBzdHJpbmcuZmluZCgnOicpOwogICAgIGlmIChjb2xv
bkxvY2F0aW9uID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4geyB9OwotICAgIGF1dG8gZmll
bGQgPSBXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ6OmNyZWF0ZShzdHJpbmcuc3Vic3RyaW5nKDAs
IGNvbG9uTG9jYXRpb24pLCBzdHJpbmcuc3Vic3RyaW5nKGNvbG9uTG9jYXRpb24gKyAxKSk7Cisg
ICAgYXV0byBmaWVsZCA9IFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZDo6Y3JlYXRlKHN0cmluZy5s
ZWZ0KGNvbG9uTG9jYXRpb24pLCBzdHJpbmcuc3Vic3RyaW5nKGNvbG9uTG9jYXRpb24gKyAxKSk7
CiAgICAgaWYgKCFmaWVsZCkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICByZXR1cm4gbWFrZVN0
cmluZyhmaWVsZC0+bmFtZSgpLCAiOiAiLCBmaWVsZC0+dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyVGV4dEVuY29kaW5nLmNw
cCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2Rp
bmcuY3BwCmluZGV4IDRkMjdmNGZkNGI1NTIyODc0M2QzZTJmN2NjOTdmYmM0M2Y0NGE4ZWIuLmY1
ODU5OTE4YzhhNWU4MDkwNDVjYmMwNWU1YWE5ZGI1NTQxYjc5YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXJUZXh0RW5jb2Rp
bmcuY3BwCkBAIC03MSwxMCArNzEsMTAgQEAgYm9vbCBlcShUJiYgczEsIFUmJiBzMikKICAgICBy
ZXR1cm4gczEudXRmOCgpID09IHMyLnV0ZjgoKTsKIH0KIAotc3RhdGljIFN0cmluZyBpbnNlcnRU
YWJBdExvY2F0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBzaXplX3QgbG9jYXRpb24pCitzdGF0
aWMgU3RyaW5nIGluc2VydFRhYkF0TG9jYXRpb24oU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBs
b2NhdGlvbikKIHsKICAgICBBU1NFUlQobG9jYXRpb24gPD0gc3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICByZXR1cm4gbWFrZVN0cmluZyhzdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKSwgIlx0Iiwg
c3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHN0cmlu
Zy5sZWZ0KGxvY2F0aW9uKSwgJ1x0Jywgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOwogfQog
CiBzdGF0aWMgRXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFydHMoY29uc3QgU3RyaW5nJiB1cmxTdHJp
bmdXaXRoVGFiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwCmluZGV4IGQwMDZiNzg5Y2MxMWNlNWJi
OTRiNDMzMWQzOWM5ZjYwNDFjYjZlNzQuLjlmMDEyOWM3ZWE5MGZhNmJjYzU4YThhNDZkYzVhN2I0
Y2FhYjVhNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0lu
amVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5jcHAKQEAgLTIwOSw3ICsyMDksNyBAQCBz
dGF0aWMgaW5saW5lIFdURjo6U3RyaW5nIHBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQoV0tVUkxS
ZWYgZmlsZVVybCkKIAogICAgIFN0cmluZyBwYXRoU3RyaW5nID0gdG9XVEZTdHJpbmcoYWRvcHRX
SyhXS1VSTENvcHlQYXRoKGZpbGVVcmwpKSk7CiAgICAgU3RyaW5nIG1haW5GcmFtZVVSTFBhdGhT
dHJpbmcgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJMQ29weVBhdGgobWFpbkZyYW1lVVJMLmdl
dCgpKSkpOwotICAgIFN0cmluZyBiYXNlUGF0aCA9IG1haW5GcmFtZVVSTFBhdGhTdHJpbmcuc3Vi
c3RyaW5nKDAsIG1haW5GcmFtZVVSTFBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcikgKyAx
KTsKKyAgICBhdXRvIGJhc2VQYXRoID0gU3RyaW5nVmlldyhtYWluRnJhbWVVUkxQYXRoU3RyaW5n
KS5sZWZ0KG1haW5GcmFtZVVSTFBhdGhTdHJpbmcucmV2ZXJzZUZpbmQoZGl2aWRlcikgKyAxKTsK
ICAgICAKICAgICBpZiAoIWJhc2VQYXRoLmlzRW1wdHkoKSAmJiBwYXRoU3RyaW5nLnN0YXJ0c1dp
dGgoYmFzZVBhdGgpKQogICAgICAgICByZXR1cm4gcGF0aFN0cmluZy5zdWJzdHJpbmcoYmFzZVBh
dGgubGVuZ3RoKCkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBAIHN0YXRpYyB2b2lkIGR1bXBGcmFtZVRl
eHQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5nQnVpbGRlciYgYnVpbGRlcikKICAgICBh
dXRvIHRleHQgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLQnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0
KGZyYW1lKSkpOwogICAgIGZvciAoYXV0byBsaW5lIDogU3RyaW5nVmlldyh0ZXh0KS5zcGxpdEFs
bG93aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CiAgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRo
KCcgJykpCi0gICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgo
KSAtIDEpOworICAgICAgICAgICAgbGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7
CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOwogICAgIH0KIH0KQEAgLTEzMDAs
NyArMTMwMCw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBzdHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3
bGluZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQogICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRl
cjsKICAgICBmb3IgKGF1dG8gbGluZSA6IFN0cmluZ1ZpZXcoc3RyaW5nKS5zcGxpdEFsbG93aW5n
RW1wdHlFbnRyaWVzKCdcbicpKSB7CiAgICAgICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykp
Ci0gICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEp
OworICAgICAgICAgICAgbGluZSA9IGxpbmUubGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7CiAgICAg
ICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOwogICAgIH0KICAgICByZXR1cm4gYnVpbGRl
ci50b1N0cmluZygpOwpAQCAtMTMxMiw3ICsxMzEyLDcgQEAgc3RhdGljIFdURjo6U3RyaW5nIGFk
ZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKGNvbnN0IFdURjo6U3Ry
aW4KICAgICByZXR1cm4gKHJlc3VsdC5pc0VtcHR5KCkgfHwgcmVzdWx0LnN0YXJ0c1dpdGgoJ1xu
JykpID8gcmVzdWx0IDogbWFrZVN0cmluZygnICcsIHJlc3VsdCk7CiB9CiAKLXN0YXRpYyBXVEY6
OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgp
CitzdGF0aWMgU3RyaW5nVmlldyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoU3RyaW5nVmlldyBw
YXRoKQogewogICAgIGF1dG8gcG9zID0gcGF0aC5maW5kKCJmaWxlOi8vIik7CiAgICAgQVNTRVJU
KFdURjo6bm90Rm91bmQgIT0gcG9zKTsKQEAgLTEzMjMsNyArMTMyMyw3IEBAIHN0YXRpYyBXVEY6
OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQoY29uc3QgV1RGOjpTdHJpbmcmIHBhdGgp
CiAKICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGRlbGltaXRlcgogICAgIGlmICh0bXBQYXRo
W3RtcFBhdGgubGVuZ3RoKCkgLSAxXSA9PSAnLycpCi0gICAgICAgIHRtcFBhdGgucmVtb3ZlKHRt
cFBhdGgubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgdG1wUGF0aCA9IHRtcFBhdGgubGVmdCh0bXBQ
YXRoLmxlbmd0aCgpIC0gMSk7CiAKICAgICBwb3MgPSB0bXBQYXRoLnJldmVyc2VGaW5kKCcvJyk7
CiAgICAgaWYgKFdURjo6bm90Rm91bmQgIT0gcG9zKQpAQCAtMTM0NCwxMCArMTM0NCwxMSBAQCB2
b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1lc3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdS
ZWYgbWVzc2FnZSkKICAgICAgICAgbWVzc2FnZVN0cmluZy50cnVuY2F0ZShudWxsQ2hhclBvcyk7
CiAKICAgICBzaXplX3QgZmlsZVByb3RvY29sU3RhcnQgPSBtZXNzYWdlU3RyaW5nLmZpbmQoImZp
bGU6Ly8iKTsKLSAgICBpZiAoZmlsZVByb3RvY29sU3RhcnQgIT0gV1RGOjpub3RGb3VuZCkKKyAg
ICBpZiAoZmlsZVByb3RvY29sU3RhcnQgIT0gV1RGOjpub3RGb3VuZCkgeworICAgICAgICBTdHJp
bmdWaWV3IG1lc3NhZ2VTdHJpbmdWaWV3IHsgbWVzc2FnZVN0cmluZyB9OwogICAgICAgICAvLyBG
SVhNRTogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGFkZGl0aW9uYWwgdGV4dCBhZnRl
ciB1cmwgbm9yIG11bHRpcGxlIHVybHMuIFRoaXMgbWF0Y2hlcyBEdW1wUmVuZGVyVHJlZSBpbXBs
ZW1lbnRhdGlvbi4KLSAgICAgICAgbWVzc2FnZVN0cmluZyA9IG1lc3NhZ2VTdHJpbmcuc3Vic3Ry
aW5nKDAsIGZpbGVQcm90b2NvbFN0YXJ0KSArIGxhc3RGaWxlVVJMUGF0aENvbXBvbmVudChtZXNz
YWdlU3RyaW5nLnN1YnN0cmluZyhmaWxlUHJvdG9jb2xTdGFydCkpOwotCisgICAgICAgIG1lc3Nh
Z2VTdHJpbmcgPSBtYWtlU3RyaW5nKG1lc3NhZ2VTdHJpbmdWaWV3LmxlZnQoZmlsZVByb3RvY29s
U3RhcnQpLCBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQobWVzc2FnZVN0cmluZ1ZpZXcuc3Vic3Ry
aW5nKGZpbGVQcm90b2NvbFN0YXJ0KSkpOworICAgIH0KICAgICBtZXNzYWdlU3RyaW5nID0gbWFr
ZVN0cmluZygiQ09OU09MRSBNRVNTQUdFOiIsIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdT
cGFjZXNBZGROZXdsaW5lKG1lc3NhZ2VTdHJpbmcpKTsKICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUu
ZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpCiAgICAgICAgIGluamVjdGVkQnVuZGxlLmR1bXBU
b1N0ZEVycihtZXNzYWdlU3RyaW5nKTsK
</data>
<flag name="commit-queue"
          id="486241"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457588</attachid>
            <date>2022-04-13 19:42:28 -0700</date>
            <delta_ts>2022-04-13 21:51:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-239306-20220413194227.patch</filename>
            <type>text/plain</type>
            <size>95352</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyODUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
OWMxYTI5ZjAyZTE5MzBlMDIzYmIwMjM1YzU4ZGQ4NjY0ZDEzMmI3Li5lODJhOTQzYzZlNDliZDFl
ZjkwZjg3NDg4NWM2NDBlYzg4NmFjOWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUg
Y29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAg
ICAgICAqIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaDoKKyAgICAgICAgKiBydW50aW1lL0V4
Y2VwdGlvbkhlbHBlcnMuY3BwOgorICAgICAgICAoSlNDOjpjbGFtcEVycm9yTWVzc2FnZSk6Cisg
ICAgICAgICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6d2Vs
bEZvcm1lZFVuaXRJZGVudGlmaWVyKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpyZXNvbHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxP
YmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OmJlc3RBdmFpbGFibGVMb2NhbGUpOgorCiAy
MDIyLTA0LTEzICBNaWNoYWVsIENhdGFuemFybyAgPG1jYXRhbnphcm9AcmVkaGF0LmNvbT4KIAog
ICAgICAgICBHQ0MgMTIgLVdkYW5nbGluZy1wb2ludGVyIHdhcm5pbmcgc3BhbSBmcm9tIEFic3Ry
YWN0U2xvdFZpc2l0b3JJbmxpbmVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggOThkMzZlMDk0NzQ1NTEyMDE0ZjRmN2IwZjcx
YjRhYjRlY2JmNmMyNi4uODQyNTA0MzFmOWE0YmI4M2ZmOTM1YjBjOGJiNjFiNWUzZjQ5YjgxNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyNiBAQAorMjAyMi0wNC0xMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vic3RyaW5nKDAsIHgpIHdpdGgg
dGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxl
ci4KKworICAgICAgICAqIHd0Zi9VUkwuY3BwOgorICAgICAgICAoV1RGOjpVUkw6OnByb3RvY29s
IGNvbnN0KToKKyAgICAgICAgKFdURjo6VVJMOjpwcm90b2NvbEhvc3RBbmRQb3J0IGNvbnN0KToK
KyAgICAgICAgKFdURjo6VVJMOjpzZXRQcm90b2NvbCk6CisgICAgICAgIChXVEY6OlVSTDo6c2V0
SG9zdCk6CisgICAgICAgIChXVEY6OlVSTDo6c2V0SG9zdEFuZFBvcnQpOgorICAgICAgICAoV1RG
OjpVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlciBjb25zdCk6CisgICAgICAgICogd3RmL1VS
TFBhcnNlci5jcHA6CisgICAgICAgIChXVEY6OlVSTFBhcnNlcjo6YWRkTm9uU3BlY2lhbERvdFNs
YXNoKToKKyAgICAgICAgKFdURjo6VVJMUGFyc2VyOjpwYXJzZVVSTEVuY29kZWRGb3JtKToKKyAg
ICAgICAgKiB3dGYvVVVJRC5jcHA6CisgICAgICAgIChXVEY6OlVVSUQ6OnBhcnNlKToKKyAgICAg
ICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoV1RGOjpTdHJpbmc6Omluc2Vy
dCk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisKIDIwMjItMDQtMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBEcm9wIHVudXNlZCBBdG9tU3Ry
aW5nKGNvbnN0IExDaGFyKikgY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlYzE4MmFlZjhlMmIx
MjA4MWRkNzQ3M2Y4OGIwODY4Nzc3MTZkZWFmLi42ODBjMTAxNGQyZWYxZDE1ZTQ3ZWY1NjcyOTIx
MTFhMmJmMDA2YjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMxIEBACisyMDIyLTA0LTEzICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0
byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisgICAgICAg
IFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8gc3Vi
c3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpLiBBbHNvIHVzZSBTdHJp
bmdWaWV3IGluIG1vcmUgY2FzZXMKKyAgICAgICAgZm9yIHBlcmZvcm1hbmNlLgorCisgICAgICAg
ICogTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlDb25zdW1lci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpwYXJzZU1JTUVUeXBlKToKKyAgICAgICAgKiBNb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQpOgorICAgICAg
ICAqIE1vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SURCS2V5UGF0aExleGVyOjpsZXhJZGVudGlmaWVyKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL1BlZXJDb25uZWN0aW9uQmFja2VuZC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91
bGRJZ25vcmVJY2VDYW5kaWRhdGUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RFRNRlNlbmRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSVENEVE1GU2VuZGVyOjpwbGF5TmV4
dFRvbmUpOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vZ3N0cmVhbWVyL0dTdHJlYW1l
ck1lZGlhRW5kcG9pbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R1N0cmVhbWVyTWVkaWFFbmRw
b2ludDo6YWRkUmVtb3RlU3RyZWFtKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL2xp
YndlYnJ0Yy9MaWJXZWJSVENSdHBUcmFuc2NlaXZlckJhY2tlbmQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9SdHBDb2RlY0NhcGFiaWxpdHkpOgorICAgICAgICAqIE1vZHVsZXMvcGx1Z2lucy9Z
b3VUdWJlUGx1Z2luUmVwbGFjZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvY2Vzc0Fu
ZENyZWF0ZVlvdVR1YmVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6WW91VHViZVBsdWdpblJlcGxh
Y2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29sdXRlVVJMKToKKyAgICAgICAgKiBkaXNwbGF5L2Nz
cy9EaXNwbGF5VGV4dEJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEaXNwbGF5OjpUZXh0Qm94
OjpkZWJ1Z0Rlc2NyaXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcnNlUXVhbGlmaWVkTmFtZSk6CisgICAgICAg
ICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6c3BsaXRUZXh0KToKKyAg
ICAgICAgKiBlZGl0aW5nL1RleHRDaGVja2luZ0hlbHBlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjaGVja1RleHRPZlBhcmFncmFwaCk6CisgICAgICAgICogZWRpdGluZy9UZXh0SXRlcmF0b3Iu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VhcmNoQnVmZmVyOjpwcmVwZW5kQ29udGV4dCk6Cisg
ICAgICAgICogZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c3Vm
Zml4TGVuZ3RoRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6c3RhcnRXb3JkQm91bmRhcnkp
OgorICAgICAgICAoV2ViQ29yZTo6cHJldmlvdXNXb3JkUG9zaXRpb25Cb3VuZGFyeSk6CisgICAg
ICAgICogZWRpdGluZy9jb2NvYS9EYXRhRGV0ZWN0aW9uLm1tOgorICAgICAgICAoV2ViQ29yZTo6
RGF0YURldGVjdGlvbjo6ZGV0ZWN0Q29udGVudEluUmFuZ2UpOgorICAgICAgICAqIGVkaXRpbmcv
bWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZFByZXNlcnZlTVNPTGlzdHMpOgor
ICAgICAgICAqIGh0bWwvRmVhdHVyZVBvbGljeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjp1cGRh
dGVMaXN0KToKKyAgICAgICAgKiBodG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwOgorICAgICAgICAo
V1RGOjpMb2dBcmd1bWVudDxVUkw+Ojp0b1N0cmluZyk6CisgICAgICAgICogaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnVybEZvckxvZ2dpbmdUcmFjayk6Cisg
ICAgICAgICogaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVS
TERlY29tcG9zaXRpb246OnNldEhvc3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VIVFRQUmVmcmVzaEludGVybmFs
KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnBhcnNlRGVzY3JpcHRvcnMpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxU
cmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OkV4dGVy
bmFsQ2hhcmFjdGVyVG9rZW5CdWZmZXI6OmNoYXJhY3RlclByZWRpY2F0ZSk6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVTaGVldEhhbmRsZXI6Om9ic2VydmVDb21tZW50KToKKyAgICAgICAgKiBsYXlvdXQvbGF5b3V0
dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Om91
dHB1dExheW91dEJveCk6CisgICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVNYW5pZmVzdFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYW5pZmVzdFBhdGgpOgor
ICAgICAgICAqIG1hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok1hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQ6OnBhcnNlTnVtYmVyQW5kVW5pdCk6
CisgICAgICAgICogcGFnZS9GcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVSZWdF
eHBGb3JMYWJlbHMpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRpZmll
cik6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkU3RyaW5nSGFzaC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb21wdXRlU2hhcmVkU3RyaW5nSGFzaElubGluZSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNlbnRl
clRydW5jYXRlVG9CdWZmZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmlnaHRUcnVuY2F0ZVRvQnVm
ZmVyKToKKyAgICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xpcFRvQ2hhcmFjdGVyQnVmZmVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OnJpZ2h0Q2xpcFRvV29yZEJ1ZmZlcik6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnNldFBsYXliaW5V
UkwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVm
ZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VCdWZmZXJQ
cml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9ybU1heGltdW1CdWZmZXJTaXplIGNvbnN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OmNyZWF0ZUdESUZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udENhY2hlOjpnZXRG
b250U2VsZWN0aW9uQ2FwYWJpbGl0aWVzSW5GYW1pbHkpOgorICAgICAgICAqIHBsYXRmb3JtL2lv
cy9Vc2VyQWdlbnRJT1MubW06CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VOYW1lRm9yVXNlckFn
ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0NhY2hlVmFsaWRhdGlvbi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjp0cmltVG9OZXh0U2VwYXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlQ2FjaGVIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlh
bFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cHJvdGVjdGlvblNwYWNlTWFwS2V5RnJv
bVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpDcmVkZW50aWFsU3RvcmFnZTo6ZmluZERlZmF1bHRQ
cm90ZWN0aW9uU3BhY2VGb3JVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRGF0YVVS
TERlY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YVVSTERlY29kZXI6OkRlY29kZVRh
c2s6OnByb2Nlc3MpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTdHJ1Y3R1cmVkRmllbGRWYWx1ZSk6CisgICAgICAg
ICogcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnJl
dHJpZXZlS2V5VmFsdWVQYWlycyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jdXJsL0Nv
b2tpZVV0aWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llVXRpbDo6cGFyc2VDb29raWVB
dHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OnBhcnNlQ29va2llSGVh
ZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVV0aWw6OmRlZmF1bHRQYXRoRm9yVVJMKToK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGluZy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpsb2NhbGVUb1NjcmlwdENvZGVGb3JGb250U2VsZWN0aW9uKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS93aW4vUGFzdGVib2FyZFdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpm
aWxlU3lzdGVtUGF0aEZyb21VUkxPclRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhc3RlYm9h
cmQ6OndyaXRlVVJMVG9EYXRhT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUdsb2Jh
bEltYWdlRmlsZURlc2NyaXB0b3IpOgorICAgICAgICAqIHBsYXRmb3JtL3dpbi9XZWJDb3JlVGV4
dFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRvRHJhd1RleHRBdFBvaW50KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlck9iamVjdDo6b3V0cHV0UmVuZGVyT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5h
bWVkTGluZUNvbGxlY3Rpb25CYXNlOjpOYW1lZExpbmVDb2xsZWN0aW9uQmFzZSk6CisgICAgICAg
ICogc3ZnL1NWR1Rlc3RzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rlc3RzOjppc1ZhbGlk
IGNvbnN0KToKKyAgICAgICAgKiBzdmcvU1ZHVVJJUmVmZXJlbmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1VSSVJlZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyk6
CisgICAgICAgICogc3ZnL2FuaW1hdGlvbi9TVkdTTUlMRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTTUlMRWxlbWVudDo6cGFyc2VDbG9ja1ZhbHVlKToKKyAgICAgICAgKiB3b3Jr
ZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2
aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNwb25zZSk6CisgICAgICAgICog
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleTo6ZnJvbURhdGFiYXNlS2V5
KToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNXU2VydmVyOjpjYW5IYW5kbGVTY2hlbWUgY29uc3QpOgorCiAyMDIyLTA0
LTEzICBFbGxpb3R0IFdpbGxpYW1zICA8ZW13QGFwcGxlLmNvbT4KIAogICAgICAgICBbWGNvZGVd
IEZpeCBwdWJsaWMgd2F0Y2hPUyB3b3Jrc3BhY2UgYnVpbGQgYnkgdXBkYXRpbmcgc2NoZW1lIGFu
ZCBidWlsZCBzZXR0aW5ncwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRyaXZlci9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZwppbmRleCA3NDgyYWUyMzQzNGQwM2JhMThjZWY5
MjIzYTc2ODAwOGI4MTM1NWY1Li4xNDFhZjllNDMzZWNlZjIxNThlN2M4ODZiOGIyMmYwZGQ2ZGM0
NWY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViRHJpdmVyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViRHJpdmVyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIyLTA0LTEzICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgUmVwbGFjZSBjYWxscyB0byBzdWJz
dHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNlIGxlZnQoeCkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTMwNgorCisgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogQ29tbWFuZFJlc3VsdC5jcHA6CisgICAg
ICAgIChXZWJEcml2ZXI6OkNvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQpOgorCiAyMDIyLTA0
LTExICBEb24gT2xtc3RlYWQgIDxkb24ub2xtc3RlYWRAc29ueS5jb20+CiAKICAgICAgICAgRml4
IFBsYXlTdGF0aW9uIGJ1aWxkIGFmdGVyIHIyOTI2OTYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMGJjMjc0YzZkMDkw
NTJkNGJiNTc5NjIzMDBkZDYwYzRiNjc3NzIwNy4uNGY4MmRmMjU0NTRhMzFhZTFiMjFjZWMxYTU1
OGVhMGQzMjQzMDJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAyMi0wNC0xMyAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMgdG8g
c3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAgICBS
ZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1dlYlN0
b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyOjpvcmlnaW5zIGNvbnN0KToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya0NhY2hlOjp0cmF2ZXJzZVJlY29yZHNGaWxlcyk6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6ZmlsZU5hbWVUb09yaWdpbik6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLU3RyaW5n
LmNwcDoKKyAgICAgICAgKFdLU3RyaW5nR2V0Q2hhcmFjdGVycyk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5w
dXRNZXRob2RGaWx0ZXI6Om5vdGlmeVN1cnJvdW5kaW5nKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Z3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okd0a1NldHRpbmdz
TWFuYWdlcjo6dGhlbWVOYW1lIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvZ3RrL1RleHRD
aGVja2VyR3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VGV4dENoZWNrZXI6OmNoZWNrVGV4dE9m
UGFyYWdyYXBoKToKKyAgICAgICAgKiBVSVByb2Nlc3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6aW5pdGlhbGl6ZVJlbW90ZUluc3BlY3RvclNlcnZlcik6CisK
IDIwMjItMDQtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
IAogICAgICAgICBBZGp1c3Qgd2hlbiBfc2V0UHJpdmFjeVByb3h5RmFpbENsb3NlZEZvclVucmVh
Y2hhYmxlTm9uTWFpbkhvc3RzIGlzIGNhbGxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExl
Z2FjeS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwppbmRleCA3ZTc2
MmVlOWEwNTcwNTY1MWQ1ODJkNjQ1OWM0NDUzOGVhM2Q1MjI0Li5mNmE0Y2FhOTkxYzgzZTVlYTFh
MTU3OTgwNjcxNDI0M2M1ZjY3MTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0TGVnYWN5L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEz
IEBACisyMDIyLTA0LTEzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVwbGFjZSBjYWxscyB0byBzdWJzdHJpbmcoMCwgeCkgd2l0aCB0aGUgbW9yZSBjb25jaXNl
IGxlZnQoeCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzOTMwNgorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICog
U3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0b3JhZ2VUcmFj
a2VyOjpzeW5jRmlsZVN5c3RlbUFuZFRyYWNrZXJEYXRhYmFzZSk6CisKIDIwMjItMDQtMTIgIEZ1
amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbkNh
aXJvXSBXRUJLSVRfTElCUkFSSUVTIGVudiB2YXIgc2hvdWxkIGJlIGN1c3RvbWl6YWJsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvQ2hhbmdlTG9nCmluZGV4IDFjYjllMmEwYzhkOWMxZDc0ODI3NGExNzQ1Yzdi
OTI4MWZmZTY5MzAuLjBjN2M4ZmEzNWY4ZDhjNzI2ZmY3MzNjYzYyZWY1ODE3YTRmMDFmNTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAyMi0wNC0xMyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgY2FsbHMg
dG8gc3Vic3RyaW5nKDAsIHgpIHdpdGggdGhlIG1vcmUgY29uY2lzZSBsZWZ0KHgpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzkzMDYKKworICAgICAg
ICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJl
cHJlc2VudGF0aW9uLm1tOgorICAgICAgICAocmVnRXhwRm9yTGFiZWxzKToKKwogMjAyMi0wNC0x
MyAgRWxsaW90dCBXaWxsaWFtcyAgPGVtd0BhcHBsZS5jb20+CiAKICAgICAgICAgW1hjb2RlXSBG
aXggcHVibGljIHdhdGNoT1Mgd29ya3NwYWNlIGJ1aWxkIGJ5IHVwZGF0aW5nIHNjaGVtZSBhbmQg
YnVpbGQgc2V0dGluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvU2NyaXB0QXJndW1lbnRzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdEFyZ3VtZW50cy5oCmluZGV4IDc3YTA4MTkxNmY2MWMyZjliZDcxNmFjODNmMzA5ZGRkYTdl
ODMyNzQuLjIyZGE3ZGQxOTc5MTg5NzA3MTIxMjNkYzU1MTk0MjgxZjI5ZjRjOWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaApAQCAt
NjIsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNvbnN0ZXhwciBzaXplX3QgbWF4TWVzc2Fn
ZUxlbmd0aCA9IDEwMDAwOwogICAgICAgICBpZiAobWVzc2FnZS5sZW5ndGgoKSA8PSBtYXhNZXNz
YWdlTGVuZ3RoKQogICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7Ci0gICAgICAgIHJldHVybiBt
YWtlU3RyaW5nKG1lc3NhZ2Uuc3Vic3RyaW5nKDAsIG1heE1lc3NhZ2VMZW5ndGgpLCAiLi4uIl9z
KTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyhtZXNzYWdlKS5sZWZ0KG1h
eE1lc3NhZ2VMZW5ndGgpLCAiLi4uIl9zKTsKICAgICB9CiAKIHByaXZhdGU6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGRj
MTYwOTc5ZjlkODczNjU5ZmJmOWM4MGRiNjMzMDZhZmQ1ZTk0OTEuLjE2MWYzZTY5ZDQzYjg5ZDgz
ZjU3ZmM3ZmMxZjMxYzBkMjJhMDQ4ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBT
dHJpbmdWaWV3IGNsYW1wRXJyb3JNZXNzYWdlKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdl
KQogewogICAgIC8vIEhvcGVmdWxseSB0aGlzIGlzIHN1ZmZpY2llbnRseSBsb25nLiBOb3RlLCB0
aGlzIGlzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmluZyBub3QgdGhlIG51bWJlciBvZiBieXRlcyB1
c2VkLgogICAgIGNvbnN0ZXhwciB1bnNpZ25lZCBtYXhMZW5ndGggPSAyICogS0I7Ci0gICAgcmV0
dXJuIFN0cmluZ1ZpZXcob3JpZ2luYWxNZXNzYWdlKS5zdWJzdHJpbmcoMCwgbWF4TGVuZ3RoKTsK
KyAgICByZXR1cm4gU3RyaW5nVmlldyhvcmlnaW5hbE1lc3NhZ2UpLmxlZnQobWF4TGVuZ3RoKTsK
IH0KIAogc3RhdGljIFN0cmluZyBkZWZhdWx0QXBwcm94aW1hdGVTb3VyY2VFcnJvcihjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgU3RyaW5nVmlldyBzb3VyY2VUZXh0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAppbmRleCA4
M2U3ZGFjNmZiYmI1ZjhiNGY3MzczYTEzYWZmYWQ1NzVjZDNkOTE4Li4zMjgwZGFjMmQ3NWRkNDgz
NjBjZjhjMzQzYjJkZDU4ZjJiNzg5MTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlbGxGb3JtZWRVbml0PiB3ZWxsRm9ybWVkVW5pdElkZW50aWZpZXIo
U3RyaW5nVmlldyB1bml0SWRlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAv
LyBJZiB0aGUgcmVzdWx0IG9mIElzU2FuY3Rpb25lZFNpbXBsZVVuaXRJZGVudGlmaWVyKG51bWVy
YXRvcikgaXMgZmFsc2UsIHRoZW4gcmV0dXJuIGZhbHNlLgotICAgIGF1dG8gbnVtZXJhdG9yID0g
dW5pdElkZW50aWZpZXIuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKTsKKyAgICBhdXRvIG51bWVyYXRv
ciA9IHVuaXRJZGVudGlmaWVyLmxlZnQocG9zaXRpb24pOwogICAgIGF1dG8gbnVtZXJhdG9yVW5p
dCA9IHNhbmN0aW9uZWRTaW1wbGVVbml0SWRlbnRpZmllcihudW1lcmF0b3IpOwogICAgIGlmICgh
bnVtZXJhdG9yVW5pdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMjlkNmY5MzVmMDI3YjIw
MjcwZTkxZmViOWRiNzZkYTU0Y2E0ZjE2MS4uOWQ2YWI1NmEyY2Y1NmNjNzRmNGFhNjljMTllYTY5
ZWFlZjViZWVhYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKQEAgLTk1Nyw3ICs5NTcsNyBAQCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IExvY2FsZVNldCYgYXZhaQogCiAgICAg
aWYgKHN1cHBvcnRlZEV4dGVuc2lvbi5sZW5ndGgoKSA+IDIpIHsKICAgICAgICAgU3RyaW5nVmll
dyBmb3VuZExvY2FsZVZpZXcoZm91bmRMb2NhbGUpOwotICAgICAgICBmb3VuZExvY2FsZSA9IG1h
a2VTdHJpbmcoZm91bmRMb2NhbGVWaWV3LnN1YnN0cmluZygwLCBtYXRjaGVyUmVzdWx0LmV4dGVu
c2lvbkluZGV4KSwgc3VwcG9ydGVkRXh0ZW5zaW9uLCBmb3VuZExvY2FsZVZpZXcuc3Vic3RyaW5n
KG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uSW5kZXgpKTsKKyAgICAgICAgZm91bmRMb2NhbGUgPSBt
YWtlU3RyaW5nKGZvdW5kTG9jYWxlVmlldy5sZWZ0KG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uSW5k
ZXgpLCBzdXBwb3J0ZWRFeHRlbnNpb24sIGZvdW5kTG9jYWxlVmlldy5zdWJzdHJpbmcobWF0Y2hl
clJlc3VsdC5leHRlbnNpb25JbmRleCkpOwogICAgIH0KIAogICAgIHJlc29sdmVkLmxvY2FsZSA9
IFdURk1vdmUoZm91bmRMb2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggNDFjMmJmZGY2ZWU1MTVjMjM0ZGNiY2U2MGNk
YjMzMDNlYWIzMGFmZS4uZGM1NzhlMTliZDU1MjBlYzc0ZTdiYzNiMTMyMzUwOWExMmE5ZjJjZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5l
cy5oCkBAIC01OCw3ICs1OCw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gU3RyaW5n
IGJlc3RBdmFpbGFibGVMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUsIFByCiAgICAgICAgIGlm
IChwb3MgPj0gMiAmJiBjYW5kaWRhdGVbcG9zIC0gMl0gPT0gJy0nKQogICAgICAgICAgICAgcG9z
IC09IDI7CiAKLSAgICAgICAgY2FuZGlkYXRlID0gY2FuZGlkYXRlLnN1YnN0cmluZygwLCBwb3Mp
OworICAgICAgICBjYW5kaWRhdGUgPSBjYW5kaWRhdGUubGVmdChwb3MpOwogICAgIH0KIAogICAg
IHJldHVybiBTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDJjMjIxZjRlYjE5OGViMTdlNGZhOTBmZDIzOWQ0
ODhlNTRlYmVhZGIuLjU3NjhlMzg4NzgxODc0NmU3NWNkYjQ1ZWI2NWQzMzg1ODE3ODdiMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVJM
LmNwcApAQCAtMTM1LDcgKzEzNSw3IEBAIFN0cmluZ1ZpZXcgVVJMOjpwcm90b2NvbCgpIGNvbnN0
CiAgICAgaWYgKCFtX2lzVmFsaWQpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICByZXR1cm4g
U3RyaW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKDAsIG1fc2NoZW1lRW5kKTsKKyAgICByZXR1
cm4gU3RyaW5nVmlldyhtX3N0cmluZykubGVmdChtX3NjaGVtZUVuZCk7CiB9CiAKIFN0cmluZ1Zp
ZXcgVVJMOjpob3N0KCkgY29uc3QKQEAgLTE2MiwxMCArMTYyLDEwIEBAIFN0cmluZyBVUkw6Omhv
c3RBbmRQb3J0KCkgY29uc3QKIFN0cmluZyBVUkw6OnByb3RvY29sSG9zdEFuZFBvcnQoKSBjb25z
dAogewogICAgIGlmICghaGFzQ3JlZGVudGlhbHMoKSkKLSAgICAgICAgcmV0dXJuIG1fc3RyaW5n
LnN1YnN0cmluZygwLCBwYXRoU3RhcnQoKSk7CisgICAgICAgIHJldHVybiBtX3N0cmluZy5sZWZ0
KHBhdGhTdGFydCgpKTsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAgICAgICBTdHJpbmdW
aWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3RyaW5nVmlldyhtX3N0
cmluZykuc3Vic3RyaW5nKGhvc3RTdGFydCgpLCBwYXRoU3RhcnQoKSAtIGhvc3RTdGFydCgpKQog
ICAgICk7CiB9CkBAIC0zNzcsNyArMzc3LDcgQEAgU3RyaW5nVmlldyBVUkw6OnBhdGgoKSBjb25z
dAogYm9vbCBVUkw6OnNldFByb3RvY29sKFN0cmluZ1ZpZXcgbmV3UHJvdG9jb2wpCiB7CiAgICAg
Ly8gRmlyZWZveCBhbmQgSUUgcmVtb3ZlIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpcnN0ICc6Jy4K
LSAgICBhdXRvIG5ld1Byb3RvY29sUHJlZml4ID0gbmV3UHJvdG9jb2wuc3Vic3RyaW5nKDAsIG5l
d1Byb3RvY29sLmZpbmQoJzonKSk7CisgICAgYXV0byBuZXdQcm90b2NvbFByZWZpeCA9IG5ld1By
b3RvY29sLmxlZnQobmV3UHJvdG9jb2wuZmluZCgnOicpKTsKICAgICBhdXRvIG5ld1Byb3RvY29s
Q2Fub25pY2FsaXplZCA9IFVSTFBhcnNlcjo6bWF5YmVDYW5vbmljYWxpemVTY2hlbWUobmV3UHJv
dG9jb2xQcmVmaXgpOwogICAgIGlmICghbmV3UHJvdG9jb2xDYW5vbmljYWxpemVkKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CkBAIC00NTcsNyArNDU3LDcgQEAgdm9pZCBVUkw6OnNldEhvc3QoU3Ry
aW5nVmlldyBuZXdIb3N0KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byBpbmRleCA9
IG5ld0hvc3QuZmluZChoYXNTcGVjaWFsU2NoZW1lKCkgPyBzbGFzaEhhc2hPclF1ZXN0aW9uTWFy
ayA6IGZvcndhcmRTbGFzaEhhc2hPclF1ZXN0aW9uTWFyayk7IGluZGV4ICE9IG5vdEZvdW5kKQot
ICAgICAgICBuZXdIb3N0ID0gbmV3SG9zdC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICBu
ZXdIb3N0ID0gbmV3SG9zdC5sZWZ0KGluZGV4KTsKIAogICAgIFZlY3RvcjxVQ2hhciwgNTEyPiBl
bmNvZGVkSG9zdE5hbWU7CiAgICAgaWYgKGhhc1NwZWNpYWxTY2hlbWUoKSAmJiAhYXBwZW5kRW5j
b2RlZEhvc3RuYW1lKGVuY29kZWRIb3N0TmFtZSwgbmV3SG9zdCkpCkBAIC01MDAsNyArNTAwLDcg
QEAgdm9pZCBVUkw6OnNldEhvc3RBbmRQb3J0KFN0cmluZ1ZpZXcgaG9zdEFuZFBvcnQpCiAgICAg
YXV0byBjb2xvbkluZGV4ID0gaG9zdE5hbWUucmV2ZXJzZUZpbmQoJzonKTsKICAgICBpZiAoY29s
b25JbmRleCAhPSBub3RGb3VuZCkgewogICAgICAgICBwb3J0U3RyaW5nID0gaG9zdE5hbWUuc3Vi
c3RyaW5nKGNvbG9uSW5kZXggKyAxKTsKLSAgICAgICAgaG9zdE5hbWUgPSBob3N0TmFtZS5zdWJz
dHJpbmcoMCwgY29sb25JbmRleCk7CisgICAgICAgIGhvc3ROYW1lID0gaG9zdE5hbWUubGVmdChj
b2xvbkluZGV4KTsKICAgICAgICAgLy8gTXVsdGlwbGUgY29sb25zIGFyZSBhY2NlcHRhYmxlIG9u
bHkgaW4gY2FzZSBvZiBJUHY2LgogICAgICAgICBpZiAoaG9zdE5hbWUuY29udGFpbnMoJzonKSAm
JiAhaG9zdE5hbWUuc3RhcnRzV2l0aCgnWycpKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtODM3
LDcgKzgzNyw3IEBAIFN0cmluZyBVUkw6OnN0cmlwcGVkRm9yVXNlQXNSZWZlcnJlcigpIGNvbnN0
CiAgICAgICAgIHJldHVybiBtX3N0cmluZzsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKAotICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5zdWJzdHJpbmcoMCwgbV91c2VyU3RhcnQpLAorICAg
ICAgICBTdHJpbmdWaWV3KG1fc3RyaW5nKS5sZWZ0KG1fdXNlclN0YXJ0KSwKICAgICAgICAgU3Ry
aW5nVmlldyhtX3N0cmluZykuc3Vic3RyaW5nKGVuZCwgbV9xdWVyeUVuZCAtIGVuZCkKICAgICAp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcCBiL1NvdXJjZS9X
VEYvd3RmL1VSTFBhcnNlci5jcHAKaW5kZXggZmZkYzhkMzhmZWI1ZGQxMWU2Njk3NTA4YzI4ZGI0
ODFjZDNmMDFkOS4uMTFkYWQxZTEyMjdhZTk0OTM5YTU1ZGE3NTRkMGEyYWY1NGFjNmVkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvVVJMUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi9VUkxQYXJzZXIuY3BwCkBAIC0yNTEyLDcgKzI1MTIsNyBAQCB2b2lkIFVSTFBhcnNlcjo6YWRk
Tm9uU3BlY2lhbERvdFNsYXNoKCkKIHsKICAgICBhdXRvIG9sZFBhdGhTdGFydCA9IG1fdXJsLm1f
aG9zdEVuZCArIG1fdXJsLm1fcG9ydExlbmd0aDsKICAgICBhdXRvJiBvbGRTdHJpbmcgPSBtX3Vy
bC5tX3N0cmluZzsKLSAgICBtX3VybC5tX3N0cmluZyA9IG1ha2VTdHJpbmcob2xkU3RyaW5nLnN1
YnN0cmluZygwLCBvbGRQYXRoU3RhcnQgKyAxKSwgIi4vIiwgb2xkU3RyaW5nLnN1YnN0cmluZyhv
bGRQYXRoU3RhcnQgKyAxKSk7CisgICAgbV91cmwubV9zdHJpbmcgPSBtYWtlU3RyaW5nKFN0cmlu
Z1ZpZXcob2xkU3RyaW5nKS5sZWZ0KG9sZFBhdGhTdGFydCArIDEpLCAiLi8iLCBTdHJpbmdWaWV3
KG9sZFN0cmluZykuc3Vic3RyaW5nKG9sZFBhdGhTdGFydCArIDEpKTsKICAgICBtX3VybC5tX3Bh
dGhBZnRlckxhc3RTbGFzaCArPSAyOwogICAgIG1fdXJsLm1fcGF0aEVuZCArPSAyOwogICAgIG1f
dXJsLm1fcXVlcnlFbmQgKz0gMjsKQEAgLTI4OTEsNyArMjg5MSw3IEBAIGF1dG8gVVJMUGFyc2Vy
OjpwYXJzZVVSTEVuY29kZWRGb3JtKFN0cmluZ1ZpZXcgaW5wdXQpIC0+IFVSTEVuY29kZWRGb3Jt
CiAgICAgICAgICAgICBpZiAobmFtZSkKICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHsg
bmFtZS52YWx1ZSgpLCBlbXB0eVN0cmluZygpIH0pOwogICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgYXV0byBuYW1lID0gZm9ybVVSTERlY29kZShieXRlcy5zdWJzdHJpbmcoMCwgZXF1YWxJ
bmRleCkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywgMHgyMCkpOworICAgICAgICAgICAgYXV0byBu
YW1lID0gZm9ybVVSTERlY29kZShieXRlcy5sZWZ0KGVxdWFsSW5kZXgpLnRvU3RyaW5nKCkucmVw
bGFjZSgnKycsIDB4MjApKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWUgPSBmb3JtVVJMRGVjb2Rl
KGJ5dGVzLnN1YnN0cmluZyhlcXVhbEluZGV4ICsgMSkudG9TdHJpbmcoKS5yZXBsYWNlKCcrJywg
MHgyMCkpOwogICAgICAgICAgICAgaWYgKG5hbWUgJiYgdmFsdWUpCiAgICAgICAgICAgICAgICAg
b3V0cHV0LmFwcGVuZCh7IG5hbWUudmFsdWUoKSwgdmFsdWUudmFsdWUoKSB9KTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL1VVSUQuY3BwIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKaW5k
ZXggNGI4OTAwMDQ3YmU5YjU2YjZhNmVjMTZlMTM5MTQ1NjZlZWZkOTFjMC4uYTgwMTMwMDQ4MDcw
ZjE2MjVmNDgwNjU2NGU0M2RlYWMyNjVkNGJkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
VVVJRC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvVVVJRC5jcHAKQEAgLTExMyw3ICsxMTMsNyBA
QCBzdGQ6Om9wdGlvbmFsPFVVSUQ+IFVVSUQ6OnBhcnNlKFN0cmluZ1ZpZXcgdmFsdWUpCiAgICAg
aWYgKHZhbHVlWzBdID09ICcrJyB8fCB2YWx1ZVs5XSA9PSAnKycgIHx8IHZhbHVlWzE5XSA9PSAn
KycgfHwgdmFsdWVbMjRdID09ICcrJykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8g
Zmlyc3RWYWx1ZSA9IHBhcnNlSW50ZWdlcjx1aW50NjRfdD4odmFsdWUuc3Vic3RyaW5nKDAsIDgp
LCAxNik7CisgICAgYXV0byBmaXJzdFZhbHVlID0gcGFyc2VJbnRlZ2VyPHVpbnQ2NF90Pih2YWx1
ZS5sZWZ0KDgpLCAxNik7CiAgICAgaWYgKCFmaXJzdFZhbHVlKQogICAgICAgICByZXR1cm4geyB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggZDc3N2E5NzljODQ1ZWMxMjlmNGZm
YTVlMWRlMjExODNhYmM2NTJjOC4uYTE2NzNhNjNlOTc3NDQyMjVkMDJkZWI5OWIyNDMyODczYjM0
ZjAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAtMTc3LDE0ICsxNzcsMTQgQEAg
dm9pZCBTdHJpbmc6Omluc2VydChjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgcG9zaXRp
b24pCiAgICAgaWYgKGlzOEJpdCgpICYmIHN0cmluZy5pczhCaXQoKSkgewogICAgICAgICBMQ2hh
ciogZGF0YTsKICAgICAgICAgYXV0byBuZXdTdHJpbmcgPSBTdHJpbmdJbXBsOjpjcmVhdGVVbmlu
aXRpYWxpemVkKGxlbmd0aCgpICsgbGVuZ3RoVG9JbnNlcnQsIGRhdGEpOwotICAgICAgICBTdHJp
bmdWaWV3KCptX2ltcGwpLnN1YnN0cmluZygwLCBwb3NpdGlvbikuZ2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQoZGF0YSk7CisgICAgICAgIFN0cmluZ1ZpZXcoKm1faW1wbCkubGVmdChwb3NpdGlv
bikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSk7CiAgICAgICAgIFN0cmluZ1ZpZXco
c3RyaW5nKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChkYXRhICsgcG9zaXRpb24pOwogICAg
ICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLnN1YnN0cmluZyhwb3NpdGlvbikuZ2V0Q2hhcmFjdGVy
c1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uICsgbGVuZ3RoVG9JbnNlcnQpOwogICAgICAg
ICBtX2ltcGwgPSBXVEZNb3ZlKG5ld1N0cmluZyk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgVUNo
YXIqIGRhdGE7CiAgICAgICAgIGF1dG8gbmV3U3RyaW5nID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5p
bml0aWFsaXplZChsZW5ndGgoKSArIGxlbmd0aFRvSW5zZXJ0LCBkYXRhKTsKLSAgICAgICAgU3Ry
aW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLmdldENoYXJhY3RlcnNXaXRo
VXBjb252ZXJ0KGRhdGEpOworICAgICAgICBTdHJpbmdWaWV3KCptX2ltcGwpLmxlZnQocG9zaXRp
b24pLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGRhdGEpOwogICAgICAgICBTdHJpbmdWaWV3
KHN0cmluZykuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZGF0YSArIHBvc2l0aW9uKTsKICAg
ICAgICAgU3RyaW5nVmlldygqbV9pbXBsKS5zdWJzdHJpbmcocG9zaXRpb24pLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGRhdGEgKyBwb3NpdGlvbiArIGxlbmd0aFRvSW5zZXJ0KTsKICAgICAg
ICAgbV9pbXBsID0gV1RGTW92ZShuZXdTdHJpbmcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5k
ZXggYjY0OTcwOTgwYWJlM2YzYzc5Yjk0MmZhMDgyNjU2NjNjZTgyOWJkNS4uZjE3M2ZlNjkyM2Q3
YWFmMjRhZTM0ZGQ3NDllMDczNDhmODU1ODM4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBA
IC0yMDQsNyArMjA0LDkgQEAgcHVibGljOgogICAgIFN0cmluZyYgcmVwbGFjZSh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgbGVuZ3RoLCBTdHJpbmdWaWV3IHJlcGxhY2VtZW50KTsKICAgICB0ZW1w
bGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5nJiByZXBsYWNlV2l0aExpdGVyYWwo
VUNoYXIgdGFyZ2V0LCBjb25zdCBjaGFyICgmcmVwbGFjZW1lbnQpW2NoYXJhY3RlckNvdW50XSk7
CiAKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBpZGVudGlmaWNhbCB0byBsZWZ0KCkgYW5kIHNob3Vs
ZCBwcm9iYWJseSBiZSBkcm9wcGVkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIHRydW5j
YXRlKHVuc2lnbmVkIGxlbmd0aCk7CisKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1v
dmUodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVkIGxlbmd0aCA9IDEpOwogCiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIFN0cmluZyBzdWJzdHJpbmcodW5zaWduZWQgcG9zaXRpb24sIHVuc2lnbmVk
IGxlbmd0aCA9IE1heExlbmd0aCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2ZldGNoL0ZldGNoQm9keUNvbnN1bWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvZmV0Y2gvRmV0Y2hCb2R5Q29uc3VtZXIuY3BwCmluZGV4IDMyZWExZDQ5ZjdkZmU0YTIwMGQ5
ZTVjMGM1ODM3MjYwN2I1ZGQyMDEuLjAzZTAxODJkMzkyMTc4YWM2N2E0NmE1NTk0NzBmZjY1NzJk
OTRlNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5
Q29uc3VtZXIuY3BwCkBAIC0xMTMsNyArMTEzLDcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8TWlt
ZVR5cGU+IHBhcnNlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICBpZiAo
c2xhc2hJbmRleCA9PSBub3RGb3VuZCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAot
ICAgIFN0cmluZyB0eXBlID0gaW5wdXQuc3Vic3RyaW5nKDAsIHNsYXNoSW5kZXgpOworICAgIFN0
cmluZyB0eXBlID0gaW5wdXQubGVmdChzbGFzaEluZGV4KTsKICAgICBpZiAoIXR5cGUubGVuZ3Ro
KCkgfHwgIWlzVmFsaWRIVFRQVG9rZW4odHlwZSkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9J
REJDdXJzb3IuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvSURCQ3Vyc29y
LmNwcAppbmRleCBlNDM4MmIzZDM0YTI5NDc1ODBkN2Q3OTBjYTQ0NWZlMDk1NmQyNTQxLi4wZTZj
ZDViMzFkNjNmM2YxOTJiMTAxNmFmMjQ0ZTE4ZWNjZjVhZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJDdXJzb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQkN1cnNvci5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBF
eGNlcHRpb25PcjxSZWY8V2ViQ29yZTo6SURCUmVxdWVzdD4+IElEQkN1cnNvcjo6ZGVsZXRlRnVu
Y3Rpb24oKQogCiBib29sIElEQkN1cnNvcjo6c2V0R2V0UmVzdWx0KElEQlJlcXVlc3QmIHJlcXVl
c3QsIGNvbnN0IElEQkdldFJlc3VsdCYgZ2V0UmVzdWx0LCB1aW50NjRfdCBvcGVyYXRpb25JRCkK
IHsKLSAgICBMT0coSW5kZXhlZERCLCAiSURCQ3Vyc29yOjpzZXRHZXRSZXN1bHQgLSBjdXJyZW50
IGtleSAlcyIsIGdldFJlc3VsdC5rZXlEYXRhKCkubG9nZ2luZ1N0cmluZygpLnN1YnN0cmluZygw
LCAxMDApLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhJbmRleGVkREIsICJJREJDdXJzb3I6OnNl
dEdldFJlc3VsdCAtIGN1cnJlbnQga2V5ICVzIiwgZ2V0UmVzdWx0LmtleURhdGEoKS5sb2dnaW5n
U3RyaW5nKCkubGVmdCgxMDApLnV0ZjgoKS5kYXRhKCkpOwogICAgIEFTU0VSVChjYW5DdXJyZW50
VGhyZWFkQWNjZXNzVGhyZWFkTG9jYWxEYXRhKGVmZmVjdGl2ZU9iamVjdFN0b3JlKCkudHJhbnNh
Y3Rpb24oKS5kYXRhYmFzZSgpLm9yaWdpblRocmVhZCgpKSk7CiAKICAgICBhdXRvKiBjb250ZXh0
ID0gcmVxdWVzdC5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9JREJLZXlQYXRoLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvaW5kZXhlZGRiL0lEQktleVBhdGguY3BwCmluZGV4IGM4MjkxMTZlNjQ0NzU2Y2I3
NjYxZDZjZThlZjY3ZjY1MjliYTkzMmMuLmJkMDA4YTFlMDczM2QyMzMyMTMxZDc3Yjk4MTZhNmZm
ZDI5NWY1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lE
QktleVBhdGguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL0lEQktl
eVBhdGguY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSURCS2V5UGF0aExleGVyOjpUb2tlblR5cGUg
SURCS2V5UGF0aExleGVyOjpsZXhJZGVudGlmaWVyKFN0cmluZyYgZWxlbWVudCkKICAgICB3aGls
ZSAoIW1fcmVtYWluaW5nVGV4dC5pc0VtcHR5KCkgJiYgaXNJZGVudGlmaWVyQ2hhcmFjdGVyKG1f
cmVtYWluaW5nVGV4dFswXSkpCiAgICAgICAgIG1fcmVtYWluaW5nVGV4dCA9IG1fcmVtYWluaW5n
VGV4dC5zdWJzdHJpbmcoMSk7CiAKLSAgICBlbGVtZW50ID0gc3RhcnQuc3Vic3RyaW5nKDAsIHN0
YXJ0Lmxlbmd0aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxlbmd0aCgpKS50b1N0cmluZygpOworICAg
IGVsZW1lbnQgPSBzdGFydC5sZWZ0KHN0YXJ0Lmxlbmd0aCgpIC0gbV9yZW1haW5pbmdUZXh0Lmxl
bmd0aCgpKS50b1N0cmluZygpOwogICAgIHJldHVybiBUb2tlbklkZW50aWZpZXI7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNvbm5lY3Rp
b25CYWNrZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUGVlckNv
bm5lY3Rpb25CYWNrZW5kLmNwcAppbmRleCAxYzAzNDU3ZWRmODg3Zjc1OTk3YzQ0NDVmMGQzNGJm
YWRhMjE3YjBkLi43NWMwYTA5NzUxODUxZTBlZjEzOWVmNGM0NzU5NDUzYzVmMjI0NmNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1BlZXJDb25uZWN0aW9u
QmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9QZWVy
Q29ubmVjdGlvbkJhY2tlbmQuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgc3RhdGljIGlubGluZSBi
b29sIHNob3VsZElnbm9yZUljZUNhbmRpZGF0ZShjb25zdCBSVENJY2VDYW5kaWRhdGUmIGljZUNh
bmRpZGF0ZSkKICAgICBpZiAoIWFkZHJlc3MuZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgiLmxv
Y2FsIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghV1RGOjppc1ZlcnNpb240
VVVJRChTdHJpbmdWaWV3IHsgYWRkcmVzcyB9LnN1YnN0cmluZygwLCBhZGRyZXNzLmxlbmd0aCgp
IC0gNikpKSB7CisgICAgaWYgKCFXVEY6OmlzVmVyc2lvbjRVVUlEKFN0cmluZ1ZpZXcgeyBhZGRy
ZXNzIH0ubGVmdChhZGRyZXNzLmxlbmd0aCgpIC0gNikpKSB7CiAgICAgICAgIFJFTEVBU0VfTE9H
X0VSUk9SKFdlYlJUQywgIm1ETlMgY2FuZGlkYXRlIGlzIG5vdCBhIFZlcnNpb24gNCBVVUlEIik7
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDRFRNRlNlbmRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RUTUZTZW5kZXIuY3BwCmluZGV4IGFjNjZjNWVhYzM3OGMy
OTc2M2FlNDIzNTVmY2IzN2ViMmY0MWI1Y2UuLmEzYjYxZWMwY2U1YzAxNTRkYjU5ZmQ3NzA3MzZm
ZmJhNTQxM2M4OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vUlRDRFRNRlNlbmRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9SVENEVE1GU2VuZGVyLmNwcApAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgUlRDRFRNRlNl
bmRlcjo6cGxheU5leHRUb25lKCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8g
Y3VycmVudFRvbmUgPSBtX3RvbmVzLnN1YnN0cmluZygwLCAxKTsKKyAgICBhdXRvIGN1cnJlbnRU
b25lID0gbV90b25lcy5sZWZ0KDEpOwogICAgIG1fdG9uZXMucmVtb3ZlKDApOwogCiAgICAgbV9i
YWNrZW5kLT5wbGF5VG9uZShjdXJyZW50VG9uZSwgbV9kdXJhdGlvbiwgbV9pbnRlclRvbmVHYXAp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9nc3RyZWFt
ZXIvR1N0cmVhbWVyTWVkaWFFbmRwb2ludC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcAppbmRleCBlMTY0
NzBiOGE0MjlkM2E4NTJjNGQ3YmIxYjY1ZjFlYjQzYTAyNTdmLi4xZjlhN2Y1Y2YyYTIxNGZlYjkx
NDBlNGEwZTUxMjk5MjFmYjI4NTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRpYUVuZHBvaW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2dzdHJlYW1lci9HU3RyZWFtZXJNZWRp
YUVuZHBvaW50LmNwcApAQCAtNzQwLDcgKzc0MCw3IEBAIHZvaWQgR1N0cmVhbWVyTWVkaWFFbmRw
b2ludDo6YWRkUmVtb3RlU3RyZWFtKEdzdFBhZCogcGFkKQogICAgICAgICBhdXRvIGkgPSBsaW5l
LmZpbmQoa2V5KTsKICAgICAgICAgaWYgKGkgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIGF1
dG8gdG1wID0gbGluZS5zdWJzdHJpbmcoaSArIGtleS5hc2NpaSgpLmxlbmd0aCgpKTsKLSAgICAg
ICAgICAgIGxhYmVsID0gdG1wLnN1YnN0cmluZygwLCB0bXAuZmluZCgnICcpKTsKKyAgICAgICAg
ICAgIGxhYmVsID0gdG1wLmxlZnQodG1wLmZpbmQoJyAnKSk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vbGlid2VicnRjL0xpYldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL2xpYndlYnJ0Yy9MaWJXZWJSVENSdHBU
cmFuc2NlaXZlckJhY2tlbmQuY3BwCmluZGV4IDQxNzZlOGQ2Zjc4M2E1MjVhODBmN2E2MGVhZGM2
N2Y2YmZkNzAxNmMuLjk0OTM3ZjA0ZGI4YzNiNGRkNWJkODFmNTQzZmYxMDBmNGY3ZmViNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vbGlid2VicnRjL0xp
YldlYlJUQ1J0cFRyYW5zY2VpdmVyQmFja2VuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9saWJ3ZWJydGMvTGliV2ViUlRDUnRwVHJhbnNjZWl2ZXJCYWNrZW5k
LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHN0YXRpYyBpbmxpbmUgRXhjZXB0aW9uT3I8d2VicnRj
OjpSdHBDb2RlY0NhcGFiaWxpdHk+IHRvUnRwQ29kZWNDYXBhYmlsaXR5KGNvbnN0CiAgICAgICAg
IGF1dG8gcG9zaXRpb24gPSBwYXJhbWV0ZXIuZmluZCgnPScpOwogICAgICAgICBpZiAocG9zaXRp
b24gPT0gbm90Rm91bmQpCiAgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZE1v
ZGlmaWNhdGlvbkVycm9yLCAiUlRDUnRwQ29kZWNDYXBhYmlsaXR5IHNkcEZtdExpbmUgYmFkbHkg
Zm9ybWF0ZWQiX3MgfTsKLSAgICAgICAgcnRjQ29kZWMucGFyYW1ldGVycy5lbXBsYWNlKHBhcmFt
ZXRlci5zdWJzdHJpbmcoMCwgcG9zaXRpb24pLnV0ZjgoKS5kYXRhKCksIHBhcmFtZXRlci5zdWJz
dHJpbmcocG9zaXRpb24gKyAxKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcnRjQ29kZWMucGFy
YW1ldGVycy5lbXBsYWNlKHBhcmFtZXRlci5sZWZ0KHBvc2l0aW9uKS51dGY4KCkuZGF0YSgpLCBw
YXJhbWV0ZXIuc3Vic3RyaW5nKHBvc2l0aW9uICsgMSkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQog
CiAgICAgcmV0dXJuIHJ0Y0NvZGVjOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9wbHVnaW5zL1lvdVR1YmVQbHVnaW5SZXBsYWNlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAppbmRleCA4NTdjOWMy
NGJiOGRlNDYwZTJjMjc1ZjkyZjM4YTEyMGIwMjAzYzVlLi5jYmFmNDZmMGVlNWZlN2U0MDkwNWE0
OTZkYWQ4N2U0ZTlmYTlhYTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3Bs
dWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3BsdWdpbnMvWW91VHViZVBsdWdpblJlcGxhY2VtZW50LmNwcApAQCAtMjIyLDcgKzIy
Miw3IEBAIHN0YXRpYyBVUkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1
cmwsIGJvb2wmIGlzWW91VHViZVNob3J0ZW5lZFVSCiAgICAgICAgICAgICBwYXRoID0gZnJhZ21l
bnQ7CiAgICAgICAgICAgICBxdWVyeSA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICBwYXRoID0gZnJhZ21lbnQuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIHBhdGggPSBmcmFnbWVudC5sZWZ0KGxvY2F0aW9uKTsKICAgICAgICAgICAgIHF1
ZXJ5ID0gZnJhZ21lbnQuc3Vic3RyaW5nKGxvY2F0aW9uICsgMSk7CiAgICAgICAgIH0KICAgICAg
ICAgZnJhZ21lbnQgPSBlbXB0eVN0cmluZygpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIHN0YXRpYyBV
UkwgcHJvY2Vzc0FuZENyZWF0ZVlvdVR1YmVVUkwoY29uc3QgVVJMJiB1cmwsIGJvb2wmIGlzWW91
VHViZVNob3J0ZW5lZFVSCiAgICAgICAgIHNpemVfdCBhbXBlcnNhbmRMb2NhdGlvbiA9IGxhc3RQ
YXRoQ29tcG9uZW50LmZpbmQoJyYnKTsKICAgICAgICAgaWYgKGFtcGVyc2FuZExvY2F0aW9uICE9
IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICAvLyBTb21lIFVSTHMgd2UgY2FyZSBhYm91dCB1c2Ug
JiBpbiBwbGFjZSBvZiA/IGZvciB0aGUgZmlyc3QgcXVlcnkgcGFyYW1ldGVyLgotICAgICAgICAg
ICAgdmlkZW9JRCA9IGxhc3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZygwLCBhbXBlcnNhbmRMb2Nh
dGlvbik7CisgICAgICAgICAgICB2aWRlb0lEID0gbGFzdFBhdGhDb21wb25lbnQubGVmdChhbXBl
cnNhbmRMb2NhdGlvbik7CiAgICAgICAgICAgICBwYXRoQWZ0ZXJGaXJzdEFtcGVyc2FuZCA9IGxh
c3RQYXRoQ29tcG9uZW50LnN1YnN0cmluZyhhbXBlcnNhbmRMb2NhdGlvbiArIDEsIGxhc3RQYXRo
Q29tcG9uZW50Lmxlbmd0aCgpIC0gYW1wZXJzYW5kTG9jYXRpb24pOwogICAgICAgICB9IGVsc2UK
ICAgICAgICAgICAgIHZpZGVvSUQgPSBsYXN0UGF0aENvbXBvbmVudDsKQEAgLTMwNCw3ICszMDQs
NyBAQCBTdHJpbmcgWW91VHViZVBsdWdpblJlcGxhY2VtZW50Ojp5b3VUdWJlVVJMRnJvbUFic29s
dXRlVVJMKGNvbnN0IFVSTCYgc3JjVVJMLCBjbwogICAgICAgICBBU1NFUlQobG9jYXRpb25PZlZp
ZGVvSURJblBhdGgpOwogICAgIAogICAgICAgICAvLyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdl
IG5lZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAvcGF0aC9WaWRlb0lkLgotICAgICAgICBsb2Nh
dGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmluZChzcmNQ
YXRoLnN1YnN0cmluZygwLCBsb2NhdGlvbk9mVmlkZW9JREluUGF0aCkpOworICAgICAgICBsb2Nh
dGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgPSBTdHJpbmdWaWV3KHNyY1N0cmluZykuZmluZChzcmNQ
YXRoLmxlZnQobG9jYXRpb25PZlZpZGVvSURJblBhdGgpKTsKICAgICB9IGVsc2UgaWYgKGVxdWFs
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHNyY1BhdGgsICIvd2F0Y2giKSkgewogICAgICAgICAv
LyBGcm9tIHRoZSBvcmlnaW5hbCBVUkwsIHdlIG5lZWQgdG8gZ2V0IHRoZSBwYXJ0IGJlZm9yZSAv
d2F0Y2gvIyF2PVZpZGVvSUQKICAgICAgICAgLy8gRklYTUU6IFNob3VsZG4ndCB0aGlzIGJlIEFT
Q0lJIGNhc2UtaW5zZW5zaXRpdmU/CkBAIC0zMTQsNyArMzE0LDcgQEAgU3RyaW5nIFlvdVR1YmVQ
bHVnaW5SZXBsYWNlbWVudDo6eW91VHViZVVSTEZyb21BYnNvbHV0ZVVSTChjb25zdCBVUkwmIHNy
Y1VSTCwgY28KIAogICAgIEFTU0VSVChsb2NhdGlvbk9mUGF0aEJlZm9yZVZpZGVvSUQgIT0gbm90
Rm91bmQpOwogCi0gICAgYXV0byBzcmNVUkxQcmVmaXggPSBTdHJpbmdWaWV3KHNyY1N0cmluZyku
c3Vic3RyaW5nKDAsIGxvY2F0aW9uT2ZQYXRoQmVmb3JlVmlkZW9JRCk7CisgICAgYXV0byBzcmNV
UkxQcmVmaXggPSBTdHJpbmdWaWV3KHNyY1N0cmluZykubGVmdChsb2NhdGlvbk9mUGF0aEJlZm9y
ZVZpZGVvSUQpOwogICAgIGF1dG8gcXVlcnkgPSBzcmNVUkwucXVlcnkoKTsKIAogICAgIC8vIElm
IHRoZSBVUkwgaGFzIG5vIHF1ZXJ5LCB1c2UgdGhlIHBvc3NpYmx5IG1hbGZvcm1lZCBxdWVyeSB3
ZSBmb3VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlU
ZXh0Qm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rpc3BsYXkvY3NzL0Rpc3BsYXlUZXh0Qm94LmNw
cAppbmRleCBlNTgwYzM0Yjg4MWVhNDgxMmEyNTJjMTA2NTM4ZDMyOTUxMjIwNDIwLi42YWVmMDFk
MDA2M2VmMDJiMTYzMDhmN2Y3NmI5MWM5MDlhNTk0MmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kaXNwbGF5L2Nzcy9EaXNwbGF5VGV4dEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZGlzcGxheS9jc3MvRGlzcGxheVRleHRCb3guY3BwCkBAIC01OCw3ICs1OCw3IEBAIFN0cmluZyBU
ZXh0Qm94OjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKICAgICB0ZXh0Q29udGVudC5yZXBsYWNl
V2l0aExpdGVyYWwoJ1xuJywgIlxcbiIpOwogICAgIGNvbnN0IHNpemVfdCBtYXhQcmludGVkTGVu
Z3RoID0gODA7CiAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0aCgpID4gbWF4UHJpbnRlZExlbmd0
aCkgewotICAgICAgICBhdXRvIHN1YnN0cmluZyA9IHRleHRDb250ZW50LnN1YnN0cmluZygwLCBt
YXhQcmludGVkTGVuZ3RoKTsKKyAgICAgICAgYXV0byBzdWJzdHJpbmcgPSBTdHJpbmdWaWV3KHRl
eHRDb250ZW50KS5sZWZ0KG1heFByaW50ZWRMZW5ndGgpOwogICAgICAgICBzdHJlYW0gPDwgIiBc
IiIgPDwgc3Vic3RyaW5nIDw8ICJcIuKApiI7CiAgICAgfSBlbHNlCiAgICAgICAgIHN0cmVhbSA8
PCAiIFwiIiA8PCB0ZXh0Q29udGVudCA8PCAiXCIiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggMzgwMWJlZDNjZjIyNWJhYjE4MmFiY2E5M2ZiOTcxZThiZDk2NjRlMi4uMjFlZmNkYzVjZDRl
M2IxNjA3ZDE0MDMzMDliODRjM2E5ZGFmYzQ0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC01NTY5LDcgKzU1NjksNyBAQCBFeGNlcHRpb25PcjxzdGQ6OnBhaXI8QXRvbVN0cmluZywgQXRv
bVN0cmluZz4+IERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29ucwogICAgIGlmICghY29s
b25Qb3NpdGlvbiB8fCBsZW5ndGggLSBjb2xvblBvc2l0aW9uIDw9IDEpCiAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkQ2hhcmFjdGVyRXJyb3IgfTsKIAotICAgIHJldHVybiBzdGQ6
OnBhaXI8QXRvbVN0cmluZywgQXRvbVN0cmluZz4geyBTdHJpbmdWaWV3IHsgcXVhbGlmaWVkTmFt
ZSB9LnN1YnN0cmluZygwLCBjb2xvblBvc2l0aW9uKS50b0F0b21TdHJpbmcoKSwgU3RyaW5nVmll
dyB7IHF1YWxpZmllZE5hbWUgfS5zdWJzdHJpbmcoY29sb25Qb3NpdGlvbiArIDEpLnRvQXRvbVN0
cmluZygpIH07CisgICAgcmV0dXJuIHN0ZDo6cGFpcjxBdG9tU3RyaW5nLCBBdG9tU3RyaW5nPiB7
IFN0cmluZ1ZpZXcgeyBxdWFsaWZpZWROYW1lIH0ubGVmdChjb2xvblBvc2l0aW9uKS50b0F0b21T
dHJpbmcoKSwgU3RyaW5nVmlldyB7IHF1YWxpZmllZE5hbWUgfS5zdWJzdHJpbmcoY29sb25Qb3Np
dGlvbiArIDEpLnRvQXRvbVN0cmluZygpIH07CiB9CiAKIEV4Y2VwdGlvbk9yPFF1YWxpZmllZE5h
bWU+IERvY3VtZW50OjpwYXJzZVF1YWxpZmllZE5hbWUoY29uc3QgQXRvbVN0cmluZyYgbmFtZXNw
YWNlVVJJLCBjb25zdCBTdHJpbmcmIHF1YWxpZmllZE5hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXgg
NjhhNmZiYjM1ODQ0MTQ0MWEyYjExYjU4ZmM2ZjE5NDI5ZjFmMGVlYS4uZGM4MzkxZjYzOWY4ZDE2
MzA5ODM1M2Y0OWNiYWMwMjZhOGI3ZDgxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtNjQsNyArNjQs
NyBAQCBFeGNlcHRpb25PcjxSZWY8VGV4dD4+IFRleHQ6OnNwbGl0VGV4dCh1bnNpZ25lZCBvZmZz
ZXQpCiAgICAgRXZlbnRRdWV1ZVNjb3BlIHNjb3BlOwogICAgIGF1dG8gb2xkRGF0YSA9IGRhdGEo
KTsKICAgICBhdXRvIG5ld1RleHQgPSB2aXJ0dWFsQ3JlYXRlKG9sZERhdGEuc3Vic3RyaW5nKG9m
ZnNldCkpOwotICAgIHNldERhdGFXaXRob3V0VXBkYXRlKG9sZERhdGEuc3Vic3RyaW5nKDAsIG9m
ZnNldCkpOworICAgIHNldERhdGFXaXRob3V0VXBkYXRlKG9sZERhdGEubGVmdChvZmZzZXQpKTsK
IAogICAgIGRpc3BhdGNoTW9kaWZpZWRFdmVudChvbGREYXRhKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UZXh0Q2hlY2tpbmdIZWxwZXIuY3BwCmluZGV4IDgwYTg3ODZjZjM4NzVhMzM0
NDVmYjE0NjdlYmQ0NmMyNzQyMWE4NDIuLjMxODM0NDFjODUyNmEwY2RiZWUzOTBlY2QzZmIzOTk3
NmU3ZmVkNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dENoZWNraW5n
SGVscGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1RleHRDaGVja2luZ0hlbHBl
ci5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCB2b2lkIGNoZWNrVGV4dE9mUGFyYWdyYXBoKFRleHRD
aGVja2VyQ2xpZW50JiBjbGllbnQsIFN0cmluZ1ZpZXcgdGV4dCwgT3B0aW9uU2V0PAogICAgICAg
ICB1bnNpZ25lZCBncmFtbWFyQ2hlY2tMZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOwogICAgICAgICBm
b3IgKGF1dG8mIG1pc3NwZWxsaW5nIDogbWlzc3BlbGxpbmdzKQogICAgICAgICAgICAgZ3JhbW1h
ckNoZWNrTGVuZ3RoID0gc3RkOjptaW48dW5zaWduZWQ+KGdyYW1tYXJDaGVja0xlbmd0aCwgbWlz
c3BlbGxpbmcucmFuZ2UubG9jYXRpb24pOwotICAgICAgICBmaW5kR3JhbW1hdGljYWxFcnJvcnMo
Y2xpZW50LCB0ZXh0LnN1YnN0cmluZygwLCBncmFtbWFyQ2hlY2tMZW5ndGgpLCBncmFtbWF0aWNh
bEVycm9ycyk7CisgICAgICAgIGZpbmRHcmFtbWF0aWNhbEVycm9ycyhjbGllbnQsIHRleHQubGVm
dChncmFtbWFyQ2hlY2tMZW5ndGgpLCBncmFtbWF0aWNhbEVycm9ycyk7CiAgICAgfQogCiAgICAg
cmVzdWx0cyA9IFdURk1vdmUoZ3JhbW1hdGljYWxFcnJvcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9UZXh0SXRlcmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9UZXh0SXRlcmF0b3IuY3BwCmluZGV4IGUxYTg5MjVlOWZlYjljYmZiM2Q1N2VmZjk3OTc5ZGUy
ZWY1ODZmODguLmJmYTIyZTNmZWEzOTU2YzA4ZmIxZTJiNDBhMDg3ZDFjMjVlYTc0NzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVGV4dEl0ZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1RleHRJdGVyYXRvci5jcHAKQEAgLTIwMzAsNyArMjAzMCw3IEBA
IGlubGluZSB2b2lkIFNlYXJjaEJ1ZmZlcjo6cHJlcGVuZENvbnRleHQoU3RyaW5nVmlldyB0ZXh0
KQogICAgIHNpemVfdCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQgPSB0ZXh0Lmxlbmd0aCgpOwog
ICAgIGlmICh3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpIHsKICAgICAgICAgVTE2X0JBQ0tfMSh0
ZXh0LCAwLCB3b3JkQm91bmRhcnlDb250ZXh0U3RhcnQpOwotICAgICAgICB3b3JkQm91bmRhcnlD
b250ZXh0U3RhcnQgPSBzdGFydE9mTGFzdFdvcmRCb3VuZGFyeUNvbnRleHQodGV4dC5zdWJzdHJp
bmcoMCwgd29yZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KSk7CisgICAgICAgIHdvcmRCb3VuZGFyeUNv
bnRleHRTdGFydCA9IHN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0LmxlZnQod29y
ZEJvdW5kYXJ5Q29udGV4dFN0YXJ0KSk7CiAgICAgfQogCiAgICAgc2l6ZV90IHVzYWJsZUxlbmd0
aCA9IHN0ZDo6bWluKG1fYnVmZmVyLmNhcGFjaXR5KCkgLSBtX3ByZWZpeExlbmd0aCwgdGV4dC5s
ZW5ndGgoKSAtIHdvcmRCb3VuZGFyeUNvbnRleHRTdGFydCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVVbml0cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L1Zpc2libGVVbml0cy5jcHAKaW5kZXggNDUxOGFkNDM5MzFjODUyNWI4ZWZmMjBjNDA5YmQyNjNj
ODA3MmVmZC4uNWJlYzg3MTQwNTE4YjgzNDBjODZhZDc0OTRmZmNlYWQ4N2FjYjY0MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlVW5pdHMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVVuaXRzLmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHVu
c2lnbmVkIHN1ZmZpeExlbmd0aEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiBmb3J3YXJkc1Nj
YW5SYW5nZSwgVmVjdG9yPFVDaGFyCiAgICAgd2hpbGUgKCFmb3J3YXJkc0l0ZXJhdG9yLmF0RW5k
KCkpIHsKICAgICAgICAgU3RyaW5nVmlldyB0ZXh0ID0gZm9yd2FyZHNJdGVyYXRvci50ZXh0KCk7
CiAgICAgICAgIHVuc2lnbmVkIGkgPSBlbmRPZkZpcnN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0
KTsKLSAgICAgICAgYXBwZW5kKHN0cmluZywgdGV4dC5zdWJzdHJpbmcoMCwgaSkpOworICAgICAg
ICBhcHBlbmQoc3RyaW5nLCB0ZXh0LmxlZnQoaSkpOwogICAgICAgICBzdWZmaXhMZW5ndGggKz0g
aTsKICAgICAgICAgaWYgKGkgPCB0ZXh0Lmxlbmd0aCgpKQogICAgICAgICAgICAgYnJlYWs7CkBA
IC02MzgsNyArNjM4LDcgQEAgc3RhdGljIFZpc2libGVQb3NpdGlvbiBuZXh0Qm91bmRhcnkoY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBjLCBCb3VuZGFyeVNlYXJjaEZ1bmMKIHVuc2lnbmVkIHN0YXJ0
V29yZEJvdW5kYXJ5KFN0cmluZ1ZpZXcgdGV4dCwgdW5zaWduZWQgb2Zmc2V0LCBCb3VuZGFyeVNl
YXJjaENvbnRleHRBdmFpbGFiaWxpdHkgbWF5SGF2ZU1vcmVDb250ZXh0LCBib29sJiBuZWVkTW9y
ZUNvbnRleHQpCiB7CiAgICAgQVNTRVJUKG9mZnNldCk7Ci0gICAgaWYgKG1heUhhdmVNb3JlQ29u
dGV4dCAmJiAhc3RhcnRPZkxhc3RXb3JkQm91bmRhcnlDb250ZXh0KHRleHQuc3Vic3RyaW5nKDAs
IG9mZnNldCkpKSB7CisgICAgaWYgKG1heUhhdmVNb3JlQ29udGV4dCAmJiAhc3RhcnRPZkxhc3RX
b3JkQm91bmRhcnlDb250ZXh0KHRleHQubGVmdChvZmZzZXQpKSkgewogICAgICAgICBuZWVkTW9y
ZUNvbnRleHQgPSB0cnVlOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC02OTcsNyArNjk3
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIGVuZE9mV29yZChjb25zdCBWaXNpYmxlUG9zaXRpb24mIGMs
IEVXb3JkU2lkZSBzaWRlKQogCiBzdGF0aWMgdW5zaWduZWQgcHJldmlvdXNXb3JkUG9zaXRpb25C
b3VuZGFyeShTdHJpbmdWaWV3IHRleHQsIHVuc2lnbmVkIG9mZnNldCwgQm91bmRhcnlTZWFyY2hD
b250ZXh0QXZhaWxhYmlsaXR5IG1heUhhdmVNb3JlQ29udGV4dCwgYm9vbCYgbmVlZE1vcmVDb250
ZXh0KQogewotICAgIGlmIChtYXlIYXZlTW9yZUNvbnRleHQgJiYgIXN0YXJ0T2ZMYXN0V29yZEJv
dW5kYXJ5Q29udGV4dCh0ZXh0LnN1YnN0cmluZygwLCBvZmZzZXQpKSkgeworICAgIGlmIChtYXlI
YXZlTW9yZUNvbnRleHQgJiYgIXN0YXJ0T2ZMYXN0V29yZEJvdW5kYXJ5Q29udGV4dCh0ZXh0Lmxl
ZnQob2Zmc2V0KSkpIHsKICAgICAgICAgbmVlZE1vcmVDb250ZXh0ID0gdHJ1ZTsKICAgICAgICAg
cmV0dXJuIDA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2Nv
YS9EYXRhRGV0ZWN0aW9uLm1tIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jb2NvYS9EYXRhRGV0
ZWN0aW9uLm1tCmluZGV4IGVmZWM1NzJlZGIyODBlZTFmM2E3MzRlMTdmMWQ2YWEwMjg1OWI0ZDAu
LmQ2M2JiOWEyYWY1MjYyZjBlMTQ3MjE1N2E0NmIzNDMyZTgwZTY3YTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvY29jb2EvRGF0YURldGVjdGlvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2NvY29hL0RhdGFEZXRlY3Rpb24ubW0KQEAgLTU3OSw3ICs1NzksNyBA
QCBOU0FycmF5ICpEYXRhRGV0ZWN0aW9uOjpkZXRlY3RDb250ZW50SW5SYW5nZShjb25zdCBTaW1w
bGVSYW5nZSYgY29udGV4dFJhbmdlLCBPcAogICAgICAgICAgICAgICAgICAgICBsYXN0VGV4dE5v
ZGVUb1VwZGF0ZS0+c2V0RGF0YShsYXN0Tm9kZUNvbnRlbnQpOwogICAgICAgICAgICAgICAgIGNv
bnRlbnRPZmZzZXQgPSAwOwogICAgICAgICAgICAgICAgIGlmIChyYW5nZS5zdGFydC5vZmZzZXQg
PiAwKQotICAgICAgICAgICAgICAgICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUu
ZGF0YSgpLnN1YnN0cmluZygwLCByYW5nZS5zdGFydC5vZmZzZXQpOworICAgICAgICAgICAgICAg
ICAgICB0ZXh0Tm9kZURhdGEgPSBjdXJyZW50VGV4dE5vZGUuZGF0YSgpLmxlZnQocmFuZ2Uuc3Rh
cnQub2Zmc2V0KTsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHRleHROb2Rl
RGF0YSA9IGN1cnJlbnRUZXh0Tm9kZS5kYXRhKCkuc3Vic3RyaW5nKGNvbnRlbnRPZmZzZXQsIHJh
bmdlLnN0YXJ0Lm9mZnNldCAtIGNvbnRlbnRPZmZzZXQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAKaW5kZXggN2U1OTUyYjdhOTYyODcwNzBlODAzNzk4ZDU5ZDhmYzJmN2IzOWI5Yi4uZjA4
ZGQ5OTg5NDQ5MzRjOGZmMDYyOTZiOTg1YTlmYTBkYWQ3OTU2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
bWFya3VwLmNwcApAQCAtOTk1LDcgKzk5NSw3IEBAIHN0YXRpYyBib29sIHNob3VsZFByZXNlcnZl
TVNPTGlzdHMoU3RyaW5nVmlldyBtYXJrdXApCiAgICAgYXV0byB0YWdDbG9zZSA9IG1hcmt1cC5m
aW5kKCc+Jyk7CiAgICAgaWYgKHRhZ0Nsb3NlID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgYXV0byB0YWcgPSBtYXJrdXAuc3Vic3RyaW5nKDAsIHRhZ0Nsb3NlKTsKKyAg
ICBhdXRvIHRhZyA9IG1hcmt1cC5sZWZ0KHRhZ0Nsb3NlKTsKICAgICByZXR1cm4gdGFnLmNvbnRh
aW5zKCJ4bWxuczpvPVwidXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6b2ZmaWNlXCIi
KQogICAgICAgICAmJiB0YWcuY29udGFpbnMoInhtbG5zOnc9XCJ1cm46c2NoZW1hcy1taWNyb3Nv
ZnQtY29tOm9mZmljZTp3b3JkXCIiKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvRmVhdHVyZVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0ZlYXR1cmVQb2xpY3ku
Y3BwCmluZGV4IDU4NDhkMGFiOWMyZDc1NjRmMDhmNDg3NTJiOTM1ZTE4MTBiMTE4MTcuLjQxZTAz
MWQ0NjAyY2UyNTIzODM2ZDIwMzMwMTJlMWE3NjM2NzAxZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRmVhdHVyZVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9G
ZWF0dXJlUG9saWN5LmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCB1
cGRhdGVMaXN0KERvY3VtZW50JiBkb2N1bWVudCwgRmVhdHVyZVBvbGljeTo6QWxsb3dSdWxlJiBy
dWxlCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBwcm9jZXNzT3Jp
Z2luSXRlbShkb2N1bWVudCwgcnVsZSwgdmFsdWUuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKSk7Cisg
ICAgICAgIHByb2Nlc3NPcmlnaW5JdGVtKGRvY3VtZW50LCBydWxlLCB2YWx1ZS5sZWZ0KHBvc2l0
aW9uKSk7CiAgICAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKHBvc2l0aW9uICsgMSkuc3Ry
aXBMZWFkaW5nQW5kVHJhaWxpbmdNYXRjaGVkQ2hhcmFjdGVycyhpc0hUTUxTcGFjZTxVQ2hhcj4p
OwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4
IGI0MmQ5NjA0ZjM0Y2RlYmY3NGVjM2NiYWYwNjJhN2U5MzdkZTRkNGEuLjUxZTVhNGUwOGFjNDE0
ODUyOTBjNDU0MjhlMDEzYjQ5M2RkNzQ4YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHN0cnVjdCBMb2dBcmd1bWVudDxVUkw+
IHsKIAogICAgICAgICBpZiAodXJsLnN0cmluZygpLmxlbmd0aCgpIDwgbWF4aW11bVVSTExlbmd0
aEZvckxvZ2dpbmcpCiAgICAgICAgICAgICByZXR1cm4gdXJsLnN0cmluZygpOwotICAgICAgICBy
ZXR1cm4gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCBtYXhpbXVtVVJMTGVuZ3RoRm9yTG9nZ2lu
ZykgKyAiLi4uIjsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyh1cmwuc3Ry
aW5nKCkpLmxlZnQobWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpLCAiLi4uIik7CiAjZWxzZQog
ICAgICAgICBVTlVTRURfUEFSQU0odXJsKTsKICAgICAgICAgcmV0dXJuICJbdXJsXSJfczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCmluZGV4IGU0N2E1YmQ4YjM3M2Q1
YmQyNWEwNDI2MDZiNjliNDQ0OTllNDE3NDUuLjBjOTYzZGE3YjhjYTAyODAxNDMxMjY4MjRiYzM1
ZWQ1MDA1M2FkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcApA
QCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgU3RyaW5nIHVybEZvckxvZ2dpbmdUcmFjayhjb25zdCBV
UkwmIHVybCkKICAgICAKICAgICBpZiAodXJsLnN0cmluZygpLmxlbmd0aCgpIDwgbWF4aW11bVVS
TExlbmd0aEZvckxvZ2dpbmcpCiAgICAgICAgIHJldHVybiB1cmwuc3RyaW5nKCk7Ci0gICAgcmV0
dXJuIHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoMCwgbWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcp
ICsgIi4uLiI7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoU3RyaW5nVmlldyh1cmwuc3RyaW5nKCkp
LmxlZnQobWF4aW11bVVSTExlbmd0aEZvckxvZ2dpbmcpLCAiLi4uIik7CiB9CiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKaW5kZXggZTRlMzBhOWI2MDRl
ZjFhODRkNzc1MmJiZDhiMzcwODQ1MmExZTA4Zi4uOTM1Y2U1ZGNiNzI1OWE1ZWQ2MDk5NWEyODU3
OGI2NjBjZTU5MDRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBv
c2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3Bw
CkBAIC0xMTcsMTMgKzExNywxMyBAQCB2b2lkIFVSTERlY29tcG9zaXRpb246OnNldEhvc3QoU3Ry
aW5nVmlldyB2YWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgdW5zaWduZWQgcG9y
dExlbmd0aCA9IGNvdW50QVNDSUlEaWdpdHModmFsdWUuc3Vic3RyaW5nKHNlcGFyYXRvciArIDEp
KTsKICAgICAgICAgaWYgKCFwb3J0TGVuZ3RoKSB7Ci0gICAgICAgICAgICBmdWxsVVJMLnNldEhv
c3QodmFsdWUuc3Vic3RyaW5nKDAsIHNlcGFyYXRvcikpOworICAgICAgICAgICAgZnVsbFVSTC5z
ZXRIb3N0KHZhbHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICBhdXRvIHBvcnROdW1iZXIgPSBwYXJzZUludGVnZXI8dWludDE2X3Q+KHZhbHVlLnN1YnN0
cmluZyhzZXBhcmF0b3IgKyAxLCBwb3J0TGVuZ3RoKSk7CiAgICAgICAgICAgICBpZiAocG9ydE51
bWJlciAmJiBXVEY6OmlzRGVmYXVsdFBvcnRGb3JQcm90b2NvbCgqcG9ydE51bWJlciwgZnVsbFVS
TC5wcm90b2NvbCgpKSkKLSAgICAgICAgICAgICAgICBmdWxsVVJMLnNldEhvc3RBbmRQb3J0KHZh
bHVlLnN1YnN0cmluZygwLCBzZXBhcmF0b3IpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNl
dEhvc3RBbmRQb3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yKSk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgZnVsbFVSTC5zZXRIb3N0QW5kUG9ydCh2YWx1ZS5zdWJzdHJpbmcoMCwg
c2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKKyAgICAgICAgICAgICAgICBmdWxsVVJMLnNl
dEhvc3RBbmRQb3J0KHZhbHVlLmxlZnQoc2VwYXJhdG9yICsgMSArIHBvcnRMZW5ndGgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBpZiAoZnVsbFVSTC5pc1ZhbGlkKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDYxYzZhN2IzNGE5
NTQ0YzgzZDlkN2VmNTAxMGM0N2ZiNjkyN2RhYjAuLjVjMWVjNzQxYzIxYTQ5Nzk0YjRhODZhYmI1
NzU4Njc4OWExMWNlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxQYXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwCkBAIC00NTIsNyArNDUyLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VIVFRQ
UmVmcmVzaEludGVybmFsKGNvbnN0IENoYXJhY3RlclR5cGUqIHBvc2l0aW9uLCBjb25zdCBDaGFy
YWMKICAgICBpZiAocXVvdGUgIT0gJ1wwJykgewogICAgICAgICBzaXplX3QgaW5kZXggPSB1cmwu
ZmluZChxdW90ZSk7CiAgICAgICAgIGlmIChpbmRleCAhPSBub3RGb3VuZCkKLSAgICAgICAgICAg
IHVybCA9IHVybC5zdWJzdHJpbmcoMCwgaW5kZXgpOworICAgICAgICAgICAgdXJsID0gdXJsLmxl
ZnQoaW5kZXgpOwogICAgIH0KIAogICAgIHBhcnNlZFVSTCA9IHVybC50b1N0cmluZygpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNyY3NldFBhcnNlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAppbmRleCA2
MDYyMGY1NmM0ZWI4ZjA0YjQzZGYyZTE1MThhNGY2ZjZiZDk3OThkLi5iYWVkMzJkYzU4OWQ2Mzhl
ZTZlZjYyY2Q5YjE1ODAwMThjNDNmYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MU3Jjc2V0UGFyc2VyLmNwcApAQCAtMTMwLDcgKzEzMCw3IEBAIHN0YXRpYyBib29s
IHBhcnNlRGVzY3JpcHRvcnMoVmVjdG9yPFN0cmluZ1ZpZXc+JiBkZXNjcmlwdG9ycywgRGVzY3Jp
cHRvclBhcnNpbmdSCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgdW5zaWduZWQgZGVz
Y3JpcHRvckNoYXJQb3NpdGlvbiA9IGRlc2NyaXB0b3IubGVuZ3RoKCkgLSAxOwogICAgICAgICBV
Q2hhciBkZXNjcmlwdG9yQ2hhciA9IGRlc2NyaXB0b3JbZGVzY3JpcHRvckNoYXJQb3NpdGlvbl07
Ci0gICAgICAgIGRlc2NyaXB0b3IgPSBkZXNjcmlwdG9yLnN1YnN0cmluZygwLCBkZXNjcmlwdG9y
Q2hhclBvc2l0aW9uKTsKKyAgICAgICAgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3IubGVmdChkZXNj
cmlwdG9yQ2hhclBvc2l0aW9uKTsKICAgICAgICAgaWYgKGRlc2NyaXB0b3JDaGFyID09ICd4Jykg
ewogICAgICAgICAgICAgaWYgKHJlc3VsdC5oYXNEZW5zaXR5KCkgfHwgcmVzdWx0Lmhhc0hlaWdo
dCgpIHx8IHJlc3VsdC5oYXNXaWR0aCgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4
IGVkY2M2YWZkNmM2ZjAzOGI4NGM0ZTcxZjU3OGE2ODg4NDI3YzcxMDMuLmY2YWE4YTc3ODk5YWVj
ZGVkNzVjODNjMzQ4YjE1YWViNGE4MTljOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9w
YXJzZXIvSFRNTFRyZWVCdWlsZGVyLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIHNraXBMZWFkaW5nPGNoYXJhY3RlclByZWRpY2F0ZT4oKTsKICAgICAgICAgaWYgKHN0
YXJ0Lmxlbmd0aCgpID09IG1fdGV4dC5sZW5ndGgoKSkKICAgICAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKLSAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoc3RhcnQuc3Vic3RyaW5nKDAsIHN0YXJ0
Lmxlbmd0aCgpIC0gbV90ZXh0Lmxlbmd0aCgpKSk7CisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KHN0YXJ0LmxlZnQoc3RhcnQubGVuZ3RoKCkgLSBtX3RleHQubGVuZ3RoKCkpKTsKICAgICB9CiAK
ICAgICBTdHJpbmcgbWFrZVN0cmluZyhTdHJpbmdWaWV3IHN0cmluZ1ZpZXcpIGNvbnN0CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXgg
MjZlMThlYzA0YWE2ZjdkYWYzYzdiNDMzYTk2YjI2MWJiOTAyNDk0YS4uMDkwMTZlNWM3MTFkNTY1
MTNlMzVjMzg0ZDRkZDMwMDJkZDM0NjcyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtMzg0LDcgKzM4NCw3IEBAIHZvaWQgU3R5
bGVTaGVldEhhbmRsZXI6Om9ic2VydmVDb21tZW50KHVuc2lnbmVkIHN0YXJ0T2Zmc2V0LCB1bnNp
Z25lZCBlbmRPZmZzZXQpCiAgICAgLy8gUmVxdWlyZSB3ZWxsLWZvcm1lZCBjb21tZW50cy4KICAg
ICBpZiAoIWNvbW1lbnRUZXh0LmVuZHNXaXRoKCIqLyIpKQogICAgICAgICByZXR1cm47Ci0gICAg
Y29tbWVudFRleHQgPSBjb21tZW50VGV4dC5zdWJzdHJpbmcoMCwgY29tbWVudFRleHQubGVuZ3Ro
KCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICBjb21tZW50VGV4dCA9IGNvbW1lbnRUZXh0
LmxlZnQoY29tbWVudFRleHQubGVuZ3RoKCkgLSAyKS5zdHJpcFdoaXRlU3BhY2UoKTsKICAgICBp
ZiAoY29tbWVudFRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvbGF5b3V0dHJlZS9MYXlvdXRUcmVlQnVpbGRlci5j
cHAKaW5kZXggNGRjMzUxZTQ5MjJiNzU0Njc2Y2QwOGI4MTQ0ZDFlYWUwNTA5ZDc4Ny4uNjk0MmIx
ZjI5NmU1MmY0NzZjOTI5NjA4ZDBmOTE5MmY0NGQwMjVkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2xheW91dHRyZWUvTGF5b3V0VHJlZUJ1aWxkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9sYXlvdXR0cmVlL0xheW91dFRyZWVCdWlsZGVyLmNwcApAQCAtNTAz
LDcgKzUwMyw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dExheW91dEJveChUZXh0U3RyZWFtJiBzdHJl
YW0sIGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBCb3hHCiAKICAgICAgICAgY29uc3Qgc2l6
ZV90IG1heFByaW50ZWRMZW5ndGggPSA4MDsKICAgICAgICAgaWYgKHRleHRDb250ZW50Lmxlbmd0
aCgpID4gbWF4UHJpbnRlZExlbmd0aCkgewotICAgICAgICAgICAgYXV0byBzdWJzdHJpbmcgPSB0
ZXh0Q29udGVudC5zdWJzdHJpbmcoMCwgbWF4UHJpbnRlZExlbmd0aCk7CisgICAgICAgICAgICBh
dXRvIHN1YnN0cmluZyA9IFN0cmluZ1ZpZXcodGV4dENvbnRlbnQpLmxlZnQobWF4UHJpbnRlZExl
bmd0aCk7CiAgICAgICAgICAgICBzdHJlYW0gPDwgIiBcIiIgPDwgc3Vic3RyaW5nLnV0ZjgoKS5k
YXRhKCkgPDwgIlwiLi4uIjsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJlYW0gPDwg
IiBcIiIgPDwgdGV4dENvbnRlbnQudXRmOCgpLmRhdGEoKSA8PCAiXCIiOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBh
cnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZU1hbmlmZXN0UGFyc2VyLmNwcAppbmRleCA0YTExNDQyNWUxMTZkMmM0MmQxOTAzOTIzZWRmODg2
MzgzZDhmMDY0Li44ZDk5YjkzOGQ5OWZiNDJmODE3ZTkwYzFlOGQwN2JjMmE4ZmI4YzMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1h
bmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBw
bGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMg
U3RyaW5nVmlldyBtYW5pZmVzdFBhdGgoY29uc3QgVVJMJiBtYW5pZmVzdFVSTCkKIHsKICAgICBh
dXRvIG1hbmlmZXN0UGF0aCA9IG1hbmlmZXN0VVJMLnBhdGgoKTsKICAgICBBU1NFUlQobWFuaWZl
c3RQYXRoWzBdID09ICcvJyk7Ci0gICAgbWFuaWZlc3RQYXRoID0gbWFuaWZlc3RQYXRoLnN1YnN0
cmluZygwLCBtYW5pZmVzdFBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpOworICAgIG1hbmlmZXN0
UGF0aCA9IG1hbmlmZXN0UGF0aC5sZWZ0KG1hbmlmZXN0UGF0aC5yZXZlcnNlRmluZCgnLycpICsg
MSk7CiAgICAgQVNTRVJUKG1hbmlmZXN0UGF0aFswXSA9PSBtYW5pZmVzdFBhdGhbbWFuaWZlc3RQ
YXRoLmxlbmd0aCgpIC0gMV0pOwogICAgIHJldHVybiBtYW5pZmVzdFBhdGg7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1MUHJlc2VudGF0aW9uRWxlbWVudC5jcHAKaW5k
ZXggNTEwMjJjNjc1ZDI0ZjBiYjhhNTNiMTk1ZmU4OGIxYWYwM2QxMzcwMy4uNWUwNzYzZGY5MDFl
OTdiNWE1ZmVmMDgyMjE0MDQyY2VmYWQ4Nzc0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bWF0aG1sL01hdGhNTFByZXNlbnRhdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxQcmVzZW50YXRpb25FbGVtZW50LmNwcApAQCAtMjM1LDcgKzIzNSw3IEBA
IE1hdGhNTEVsZW1lbnQ6Okxlbmd0aCBNYXRoTUxQcmVzZW50YXRpb25FbGVtZW50OjpwYXJzZU51
bWJlckFuZFVuaXQoU3RyaW5nVmlldyBzCiAgICAgfQogCiAgICAgYm9vbCBvazsKLSAgICBmbG9h
dCBsZW5ndGhWYWx1ZSA9IHN0cmluZy5zdWJzdHJpbmcoMCwgc3RyaW5nTGVuZ3RoKS50b0Zsb2F0
KG9rKTsKKyAgICBmbG9hdCBsZW5ndGhWYWx1ZSA9IHN0cmluZy5sZWZ0KHN0cmluZ0xlbmd0aCku
dG9GbG9hdChvayk7CiAgICAgaWYgKCFvaykKICAgICAgICAgcmV0dXJuIExlbmd0aCgpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRnJhbWUuY3BwCmluZGV4IDlmYWY4YWRmNjliNWNjNTVjMmIzYWZhN2FhNjFjZTJiZGMw
YTA0N2YuLjI4ODljODA2NWQxNzA1ODU3YTQyOTAwYmJiYThkN2MyY2YyNTIzYTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWUuY3BwCkBAIC0zODksOCArMzg5LDkgQEAgc3RhdGljIEpTQzo6WWFycjo6UmVndWxh
ckV4cHJlc3Npb24gY3JlYXRlUmVnRXhwRm9yTGFiZWxzKGNvbnN0IFZlY3RvcjxTdHJpbmc+Jgog
ICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAgICAgIGJv
b2wgZW5kc1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAgICAgIGlmIChsYWJlbC5sZW5n
dGgoKSkgewotICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhw
LmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsKLSAgICAgICAgICAgIGVu
ZHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWwuc3Vic3Ry
aW5nKGxhYmVsLmxlbmd0aCgpIC0gMSwgMSkpID49IDA7CisgICAgICAgICAgICBTdHJpbmdWaWV3
IGxhYmVsVmlldyB7IGxhYmVsIH07CisgICAgICAgICAgICBzdGFydHNXaXRoV29yZENoYXJhY3Rl
ciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFiZWxWaWV3LmxlZnQoMSkpID49IDA7CisgICAg
ICAgICAgICBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxh
YmVsVmlldy5yaWdodCgxKSkgPj0gMDsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFNlYXJjaCBm
b3Igd29yZCBib3VuZGFyaWVzIG9ubHkgaWYgbGFiZWwgc3RhcnRzL2VuZHMgd2l0aCAid29yZCBj
aGFyYWN0ZXJzIi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcApp
bmRleCBhNjgyY2NiYTc1NDI5ZDcyODUyNmQ4YWNmOGZiMGVlNzUyMmQyMjViLi44NWFhNjQyZDEx
NjY2YWE2MjhiYjVkZTExNWVlNzY2YjcxOWVkZGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgc3RkOjpvcHRpb25hbDxT
ZWN1cml0eU9yaWdpbkRhdGE+IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNlSWRlbnRp
ZmllcihTdHIKICAgICBpZiAocG9ydCAmJiAhKnBvcnQpCiAgICAgICAgIHBvcnQgPSBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1YnN0cmlu
ZygwLCBzZXBhcmF0b3IxKTsKKyAgICBhdXRvIHByb3RvY29sID0gZGF0YWJhc2VJZGVudGlmaWVy
LmxlZnQoc2VwYXJhdG9yMSk7CiAgICAgYXV0byBob3N0ID0gZGF0YWJhc2VJZGVudGlmaWVyLnN1
YnN0cmluZyhzZXBhcmF0b3IxICsgMSwgc2VwYXJhdG9yMiAtIHNlcGFyYXRvcjEgLSAxKTsKICAg
ICByZXR1cm4gU2VjdXJpdHlPcmlnaW5EYXRhIHsgcHJvdG9jb2wudG9TdHJpbmcoKSwgaG9zdC50
b1N0cmluZygpLCBwb3J0IH07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TaGFyZWRTdHJpbmdIYXNoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0
cmluZ0hhc2guY3BwCmluZGV4IGI5MzRlNmZhM2FmM2ZjZmIxMWQ0OTcwMjM1NjAxNjJiZGI1YmZj
NTIuLmE4NGYzNTljMzRiODQ0NjE3MGY4YjlkMGViZTFkZGM2YjgzZWQ4ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZFN0cmluZ0hhc2guY3BwCkBAIC0yNTksMTMgKzI1OSwx
MyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIGNvbXB1dGVTaGFyZWRTdHJpbmdIYXNoSW5s
aW5lKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QgQwogICAgIGVsc2UgewogICAgICAgICBzd2l0Y2gg
KGNoYXJhY3RlcnNbMF0pIHsKICAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgICAgICBhcHBlbmQo
YnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNlLnBhdGhT
dGFydCgpKSk7CisgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3Ry
aW5nKCkpLmxlZnQoYmFzZS5wYXRoU3RhcnQoKSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgJyMnOgotICAgICAgICAgICAgYXBwZW5kKGJ1ZmZlciwgU3RyaW5nVmlldyhiYXNl
LnN0cmluZygpKS5zdWJzdHJpbmcoMCwgYmFzZS5wYXRoRW5kKCkpKTsKKyAgICAgICAgICAgIGFw
cGVuZChidWZmZXIsIFN0cmluZ1ZpZXcoYmFzZS5zdHJpbmcoKSkubGVmdChiYXNlLnBhdGhFbmQo
KSkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBh
cHBlbmQoYnVmZmVyLCBTdHJpbmdWaWV3KGJhc2Uuc3RyaW5nKCkpLnN1YnN0cmluZygwLCBiYXNl
LnBhdGhBZnRlckxhc3RTbGFzaCgpKSk7CisgICAgICAgICAgICBhcHBlbmQoYnVmZmVyLCBTdHJp
bmdWaWV3KGJhc2Uuc3RyaW5nKCkpLmxlZnQoYmFzZS5wYXRoQWZ0ZXJMYXN0U2xhc2goKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvU3RyaW5nVHJ1bmNhdG9yLmNwcAppbmRleCBhNjNmYzhh
NzNlY2JlMWQ0NGVlNDdiNjNiMGJjZTM5YTExNzM3NjBiLi4yM2IzOTk1OGRkZjY1MzgyNmJkN2Iy
NDI3MDQyYjI3Nzg1Nzg4Y2JiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9TdHJpbmdUcnVuY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL1N0cmluZ1RydW5jYXRvci5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgc3RhdGljIHVu
c2lnbmVkIGNlbnRlclRydW5jYXRlVG9CdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVuc2ln
bmVkIGxlbmd0aCwgdW4KICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihrZWVw
Q291bnQgPCBTVFJJTkdfQlVGRkVSX1NJWkUpOwogICAgIAogICAgIHVuc2lnbmVkIG9taXRTdGFy
dCA9IChrZWVwQ291bnQgKyAxKSAvIDI7Ci0gICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJdGVy
YXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOworICAgIE5v
blNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5nVmlldyhzdHJpbmcpLmxlZnQo
bGVuZ3RoKSk7CiAgICAgdW5zaWduZWQgb21pdEVuZCA9IGJvdW5kZWRUZXh0QnJlYWtGb2xsb3dp
bmcoaXQsIG9taXRTdGFydCArIChsZW5ndGggLSBrZWVwQ291bnQpIC0gMSwgbGVuZ3RoKTsKICAg
ICBvbWl0U3RhcnQgPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBvbWl0U3RhcnQpOwogCkBA
IC05Myw3ICs5Myw3IEBAIHN0YXRpYyB1bnNpZ25lZCBjZW50ZXJUcnVuY2F0ZVRvQnVmZmVyKGNv
bnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVuCiAgICAgdW5zaWduZWQgdHJ1
bmNhdGVkTGVuZ3RoID0gb21pdFN0YXJ0ICsgc2hvdWxkSW5zZXJ0RWxsaXBzaXMgKyAobGVuZ3Ro
IC0gb21pdEVuZCk7CiAgICAgQVNTRVJUKHRydW5jYXRlZExlbmd0aCA8PSBsZW5ndGgpOwogCi0g
ICAgU3RyaW5nVmlldyhzdHJpbmcpLnN1YnN0cmluZygwLCBvbWl0U3RhcnQpLmdldENoYXJhY3Rl
cnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CisgICAgU3RyaW5nVmlldyhzdHJpbmcpLmxlZnQob21p
dFN0YXJ0KS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogICAgIGlmIChzaG91
bGRJbnNlcnRFbGxpcHNpcykKICAgICAgICAgYnVmZmVyW29taXRTdGFydCsrXSA9IGhvcml6b250
YWxFbGxpcHNpczsKICAgICBTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKG9taXRFbmQsIGxl
bmd0aCAtIG9taXRFbmQpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KCZidWZmZXJbb21pdFN0
YXJ0XSk7CkBAIC0xMTksMTEgKzExOSwxMSBAQCBzdGF0aWMgdW5zaWduZWQgcmlnaHRUcnVuY2F0
ZVRvQnVmZmVyKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBsZW5ndGgsIHVucwogICAg
ICAgICAtLWtlZXBDb3VudDsKICNlbmRpZgogCi0gICAgTm9uU2hhcmVkQ2hhcmFjdGVyQnJlYWtJ
dGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGxlbmd0aCkpOworICAg
IE5vblNoYXJlZENoYXJhY3RlckJyZWFrSXRlcmF0b3IgaXQoU3RyaW5nVmlldyhzdHJpbmcpLmxl
ZnQobGVuZ3RoKSk7CiAgICAgdW5zaWduZWQga2VlcExlbmd0aCA9IHRleHRCcmVha0F0T3JQcmVj
ZWRpbmcoaXQsIGtlZXBDb3VudCk7CiAgICAgdW5zaWduZWQgdHJ1bmNhdGVkTGVuZ3RoID0gc2hv
dWxkSW5zZXJ0RWxsaXBzaXMgPyBrZWVwTGVuZ3RoICsgMSA6IGtlZXBMZW5ndGg7CiAKLSAgICBT
dHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGtlZXBMZW5ndGgpLmdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KGJ1ZmZlcik7CisgICAgU3RyaW5nVmlldyhzdHJpbmcpLmxlZnQoa2VlcExl
bmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVmZmVyKTsKICAgICBpZiAoc2hvdWxk
SW5zZXJ0RWxsaXBzaXMpCiAgICAgICAgIGJ1ZmZlcltrZWVwTGVuZ3RoXSA9IGhvcml6b250YWxF
bGxpcHNpczsKIApAQCAtMTM1LDkgKzEzNSw5IEBAIHN0YXRpYyB1bnNpZ25lZCByaWdodENsaXBU
b0NoYXJhY3RlckJ1ZmZlcihjb25zdCBTdHJpbmcmIHN0cmluZywgdW5zaWduZWQgbGVuZ3RoCiAg
ICAgQVNTRVJUKGtlZXBDb3VudCA8IGxlbmd0aCk7CiAgICAgQVNTRVJUKGtlZXBDb3VudCA8IFNU
UklOR19CVUZGRVJfU0laRSk7CiAKLSAgICBOb25TaGFyZWRDaGFyYWN0ZXJCcmVha0l0ZXJhdG9y
IGl0KFN0cmluZ1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwgbGVuZ3RoKSk7CisgICAgTm9uU2hh
cmVkQ2hhcmFjdGVyQnJlYWtJdGVyYXRvciBpdChTdHJpbmdWaWV3KHN0cmluZykubGVmdChsZW5n
dGgpKTsKICAgICB1bnNpZ25lZCBrZWVwTGVuZ3RoID0gdGV4dEJyZWFrQXRPclByZWNlZGluZyhp
dCwga2VlcENvdW50KTsKLSAgICBTdHJpbmdWaWV3KHN0cmluZykuc3Vic3RyaW5nKDAsIGtlZXBM
ZW5ndGgpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KGJ1ZmZlcik7CisgICAgU3RyaW5nVmll
dyhzdHJpbmcpLmxlZnQoa2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoYnVm
ZmVyKTsKIAogICAgIHJldHVybiBrZWVwTGVuZ3RoOwogfQpAQCAtMTQ3LDkgKzE0Nyw5IEBAIHN0
YXRpYyB1bnNpZ25lZCByaWdodENsaXBUb1dvcmRCdWZmZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IHVuc2lnbmVkIGxlbmd0aCwgdW5zCiAgICAgQVNTRVJUKGtlZXBDb3VudCA8IGxlbmd0aCk7CiAg
ICAgQVNTRVJUKGtlZXBDb3VudCA8IFNUUklOR19CVUZGRVJfU0laRSk7CiAKLSAgICBVQnJlYWtJ
dGVyYXRvciogaXQgPSB3b3JkQnJlYWtJdGVyYXRvcihTdHJpbmdWaWV3KHN0cmluZykuc3Vic3Ry
aW5nKDAsIGxlbmd0aCkpOworICAgIFVCcmVha0l0ZXJhdG9yKiBpdCA9IHdvcmRCcmVha0l0ZXJh
dG9yKFN0cmluZ1ZpZXcoc3RyaW5nKS5sZWZ0KGxlbmd0aCkpOwogICAgIHVuc2lnbmVkIGtlZXBM
ZW5ndGggPSB0ZXh0QnJlYWtBdE9yUHJlY2VkaW5nKGl0LCBrZWVwQ291bnQpOwotICAgIFN0cmlu
Z1ZpZXcoc3RyaW5nKS5zdWJzdHJpbmcoMCwga2VlcExlbmd0aCkuZ2V0Q2hhcmFjdGVyc1dpdGhV
cGNvbnZlcnQoYnVmZmVyKTsKKyAgICBTdHJpbmdWaWV3KHN0cmluZykubGVmdChrZWVwTGVuZ3Ro
KS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydChidWZmZXIpOwogCiAjaWYgUExBVEZPUk0oSU9T
X0ZBTUlMWSkKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGd1YXJkIHRoaXMgY29kZSBiZWhpbmQg
YW4gZWRpdGluZyBiZWhhdmlvci4gVGhlbiB3ZSBjYW4gcmVtb3ZlIHRoZSBQTEFURk9STShJT1Nf
RkFNSUxZKS1ndWFyZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lci5jcHAKaW5kZXggNTk4YzFhMDFkOGEzODljODZiMzA5YWRjNWZiMjJlMGVkYWJiMDJiZi4u
YTM1YTNhMjA2YWYxNDZkZGI1NzBlZDQ0MWI2MjU0NTNmY2Y5MDViYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTk0MSw3ICs5NDEsNyBA
QCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6c2V0UGxheWJpblVSTChjb25zdCBV
UkwmIHVybCkKICAgICAvLyBDbGVhbiBvdXQgZXZlcnl0aGluZyBhZnRlciBmaWxlOi8vIHVybCBw
YXRoLgogICAgIFN0cmluZyBjbGVhblVSTFN0cmluZyh1cmwuc3RyaW5nKCkpOwogICAgIGlmICh1
cmwuaXNMb2NhbEZpbGUoKSkKLSAgICAgICAgY2xlYW5VUkxTdHJpbmcgPSBjbGVhblVSTFN0cmlu
Zy5zdWJzdHJpbmcoMCwgdXJsLnBhdGhFbmQoKSk7CisgICAgICAgIGNsZWFuVVJMU3RyaW5nID0g
Y2xlYW5VUkxTdHJpbmcubGVmdCh1cmwucGF0aEVuZCgpKTsKIAogICAgIG1fdXJsID0gVVJMIHsg
Y2xlYW5VUkxTdHJpbmcgfTsKICAgICBHU1RfSU5GT19PQkpFQ1QocGlwZWxpbmUoKSwgIkxvYWQg
JXMiLCBtX3VybC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0
ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvbXNlL1NvdXJjZUJ1ZmZlclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IDVkNTQxOWU4NDhl
YTY2ZTQ1ZjVkODMzNWI1Yzk2MmNlNjQ0NTlkNWEuLmViYWIwOWRlMTUwNzZlYTJhYzhjMDUwMTkz
OTUzNTg0MDE1NmEyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9tc2UvU291cmNlQnVmZmVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL21zZS9Tb3VyY2VCdWZm
ZXJQcml2YXRlR1N0cmVhbWVyLmNwcApAQCAtMzEwLDcgKzMxMCw3IEBAIHNpemVfdCBTb3VyY2VC
dWZmZXJQcml2YXRlR1N0cmVhbWVyOjpwbGF0Zm9ybU1heGltdW1CdWZmZXJTaXplKCkgY29uc3QK
ICAgICAgICAgICAgICAgICBlbHNlIGlmICh2YWx1ZS5lbmRzV2l0aCgnbScpKQogICAgICAgICAg
ICAgICAgICAgICB1bml0cyA9IDEwMjQgKiAxMDI0OwogICAgICAgICAgICAgICAgIGlmICh1bml0
cyAhPSAxKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnN1YnN0cmluZygwLCB2
YWx1ZS5sZW5ndGgoKS0xKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5sZWZ0
KHZhbHVlLmxlbmd0aCgpLTEpOwogICAgICAgICAgICAgICAgIGF1dG8gcGFyc2VkU2l6ZSA9IHBh
cnNlSW50ZWdlcjxzaXplX3Q+KHZhbHVlKTsKICAgICAgICAgICAgICAgICBpZiAoIXBhcnNlZFNp
emUpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAppbmRleCA0NTA0ZDAx
OGYxZDc3ZDI0NGIzN2M5YWI4ZWU2YmJmNDgzMjEyMTRiLi42NjEzZmM0MTZmMjdhMWNlZTY0NWI1
YTNmYmYyNWEyY2E3YzYwY2Y2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcApAQCAtNTE3LDcgKzUxNyw3IEBAIHN0YXRp
YyBHRElPYmplY3Q8SEZPTlQ+IGNyZWF0ZUdESUZvbnQoY29uc3QgQXRvbVN0cmluZyYgZmFtaWx5
LCBMT05HIGRlc2lyZWRXZWlnCiAKICAgICBMT0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5s
ZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7Ci0gICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1p
bHkgPSBTdHJpbmdWaWV3KGZhbWlseSkuc3Vic3RyaW5nKDAsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihMRl9GQUNFU0laRSAtIDEpKTsKKyAgICBTdHJpbmdWaWV3IHRydW5jYXRlZEZhbWlseSA9IFN0
cmluZ1ZpZXcoZmFtaWx5KS5sZWZ0KHN0YXRpY19jYXN0PHVuc2lnbmVkPihMRl9GQUNFU0laRSAt
IDEpKTsKICAgICB0cnVuY2F0ZWRGYW1pbHkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNo
YXJGcm9tKGxvZ0ZvbnQubGZGYWNlTmFtZSkpOwogICAgIGxvZ0ZvbnQubGZGYWNlTmFtZVt0cnVu
Y2F0ZWRGYW1pbHkubGVuZ3RoKCldID0gMDsKICAgICBsb2dGb250LmxmUGl0Y2hBbmRGYW1pbHkg
PSAwOwpAQCAtNjMxLDcgKzYzMSw3IEBAIFZlY3RvcjxGb250U2VsZWN0aW9uQ2FwYWJpbGl0aWVz
PiBGb250Q2FjaGU6OmdldEZvbnRTZWxlY3Rpb25DYXBhYmlsaXRpZXNJbkZhbWlsCiAKICAgICBM
T0dGT05UIGxvZ0ZvbnQ7CiAgICAgbG9nRm9udC5sZkNoYXJTZXQgPSBERUZBVUxUX0NIQVJTRVQ7
Ci0gICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1pbHkgPSBTdHJpbmdWaWV3KGZhbWlseU5hbWUp
LnN1YnN0cmluZygwLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTEZfRkFDRVNJWkUgLSAxKSk7Cisg
ICAgU3RyaW5nVmlldyB0cnVuY2F0ZWRGYW1pbHkgPSBTdHJpbmdWaWV3KGZhbWlseU5hbWUpLmxl
ZnQoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KExGX0ZBQ0VTSVpFIC0gMSkpOwogICAgIHRydW5jYXRl
ZEZhbWlseS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20obG9nRm9udC5sZkZh
Y2VOYW1lKSk7CiAgICAgbG9nRm9udC5sZkZhY2VOYW1lW3RydW5jYXRlZEZhbWlseS5sZW5ndGgo
KV0gPSAwOwogICAgIGxvZ0ZvbnQubGZQaXRjaEFuZEZhbWlseSA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50SU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vaW9zL1VzZXJBZ2VudElPUy5tbQppbmRleCA4ZDVjNDNkZTgzOTU1OThjMjM5
OWEzOGE4M2RlYTM4YzE0ZDI5NmE1Li4zN2YxNzM0MDYzYjc4YzMxODczODlkNjkwNTVkM2Q2MWVh
NmIxZGYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVXNlckFnZW50
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9Vc2VyQWdlbnRJT1MubW0K
QEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIFN0cmluZ1ZpZXcgZGV2aWNlTmFtZUZvclVzZXJBZ2Vu
dCgpCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAgICAgICAgIHNpemVfdCBs
b2NhdGlvbiA9IG5hbWUuZmluZCgiIFNpbXVsYXRvciIpOwogICAgICAgICBpZiAobG9jYXRpb24g
IT0gbm90Rm91bmQpCi0gICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbG9jYXRp
b24pOworICAgICAgICAgICAgcmV0dXJuIG5hbWUubGVmdChsb2NhdGlvbik7CiAjZW5kaWYKICAg
ICAgICAgcmV0dXJuIG5hbWU7CiAgICAgfSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9DYWNoZVZhbGlkYXRpb24uY3BwCmluZGV4IDg1ZTI0YTRhN2ZjODBjNjU2
Y2Y0ODg4ZTkyN2FiMGI1YmIwNGY1YTEuLmM3NDMxODk5MjhiM2Y2YTliYjM5ZjZmZjRmYzA5OTNm
ZTA5MGNiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ2Fj
aGVWYWxpZGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Nh
Y2hlVmFsaWRhdGlvbi5jcHAKQEAgLTIxMCw3ICsyMTAsNyBAQCBpbmxpbmUgYm9vbCBpc0NvbnRy
b2xDaGFyYWN0ZXJPclNwYWNlKFVDaGFyIGNoYXJhY3RlcikKIAogaW5saW5lIFN0cmluZ1ZpZXcg
dHJpbVRvTmV4dFNlcGFyYXRvcihTdHJpbmdWaWV3IHN0cmluZykKIHsKLSAgICByZXR1cm4gc3Ry
aW5nLnN1YnN0cmluZygwLCBzdHJpbmcuZmluZChpc0NhY2hlSGVhZGVyU2VwYXJhdG9yKSk7Cisg
ICAgcmV0dXJuIHN0cmluZy5sZWZ0KHN0cmluZy5maW5kKGlzQ2FjaGVIZWFkZXJTZXBhcmF0b3Ip
KTsKIH0KIAogc3RhdGljIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiBwYXJzZUNh
Y2hlSGVhZGVyKGNvbnN0IFN0cmluZyYgaGVhZGVyKQpAQCAtMjY2LDcgKzI2Niw3IEBAIHN0YXRp
YyBWZWN0b3I8c3RkOjpwYWlyPFN0cmluZywgU3RyaW5nPj4gcGFyc2VDYWNoZUhlYWRlcihjb25z
dCBTdHJpbmcmIGhlYWRlcikKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
ICAgICAgICAgLy8gVGhlIHZhbHVlIGlzIGRlbGltaXRlZCBieSB0aGUgbmV4dCBjb21tYQotICAg
ICAgICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVl
LnN1YnN0cmluZygwLCBuZXh0Q29tbWFQb3NpdGlvbjIpKS50b1N0cmluZygpIH0pOworICAgICAg
ICByZXN1bHQuYXBwZW5kKHsgZGlyZWN0aXZlLCB0cmltVG9OZXh0U2VwYXJhdG9yKHZhbHVlLmxl
ZnQobmV4dENvbW1hUG9zaXRpb24yKSkudG9TdHJpbmcoKSB9KTsKICAgICAgICAgcG9zICs9IChz
YWZlSGVhZGVyLmZpbmQoJywnLCBwb3MpIC0gcG9zKSArIDE7CiAgICAgfQogICAgIHJldHVybiBy
ZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0NyZWRl
bnRpYWxTdG9yYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVu
dGlhbFN0b3JhZ2UuY3BwCmluZGV4IDRlZTdiZDEwZmNjMmNkMDM5NTc1OWIzNmUwNDU2NmYwMmFi
MWE0YzcuLjY1NGE2YTQwYmQ0NDliNzc4ZjAyZjk5YjNkNDc3YzY3YmVjNjJlOTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQ3JlZGVudGlhbFN0b3JhZ2Uu
Y3BwCkBAIC00NiwxMyArNDYsMTMgQEAgc3RhdGljIFN0cmluZyBwcm90ZWN0aW9uU3BhY2VNYXBL
ZXlGcm9tVVJMKGNvbnN0IFVSTCYgdXJsKQogCiAgICAgLy8gUmVtb3ZlIHRoZSBsYXN0IHBhdGgg
Y29tcG9uZW50IHRoYXQgaXMgbm90IGEgZGlyZWN0b3J5IHRvIGRldGVybWluZSB0aGUgc3VidHJl
ZSBmb3Igd2hpY2ggY3JlZGVudGlhbHMgd2lsbCBhcHBseS4KICAgICAvLyBXZSBrZWVwIGEgbGVh
ZGluZyBzbGFzaCwgYnV0IHJlbW92ZSBhIHRyYWlsaW5nIG9uZS4KLSAgICBTdHJpbmcgZGlyZWN0
b3J5VVJMID0gdXJsLnN0cmluZygpLnN1YnN0cmluZygwLCB1cmwucGF0aEVuZCgpKTsKKyAgICBT
dHJpbmcgZGlyZWN0b3J5VVJMID0gdXJsLnN0cmluZygpLmxlZnQodXJsLnBhdGhFbmQoKSk7CiAg
ICAgdW5zaWduZWQgZGlyZWN0b3J5VVJMUGF0aFN0YXJ0ID0gdXJsLnBhdGhTdGFydCgpOwogICAg
IEFTU0VSVChkaXJlY3RvcnlVUkxbZGlyZWN0b3J5VVJMUGF0aFN0YXJ0XSA9PSAnLycpOwogICAg
IGlmIChkaXJlY3RvcnlVUkwubGVuZ3RoKCkgPiBkaXJlY3RvcnlVUkxQYXRoU3RhcnQgKyAxKSB7
CiAgICAgICAgIHNpemVfdCBpbmRleCA9IGRpcmVjdG9yeVVSTC5yZXZlcnNlRmluZCgnLycpOwog
ICAgICAgICBBU1NFUlQoaW5kZXggIT0gbm90Rm91bmQpOwotICAgICAgICBkaXJlY3RvcnlVUkwg
PSBkaXJlY3RvcnlVUkwuc3Vic3RyaW5nKDAsIChpbmRleCAhPSBkaXJlY3RvcnlVUkxQYXRoU3Rh
cnQpID8gaW5kZXggOiBkaXJlY3RvcnlVUkxQYXRoU3RhcnQgKyAxKTsKKyAgICAgICAgZGlyZWN0
b3J5VVJMID0gZGlyZWN0b3J5VVJMLmxlZnQoKGluZGV4ICE9IGRpcmVjdG9yeVVSTFBhdGhTdGFy
dCkgPyBpbmRleCA6IGRpcmVjdG9yeVVSTFBhdGhTdGFydCArIDEpOwogICAgIH0KIAogICAgIHJl
dHVybiBkaXJlY3RvcnlVUkw7CkBAIC0xNTUsNyArMTU1LDcgQEAgSGFzaE1hcDxTdHJpbmcsIFBy
b3RlY3Rpb25TcGFjZT46Oml0ZXJhdG9yIENyZWRlbnRpYWxTdG9yYWdlOjpmaW5kRGVmYXVsdFBy
b3RlY3QKIAogICAgICAgICBzaXplX3QgaW5kZXggPSBkaXJlY3RvcnlVUkwucmV2ZXJzZUZpbmQo
Jy8nLCBkaXJlY3RvcnlVUkwubGVuZ3RoKCkgLSAyKTsKICAgICAgICAgQVNTRVJUKGluZGV4ICE9
IG5vdEZvdW5kKTsKLSAgICAgICAgZGlyZWN0b3J5VVJMID0gZGlyZWN0b3J5VVJMLnN1YnN0cmlu
ZygwLCAoaW5kZXggPT0gZGlyZWN0b3J5VVJMUGF0aFN0YXJ0KSA/IGluZGV4ICsgMSA6IGluZGV4
KTsKKyAgICAgICAgZGlyZWN0b3J5VVJMID0gZGlyZWN0b3J5VVJMLmxlZnQoKGluZGV4ID09IGRp
cmVjdG9yeVVSTFBhdGhTdGFydCkgPyBpbmRleCArIDEgOiBpbmRleCk7CiAgICAgICAgIEFTU0VS
VChkaXJlY3RvcnlVUkwubGVuZ3RoKCkgPiBkaXJlY3RvcnlVUkxQYXRoU3RhcnQpOwogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRGF0YVVSTERl
Y29kZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rl
ci5jcHAKaW5kZXggY2NiNzE4YzA2MDFhNDU2NTc2ZDRhNjM3NWU0YjYxZTZmOGUzNzM4Ny4uNjc5
MjQ0MGYwYWY5M2Q1YjZiYWY4YzlkZDcwMWVkOGUwMjRjOTUwMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9EYXRhVVJMRGVjb2Rlci5jcHAKQEAgLTExNSw3ICsx
MTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlzQmFzZTY0ID0gZXF1YWxMZXR0ZXJzSWdub3JpbmdB
U0NJSUNhc2UoZm9ybWF0VHlwZSwgImJhc2U2NCIpOwogCiAgICAgICAgIC8vIElmIGhlYWRlciBk
b2VzIG5vdCBlbmQgd2l0aCAiYmFzZTY0IiwgbWVkaWFUeXBlIHNob3VsZCBiZSB0aGUgd2hvbGUg
aGVhZGVyLgotICAgICAgICBhdXRvIG1lZGlhVHlwZSA9IChpc0Jhc2U2NCA/IGhlYWRlci5zdWJz
dHJpbmcoMCwgbWVkaWFUeXBlRW5kKSA6IGhlYWRlcikudG9TdHJpbmcoKTsKKyAgICAgICAgYXV0
byBtZWRpYVR5cGUgPSAoaXNCYXNlNjQgPyBoZWFkZXIubGVmdChtZWRpYVR5cGVFbmQpIDogaGVh
ZGVyKS50b1N0cmluZygpOwogICAgICAgICBtZWRpYVR5cGUgPSBzdHJpcExlYWRpbmdBbmRUcmFp
bGluZ0hUVFBTcGFjZXMobWVkaWFUeXBlKTsKICAgICAgICAgaWYgKG1lZGlhVHlwZS5zdGFydHNX
aXRoKCc7JykpCiAgICAgICAgICAgICBtZWRpYVR5cGUuaW5zZXJ0KCJ0ZXh0L3BsYWluIl9zLCAw
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNl
cnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAK
aW5kZXggMzcxMzRkOWE0ZmU1MDZjOGU0ODllMDM5NGM2MjFiZTU4OWFjNTJlNC4uNzNlODEyYzBk
ZGRkNDU3MGQ2ZjVhNWJmNWM5MjFjYTI3ZGM5ZTBhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKQEAgLTU5Nyw3ICs1OTcsNyBAQCBzdGQ6
Om9wdGlvbmFsPHN0ZDo6cGFpcjxTdHJpbmdWaWV3LCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4+
IHBhcnNlU3RydWN0dXJlZEZpZQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICsraW5kZXg7
CiAgICAgfQotICAgIFN0cmluZ1ZpZXcgYmFyZUl0ZW0gPSBoZWFkZXIuc3Vic3RyaW5nKDAsIGlu
ZGV4KTsKKyAgICBTdHJpbmdWaWV3IGJhcmVJdGVtID0gaGVhZGVyLmxlZnQoaW5kZXgpOwogCiAg
ICAgLy8gUGFyc2UgcGFyYW1ldGVycyAoaHR0cHM6Ly9kYXRhdHJhY2tlci5pZXRmLm9yZy9kb2Mv
aHRtbC9yZmM4OTQxI3NlY3Rpb24tNC4yLjMuMikuCiAgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gcGFyYW1ldGVyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvTUlNRUhlYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL01JTUVI
ZWFkZXIuY3BwCmluZGV4IGI0MjM3OWYzM2IzNWJmMmU1ZDcyYjEyN2MyZTAzYjY0MGFjZmNiNmQu
LjQyZmE2MTE4Y2VmMWFjYmZlMmVjYWNlZGFhZWEyNjIxNzAzNmVhMGUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvTUlNRUhlYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9NSU1FSGVhZGVyLmNwcApAQCAtNjcsMTMgKzY3LDEz
IEBAIHN0YXRpYyBLZXlWYWx1ZU1hcCByZXRyaWV2ZUtleVZhbHVlUGFpcnMoV2ViQ29yZTo6U2hh
cmVkQnVmZmVyQ2h1bmtSZWFkZXImIGJ1ZmZlCiAgICAgICAgICAgICBrZXkgPSBTdHJpbmcoKTsK
ICAgICAgICAgICAgIHZhbHVlLmNsZWFyKCk7CiAgICAgICAgIH0KLSAgICAgICAgc2l6ZV90IHNl
bWlDb2xvbkluZGV4ID0gbGluZS5maW5kKCc6Jyk7Ci0gICAgICAgIGlmIChzZW1pQ29sb25JbmRl
eCA9PSBub3RGb3VuZCkgeworICAgICAgICBzaXplX3Qgc2VtaWNvbG9uSW5kZXggPSBsaW5lLmZp
bmQoJzonKTsKKyAgICAgICAgaWYgKHNlbWljb2xvbkluZGV4ID09IG5vdEZvdW5kKSB7CiAgICAg
ICAgICAgICAvLyBUaGlzIGlzIG5vdCBhIGtleSB2YWx1ZSBwYWlyLCBpZ25vcmUuCiAgICAgICAg
ICAgICBjb250aW51ZTsKICAgICAgICAgfQotICAgICAgICBrZXkgPSBsaW5lLnN1YnN0cmluZygw
LCBzZW1pQ29sb25JbmRleCkuY29udmVydFRvQVNDSUlMb3dlcmNhc2UoKS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKLSAgICAgICAgdmFsdWUuYXBwZW5kKGxpbmUuc3Vic3RyaW5nKHNlbWlDb2xvbkluZGV4
ICsgMSkpOworICAgICAgICBrZXkgPSBTdHJpbmdWaWV3KGxpbmUpLmxlZnQoc2VtaWNvbG9uSW5k
ZXgpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCkuc3RyaXBXaGl0ZVNwYWNlKCk7CisgICAgICAg
IHZhbHVlLmFwcGVuZChTdHJpbmdWaWV3KGxpbmUpLnN1YnN0cmluZyhzZW1pY29sb25JbmRleCAr
IDEpKTsKICAgICB9CiAgICAgLy8gU3RvcmUgdGhlIGxhc3QgcHJvcGVydHkgaWYgdGhlcmUgaXMg
b25lLgogICAgIGlmICgha2V5LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVVdGlsLmNwcAppbmRleCAwNGU2NGNkMmM3YTkwZDlj
ZTNkYzI5ZjhiMmQxNjc4MjQwZmEwMzRiLi43NWIxNmIxMmM5ZTMyYzE3OTQxODFiMWVkOTExNjZj
YWY1NDA2YjcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ29va2llVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
dXJsL0Nvb2tpZVV0aWwuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIHN0YXRpYyB2b2lkIHBhcnNlQ29v
a2llQXR0cmlidXRlcyhjb25zdCBTdHJpbmcmIGF0dHJpYnV0ZSwgYm9vbCYgaGFzTWF4QWdlLCBD
b29rCiAgICAgU3RyaW5nIGF0dHJpYnV0ZVZhbHVlOwogCiAgICAgaWYgKGFzc2lnbm1lbnRQb3Np
dGlvbiAhPSBub3RGb3VuZCkgewotICAgICAgICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLnN1
YnN0cmluZygwLCBhc3NpZ25tZW50UG9zaXRpb24pLnN0cmlwV2hpdGVTcGFjZSgpOworICAgICAg
ICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLmxlZnQoYXNzaWdubWVudFBvc2l0aW9uKS5zdHJp
cFdoaXRlU3BhY2UoKTsKICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSBhdHRyaWJ1dGUuc3Vic3Ry
aW5nKGFzc2lnbm1lbnRQb3NpdGlvbiArIDEpLnN0cmlwV2hpdGVTcGFjZSgpOwogICAgIH0gZWxz
ZQogICAgICAgICBhdHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlLnN0cmlwV2hpdGVTcGFjZSgpOwpA
QCAtMTUzLDcgKzE1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZUhlYWRl
cihjb25zdCBTdHJpbmcmIGNvb2tpZUxpbmUpCiAKICAgICBzaXplX3Qgc2VwYXJhdG9yUG9zaXRp
b24gPSBjb29raWVMaW5lLmZpbmQoJzsnKTsKIAotICAgIFN0cmluZyBjb29raWVQYWlyID0gc2Vw
YXJhdG9yUG9zaXRpb24gPT0gbm90Rm91bmQgPyBjb29raWVMaW5lIDogY29va2llTGluZS5zdWJz
dHJpbmcoMCwgc2VwYXJhdG9yUG9zaXRpb24pOworICAgIFN0cmluZyBjb29raWVQYWlyID0gc2Vw
YXJhdG9yUG9zaXRpb24gPT0gbm90Rm91bmQgPyBjb29raWVMaW5lIDogY29va2llTGluZS5sZWZ0
KHNlcGFyYXRvclBvc2l0aW9uKTsKIAogICAgIFN0cmluZyBjb29raWVOYW1lOwogICAgIFN0cmlu
ZyBjb29raWVWYWx1ZTsKQEAgLTE2NCw3ICsxNjQsNyBAQCBzdGQ6Om9wdGlvbmFsPENvb2tpZT4g
cGFyc2VDb29raWVIZWFkZXIoY29uc3QgU3RyaW5nJiBjb29raWVMaW5lKQogICAgIGlmIChhc3Np
Z25tZW50UG9zaXRpb24gPT0gbm90Rm91bmQpCiAgICAgICAgIGNvb2tpZVZhbHVlID0gY29va2ll
UGFpcjsKICAgICBlbHNlIHsKLSAgICAgICAgY29va2llTmFtZSA9IGNvb2tpZVBhaXIuc3Vic3Ry
aW5nKDAsIGFzc2lnbm1lbnRQb3NpdGlvbik7CisgICAgICAgIGNvb2tpZU5hbWUgPSBjb29raWVQ
YWlyLmxlZnQoYXNzaWdubWVudFBvc2l0aW9uKTsKICAgICAgICAgY29va2llVmFsdWUgPSBjb29r
aWVQYWlyLnN1YnN0cmluZyhhc3NpZ25tZW50UG9zaXRpb24gKyAxKTsKICAgICB9CiAKQEAgLTE5
Myw3ICsxOTMsNyBAQCBTdHJpbmcgZGVmYXVsdFBhdGhGb3JVUkwoY29uc3QgVVJMJiB1cmwpCiAg
ICAgaWYgKCFsYXN0U2xhc2hQb3NpdGlvbikKICAgICAgICAgcmV0dXJuICIvIl9zOwogCi0gICAg
cmV0dXJuIHBhdGguc3Vic3RyaW5nKDAsIGxhc3RTbGFzaFBvc2l0aW9uKTsKKyAgICByZXR1cm4g
cGF0aC5sZWZ0KGxhc3RTbGFzaFBvc2l0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29va2ll
VXRpbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1Nj
cmlwdE1hcHBpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9Mb2NhbGVUb1Nj
cmlwdE1hcHBpbmcuY3BwCmluZGV4IDcyMzA5ZWMwZGMxZTRmZDNiODFmM2Q1NDIxNThhOWVhYTAy
ZmE3MmMuLjg1N2I5M2JlNTM3ZWRkMTZkYjA2OThiM2M5OGVjOGM0OTM4YTU1YzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvTG9jYWxlVG9TY3JpcHRNYXBwaW5nLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0xvY2FsZVRvU2NyaXB0TWFwcGlu
Zy5jcHAKQEAgLTM3NSw3ICszNzUsNyBAQCBVU2NyaXB0Q29kZSBsb2NhbGVUb1NjcmlwdENvZGVG
b3JGb250U2VsZWN0aW9uKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgICAgICBVU2NyaXB0Q29k
ZSBjb2RlID0gc2NyaXB0TmFtZVRvQ29kZShjYW5vbmljYWxMb2NhbGUuc3Vic3RyaW5nKHVuZGVy
c2NvcmVQb3NpdGlvbiArIDEpKTsKICAgICAgICAgaWYgKGNvZGUgIT0gVVNDUklQVF9JTlZBTElE
X0NPREUgJiYgY29kZSAhPSBVU0NSSVBUX1VOS05PV04pCiAgICAgICAgICAgICByZXR1cm4gY29k
ZTsKLSAgICAgICAgY2Fub25pY2FsTG9jYWxlID0gY2Fub25pY2FsTG9jYWxlLnN1YnN0cmluZygw
LCB1bmRlcnNjb3JlUG9zaXRpb24pOworICAgICAgICBjYW5vbmljYWxMb2NhbGUgPSBjYW5vbmlj
YWxMb2NhbGUubGVmdCh1bmRlcnNjb3JlUG9zaXRpb24pOwogICAgIH0KICAgICByZXR1cm4gVVND
UklQVF9DT01NT047CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4v
UGFzdGVib2FyZFdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vUGFzdGVib2Fy
ZFdpbi5jcHAKaW5kZXggNGNlMzI4YTgzMWM5MGJmNmJkMjI4ZTFmMDcyNDA4ZDY0YjMzYTQ1ZS4u
N2QxNTM2YTdkNjRkM2ZjODM2Mjc2MmYzYTcwNGRhNTM4YzZmN2E2MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1Bhc3RlYm9hcmRXaW4uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL3dpbi9QYXN0ZWJvYXJkV2luLmNwcApAQCAtNjA1LDcgKzYwNSw3IEBA
IHN0YXRpYyBTdHJpbmcgZmlsZVN5c3RlbVBhdGhGcm9tVVJMT3JUaXRsZShjb25zdCBTdHJpbmcm
IHVybFN0cmluZywgY29uc3QgU3RyaW5nCiAKICAgICBpZiAoIXRpdGxlLmlzRW1wdHkoKSkgewog
ICAgICAgICBzaXplX3QgbGVuID0gc3RkOjptaW48c2l6ZV90Pih0aXRsZS5sZW5ndGgoKSwgZnNQ
YXRoTWF4TGVuZ3RoRXhjbHVkaW5nRXh0ZW5zaW9uKTsKLSAgICAgICAgU3RyaW5nVmlldyh0aXRs
ZSkuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVm
ZmVyKTsKKyAgICAgICAgU3RyaW5nVmlldyh0aXRsZSkubGVmdChsZW4pLmdldENoYXJhY3RlcnNX
aXRoVXBjb252ZXJ0KGZzUGF0aEJ1ZmZlcik7CiAgICAgICAgIGZzUGF0aEJ1ZmZlcltsZW5dID0g
MDsKICAgICAgICAgcGF0aFJlbW92ZUJhZEZTQ2hhcmFjdGVycyh3Y2hhckZyb20oZnNQYXRoQnVm
ZmVyKSwgbGVuKTsKICAgICB9CkBAIC02MjAsMTAgKzYyMCwxMCBAQCBzdGF0aWMgU3RyaW5nIGZp
bGVTeXN0ZW1QYXRoRnJvbVVSTE9yVGl0bGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0
IFN0cmluZwogICAgICAgICBhdXRvIGxhc3RDb21wb25lbnQgPSB1cmwubGFzdFBhdGhDb21wb25l
bnQoKTsKICAgICAgICAgaWYgKHVybC5pc0xvY2FsRmlsZSgpIHx8ICghaXNMaW5rICYmICFsYXN0
Q29tcG9uZW50LmlzRW1wdHkoKSkpIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JE
Pihmc1BhdGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24sIGxhc3RDb21wb25lbnQubGVuZ3Ro
KCkpOwotICAgICAgICAgICAgbGFzdENvbXBvbmVudC5zdWJzdHJpbmcoMCwgbGVuKS5nZXRDaGFy
YWN0ZXJzV2l0aFVwY29udmVydChmc1BhdGhCdWZmZXIpOworICAgICAgICAgICAgbGFzdENvbXBv
bmVudC5sZWZ0KGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlbiA9IHN0ZDo6bWluPERXT1JEPihmc1Bh
dGhNYXhMZW5ndGhFeGNsdWRpbmdFeHRlbnNpb24sIHVybFN0cmluZy5sZW5ndGgoKSk7Ci0gICAg
ICAgICAgICBTdHJpbmdWaWV3KHVybFN0cmluZykuc3Vic3RyaW5nKDAsIGxlbikuZ2V0Q2hhcmFj
dGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVmZmVyKTsKKyAgICAgICAgICAgIFN0cmluZ1ZpZXco
dXJsU3RyaW5nKS5sZWZ0KGxlbikuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQoZnNQYXRoQnVm
ZmVyKTsKICAgICAgICAgfQogICAgICAgICBmc1BhdGhCdWZmZXJbbGVuXSA9IDA7CiAgICAgICAg
IHBhdGhSZW1vdmVCYWRGU0NoYXJhY3RlcnMod2NoYXJGcm9tKGZzUGF0aEJ1ZmZlciksIGxlbik7
CkBAIC03MjEsNyArNzIxLDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjp3cml0ZVVSTFRvRGF0YU9iamVj
dChjb25zdCBVUkwmIGt1cmwsIGNvbnN0IFN0cmluZyYgdGl0bGVTdHIpCiAgICAgZmdkLT5mZ2Rb
MF0ubkZpbGVTaXplTG93ID0gY29udGVudC5sZW5ndGgoKTsKIAogICAgIHVuc2lnbmVkIG1heFNp
emUgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oZnNQYXRoLmxlbmd0aCgpLCBXVEZfQVJSQVlfTEVOR1RI
KGZnZC0+ZmdkWzBdLmNGaWxlTmFtZSkpOwotICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5zdWJzdHJp
bmcoMCwgbWF4U2l6ZSkuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQodWNoYXJGcm9tKGZnZC0+
ZmdkWzBdLmNGaWxlTmFtZSkpOworICAgIFN0cmluZ1ZpZXcoZnNQYXRoKS5sZWZ0KG1heFNpemUp
LmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFyRnJvbShmZ2QtPmZnZFswXS5jRmlsZU5h
bWUpKTsKICAgICBHbG9iYWxVbmxvY2sodXJsRmlsZURlc2NyaXB0b3IpOwogCiAgICAgY2hhciog
ZmlsZUNvbnRlbnRzID0gc3RhdGljX2Nhc3Q8Y2hhcio+KEdsb2JhbExvY2sodXJsRmlsZUNvbnRl
bnQpKTsKQEAgLTk2MCw3ICs5NjAsNyBAQCBzdGF0aWMgSEdMT0JBTCBjcmVhdGVHbG9iYWxJbWFn
ZUZpbGVEZXNjcmlwdG9yKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmCiAgICAgfQog
CiAgICAgaW50IG1heFNpemUgPSBzdGQ6Om1pbjxpbnQ+KGZzUGF0aC5sZW5ndGgoKSwgV1RGX0FS
UkFZX0xFTkdUSChmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKLSAgICBTdHJpbmdWaWV3KGZzUGF0
aCkuc3Vic3RyaW5nKDAsIG1heFNpemUpLmdldENoYXJhY3RlcnNXaXRoVXBjb252ZXJ0KHVjaGFy
RnJvbShmZ2QtPmZnZFswXS5jRmlsZU5hbWUpKTsKKyAgICBTdHJpbmdWaWV3KGZzUGF0aCkubGVm
dChtYXhTaXplKS5nZXRDaGFyYWN0ZXJzV2l0aFVwY29udmVydCh1Y2hhckZyb20oZmdkLT5mZ2Rb
MF0uY0ZpbGVOYW1lKSk7CiAgICAgR2xvYmFsVW5sb2NrKG1lbU9iaik7CiAKICAgICByZXR1cm4g
bWVtT2JqOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVU
ZXh0UmVuZGVyZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dlYkNvcmVUZXh0
UmVuZGVyZXIuY3BwCmluZGV4IGU5YzNjOWFlZjAwYmYwN2QzMTBjNmE5NGM2MDc0YzI5ZjNjNzMz
ZjIuLmJiODBjNjdjYTEwNmZiMjJkYWQ2N2E3MjhkZjgxYjRiYWZjYjljZmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XZWJDb3JlVGV4dFJlbmRlcmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2ViQ29yZVRleHRSZW5kZXJlci5jcHAKQEAg
LTYwLDcgKzYwLDcgQEAgc3RhdGljIHZvaWQgZG9EcmF3VGV4dEF0UG9pbnQoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnMKIAogICAgICAgICBpbnQgYmVm
b3JlV2lkdGg7CiAgICAgICAgIGlmICh1bmRlcmxpbmVkSW5kZXggPiAwKSB7Ci0gICAgICAgICAg
ICBUZXh0UnVuIGJlZm9yZVJ1bihTdHJpbmdWaWV3KHRleHQpLnN1YnN0cmluZygwLCB1bmRlcmxp
bmVkSW5kZXgpKTsKKyAgICAgICAgICAgIFRleHRSdW4gYmVmb3JlUnVuKFN0cmluZ1ZpZXcodGV4
dCkubGVmdCh1bmRlcmxpbmVkSW5kZXgpKTsKICAgICAgICAgICAgIGJlZm9yZVdpZHRoID0gZm9u
dC53aWR0aChiZWZvcmVSdW4pOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGJlZm9yZVdp
ZHRoID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmpl
Y3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKaW5kZXgg
Mzg2MzJiMTQyODNiYzBhMTM4MDQxMTQ2YWNhOWMwMjM4NjU0YWRmNy4uYTU5NzE2M2IwYzQzYjJh
ZDM1NGE2M2RkYTczOGI2MzkzYjllMzgzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlck9iamVjdC5jcHAKQEAgLTEyNzAsNyArMTI3MCw3IEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpv
dXRwdXRSZW5kZXJPYmplY3QoVGV4dFN0cmVhbSYgc3RyZWFtLCBib29sIG1hcmssIGludCBkZXB0
aCkKICAgICAgICAgICAgIAogICAgICAgICAgICAgY29uc3QgaW50IG1heFByaW50ZWRMZW5ndGgg
PSA4MDsKICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGgoKSA+IG1heFByaW50ZWRMZW5ndGgp
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3Vic3RyaW5nID0gdmFsdWUuc3Vic3RyaW5nKDAs
IG1heFByaW50ZWRMZW5ndGgpOworICAgICAgICAgICAgICAgIGF1dG8gc3Vic3RyaW5nID0gU3Ry
aW5nVmlldyh2YWx1ZSkubGVmdChtYXhQcmludGVkTGVuZ3RoKTsKICAgICAgICAgICAgICAgICBz
dHJlYW0gPDwgIiBcIiIgPDwgc3Vic3RyaW5nLnV0ZjgoKS5kYXRhKCkgPDwgIlwiLi4uIjsKICAg
ICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHN0cmVhbSA8PCAiIFwiIiA8PCB2YWx1
ZS51dGY4KCkuZGF0YSgpIDw8ICJcIiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvR3JpZFBvc2l0aW9uc1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCmluZGV4IGJjOGNkYmNjODk3
YmE4ZTdkYjUxODI5NDdjNjkzZGU5YzI5MGIwMzEuLjg2YzI2Zjg3NThhNGVjZDlhMmQyZWU1NTU4
MmNlOTg4MzZkOWJmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9HcmlkUG9zaXRpb25zUmVzb2x2ZXIuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgTmFt
ZWRMaW5lQ29sbGVjdGlvbkJhc2U6Ok5hbWVkTGluZUNvbGxlY3Rpb25CYXNlKGNvbnN0IFJlbmRl
ckdyaWQmIGluaXRpYWxHcmlkLAogICAgICAgICAgICAgICAgIHN0YXJ0U2lkZSA9IGZhbHNlOwog
ICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgc3RhcnRTaWRlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGFyZWFOYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgc3VmZml4KTsKKyAgICAgICAg
ICAgIGFyZWFOYW1lID0gbmFtZS5sZWZ0KHN1ZmZpeCk7CiAgICAgICAgIH0KICAgICAgICAgYXV0
byBpbXBsaWNpdExpbmUgPSBjbGFtcGVkSW1wbGljaXRMaW5lRm9yQXJlYSgqZ3JpZENvbnRhaW5l
clN0eWxlLCBhcmVhTmFtZSwgMCwgbV9sYXN0TGluZSwgaXNSb3dBeGlzLCBzdGFydFNpZGUpOwog
ICAgICAgICBpZiAoaW1wbGljaXRMaW5lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1Rlc3RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXN0cy5jcHAKaW5kZXggZjA0
YjRmYWYzZTc4MDViNWEzMmNkYzljN2MyMDc2MGY5NjZmOTc1MC4uYmE5N2U1OTMxZWNkZjdhZjQ5
ZGI2NjYzYzVkNmExMjUyM2IxMDY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1Rlc3RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGVzdHMuY3BwCkBAIC0xMTgs
OCArMTE4LDEwIEBAIGJvb2wgU1ZHVGVzdHM6OmlzVmFsaWQoKSBjb25zdAogICAgICAgICBpZiAo
ZmVhdHVyZS5pc0VtcHR5KCkgfHwgIXN1cHBvcnRlZFNWR0ZlYXR1cmVTZXQuY29udGFpbnMoZmVh
dHVyZSkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQorICAgIFN0cmluZyBkZWZh
dWx0TGFuZ3VhZ2UgPSBXVEY6OmRlZmF1bHRMYW5ndWFnZSgpOworICAgIGF1dG8gZ2VuZXJpY0Rl
ZmF1bHRMYW5ndWFnZSA9IFN0cmluZ1ZpZXcoZGVmYXVsdExhbmd1YWdlKS5sZWZ0KDIpOwogICAg
IGZvciAoYXV0byYgbGFuZ3VhZ2UgOiBtX3N5c3RlbUxhbmd1YWdlLT5pdGVtcygpKSB7Ci0gICAg
ICAgIGlmIChsYW5ndWFnZSAhPSBkZWZhdWx0TGFuZ3VhZ2UoKS5zdWJzdHJpbmcoMCwgMikpCisg
ICAgICAgIGlmIChsYW5ndWFnZSAhPSBnZW5lcmljRGVmYXVsdExhbmd1YWdlKQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBmb3IgKGF1dG8mIGV4dGVuc2lvbiA6IG1fcmVx
dWlyZWRFeHRlbnNpb25zLT5pdGVtcygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVVJJUmVmZXJlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVu
Y2UuY3BwCmluZGV4IGVlNDVhMjljYWUxZjE3ZmE3OGJmYjk3ZTEzN2M0MDZlMGM1NzYwZWQuLmVh
OGEyNjkyMDNlMGQyYTdjMmMwNGUwZWExODQ1NTA3MTIyMTFhZTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVUklSZWZlcmVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVUklSZWZlcmVuY2UuY3BwCkBAIC02NywxMCArNjcsMTAgQEAgU3RyaW5nIFNWR1VSSVJl
ZmVyZW5jZTo6ZnJhZ21lbnRJZGVudGlmaWVyRnJvbUlSSVN0cmluZyhjb25zdCBTdHJpbmcmIHVy
bCwgY29uc3QKICAgICBpZiAoIXN0YXJ0KQogICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZygx
KTsKIAotICAgIFVSTCBiYXNlID0gVVJMKGRvY3VtZW50LmJhc2VVUkwoKSwgdXJsLnN1YnN0cmlu
ZygwLCBzdGFydCkpOworICAgIFVSTCBiYXNlID0gVVJMKGRvY3VtZW50LmJhc2VVUkwoKSwgdXJs
LmxlZnQoc3RhcnQpKTsKICAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLnN1YnN0
cmluZyhzdGFydCk7Ci0gICAgVVJMIGt1cmwoYmFzZSwgZnJhZ21lbnRJZGVudGlmaWVyKTsKLSAg
ICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihrdXJsLCBkb2N1bWVudC51cmwo
KSkpCisgICAgVVJMIHVybFdpdGhGcmFnbWVudChiYXNlLCBmcmFnbWVudElkZW50aWZpZXIpOwor
ICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKHVybFdpdGhGcmFnbWVudCwg
ZG9jdW1lbnQudXJsKCkpKQogICAgICAgICByZXR1cm4gZnJhZ21lbnRJZGVudGlmaWVyLnN1YnN0
cmluZygxKTsKIAogICAgIC8vIFRoZSB1cmwgZG9lc24ndCBoYXZlIGFueSBmcmFnbWVudCBpZGVu
dGlmaWVyLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2FuaW1hdGlvbi9TVkdTTUlM
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50
LmNwcAppbmRleCBjNDM2ZWFlMjM0OWI4OWViZjA3ZjM5MDAwZGY1NjVkMzRkMGIzNTAzLi4xNmVh
YjY1MjBlODhiY2NjMzUzNzQwYjc3NzE3YWQ2ZTE5N2QzNjI1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvYW5pbWF0aW9uL1NWR1NNSUxFbGVtZW50LmNwcApAQCAtMzQ4LDEzICszNDgsMTMg
QEAgU01JTFRpbWUgU1ZHU01JTEVsZW1lbnQ6OnBhcnNlQ2xvY2tWYWx1ZShTdHJpbmdWaWV3IGRh
dGEpCiAgICAgc2l6ZV90IGRvdWJsZVBvaW50T25lID0gcGFyc2UuZmluZCgnOicpOwogICAgIHNp
emVfdCBkb3VibGVQb2ludFR3byA9IHBhcnNlLmZpbmQoJzonLCBkb3VibGVQb2ludE9uZSArIDEp
OwogICAgIGlmIChkb3VibGVQb2ludE9uZSA9PSAyICYmIGRvdWJsZVBvaW50VHdvID09IDUgJiYg
cGFyc2UubGVuZ3RoKCkgPj0gOCkgewotICAgICAgICBhdXRvIGhvdXIgPSBwYXJzZUludGVnZXI8
dWludDhfdD4ocGFyc2Uuc3Vic3RyaW5nKDAsIDIpKTsKKyAgICAgICAgYXV0byBob3VyID0gcGFy
c2VJbnRlZ2VyPHVpbnQ4X3Q+KHBhcnNlLmxlZnQoMikpOwogICAgICAgICBhdXRvIG1pbnV0ZSA9
IHBhcnNlSW50ZWdlcjx1aW50OF90PihwYXJzZS5zdWJzdHJpbmcoMywgMikpOwogICAgICAgICBp
ZiAoIWhvdXIgfHwgIW1pbnV0ZSkKICAgICAgICAgICAgIHJldHVybiBTTUlMVGltZTo6dW5yZXNv
bHZlZCgpOwogICAgICAgICByZXN1bHQgPSAqaG91ciAqIDYwICogNjAgKyAqbWludXRlICogNjAg
KyBwYXJzZS5zdWJzdHJpbmcoNikudG9Eb3VibGUob2spOwogICAgIH0gZWxzZSBpZiAoZG91Ymxl
UG9pbnRPbmUgPT0gMiAmJiBkb3VibGVQb2ludFR3byA9PSBub3RGb3VuZCAmJiBwYXJzZS5sZW5n
dGgoKSA+PSA1KSB7IAotICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50ZWdlcjx1aW50OF90
PihwYXJzZS5zdWJzdHJpbmcoMCwgMikpOworICAgICAgICBhdXRvIG1pbnV0ZSA9IHBhcnNlSW50
ZWdlcjx1aW50OF90PihwYXJzZS5sZWZ0KDIpKTsKICAgICAgICAgaWYgKCFtaW51dGUpCiAgICAg
ICAgICAgICByZXR1cm4gU01JTFRpbWU6OnVucmVzb2x2ZWQoKTsKICAgICAgICAgcmVzdWx0ID0g
Km1pbnV0ZSAqIDYwICsgcGFyc2Uuc3Vic3RyaW5nKDMpLnRvRG91YmxlKG9rKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2aWNlV29ya2VySm9iLmNwcAppbmRl
eCA4MDRlNmY0YzA4NGIwYjEzZTRkYWEwODUwYTUwODZhNjRhOTdiMjNhLi5mZWM1ZjM5NjBkZTQ5
YTliMDI4YjFmMDE0MzljMzBkYWY3ZWNhY2U1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2UvU2VydmljZVdvcmtlckpvYi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJKb2IuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAg
UmVzb3VyY2VFcnJvciBTZXJ2aWNlV29ya2VySm9iOjp2YWxpZGF0ZVNlcnZpY2VXb3JrZXJSZXNw
b25zZShjb25zdCBTZXJ2aWNlV29ya2UKICAgICBpZiAoc2VydmljZVdvcmtlckFsbG93ZWQuaXNO
dWxsKCkpIHsKICAgICAgICAgYXV0byBwYXRoID0gam9iRGF0YS5zY3JpcHRVUkwucGF0aCgpOwog
ICAgICAgICAvLyBMYXN0IHBhcnQgb2YgdGhlIHBhdGggaXMgdGhlIHNjcmlwdCdzIGZpbGVuYW1l
LgotICAgICAgICBtYXhTY29wZVN0cmluZyA9IHBhdGguc3Vic3RyaW5nKDAsIHBhdGgucmV2ZXJz
ZUZpbmQoJy8nKSArIDEpLnRvU3RyaW5nKCk7CisgICAgICAgIG1heFNjb3BlU3RyaW5nID0gcGF0
aC5sZWZ0KHBhdGgucmV2ZXJzZUZpbmQoJy8nKSArIDEpLnRvU3RyaW5nKCk7CiAgICAgfSBlbHNl
IHsKICAgICAgICAgYXV0byBtYXhTY29wZSA9IFVSTChqb2JEYXRhLnNjcmlwdFVSTCwgc2Vydmlj
ZVdvcmtlckFsbG93ZWQpOwogICAgICAgICBpZiAoU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShtYXhT
Y29wZSktPmlzU2FtZU9yaWdpbkFzKFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUoam9iRGF0YS5zY3Jp
cHRVUkwpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5LmNwcAppbmRleCA3YTg4ZmE3NzRlZGMx
MmUyNWVkYmMyNTA0NDNjZWEzMTJhYmEyZWYyLi4zYThmYWMxOTM5MWVhYzI5N2FmYWM3ZmUyMWZm
OGY0NzEyMWQ2ZGZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkuY3BwCkBAIC0xMTgsNyAr
MTE4LDcgQEAgc3RkOjpvcHRpb25hbDxTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5PiBTZXJ2
aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5Ojpmcm9tRGEKICAgICBpZiAoIXNjb3BlLmlzVmFsaWQo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBTZXJ2aWNlV29y
a2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBrZXkuc3Vic3RyaW5nKDAsIGZpcnN0KSwga2V5LnN1YnN0
cmluZyhmaXJzdCArIDEsIHNlY29uZCAtIGZpcnN0IC0gMSksIHNob3J0UG9ydCB9LCBXVEZNb3Zl
KHNjb3BlKSB9OworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5IHsgeyBr
ZXkubGVmdChmaXJzdCksIGtleS5zdWJzdHJpbmcoZmlyc3QgKyAxLCBzZWNvbmQgLSBmaXJzdCAt
IDEpLCBzaG9ydFBvcnQgfSwgV1RGTW92ZShzY29wZSkgfTsKIH0KIAogI2lmICFMT0dfRElTQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
ci5jcHAKaW5kZXggN2MzNjQyZmUzMzgxYzk2YTk0ZDE1NWNjNDdhYWJlOWNlODU2YjdkNy4uOGRm
MTM5MTQwMzc3YTNhOWJiZTE1MjE1MDkzY2NkNmRhNDc4OGY4MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlci5jcHAKQEAgLTEyNjgsNyAr
MTI2OCw3IEBAIGJvb2wgU1dTZXJ2ZXI6OmNhbkhhbmRsZVNjaGVtZShTdHJpbmdWaWV3IHNjaGVt
ZSkgY29uc3QKIHsKICAgICBpZiAoc2NoZW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgaWYgKCFlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShzY2hlbWUuc3Vic3Ry
aW5nKDAsIDQpLCAiaHR0cCIpKQorICAgIGlmICghc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FT
Q0lJQ2FzZShzY2hlbWUsICJodHRwIikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
c2NoZW1lLmxlbmd0aCgpID09IDUgJiYgaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChzY2hlbWVb
NF0sICdzJykpCiAgICAgICAgIHJldHVybiB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkRy
aXZlci9Db21tYW5kUmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJEcml2ZXIvQ29tbWFuZFJlc3VsdC5j
cHAKaW5kZXggODM1OTY5YmZhMzZjZTE2ZjYzNTZjNmJhMTdjYTkyZWExZTk4ZGVkZS4uMmIxYjdk
YjEyMTRjOWZlNmNlYWI5NTFmMzYxNTAyYzE5ZWY5NGQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkRyaXZlci9Db21tYW5kUmVzdWx0LmNwcAorKysgYi9Tb3VyY2UvV2ViRHJpdmVyL0NvbW1hbmRS
ZXN1bHQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIENvbW1hbmRSZXN1bHQ6OkNvbW1hbmRSZXN1bHQo
UmVmUHRyPEpTT046OlZhbHVlPiYmIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxFcnJvckNvCiAgICAg
ICAgIFN0cmluZyBlcnJvck5hbWU7CiAgICAgICAgIGF1dG8gcG9zaXRpb24gPSBlcnJvck1lc3Nh
Z2UuZmluZCgnOycpOwogICAgICAgICBpZiAocG9zaXRpb24gIT0gbm90Rm91bmQpIHsKLSAgICAg
ICAgICAgIGVycm9yTmFtZSA9IGVycm9yTWVzc2FnZS5zdWJzdHJpbmcoMCwgcG9zaXRpb24pOwor
ICAgICAgICAgICAgZXJyb3JOYW1lID0gZXJyb3JNZXNzYWdlLmxlZnQocG9zaXRpb24pOwogICAg
ICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBlcnJvck1lc3NhZ2Uuc3Vic3RyaW5nKHBvc2l0aW9u
ICsgMSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgZXJyb3JOYW1lID0gZXJyb3JNZXNz
YWdlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9XZWJTdG9yYWdl
L0xvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAppbmRleCBl
MDlkMmU5ZjM2Y2FiMjVjMTc1NDFjODc0OTZmZjI5YjkxYTA1M2I1Li43MmVkMzM3OWQzNmYyZTdm
ZjZmNTMwMGQ1ZTY2M2Q3NDAwN2FjMjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2VUcmFja2VyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1dlYlN0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0
YWJhc2VUcmFja2VyLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIFZlY3RvcjxTZWN1cml0eU9yaWdp
bkRhdGE+IExvY2FsU3RvcmFnZURhdGFiYXNlVHJhY2tlcjo6b3JpZ2lucygpIGNvbnN0CiAgICAg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4gZGF0YWJhc2VPcmlnaW5zOwogICAgIGZvciAoYXV0
byYgcGF0aCA6IEZpbGVTeXN0ZW06Omxpc3REaXJlY3RvcnkobG9jYWxTdG9yYWdlRGlyZWN0b3J5
KCkpKSB7CiAgICAgICAgIGF1dG8gZmlsZW5hbWUgPSBGaWxlU3lzdGVtOjpwYXRoRmlsZU5hbWUo
cGF0aCk7Ci0gICAgICAgIGF1dG8gb3JpZ2luSWRlbnRpZmllciA9IGZpbGVuYW1lLnN1YnN0cmlu
ZygwLCBmaWxlbmFtZS5sZW5ndGgoKSAtIHN0cmxlbigiLmxvY2Fsc3RvcmFnZSIpKTsKKyAgICAg
ICAgYXV0byBvcmlnaW5JZGVudGlmaWVyID0gZmlsZW5hbWUubGVmdChmaWxlbmFtZS5sZW5ndGgo
KSAtIHN0cmxlbigiLmxvY2Fsc3RvcmFnZSIpKTsKICAgICAgICAgYXV0byBvcmlnaW4gPSBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRpZmllcik7
CiAgICAgICAgIGlmIChvcmlnaW4pCiAgICAgICAgICAgICBkYXRhYmFzZU9yaWdpbnMuYXBwZW5k
KG9yaWdpbi52YWx1ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuY3BwCmluZGV4IGIxZTZmZjNjMDc4YmU4
NzFkOTUxMGZhMzc2YzQ3MDBlMzNjMTlmYTYuLjYxMTY3YThlYmE4MDU5MTIwYzMxNGRlYjMyNzIy
MDlkYzE2OGVkOTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlU3RvcmFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmNwcApAQCAtMjM1LDcgKzIzNSw3IEBAIHN0
YXRpYyB2b2lkIHRyYXZlcnNlUmVjb3Jkc0ZpbGVzKGNvbnN0IFN0cmluZyYgcmVjb3Jkc1BhdGgs
IGNvbnN0IFN0cmluZyYgZXhwZWN0CiAgICAgICAgICAgICAgICAgaWYgKGVudHJ5VHlwZSAhPSBE
aXJlY3RvcnlFbnRyeVR5cGU6OkZpbGUgfHwgZmlsZU5hbWUubGVuZ3RoKCkgPCBLZXk6Omhhc2hT
dHJpbmdMZW5ndGgoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICAgICAgU3RyaW5nIGhhc2hTdHJpbmcgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgS2V5OjpoYXNo
U3RyaW5nTGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIFN0cmluZyBoYXNoU3RyaW5nID0gZmls
ZU5hbWUubGVmdChLZXk6Omhhc2hTdHJpbmdMZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgYXV0
byBpc0Jsb2IgPSBmaWxlTmFtZS5sZW5ndGgoKSA+IEtleTo6aGFzaFN0cmluZ0xlbmd0aCgpICYm
IGZpbGVOYW1lLmVuZHNXaXRoKGJsb2JTdWZmaXgpOwogICAgICAgICAgICAgICAgIGZ1bmN0aW9u
KGZpbGVOYW1lLCBoYXNoU3RyaW5nLCBhY3R1YWxUeXBlLCBpc0Jsb2IsIHJlY29yZERpcmVjdG9y
eVBhdGgpOwogICAgICAgICAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvTG9jYWxTdG9yYWdlTWFuYWdlci5jcHAKaW5kZXggMjZi
YzkwNzliYjJmOTZkZTc5YWQwNTE5ZDc3MmEwYzBiMTY1YWJiMy4uMmIxMDg0NmY5NjA5OWEzYjI0
ZWM0NjU0NWY1MTU3Y2ViNjkxZDdhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9zdG9yYWdlL0xvY2FsU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9Mb2NhbFN0b3JhZ2VNYW5hZ2VyLmNwcApAQCAtNTAs
NyArNTAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGE+IGZpbGVOYW1lVG9PcmlnaW4oY29uc3QgU3RyaW5nJgogICAgIGlmIChmaWxlTmFtZUxlbmd0
aCA8PSBzdWZmaXhMZW5ndGgpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBh
dXRvIG9yaWdpbklkZW50aWZpZXIgPSBmaWxlTmFtZS5zdWJzdHJpbmcoMCwgZmlsZU5hbWVMZW5n
dGggLSBzdWZmaXhMZW5ndGgpOworICAgIGF1dG8gb3JpZ2luSWRlbnRpZmllciA9IGZpbGVOYW1l
LmxlZnQoZmlsZU5hbWVMZW5ndGggLSBzdWZmaXhMZW5ndGgpOwogICAgIHJldHVybiBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21EYXRhYmFzZUlkZW50aWZpZXIob3JpZ2luSWRlbnRp
Zmllcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3Ry
aW5nLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9jL1dLU3RyaW5nLmNwcAppbmRleCA0
ZWQzYjhhYTJkMjNlNTE1YTMwNDkwNWVjNDAyZjNlNDhhNGM0ZDYxLi45ZDc1NWE3ZjNiYTRlOGRl
MzYwNGY4ZjBhYTE5ODg4NWRmNzY5M2UwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9BUEkvYy9XS1N0cmluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL2MvV0tT
dHJpbmcuY3BwCkBAIC01OCw3ICs1OCw3IEBAIHNpemVfdCBXS1N0cmluZ0dldENoYXJhY3RlcnMo
V0tTdHJpbmdSZWYgc3RyaW5nUmVmLCBXS0NoYXIqIGJ1ZmZlciwgc2l6ZV90IGJ1ZmZlCiAgICAg
c3RhdGljX2Fzc2VydChzaXplb2YoV0tDaGFyKSA9PSBzaXplb2YoVUNoYXIpLCAiU2l6ZSBvZiBX
S0NoYXIgbXVzdCBtYXRjaCBzaXplIG9mIFVDaGFyIik7CiAKICAgICB1bnNpZ25lZCB1bnNpZ25l
ZEJ1ZmZlckxlbmd0aCA9IHN0ZDo6bWluPHNpemVfdD4oYnVmZmVyTGVuZ3RoLCBzdGQ6Om51bWVy
aWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkpOwotICAgIGF1dG8gc3Vic3RyaW5nID0gV2ViS2l0
Ojp0b0ltcGwoc3RyaW5nUmVmKS0+c3RyaW5nVmlldygpLnN1YnN0cmluZygwLCB1bnNpZ25lZEJ1
ZmZlckxlbmd0aCk7CisgICAgYXV0byBzdWJzdHJpbmcgPSBXZWJLaXQ6OnRvSW1wbChzdHJpbmdS
ZWYpLT5zdHJpbmdWaWV3KCkubGVmdCh1bnNpZ25lZEJ1ZmZlckxlbmd0aCk7CiAKICAgICBzdWJz
dHJpbmcuZ2V0Q2hhcmFjdGVyc1dpdGhVcGNvbnZlcnQocmVpbnRlcnByZXRfY2FzdDxVQ2hhcio+
KGJ1ZmZlcikpOwogICAgIHJldHVybiBzdWJzdHJpbmcubGVuZ3RoKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9JbnB1dE1ldGhvZEZpbHRlci5jcHAKaW5k
ZXggYzc4YzE4MmQzM2NjYWExZmU3OGQ1ZDM5Zjg1MmNhZjhiYjExNDIzYy4uMjhlMGY2NTEzN2Ey
NTlhNGM1YTE2MDBiNTg2ZTMzNzdhNTNiMmU5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL2dsaWIvSW5wdXRNZXRob2RGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL0lucHV0TWV0aG9kRmlsdGVyLmNwcApAQCAtMjQwLDEwICsy
NDAsMTAgQEAgdm9pZCBJbnB1dE1ldGhvZEZpbHRlcjo6bm90aWZ5U3Vycm91bmRpbmcoY29uc3Qg
U3RyaW5nJiB0ZXh0LCB1aW50NjRfdCBjdXJzb3JQb3MKICAgICBtX3N1cnJvdW5kaW5nLnNlbGVj
dGlvblBvc2l0aW9uID0gc2VsZWN0aW9uUG9zaXRpb247CiAKICAgICBhdXRvIHRleHRVVEY4ID0g
bV9zdXJyb3VuZGluZy50ZXh0LnV0ZjgoKTsKLSAgICBhdXRvIGN1cnNvclBvc2l0aW9uVVRGOCA9
IGN1cnNvclBvc2l0aW9uICE9IHRleHQubGVuZ3RoKCkgPyB0ZXh0LnN1YnN0cmluZygwLCBjdXJz
b3JQb3NpdGlvbikudXRmOCgpLmxlbmd0aCgpIDogdGV4dFVURjgubGVuZ3RoKCk7CisgICAgYXV0
byBjdXJzb3JQb3NpdGlvblVURjggPSBjdXJzb3JQb3NpdGlvbiAhPSB0ZXh0Lmxlbmd0aCgpID8g
U3RyaW5nVmlldyh0ZXh0KS5sZWZ0KGN1cnNvclBvc2l0aW9uKS51dGY4KCkubGVuZ3RoKCkgOiB0
ZXh0VVRGOC5sZW5ndGgoKTsKICAgICBhdXRvIHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IGN1cnNv
clBvc2l0aW9uVVRGODsKICAgICBpZiAoY3Vyc29yUG9zaXRpb24gIT0gc2VsZWN0aW9uUG9zaXRp
b24pCi0gICAgICAgIHNlbGVjdGlvblBvc2l0aW9uVVRGOCA9IHNlbGVjdGlvblBvc2l0aW9uICE9
IHRleHQubGVuZ3RoKCkgPyB0ZXh0LnN1YnN0cmluZygwLCBzZWxlY3Rpb25Qb3NpdGlvbikudXRm
OCgpLmxlbmd0aCgpIDogdGV4dFVURjgubGVuZ3RoKCk7CisgICAgICAgIHNlbGVjdGlvblBvc2l0
aW9uVVRGOCA9IHNlbGVjdGlvblBvc2l0aW9uICE9IHRleHQubGVuZ3RoKCkgPyBTdHJpbmdWaWV3
KHRleHQpLmxlZnQoc2VsZWN0aW9uUG9zaXRpb24pLnV0ZjgoKS5sZW5ndGgoKSA6IHRleHRVVEY4
Lmxlbmd0aCgpOwogICAgIHdlYmtpdF9pbnB1dF9tZXRob2RfY29udGV4dF9ub3RpZnlfc3Vycm91
bmRpbmcobV9jb250ZXh0LmdldCgpLCB0ZXh0VVRGOC5kYXRhKCksIHRleHRVVEY4Lmxlbmd0aCgp
LCBjdXJzb3JQb3NpdGlvblVURjgsIHNlbGVjdGlvblBvc2l0aW9uVVRGOCk7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9HdGtTZXR0aW5nc01hbmFnZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAKaW5k
ZXggYzUwMmQyZGM1MmU3ZjdkNDg4OWRmMjZlYmJmMzNhZmMzYmMxNGI2My4uMDA5ZWZlOGRlODVj
ODhmYWViNWJmMzYxNGE1ZWJiNjUyMWVlMWM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvZ3RrL0d0a1NldHRpbmdzTWFuYWdlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgU3Ry
aW5nIEd0a1NldHRpbmdzTWFuYWdlcjo6dGhlbWVOYW1lKCkgY29uc3QKICAgICBpZiAoYXV0byog
dGhlbWVOYW1lRW52ID0gZ19nZXRlbnYoIkdUS19USEVNRSIpKSB7CiAgICAgICAgIFN0cmluZyBu
YW1lID0gU3RyaW5nOjpmcm9tVVRGOCh0aGVtZU5hbWVFbnYpOwogICAgICAgICBpZiAobmFtZS5l
bmRzV2l0aCgiLWRhcmsiKSB8fCBuYW1lLmVuZHNXaXRoKCItRGFyayIpIHx8IG5hbWUuZW5kc1dp
dGgoIjpkYXJrIikpCi0gICAgICAgICAgICByZXR1cm4gbmFtZS5zdWJzdHJpbmcoMCwgbmFtZS5s
ZW5ndGgoKSAtIDUpOworICAgICAgICAgICAgcmV0dXJuIG5hbWUubGVmdChuYW1lLmxlbmd0aCgp
IC0gNSk7CiAgICAgICAgIHJldHVybiBuYW1lOwogICAgIH0KIApAQCAtNTEsNyArNTEsNyBAQCBT
dHJpbmcgR3RrU2V0dGluZ3NNYW5hZ2VyOjp0aGVtZU5hbWUoKSBjb25zdAogICAgIGdfb2JqZWN0
X2dldChtX3NldHRpbmdzLCAiZ3RrLXRoZW1lLW5hbWUiLCAmdGhlbWVOYW1lU2V0dGluZy5vdXRQ
dHIoKSwgbnVsbHB0cik7CiAgICAgU3RyaW5nIG5hbWUgPSBTdHJpbmc6OmZyb21VVEY4KHRoZW1l
TmFtZVNldHRpbmcuZ2V0KCkpOwogICAgIGlmIChuYW1lLmVuZHNXaXRoKCItZGFyayIpIHx8IG5h
bWUuZW5kc1dpdGgoIi1EYXJrIikpCi0gICAgICAgIHJldHVybiBuYW1lLnN1YnN0cmluZygwLCBu
YW1lLmxlbmd0aCgpIC0gNSk7CisgICAgICAgIHJldHVybiBuYW1lLmxlZnQobmFtZS5sZW5ndGgo
KSAtIDUpOwogICAgIHJldHVybiBuYW1lOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvZ3RrL1RleHRDaGVja2VyR3RrLmNwcAppbmRleCBiYjA5NDU4OTM2YzQ2NjgwNDQ2MTlmNzhj
NmFiMTRmMDJiNWQ2YjIyLi4wMzZhNjYzYjBiYmZmMWRlNjcyMjAzMTBlNDQ2OTEyZGY0NDExMWY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9ndGsvVGV4dENoZWNrZXJHdGsu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2d0ay9UZXh0Q2hlY2tlckd0ay5jcHAK
QEAgLTI3Myw3ICsyNzMsNyBAQCBWZWN0b3I8VGV4dENoZWNraW5nUmVzdWx0PiBUZXh0Q2hlY2tl
cjo6Y2hlY2tUZXh0T2ZQYXJhZ3JhcGgoU3BlbGxEb2N1bWVudFRhZyBzcAogICAgICAgICBwYXJh
Z3JhcGhDaGVja2luZ1Jlc3VsdC5hcHBlbmQobWlzc3BlbGxpbmdSZXN1bHQpOwogICAgICAgICBv
ZmZzZXQgKz0gbWlzc3BlbGxpbmdMb2NhdGlvbiArIG1pc3NwZWxsaW5nTGVuZ3RoOwogICAgICAg
ICAvLyBHZW5lcmFsbHksIHdlIGVuZCB1cCBjaGVja2luZyBhdCB0aGUgd29yZCBzZXBhcmF0b3Is
IG1vdmUgdG8gdGhlIGFkamFjZW50IHdvcmQuCi0gICAgICAgIG9mZnNldCA9IG5leHRXb3JkT2Zm
c2V0KHRleHQuc3Vic3RyaW5nKDAsIGxlbmd0aFN0cmlwKSwgb2Zmc2V0KTsKKyAgICAgICAgb2Zm
c2V0ID0gbmV4dFdvcmRPZmZzZXQodGV4dC5sZWZ0KGxlbmd0aFN0cmlwKSwgb2Zmc2V0KTsKICAg
ICB9CiAgICAgcmV0dXJuIHBhcmFncmFwaENoZWNraW5nUmVzdWx0OwogI2Vsc2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy93aW4vV2ViUHJvY2Vzc1Bvb2xXaW4uY3BwCmluZGV4IGUz
MTg4OWYzNDRjNGE2M2RmNWU1ZTY1OWUyNDIxZjRjOTEwNDhjYzQuLjIzYjNlY2E2NDc1YTBmNzA3
ZDdmMGRkMmUyNjZmYzI1ZWRjMzUyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL3dpbi9XZWJQcm9jZXNzUG9vbFdpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3Mvd2luL1dlYlByb2Nlc3NQb29sV2luLmNwcApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplUmVtb3RlSW5zcGVjdG9yU2VydmVyKFN0cmluZ1ZpZXcgYWRkcmVzcykKICAg
ICBpZiAocG9zID09IG5vdEZvdW5kKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvIGhvc3Qg
PSBhZGRyZXNzLnN1YnN0cmluZygwLCBwb3MpOworICAgIGF1dG8gaG9zdCA9IGFkZHJlc3MubGVm
dChwb3MpOwogICAgIGF1dG8gcG9ydCA9IHBhcnNlSW50ZWdlcjx1aW50MTZfdD4oYWRkcmVzcy5z
dWJzdHJpbmcocG9zICsgMSkpOwogICAgIGlmICghcG9ydCkKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9TdG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcCBi
L1NvdXJjZS9XZWJLaXRMZWdhY3kvU3RvcmFnZS9TdG9yYWdlVHJhY2tlci5jcHAKaW5kZXggNWQ0
ZWVjNWZlZDhiMzU0YzBmMWE2NzVkMGNiNGQ0MzI3ZDFkMjdiZC4uMzYzNjE5NmNiNTZhYTJlNDMw
YzNhM2IwNzQxOGUyODRmOTFlNzYwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9T
dG9yYWdlL1N0b3JhZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L1N0b3Jh
Z2UvU3RvcmFnZVRyYWNrZXIuY3BwCkBAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBTdG9yYWdlVHJh
Y2tlcjo6c3luY0ZpbGVTeXN0ZW1BbmRUcmFja2VyRGF0YWJhc2UoKQogICAgICAgICAgICAgY29u
dGludWU7CiAKICAgICAgICAgYXV0byBmaWxlUGF0aCA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVu
ZGluZ0NvbXBvbmVudChtX3N0b3JhZ2VEaXJlY3RvcnlQYXRoLCBmaWxlTmFtZSk7Ci0gICAgICAg
IFN0cmluZyBvcmlnaW5JZGVudGlmaWVyID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIGZpbGVOYW1l
Lmxlbmd0aCgpIC0gZmlsZUV4dGVuc2lvbi5sZW5ndGgoKSk7CisgICAgICAgIFN0cmluZyBvcmln
aW5JZGVudGlmaWVyID0gZmlsZU5hbWUubGVmdChmaWxlTmFtZS5sZW5ndGgoKSAtIGZpbGVFeHRl
bnNpb24ubGVuZ3RoKCkpOwogICAgICAgICBpZiAoIW9yaWdpblNldENvcHkuY29udGFpbnMob3Jp
Z2luSWRlbnRpZmllcikpCiAgICAgICAgICAgICBzeW5jU2V0T3JpZ2luRGV0YWlscyhvcmlnaW5J
ZGVudGlmaWVyLCBmaWxlUGF0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXRMZWdhY3kv
bWFjL1dlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggM2RiMjQ4OGQ2MGVj
NDFiMDgxZjdhOTE3ZDBlMjYxYjI3ZTYyNGEyNy4uNmYxZjlhNzllMmNiOWFmMDU3NTlkM2UxNTMw
ODRhZjg4MDQyODZkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmll
dy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
V2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTM3NSw4ICszNzUsOSBAQCBzdGF0
aWMgUmVndWxhckV4cHJlc3Npb24qIHJlZ0V4cEZvckxhYmVscyhOU0FycmF5ICpsYWJlbHMpCiAg
ICAgICAgICAgICBib29sIHN0YXJ0c1dpdGhXb3JkQ2hhcmFjdGVyID0gZmFsc2U7CiAgICAgICAg
ICAgICBib29sIGVuZHNXaXRoV29yZENoYXJhY3RlciA9IGZhbHNlOwogICAgICAgICAgICAgaWYg
KGxhYmVsLmxlbmd0aCgpKSB7Ci0gICAgICAgICAgICAgICAgc3RhcnRzV2l0aFdvcmRDaGFyYWN0
ZXIgPSB3b3JkUmVnRXhwLmdldCgpLm1hdGNoKGxhYmVsLnN1YnN0cmluZygwLCAxKSkgPj0gMDsK
LSAgICAgICAgICAgICAgICBlbmRzV2l0aFdvcmRDaGFyYWN0ZXIgPSB3b3JkUmVnRXhwLmdldCgp
Lm1hdGNoKGxhYmVsLnN1YnN0cmluZyhsYWJlbC5sZW5ndGgoKSAtIDEsIDEpKSA+PSAwOworICAg
ICAgICAgICAgICAgIFN0cmluZ1ZpZXcgbGFiZWxWaWV3IHsgbGFiZWwgfTsKKyAgICAgICAgICAg
ICAgICBzdGFydHNXaXRoV29yZENoYXJhY3RlciA9IHdvcmRSZWdFeHAuZ2V0KCkubWF0Y2gobGFi
ZWxWaWV3LmxlZnQoMSkpID49IDA7CisgICAgICAgICAgICAgICAgZW5kc1dpdGhXb3JkQ2hhcmFj
dGVyID0gd29yZFJlZ0V4cC5nZXQoKS5tYXRjaChsYWJlbFZpZXcucmlnaHQoMSkpID49IDA7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8vIFNlYXJjaCBmb3Igd29y
ZCBib3VuZGFyaWVzIG9ubHkgaWYgbGFiZWwgc3RhcnRzL2VuZHMgd2l0aCAid29yZCBjaGFyYWN0
ZXJzIi4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRl
eCBiZWFlMzkwYWI2ZWU1NTZhNGYxMTVmNGU3MDdmMTIyNzBmNDJjZGY0Li4wMWM0YjVlZmI5MWJj
NGFlY2FhYjdmNTkwNTY5YTYxNTk0ZDllZTg2IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cK
KysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjItMDQtMTMgIENocmlz
IER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIGNhbGxzIHRvIHN1
YnN0cmluZygwLCB4KSB3aXRoIHRoZSBtb3JlIGNvbmNpc2UgbGVmdCh4KQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5MzA2CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRHVt
cFJlbmRlclRyZWUuY3BwOgorICAgICAgICAoZmluZEZvbnRGYWxsYmFjayk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcDoKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6Omluc2VydFRhYkF0TG9jYXRpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpyZWFk
Q29udGVudHNPZkZpbGUpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9I
VFRQSGVhZGVyRmllbGQuY3BwOgorICAgICAgICAoY2Fub25pY2FsaXplSFRUUEhlYWRlcik6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlclRleHRFbmNvZGlu
Zy5jcHA6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjppbnNlcnRUYWJBdExvY2F0aW9uKToKKyAg
ICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFn
ZS5jcHA6CisgICAgICAgIChXVFI6OnBhdGhTdWl0YWJsZUZvclRlc3RSZXN1bHQpOgorICAgICAg
ICAoV1RSOjpkdW1wRnJhbWVUZXh0KToKKyAgICAgICAgKFdUUjo6c3RyaXBUcmFpbGluZ1NwYWNl
c0FkZE5ld2xpbmUpOgorICAgICAgICAoV1RSOjpJbmplY3RlZEJ1bmRsZVBhZ2U6OndpbGxBZGRN
ZXNzYWdlVG9Db25zb2xlKToKKwogMjAyMi0wNC0xMyAgTWF0dGVvIEZsb3JlcyAgPG1hdHRlb19m
bG9yZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI5MjQwMS1yMjkyMzEwKTog
WyBpT1MgXSBUZXN0V2ViS2l0QVBJLkdQVVByb2Nlc3MuQ2FudmFzQmFzaWNDcmFzaEhhbmRsaW5n
IGlzIGEgY29uc3RhbnQgZmFpbHVyZSBvbiBpT1MKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RHVtcFJlbmRlclRyZWUuY3BwCmluZGV4IDM2YWU4ZjU3M2M0MjhhYWU0ZDVkNWZiMmE3ZTRhMjkz
N2U0YmNjODcuLjU0NGJmNDc0YmJiNmRmYmFmNDM3ZGI2MGUzODRhN2EzYTY5MzkyNDggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9EdW1wUmVuZGVyVHJlZS5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0R1bXBSZW5kZXJUcmVlLmNwcApAQCAtMTExNCwyMyAr
MTExNCwyNCBAQCBzdGF0aWMgU3RyaW5nIGZpbmRGb250RmFsbGJhY2soY29uc3QgY2hhciogcGF0
aE9yVXJsKQogICAgICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAogICAgIFN0cmluZyBwYXRo
VG9DaGVjayA9IGZ1bGxQYXRoOworICAgIFN0cmluZ1ZpZXcgcGF0aFRvQ2hlY2tWaWV3IHsgcGF0
aFRvQ2hlY2sgfTsKIAogICAgIHN0YXRpYyBjb25zdCBTdHJpbmcgbGF5b3V0VGVzdHMgPSAiTGF5
b3V0VGVzdHMiX3M7CiAKICAgICAvLyBGaW5kIHRoZSBsYXlvdXQgdGVzdCByb290IG9uIHRoZSBj
dXJyZW50IHBhdGg6Ci0gICAgc2l6ZV90IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2suZmluZChsYXlv
dXRUZXN0cyk7CisgICAgc2l6ZV90IGxvY2F0aW9uID0gcGF0aFRvQ2hlY2tWaWV3LmZpbmQobGF5
b3V0VGVzdHMpOwogICAgIGlmIChXVEY6Om5vdEZvdW5kID09IGxvY2F0aW9uKQogICAgICAgICBy
ZXR1cm4gZW1wdHlTdHJpbmcoKTsKIAotICAgIFN0cmluZyBwYXRoVG9UZXN0ID0gcGF0aFRvQ2hl
Y2suc3Vic3RyaW5nKGxvY2F0aW9uICsgbGF5b3V0VGVzdHMubGVuZ3RoKCkgKyAxKTsKLSAgICBT
dHJpbmcgcG9zc2libGVQYXRoVG9Mb2d1ZSA9IEZpbGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0Nv
bXBvbmVudChwYXRoVG9DaGVjay5zdWJzdHJpbmcoMCwgbG9jYXRpb24gKyBsYXlvdXRUZXN0cy5s
ZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiJfcyk7CisgICAgU3RyaW5nVmlldyBwYXRoVG9U
ZXN0ID0gcGF0aFRvQ2hlY2tWaWV3LnN1YnN0cmluZyhsb2NhdGlvbiArIGxheW91dFRlc3RzLmxl
bmd0aCgpICsgMSk7CisgICAgU3RyaW5nIHBvc3NpYmxlUGF0aFRvTG9ndWUgPSBGaWxlU3lzdGVt
OjpwYXRoQnlBcHBlbmRpbmdDb21wb25lbnQocGF0aFRvQ2hlY2tWaWV3LmxlZnQobG9jYXRpb24g
KyBsYXlvdXRUZXN0cy5sZW5ndGgoKSArIDEpLCAicGxhdGZvcm1cXHdpbiJfcyk7CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBwb3NzaWJsZVBhdGhzOwogICAgIHBvc3NpYmxlUGF0aHMuYXBwZW5kKEZp
bGVTeXN0ZW06OnBhdGhCeUFwcGVuZGluZ0NvbXBvbmVudChwb3NzaWJsZVBhdGhUb0xvZ3VlLCBw
YXRoVG9UZXN0KSk7CiAKICAgICBzaXplX3QgbmV4dENhbmRpZGF0ZUVuZCA9IHBhdGhUb1Rlc3Qu
cmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgd2hpbGUgKG5leHRDYW5kaWRhdGVFbmQgJiYgbmV4dENh
bmRpZGF0ZUVuZCAhPSBXVEY6Om5vdEZvdW5kKSB7Ci0gICAgICAgIHBhdGhUb1Rlc3QgPSBwYXRo
VG9UZXN0LnN1YnN0cmluZygwLCBuZXh0Q2FuZGlkYXRlRW5kKTsKKyAgICAgICAgcGF0aFRvVGVz
dCA9IHBhdGhUb1Rlc3QubGVmdChuZXh0Q2FuZGlkYXRlRW5kKTsKICAgICAgICAgcG9zc2libGVQ
YXRocy5hcHBlbmQoRmlsZVN5c3RlbTo6cGF0aEJ5QXBwZW5kaW5nQ29tcG9uZW50KHBvc3NpYmxl
UGF0aFRvTG9ndWUsIHBhdGhUb1Rlc3QpKTsKICAgICAgICAgbmV4dENhbmRpZGF0ZUVuZCA9IHBh
dGhUb1Rlc3QucmV2ZXJzZUZpbmQoJ1xcJyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1VSTFBhcnNlci5jcHAKaW5kZXggOTBmZmM5OTQ0ZTZiMjViZDQ1OTg1OTZmZGQ4
NjU5NGIxYjNhZGY1OS4uNTJlMzk3ZDEwYTkzNmUwMGVlMjcyMThiOTdlNDQ4NGUxNGNkMjE5NiAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvVVJMUGFyc2VyLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9VUkxQYXJzZXIuY3BwCkBAIC03Myw3
ICs3Myw3IEBAIGJvb2wgZXEoVCYmIHMxLCBVJiYgczIpCiBzdGF0aWMgU3RyaW5nIGluc2VydFRh
YkF0TG9jYXRpb24oU3RyaW5nVmlldyBzdHJpbmcsIHNpemVfdCBsb2NhdGlvbikKIHsKICAgICBB
U1NFUlQobG9jYXRpb24gPD0gc3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWFrZVN0cmlu
ZyhzdHJpbmcuc3Vic3RyaW5nKDAsIGxvY2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1YnN0cmluZyhs
b2NhdGlvbikpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHN0cmluZy5sZWZ0KGxvY2F0aW9uKSwg
J1x0Jywgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOwogfQogCiBzdGF0aWMgRXhwZWN0ZWRQ
YXJ0cyBpbnZhbGlkUGFydHMoU3RyaW5nVmlldyB1cmxTdHJpbmdXaXRoVGFiKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9GaWxlTW9uaXRvci5jcHAKaW5kZXggOWUz
NWQ5NWJiNTFhMDliMDA4NTM0ZDczMzVkODI4YTAwMGVjMmM0Mi4uZmFmYWIxY2FlZmI2MzRmMzE2
ZmM0Mzg4YzVkODkyZTMxODExNTgzZCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJDb3JlL0ZpbGVNb25pdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYkNvcmUvRmlsZU1vbml0b3IuY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgc3RhdGljIFN0
cmluZyByZWFkQ29udGVudHNPZkZpbGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiAgICAgU3RyaW5n
IHJlc3VsdChzdGF0aWNfY2FzdDxjb25zdCBMQ2hhcio+KGJ1ZmZlci0+ZGF0YSgpKSwgYnVmZmVy
LT5zaXplKCkpOwogICAgIGlmIChyZXN1bHQuZW5kc1dpdGgoIlxuIikpCi0gICAgICAgIHJldHVy
biByZXN1bHQuc3Vic3RyaW5nKDAsIHJlc3VsdC5sZW5ndGgoKSAtIDEpOworICAgICAgICByZXR1
cm4gcmVzdWx0LmxlZnQocmVzdWx0Lmxlbmd0aCgpIC0gMSk7CiAKICAgICByZXR1cm4gcmVzdWx0
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL0hUVFBI
ZWFkZXJGaWVsZC5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhl
YWRlckZpZWxkLmNwcAppbmRleCA3MjNkNTg4YWE0OWM4N2UzNjY0YjQ2ZjMxODBkZmQ3MDdmYzI3
NWVhLi4wNDk5ZTFhNDIxZWM3MWVlODU5NmE1YTliNWU0NTU1ZDhkMDk4YjgwIDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNwcAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvSFRUUEhlYWRlckZpZWxkLmNw
cApAQCAtMzMsNyArMzMsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZUhUVFBIZWFkZXIo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiAgICAgc2l6ZV90IGNvbG9uTG9jYXRpb24gPSBzdHJpbmcu
ZmluZCgnOicpOwogICAgIGlmIChjb2xvbkxvY2F0aW9uID09IG5vdEZvdW5kKQogICAgICAgICBy
ZXR1cm4geyB9OwotICAgIGF1dG8gZmllbGQgPSBXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ6OmNy
ZWF0ZShzdHJpbmcuc3Vic3RyaW5nKDAsIGNvbG9uTG9jYXRpb24pLCBzdHJpbmcuc3Vic3RyaW5n
KGNvbG9uTG9jYXRpb24gKyAxKSk7CisgICAgYXV0byBmaWVsZCA9IFdlYkNvcmU6OkhUVFBIZWFk
ZXJGaWVsZDo6Y3JlYXRlKHN0cmluZy5sZWZ0KGNvbG9uTG9jYXRpb24pLCBzdHJpbmcuc3Vic3Ry
aW5nKGNvbG9uTG9jYXRpb24gKyAxKSk7CiAgICAgaWYgKCFmaWVsZCkKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICByZXR1cm4gbWFrZVN0cmluZyhmaWVsZC0+bmFtZSgpLCAiOiAiLCBmaWVsZC0+
dmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUv
VVJMUGFyc2VyVGV4dEVuY29kaW5nLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCmluZGV4IDRkMjdmNGZkNGI1NTIyODc0M2Qz
ZTJmN2NjOTdmYmM0M2Y0NGE4ZWIuLmY1ODU5OTE4YzhhNWU4MDkwNDVjYmMwNWU1YWE5ZGI1NTQx
Yjc5YTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQ
YXJzZXJUZXh0RW5jb2RpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
Q29yZS9VUkxQYXJzZXJUZXh0RW5jb2RpbmcuY3BwCkBAIC03MSwxMCArNzEsMTAgQEAgYm9vbCBl
cShUJiYgczEsIFUmJiBzMikKICAgICByZXR1cm4gczEudXRmOCgpID09IHMyLnV0ZjgoKTsKIH0K
IAotc3RhdGljIFN0cmluZyBpbnNlcnRUYWJBdExvY2F0aW9uKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBzaXplX3QgbG9jYXRpb24pCitzdGF0aWMgU3RyaW5nIGluc2VydFRhYkF0TG9jYXRpb24oU3Ry
aW5nVmlldyBzdHJpbmcsIHNpemVfdCBsb2NhdGlvbikKIHsKICAgICBBU1NFUlQobG9jYXRpb24g
PD0gc3RyaW5nLmxlbmd0aCgpKTsKLSAgICByZXR1cm4gbWFrZVN0cmluZyhzdHJpbmcuc3Vic3Ry
aW5nKDAsIGxvY2F0aW9uKSwgIlx0Iiwgc3RyaW5nLnN1YnN0cmluZyhsb2NhdGlvbikpOworICAg
IHJldHVybiBtYWtlU3RyaW5nKHN0cmluZy5sZWZ0KGxvY2F0aW9uKSwgJ1x0Jywgc3RyaW5nLnN1
YnN0cmluZyhsb2NhdGlvbikpOwogfQogCiBzdGF0aWMgRXhwZWN0ZWRQYXJ0cyBpbnZhbGlkUGFy
dHMoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmdXaXRoVGFiKQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2UuY3Bw
CmluZGV4IGQwMDZiNzg5Y2MxMWNlNWJiOTRiNDMzMWQzOWM5ZjYwNDFjYjZlNzQuLjlmMDEyOWM3
ZWE5MGZhNmJjYzU4YThhNDZkYzVhN2I0Y2FhYjVhNTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVQYWdlLmNwcAorKysgYi9U
b29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlUGFnZS5j
cHAKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgaW5saW5lIFdURjo6U3RyaW5nIHBhdGhTdWl0
YWJsZUZvclRlc3RSZXN1bHQoV0tVUkxSZWYgZmlsZVVybCkKIAogICAgIFN0cmluZyBwYXRoU3Ry
aW5nID0gdG9XVEZTdHJpbmcoYWRvcHRXSyhXS1VSTENvcHlQYXRoKGZpbGVVcmwpKSk7CiAgICAg
U3RyaW5nIG1haW5GcmFtZVVSTFBhdGhTdHJpbmcgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdLVVJM
Q29weVBhdGgobWFpbkZyYW1lVVJMLmdldCgpKSkpOwotICAgIFN0cmluZyBiYXNlUGF0aCA9IG1h
aW5GcmFtZVVSTFBhdGhTdHJpbmcuc3Vic3RyaW5nKDAsIG1haW5GcmFtZVVSTFBhdGhTdHJpbmcu
cmV2ZXJzZUZpbmQoZGl2aWRlcikgKyAxKTsKKyAgICBhdXRvIGJhc2VQYXRoID0gU3RyaW5nVmll
dyhtYWluRnJhbWVVUkxQYXRoU3RyaW5nKS5sZWZ0KG1haW5GcmFtZVVSTFBhdGhTdHJpbmcucmV2
ZXJzZUZpbmQoZGl2aWRlcikgKyAxKTsKICAgICAKICAgICBpZiAoIWJhc2VQYXRoLmlzRW1wdHko
KSAmJiBwYXRoU3RyaW5nLnN0YXJ0c1dpdGgoYmFzZVBhdGgpKQogICAgICAgICByZXR1cm4gcGF0
aFN0cmluZy5zdWJzdHJpbmcoYmFzZVBhdGgubGVuZ3RoKCkpOwpAQCAtNzQ2LDcgKzc0Niw3IEBA
IHN0YXRpYyB2b2lkIGR1bXBGcmFtZVRleHQoV0tCdW5kbGVGcmFtZVJlZiBmcmFtZSwgU3RyaW5n
QnVpbGRlciYgYnVpbGRlcikKICAgICBhdXRvIHRleHQgPSB0b1dURlN0cmluZyhhZG9wdFdLKFdL
QnVuZGxlRnJhbWVDb3B5SW5uZXJUZXh0KGZyYW1lKSkpOwogICAgIGZvciAoYXV0byBsaW5lIDog
U3RyaW5nVmlldyh0ZXh0KS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CiAgICAg
ICAgIHdoaWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCi0gICAgICAgICAgICBsaW5lID0gbGluZS5z
dWJzdHJpbmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAgICAgICAgICAgbGluZSA9IGxpbmUu
bGVmdChsaW5lLmxlbmd0aCgpIC0gMSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdc
bicpOwogICAgIH0KIH0KQEAgLTEzMDAsNyArMTMwMCw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBz
dHJpcFRyYWlsaW5nU3BhY2VzQWRkTmV3bGluZShjb25zdCBXVEY6OlN0cmluZyYgc3RyaW5nKQog
ICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKICAgICBmb3IgKGF1dG8gbGluZSA6IFN0cmluZ1Zp
ZXcoc3RyaW5nKS5zcGxpdEFsbG93aW5nRW1wdHlFbnRyaWVzKCdcbicpKSB7CiAgICAgICAgIHdo
aWxlIChsaW5lLmVuZHNXaXRoKCcgJykpCi0gICAgICAgICAgICBsaW5lID0gbGluZS5zdWJzdHJp
bmcoMCwgbGluZS5sZW5ndGgoKSAtIDEpOworICAgICAgICAgICAgbGluZSA9IGxpbmUubGVmdChs
aW5lLmxlbmd0aCgpIC0gMSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGxpbmUsICdcbicpOwog
ICAgIH0KICAgICByZXR1cm4gYnVpbGRlci50b1N0cmluZygpOwpAQCAtMTMxMiw3ICsxMzEyLDcg
QEAgc3RhdGljIFdURjo6U3RyaW5nIGFkZExlYWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXNB
ZGROZXdsaW5lKGNvbnN0IFdURjo6U3RyaW4KICAgICByZXR1cm4gKHJlc3VsdC5pc0VtcHR5KCkg
fHwgcmVzdWx0LnN0YXJ0c1dpdGgoJ1xuJykpID8gcmVzdWx0IDogbWFrZVN0cmluZygnICcsIHJl
c3VsdCk7CiB9CiAKLXN0YXRpYyBXVEY6OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQo
Y29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpCitzdGF0aWMgU3RyaW5nVmlldyBsYXN0RmlsZVVSTFBh
dGhDb21wb25lbnQoU3RyaW5nVmlldyBwYXRoKQogewogICAgIGF1dG8gcG9zID0gcGF0aC5maW5k
KCJmaWxlOi8vIik7CiAgICAgQVNTRVJUKFdURjo6bm90Rm91bmQgIT0gcG9zKTsKQEAgLTEzMjMs
NyArMTMyMyw3IEBAIHN0YXRpYyBXVEY6OlN0cmluZyBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQo
Y29uc3QgV1RGOjpTdHJpbmcmIHBhdGgpCiAKICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGRl
bGltaXRlcgogICAgIGlmICh0bXBQYXRoW3RtcFBhdGgubGVuZ3RoKCkgLSAxXSA9PSAnLycpCi0g
ICAgICAgIHRtcFBhdGgucmVtb3ZlKHRtcFBhdGgubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgdG1w
UGF0aCA9IHRtcFBhdGgubGVmdCh0bXBQYXRoLmxlbmd0aCgpIC0gMSk7CiAKICAgICBwb3MgPSB0
bXBQYXRoLnJldmVyc2VGaW5kKCcvJyk7CiAgICAgaWYgKFdURjo6bm90Rm91bmQgIT0gcG9zKQpA
QCAtMTM0NCwxMCArMTM0NCwxMSBAQCB2b2lkIEluamVjdGVkQnVuZGxlUGFnZTo6d2lsbEFkZE1l
c3NhZ2VUb0NvbnNvbGUoV0tTdHJpbmdSZWYgbWVzc2FnZSkKICAgICAgICAgbWVzc2FnZVN0cmlu
Zy50cnVuY2F0ZShudWxsQ2hhclBvcyk7CiAKICAgICBzaXplX3QgZmlsZVByb3RvY29sU3RhcnQg
PSBtZXNzYWdlU3RyaW5nLmZpbmQoImZpbGU6Ly8iKTsKLSAgICBpZiAoZmlsZVByb3RvY29sU3Rh
cnQgIT0gV1RGOjpub3RGb3VuZCkKKyAgICBpZiAoZmlsZVByb3RvY29sU3RhcnQgIT0gV1RGOjpu
b3RGb3VuZCkgeworICAgICAgICBTdHJpbmdWaWV3IG1lc3NhZ2VTdHJpbmdWaWV3IHsgbWVzc2Fn
ZVN0cmluZyB9OwogICAgICAgICAvLyBGSVhNRTogVGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFu
ZGxlIGFkZGl0aW9uYWwgdGV4dCBhZnRlciB1cmwgbm9yIG11bHRpcGxlIHVybHMuIFRoaXMgbWF0
Y2hlcyBEdW1wUmVuZGVyVHJlZSBpbXBsZW1lbnRhdGlvbi4KLSAgICAgICAgbWVzc2FnZVN0cmlu
ZyA9IG1lc3NhZ2VTdHJpbmcuc3Vic3RyaW5nKDAsIGZpbGVQcm90b2NvbFN0YXJ0KSArIGxhc3RG
aWxlVVJMUGF0aENvbXBvbmVudChtZXNzYWdlU3RyaW5nLnN1YnN0cmluZyhmaWxlUHJvdG9jb2xT
dGFydCkpOwotCisgICAgICAgIG1lc3NhZ2VTdHJpbmcgPSBtYWtlU3RyaW5nKG1lc3NhZ2VTdHJp
bmdWaWV3LmxlZnQoZmlsZVByb3RvY29sU3RhcnQpLCBsYXN0RmlsZVVSTFBhdGhDb21wb25lbnQo
bWVzc2FnZVN0cmluZ1ZpZXcuc3Vic3RyaW5nKGZpbGVQcm90b2NvbFN0YXJ0KSkpOworICAgIH0K
ICAgICBtZXNzYWdlU3RyaW5nID0gbWFrZVN0cmluZygiQ09OU09MRSBNRVNTQUdFOiIsIGFkZExl
YWRpbmdTcGFjZVN0cmlwVHJhaWxpbmdTcGFjZXNBZGROZXdsaW5lKG1lc3NhZ2VTdHJpbmcpKTsK
ICAgICBpZiAoaW5qZWN0ZWRCdW5kbGUuZHVtcEpTQ29uc29sZUxvZ0luU3RkRXJyKCkpCiAgICAg
ICAgIGluamVjdGVkQnVuZGxlLmR1bXBUb1N0ZEVycihtZXNzYWdlU3RyaW5nKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>