<?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>146850</bug_id>
          
          <creation_ts>2015-07-10 12:38:57 -0700</creation_ts>
          <short_desc>jsc-tailcall: Implement the tail call opcodes in the DFG</short_desc>
          <delta_ts>2015-08-04 10:50:52 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>146484</dependson>
          <blocked>146477</blocked>
    
    <blocked>146851</blocked>
    
    <blocked>147198</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Basile Clement">basile_clement</reporter>
          <assigned_to name="Basile Clement">basile_clement</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1108717</commentid>
    <comment_count>0</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-10 12:38:57 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113870</commentid>
    <comment_count>1</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-31 14:49:36 -0700</bug_when>
    <thetext>*** Bug 147198 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113956</commentid>
    <comment_count>2</comment_count>
      <attachid>257988</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-31 19:08:34 -0700</bug_when>
    <thetext>Created attachment 257988
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1113963</commentid>
    <comment_count>3</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-07-31 19:40:31 -0700</bug_when>
    <thetext>Just realized this is missing callee save stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114376</commentid>
    <comment_count>4</comment_count>
      <attachid>258116</attachid>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-03 14:42:45 -0700</bug_when>
    <thetext>Created attachment 258116
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114423</commentid>
    <comment_count>5</comment_count>
      <attachid>258116</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-03 16:02:56 -0700</bug_when>
    <thetext>Comment on attachment 258116
Patch

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

r+me with a couple of comments.

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +         - EmulatedTailCall and EmulatedTailCallVarargs are here to perform a

What about changing Emulated* to Inlined*?

&gt; Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp:139
&gt; +    // FIXME: We shouldn&apos;t leave holes on the stack when performing an OSR exit

Please add a bug for the FIXME

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp:881
&gt; +        m_jit.breakpoint();

This should only be for debug builds.

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:842
&gt; +        m_jit.breakpoint();

Ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114428</commentid>
    <comment_count>6</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-03 16:17:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 258116 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=258116&amp;action=review
&gt; 
&gt; r+me with a couple of comments.
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:13
&gt; &gt; +         - EmulatedTailCall and EmulatedTailCallVarargs are here to perform a
&gt; 
&gt; What about changing Emulated* to Inlined*?

I find InlinedTailCall to be confusing since the tail call itself is not inlined, it is inside an inlined function. And TailCallInsideAnInlinedFunction is not great either. But I&apos;m open to suggestions.
 
&gt; &gt; Source/JavaScriptCore/dfg/DFGOSRExitCompilerCommon.cpp:139
&gt; &gt; +    // FIXME: We shouldn&apos;t leave holes on the stack when performing an OSR exit
&gt; 
&gt; Please add a bug for the FIXME

Oops, thought I did that already. I&apos;ll add it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114434</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2015-08-03 16:37:42 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Comment on attachment 258116 [details]
&gt; &gt; &gt; Source/JavaScriptCore/ChangeLog:13
&gt; &gt; &gt; +         - EmulatedTailCall and EmulatedTailCallVarargs are here to perform a
&gt; &gt; 
&gt; &gt; What about changing Emulated* to Inlined*?
&gt; 
&gt; I find InlinedTailCall to be confusing since the tail call itself is not
&gt; inlined, it is inside an inlined function. And
&gt; TailCallInsideAnInlinedFunction is not great either. But I&apos;m open to
&gt; suggestions.

What about TailCallInlinedCaller?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1114644</commentid>
    <comment_count>8</comment_count>
    <who name="Basile Clement">basile_clement</who>
    <bug_when>2015-08-04 10:50:52 -0700</bug_when>
    <thetext>Committed r187791 &lt;https://trac.webkit.org/changeset/187791&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>257988</attachid>
            <date>2015-07-31 19:08:34 -0700</date>
            <delta_ts>2015-08-03 14:42:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146850-20150731190830.patch</filename>
            <type>text/plain</type>
            <size>85028</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZThmYmI1ODAxZWIwZDBmN2YzMWFjZmU0OWM1ODYxODllZDMzZTA4Li43OWJkZmQ2Y2JkNWY0OTQw
M2E0ZTYxY2ZhZDRmN2Y4OTNhMDRiMWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMTUtMDctMzEgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRA
YXBwbGUuY29tPgorCisgICAgICAgIGpzYy10YWlsY2FsbDogSW1wbGVtZW50IHRoZSB0YWlsIGNh
bGwgb3Bjb2RlcyBpbiB0aGUgREZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDY4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGFpbCBjYWxscyBpbiB0
aGUgREZHLiBUaGlzIHJlcXVpcmVzIGEgc2xpZ2h0bHkgaGlnaCBudW1iZXIgb2Ygbm9kZXM6CisK
KyAgICAgICAgIC0gVGFpbENhbGwgYW5kIFRhaWxDYWxsVmFyYXJncyBhcmUgc3RyYWlnaHRmb3J3
YXJkLiBUaGV5IGFyZSB0ZXJtaW5hbAorICAgICAgICAgICBub2RlcyBhbmQgaGF2ZSB0aGUgc2Vt
YW50aWNzIG9mIGFuIGFjdHVhbCB0YWlsIGNhbGwuCisKKyAgICAgICAgIC0gRW11bGF0ZWRUYWls
Q2FsbCBhbmQgRW11bGF0ZWRUYWlsQ2FsbFZhcmFyZ3MgYXJlIGhlcmUgdG8gcGVyZm9ybSBhCisg
ICAgICAgICAgIHRhaWwgY2FsbCBpbnNpZGUgYW4gaW5saW5lZCBmdW5jdGlvbi4gVGhleSBhcmUg
bm9uIHRlcm1pbmFsIG5vZGVzLAorICAgICAgICAgICBhbmQgYXJlIHBlcmZvcm1pbmcgdGhlIGNh
bGwgYXMgYSByZWd1bGFyIGNhbGwgYWZ0ZXIgcG9wcGluZyBhbgorICAgICAgICAgICBhcHByb3By
aWF0ZSBudW1iZXIgb2YgaW5saW5lZCB0YWlsIGNhbGwgZnJhbWVzLiAKKworICAgICAgICAgLSBU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzIGFuZCBFbXVsYXRlZFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3Mg
YXJlIHRoZQorICAgICAgICAgICBleHRlbnNpb24gb2YgVGFpbENhbGxWYXJhcmdzIGFuZCBFbXVs
YXRlZFRhaWxDYWxsVmFyYXJncyB0byBlbmFibGUKKyAgICAgICAgICAgdGhlIHZhcmFyZ3MgZm9y
d2FyZGluZyBvcHRpbWl6YXRpb24gc28gdGhhdCB3ZSBkb24ndCBsb3NlCisgICAgICAgICAgIHBl
cmZvcm1hbmNlIHdpdGggYSB0YWlsIGNhbGwgaW5zdGVhZCBvZiBhIHJlZ3VsYXIgY2FsbC4KKwor
ICAgICAgICBUaGlzIGFsc28gcmVxdWlyZWQgdHdvIGJyb2FkIGtpbmQgb2YgY2hhbmdlczoKKwor
ICAgICAgICAgLSBDaGFuZ2VzIGluIHRoZSBKSVQgaXRzZWxmIChERkdTcGVjdWxhdGl2ZUpJVCkg
YXJlIHByZXR0eQorICAgICAgICAgICBzdHJhaWdodGZvcndhcmQgc2luY2UgdGhleSBhcmUganVz
dCBhbiBleHRlbnNpb24gb2YgdGhlIGJhc2VsaW5lIEpJVAorICAgICAgICAgICBjaGFuZ2VzIGlu
dHJvZHVjZWQgcHJldmlvdXNseS4KKworICAgICAgICAgLSBDaGFuZ2VzIGluIHRoZSBydW50aW1l
IGFyZSBtb3N0bHkgcmVsYXRlZCB3aXRoIGhhbmRsaW5nIGlubGluZSBjYWxsCisgICAgICAgICAg
IGZyYW1lcy4gVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHdlIGhhdmUgYSBzcGVjaWFsIFRhaWxDYWxs
IHR5cGUgZm9yCisgICAgICAgICAgIGNhbGwgZnJhbWVzIHRoYXQgaW5kaWNhdGVzIHRvIHRoZSB2
YXJpb3VzIHBpZWNlcyBvZiBjb2RlIHdhbGtpbmcgdGhlCisgICAgICAgICAgIGlubGluZSBjYWxs
IGZyYW1lIHRoYXQgdGhleSBzaG91bGQgKHJlY3Vyc2l2ZWx5KSBza2lwIHRoZSBjYWxsZXIgaW4K
KyAgICAgICAgICAgdGhlaXIgYW5hbHlzaXMuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTW9k
ZS5oOgorICAgICAgICAoSlNDOjpzcGVjaWFsaXphdGlvbktpbmRGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVE
ZXB0aEZvckNhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmlzQXBwcm94aW1h
dGVseUVxdWFsVG8pOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2gp
OgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVTdGFjayk6CisgICAgICAgIChKU0M6
OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgIChXVEY6OnByaW50SW50
ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uaDoKKyAgICAgICAgKEpTQzo6
SW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcik6CisgICAgICAgIChKU0M6OklubGluZUNhbGxG
cmFtZTo6a2luZEZvcik6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6dmFyYXJnc0tp
bmRGb3IpOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2lu
ZEZvcik6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6aXNWYXJhcmdzKToKKyAgICAg
ICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjppc1RhaWwpOgorICAgICAgICAoSlNDOjpJbmxpbmVD
YWxsRnJhbWU6OmNvbXB1dGVDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMpOgorICAgICAgICAoSlND
OjpJbmxpbmVDYWxsRnJhbWU6OmdldENhbGxlclNraXBwaW5nRGVhZEZyYW1lcyk6CisgICAgICAg
IChKU0M6OklubGluZUNhbGxGcmFtZTo6Z2V0Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ0RlYWRG
cmFtZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZmluZFRlcm1pbmFsKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxJbmxp
bmVGcmFtZXNBcmVUYWlsQ2FsbHMpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Z2V0UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVWYXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
aW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVC
bG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNM
aXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VB
YnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycyk6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWxsVmFyYXJnc0RhdGEpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmlzVGVybWluYWwpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpoYW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxs
RnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpwcmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4aXQpOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9y
OjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNvZGVPcmlnaW5JbmRleCk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNp
dG9yOjpnb3RvTmV4dEZyYW1lKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2RmZy10YWlsLWNhbGxzLmpzOiBBZGRlZC4KKwogMjAxNS0wNy0z
MSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBqc2MtdGFp
bGNhbGw6IFJFR1JFU1NJT04ocjE4NzY3Nik6IEJyb2tlIHN0cmVzcy90YWlsLWNhbGwtbm8tc3Rh
Y2stb3ZlcmZsb3cuanMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9DYWxsTW9kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxNb2RlLmgK
aW5kZXggYmNiYjYxMzBjNDhmNzg4MjRmYjBlYTk0NjEzODBkZGZkMmNhZjEyNS4uYzM3MzRlMjZh
NzMyZWQ3ZTI2OTc4MjUwMzhkYzE1MjNjODM0ZTIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0NhbGxNb2RlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NhbGxNb2RlLmgKQEAgLTI2LDEyICsyNiwyNiBAQAogI2lmbmRlZiBDYWxsTW9k
ZV9oCiAjZGVmaW5lIENhbGxNb2RlX2gKIAorI2luY2x1ZGUgIkNvZGVTcGVjaWFsaXphdGlvbktp
bmQuaCIKKwogbmFtZXNwYWNlIEpTQyB7CiAKIGVudW0gY2xhc3MgQ2FsbE1vZGUgeyBSZWd1bGFy
LCBUYWlsLCBDb25zdHJ1Y3QgfTsKIAogZW51bSBGcmFtZUFjdGlvbiB7IEtlZXBUaGVGcmFtZSA9
IDAsIFJldXNlVGhlRnJhbWUgfTsKIAoraW5saW5lIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3Bl
Y2lhbGl6YXRpb25LaW5kRm9yKENhbGxNb2RlIGNhbGxNb2RlKQoreworICAgIHN3aXRjaCAoY2Fs
bE1vZGUpIHsKKyAgICBjYXNlIENhbGxNb2RlOjpUYWlsOgorICAgIGNhc2UgQ2FsbE1vZGU6OlJl
Z3VsYXI6CisgICAgICAgIHJldHVybiBDb2RlRm9yQ2FsbDsKKworICAgIGNhc2UgQ2FsbE1vZGU6
OkNvbnN0cnVjdDoKKyAgICAgICAgcmV0dXJuIENvZGVGb3JDb25zdHJ1Y3Q7CisgICAgfQorfQor
CiB9IC8vIG5hbWVzcGFjZSBKU0MKIAogbmFtZXNwYWNlIFdURiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKaW5kZXggNWNmNmUxNmJhNzRmYTNlY2Zk
YzRkZDZhYzFlZWNlZTdkZjViOTQxYy4uZDBhNGI5NDZiNzViMjNjOGU4NmMyMzZmZmQzYjNhZTIx
YTA2ZjRlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVP
cmlnaW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIHVuc2lnbmVkIENvZGVPcmln
aW46OmlubGluZURlcHRoRm9yQ2FsbEZyYW1lKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lKQogewogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDE7Ci0gICAgZm9yIChJbmxpbmVDYWxsRnJh
bWUqIGN1cnJlbnQgPSBpbmxpbmVDYWxsRnJhbWU7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50
LT5jYWxsZXIuaW5saW5lQ2FsbEZyYW1lKQorICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBjdXJy
ZW50ID0gaW5saW5lQ2FsbEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+ZGlyZWN0
Q2FsbGVyLmlubGluZUNhbGxGcmFtZSkKICAgICAgICAgcmVzdWx0Kys7CiAgICAgcmV0dXJuIHJl
c3VsdDsKIH0KQEAgLTc3LDggKzc3LDggQEAgYm9vbCBDb2RlT3JpZ2luOjppc0FwcHJveGltYXRl
bHlFcXVhbFRvKGNvbnN0IENvZGVPcmlnaW4mIG90aGVyKSBjb25zdAogICAgICAgICBpZiAoYS5p
bmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0KCkgIT0gYi5pbmxpbmVDYWxsRnJhbWUtPmV4
ZWN1dGFibGUuZ2V0KCkpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIAotICAg
ICAgICBhID0gYS5pbmxpbmVDYWxsRnJhbWUtPmNhbGxlcjsKLSAgICAgICAgYiA9IGIuaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZXI7CisgICAgICAgIGEgPSBhLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0
Q2FsbGVyOworICAgICAgICBiID0gYi5pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcjsKICAg
ICB9CiB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgdW5zaWduZWQgQ29kZU9yaWdpbjo6YXBwcm94aW1h
dGVIYXNoKCkgY29uc3QKICAgICAgICAgCiAgICAgICAgIHJlc3VsdCArPSBXVEY6OlB0ckhhc2g8
SlNDZWxsKj46Omhhc2goY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuZ2V0
KCkpOwogICAgICAgICAKLSAgICAgICAgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5saW5lQ2Fs
bEZyYW1lLT5jYWxsZXI7CisgICAgICAgIGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZS0+ZGlyZWN0Q2FsbGVyOwogICAgIH0KIH0KIApAQCAtMTA4LDggKzEwOCw4IEBAIFZl
Y3RvcjxDb2RlT3JpZ2luPiBDb2RlT3JpZ2luOjppbmxpbmVTdGFjaygpIGNvbnN0CiAgICAgVmVj
dG9yPENvZGVPcmlnaW4+IHJlc3VsdChpbmxpbmVEZXB0aCgpKTsKICAgICByZXN1bHQubGFzdCgp
ID0gKnRoaXM7CiAgICAgdW5zaWduZWQgaW5kZXggPSByZXN1bHQuc2l6ZSgpIC0gMjsKLSAgICBm
b3IgKElubGluZUNhbGxGcmFtZSogY3VycmVudCA9IGlubGluZUNhbGxGcmFtZTsgY3VycmVudDsg
Y3VycmVudCA9IGN1cnJlbnQtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpCi0gICAgICAgIHJlc3Vs
dFtpbmRleC0tXSA9IGN1cnJlbnQtPmNhbGxlcjsKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZSog
Y3VycmVudCA9IGlubGluZUNhbGxGcmFtZTsgY3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPmRp
cmVjdENhbGxlci5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgIHJlc3VsdFtpbmRleC0tXSA9IGN1
cnJlbnQtPmRpcmVjdENhbGxlcjsKICAgICBSRUxFQVNFX0FTU0VSVCghcmVzdWx0WzBdLmlubGlu
ZUNhbGxGcmFtZSk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE5MCw3ICsxOTAsNyBAQCB2
b2lkIElubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1w
Q29udGV4dCogY29udGV4dCkgY29ucwogICAgIG91dC5wcmludChicmllZkZ1bmN0aW9uSW5mb3Jt
YXRpb24oKSwgIjo8IiwgUmF3UG9pbnRlcihleGVjdXRhYmxlLmdldCgpKSk7CiAgICAgaWYgKGV4
ZWN1dGFibGUtPmlzU3RyaWN0TW9kZSgpKQogICAgICAgICBvdXQucHJpbnQoIiAoU3RyaWN0TW9k
ZSkiKTsKLSAgICBvdXQucHJpbnQoIiwgYmMjIiwgY2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIs
IGtpbmQpOworICAgIG91dC5wcmludCgiLCBiYyMiLCBkaXJlY3RDYWxsZXIuYnl0ZWNvZGVJbmRl
eCwgIiwgIiwgc3RhdGljX2Nhc3Q8S2luZD4oa2luZCkpOwogICAgIGlmIChpc0Nsb3N1cmVDYWxs
KQogICAgICAgICBvdXQucHJpbnQoIiwgY2xvc3VyZSBjYWxsIik7CiAgICAgZWxzZQpAQCAtMjE4
LDEyICsyMTgsMTggQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIEpTQzo6
SW5saW5lQ2FsbEZyYW1lOjpLaW5kIGtpbmQpCiAgICAgY2FzZSBKU0M6OklubGluZUNhbGxGcmFt
ZTo6Q29uc3RydWN0OgogICAgICAgICBvdXQucHJpbnQoIkNvbnN0cnVjdCIpOwogICAgICAgICBy
ZXR1cm47CisgICAgY2FzZSBKU0M6OklubGluZUNhbGxGcmFtZTo6VGFpbENhbGw6CisgICAgICAg
IG91dC5wcmludCgiVGFpbENhbGwiKTsKKyAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgSlNDOjpJ
bmxpbmVDYWxsRnJhbWU6OkNhbGxWYXJhcmdzOgogICAgICAgICBvdXQucHJpbnQoIkNhbGxWYXJh
cmdzIik7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpD
b25zdHJ1Y3RWYXJhcmdzOgogICAgICAgICBvdXQucHJpbnQoIkNvbnN0cnVjdFZhcmFyZ3MiKTsK
ICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpJbmxpbmVDYWxsRnJhbWU6OlRhaWxDYWxs
VmFyYXJnczoKKyAgICAgICAgb3V0LnByaW50KCJUYWlsQ2FsbFZhcmFyZ3MiKTsKKyAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgSlNDOjpJbmxpbmVDYWxsRnJhbWU6OkdldHRlckNhbGw6CiAgICAg
ICAgIG91dC5wcmludCgiR2V0dGVyQ2FsbCIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAppbmRleCBkMTg3OWEzMjc4MWExNTYz
YTJlNDYxZWJkYmU3YzRiZWMyMzZiZGRlLi4yMDVjMDU2N2QyNDZkYTlkMzNlNDQxNjU1ZGVkNDAw
MGIzNzRjYzc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZU9yaWdpbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2lu
LmgKQEAgLTI2LDYgKzI2LDcgQEAKICNpZm5kZWYgQ29kZU9yaWdpbl9oCiAjZGVmaW5lIENvZGVP
cmlnaW5faAogCisjaW5jbHVkZSAiQ2FsbE1vZGUuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tIYXNo
LmgiCiAjaW5jbHVkZSAiQ29kZVNwZWNpYWxpemF0aW9uS2luZC5oIgogI2luY2x1ZGUgIlZhbHVl
UmVjb3ZlcnkuaCIKQEAgLTEyMCwzNyArMTIxLDU4IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUg
ewogICAgIGVudW0gS2luZCB7CiAgICAgICAgIENhbGwsCiAgICAgICAgIENvbnN0cnVjdCwKKyAg
ICAgICAgVGFpbENhbGwsCiAgICAgICAgIENhbGxWYXJhcmdzLAogICAgICAgICBDb25zdHJ1Y3RW
YXJhcmdzLAorICAgICAgICBUYWlsQ2FsbFZhcmFyZ3MsCiAgICAgICAgIAogICAgICAgICAvLyBG
b3IgdGhlc2UsIHRoZSBzdGFja09mZnNldCBpbmNvcnBvcmF0ZXMgdGhlIGFyZ3VtZW50IGNvdW50
IHBsdXMgdGhlIHRydWUgcmV0dXJuIFBDCiAgICAgICAgIC8vIHNsb3QuCiAgICAgICAgIEdldHRl
ckNhbGwsCiAgICAgICAgIFNldHRlckNhbGwKICAgICB9OwotICAgIAotICAgIHN0YXRpYyBLaW5k
IGtpbmRGb3IoQ29kZVNwZWNpYWxpemF0aW9uS2luZCBraW5kKQorCisgICAgc3RhdGljIENhbGxN
b2RlIGNhbGxNb2RlRm9yKEtpbmQga2luZCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoa2luZCkg
ewotICAgICAgICBjYXNlIENvZGVGb3JDYWxsOgorICAgICAgICBjYXNlIENhbGw6CisgICAgICAg
IGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhc2UgR2V0dGVyQ2FsbDoKKyAgICAgICAgY2Fz
ZSBTZXR0ZXJDYWxsOgorICAgICAgICAgICAgcmV0dXJuIENhbGxNb2RlOjpSZWd1bGFyOworICAg
ICAgICBjYXNlIFRhaWxDYWxsOgorICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICAg
ICAgICAgIHJldHVybiBDYWxsTW9kZTo6VGFpbDsKKyAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6Cisg
ICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAgIHJldHVybiBDYWxsTW9k
ZTo6Q29uc3RydWN0OworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIEtpbmQga2luZEZv
cihDYWxsTW9kZSBjYWxsTW9kZSkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoY2FsbE1vZGUpIHsK
KyAgICAgICAgY2FzZSBDYWxsTW9kZTo6UmVndWxhcjoKICAgICAgICAgICAgIHJldHVybiBDYWxs
OwotICAgICAgICBjYXNlIENvZGVGb3JDb25zdHJ1Y3Q6CisgICAgICAgIGNhc2UgQ2FsbE1vZGU6
OkNvbnN0cnVjdDoKICAgICAgICAgICAgIHJldHVybiBDb25zdHJ1Y3Q7CisgICAgICAgIGNhc2Ug
Q2FsbE1vZGU6OlRhaWw6CisgICAgICAgICAgICByZXR1cm4gVGFpbENhbGw7CiAgICAgICAgIH0K
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIENh
bGw7CiAgICAgfQogICAgIAotICAgIHN0YXRpYyBLaW5kIHZhcmFyZ3NLaW5kRm9yKENvZGVTcGVj
aWFsaXphdGlvbktpbmQga2luZCkKKyAgICBzdGF0aWMgS2luZCB2YXJhcmdzS2luZEZvcihDYWxs
TW9kZSBjYWxsTW9kZSkKICAgICB7Ci0gICAgICAgIHN3aXRjaCAoa2luZCkgewotICAgICAgICBj
YXNlIENvZGVGb3JDYWxsOgorICAgICAgICBzd2l0Y2ggKGNhbGxNb2RlKSB7CisgICAgICAgIGNh
c2UgQ2FsbE1vZGU6OlJlZ3VsYXI6CiAgICAgICAgICAgICByZXR1cm4gQ2FsbFZhcmFyZ3M7Ci0g
ICAgICAgIGNhc2UgQ29kZUZvckNvbnN0cnVjdDoKKyAgICAgICAgY2FzZSBDYWxsTW9kZTo6Q29u
c3RydWN0OgogICAgICAgICAgICAgcmV0dXJuIENvbnN0cnVjdFZhcmFyZ3M7CisgICAgICAgIGNh
c2UgQ2FsbE1vZGU6OlRhaWw6CisgICAgICAgICAgICByZXR1cm4gVGFpbENhbGxWYXJhcmdzOwog
ICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAg
IHJldHVybiBDYWxsOwogICAgIH0KICAgICAKICAgICBzdGF0aWMgQ29kZVNwZWNpYWxpemF0aW9u
S2luZCBzcGVjaWFsaXphdGlvbktpbmRGb3IoS2luZCBraW5kKQpAQCAtMTU4LDYgKzE4MCw4IEBA
IHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAg
ICAgY2FzZSBDYWxsOgogICAgICAgICBjYXNlIENhbGxWYXJhcmdzOgorICAgICAgICBjYXNlIFRh
aWxDYWxsOgorICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgY2FzZSBHZXR0
ZXJDYWxsOgogICAgICAgICBjYXNlIFNldHRlckNhbGw6CiAgICAgICAgICAgICByZXR1cm4gQ29k
ZUZvckNhbGw7CkBAIC0xNjYsNyArMTkwLDYgQEAgc3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAg
ICAgICAgICAgICByZXR1cm4gQ29kZUZvckNvbnN0cnVjdDsKICAgICAgICAgfQogICAgICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQ29kZUZvckNhbGw7
CiAgICAgfQogICAgIAogICAgIHN0YXRpYyBib29sIGlzVmFyYXJncyhLaW5kIGtpbmQpCkBAIC0x
NzQsNiArMTk3LDcgQEAgc3RydWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgICAgIHN3aXRjaCAo
a2luZCkgewogICAgICAgICBjYXNlIENhbGxWYXJhcmdzOgogICAgICAgICBjYXNlIENvbnN0cnVj
dFZhcmFyZ3M6CisgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBA
IC0xODMsMTEgKzIwNyw0OSBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICB7CiAgICAg
ICAgIHJldHVybiBpc1ZhcmFyZ3Moc3RhdGljX2Nhc3Q8S2luZD4oa2luZCkpOwogICAgIH0KKwor
ICAgIHN0YXRpYyBib29sIGlzVGFpbChLaW5kIGtpbmQpCisgICAgeworICAgICAgICBzd2l0Y2gg
KGtpbmQpIHsKKyAgICAgICAgY2FzZSBUYWlsQ2FsbDoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBib29sIGlzVGFpbCgp
IGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gaXNUYWlsKHN0YXRpY19jYXN0PEtpbmQ+KGtp
bmQpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgQ29kZU9yaWdpbiogY29tcHV0ZUNhbGxlclNraXBw
aW5nRGVhZEZyYW1lcyhJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKKyAgICB7Cisg
ICAgICAgIENvZGVPcmlnaW4qIGNvZGVPcmlnaW47CisgICAgICAgIGJvb2wgdGFpbENhbGxlZTsK
KyAgICAgICAgZG8geworICAgICAgICAgICAgdGFpbENhbGxlZSA9IGlubGluZUNhbGxGcmFtZS0+
aXNUYWlsKCk7CisgICAgICAgICAgICBjb2RlT3JpZ2luID0gJmlubGluZUNhbGxGcmFtZS0+ZGly
ZWN0Q2FsbGVyOworICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5s
aW5lQ2FsbEZyYW1lOworICAgICAgICB9IHdoaWxlIChpbmxpbmVDYWxsRnJhbWUgJiYgdGFpbENh
bGxlZSk7CisgICAgICAgIGlmICh0YWlsQ2FsbGVlKQorICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgICAgIHJldHVybiBjb2RlT3JpZ2luOworICAgIH0KKyAgICBDb2RlT3JpZ2luKiBn
ZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNvbXB1
dGVDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXModGhpcyk7CisgICAgfQorICAgIElubGluZUNhbGxG
cmFtZSogZ2V0Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ0RlYWRGcmFtZXMoKQorICAgIHsKKyAg
ICAgICAgQ29kZU9yaWdpbiogY2FsbGVyID0gZ2V0Q2FsbGVyU2tpcHBpbmdEZWFkRnJhbWVzKCk7
CisgICAgICAgIHJldHVybiBjYWxsZXIgPyBjYWxsZXItPmlubGluZUNhbGxGcmFtZSA6IG51bGxw
dHI7CisgICAgfQogICAgIAogICAgIFZlY3RvcjxWYWx1ZVJlY292ZXJ5PiBhcmd1bWVudHM7IC8v
IEluY2x1ZGVzICd0aGlzJy4KICAgICBXcml0ZUJhcnJpZXI8U2NyaXB0RXhlY3V0YWJsZT4gZXhl
Y3V0YWJsZTsKICAgICBWYWx1ZVJlY292ZXJ5IGNhbGxlZVJlY292ZXJ5OwotICAgIENvZGVPcmln
aW4gY2FsbGVyOworICAgIENvZGVPcmlnaW4gZGlyZWN0Q2FsbGVyOwogCiAgICAgc2lnbmVkIHN0
YWNrT2Zmc2V0IDogMjg7CiAgICAgdW5zaWduZWQga2luZCA6IDM7IC8vIHJlYWwgdHlwZSBpcyBL
aW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50
ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0
SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggZDVhZjkyNzZiNDUzMGMwZTFhYmUzMjc0ZTAzNmUw
NWZlMWYyN2NhOC4uMDRjMDdiNjFhNWY3Mzg5M2ZjMWQ2NjNmNDBiYjY3ODdiZTUwYWE3YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRl
cnByZXRlcklubGluZXMuaApAQCAtMTQ0Miw2ICsxNDQyLDEzIEBAIGJvb2wgQWJzdHJhY3RJbnRl
cnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2Ji
ZXJMaW1pCiAgICAgY2FzZSBSZXR1cm46CiAgICAgICAgIG1fc3RhdGUuc2V0SXNWYWxpZChmYWxz
ZSk7CiAgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBUYWlsQ2FsbDoKKyAgICBjYXNlIFRhaWxD
YWxsVmFyYXJnczoKKyAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CisgICAgICAgIGNs
b2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CisgICAgICAg
IG1fc3RhdGUuc2V0SXNWYWxpZChmYWxzZSk7CisgICAgICAgIGJyZWFrOwogICAgICAgICAKICAg
ICBjYXNlIFRocm93OgogICAgIGNhc2UgVGhyb3dSZWZlcmVuY2VFcnJvcjoKQEAgLTIyNTMsMTMg
KzIyNjAsMTYgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6
ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAKICAgICBjYXNlIENhbGw6CisgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxsOgogICAg
IGNhc2UgQ29uc3RydWN0OgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNlIE5hdGl2ZUNv
bnN0cnVjdDoKICAgICBjYXNlIENhbGxWYXJhcmdzOgogICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJh
cmdzOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbFZhcmFyZ3M6CiAgICAgY2FzZSBDb25zdHJ1
Y3RWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CisgICAgY2FzZSBF
bXVsYXRlZFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNsb2JiZXJXb3JsZChub2Rl
LT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7CiAgICAgICAgIGZvck5vZGUobm9kZSku
bWFrZUhlYXBUb3AoKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGltaW5hdGlvblBoYXNlLmNwcAppbmRleCA2
NDcyM2QyNTNjZDc3YTAwNTAyOWQwOTNjNjQ3ZDJjMTA3MWQwMDlhLi41YjYzZGQ2MTRlM2YwNjZk
ZDVjNTViMDFhMjM5YTQwZWFhYmFjMGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKQEAgLTE2Nyw2
ICsxNjcsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg
ICBjYXNlIENhbGxWYXJhcmdzOgogICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJn
czoKKyAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgICAgICAg
ICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgogICAgICAgICAgICAgICAgICAgICBlc2Nh
cGUobm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICAgICAgICAgICAgICBlc2NhcGUobm9kZS0+Y2hp
bGQzKCkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTU1Myw3ICs1NTUsOSBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg
ICAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoKLSAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVj
dFZhcmFyZ3M6IHsKKyAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CisgICAg
ICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgICAgICAgICAgY2FzZSBF
bXVsYXRlZFRhaWxDYWxsVmFyYXJnczogewogICAgICAgICAgICAgICAgICAgICBOb2RlKiBjYW5k
aWRhdGUgPSBub2RlLT5jaGlsZDIoKS5ub2RlKCk7CiAgICAgICAgICAgICAgICAgICAgIGlmICgh
bV9jYW5kaWRhdGVzLmNvbnRhaW5zKGNhbmRpZGF0ZSkpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBicmVhazsKQEAgLTU3OCwxNiArNTgyLDQ0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2dyYXBoLm1fdmFyQXJnQ2hpbGRyZW4uYXBwZW5kKG5vZGUtPmNoaWxkMygpKTsK
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoTm9kZSogYXJndW1lbnQgOiBhcmd1bWVudHMp
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFyZ0NoaWxkcmVuLmFw
cGVuZChFZGdlKGFyZ3VtZW50KSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRP
cEFuZERlZmF1bHRGbGFncygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5vcCgp
ID09IENhbGxWYXJhcmdzID8gQ2FsbCA6IENvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q2FsbFZhcmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmRE
ZWZhdWx0RmxhZ3MoQ2FsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29uc3RydWN0KTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5v
ZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFRhaWxDYWxsKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgRW11bGF0ZWRUYWls
Q2FsbFZhcmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmRE
ZWZhdWx0RmxhZ3MoRW11bGF0ZWRUYWlsQ2FsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5jaGlsZHJlbiA9
IEFkamFjZW5jeUxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRqYWNlbmN5TGlz
dDo6VmFyaWFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCwgbV9n
cmFwaC5tX3ZhckFyZ0NoaWxkcmVuLnNpemUoKSAtIGZpcnN0Q2hpbGQpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKAot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBDYWxsVmFyYXJncyA/IENhbGxG
b3J3YXJkVmFyYXJncyA6IENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKTsKKyAgICAgICAgICAgICAg
ICAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2Fs
bFZhcmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRG
bGFncyhDYWxsRm9yd2FyZFZhcmFyZ3MpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbnN0cnVjdEZvcndhcmRW
YXJhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAg
ICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldE9wQW5kRGVmYXVsdEZsYWdzKFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRW11bGF0ZWRU
YWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERl
ZmF1bHRGbGFncyhFbXVsYXRlZFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3MpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFz
aWNCbG9jay5oCmluZGV4IDQyMGZmNTExYzhiNmUyMjUwZTM3NzlkZTg2MzlkM2NkNzBhMDgyMmQu
LjkxYjIwMWJjZjBlOWE5MWU0ZjdiZmZjODEwNTBjOWYwNzE2MzdhM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQmFzaWNCbG9jay5oCkBAIC05Miw2ICs5Miw4IEBAIHN0cnVjdCBC
YXNpY0Jsb2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2NrPiB7CiAgICAgICAgICAgICBjYXNlIEJy
YW5jaDoKICAgICAgICAgICAgIGNhc2UgU3dpdGNoOgogICAgICAgICAgICAgY2FzZSBSZXR1cm46
CisgICAgICAgICAgICBjYXNlIFRhaWxDYWxsOgorICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6CiAgICAgICAgICAgICBjYXNlIFVucmVhY2hhYmxlOgogICAgICAgICAgICAgICAgIHJl
dHVybiBOb2RlQW5kSW5kZXgobm9kZSwgaSk7CiAgICAgICAgICAgICAvLyBUaGUgYml0dGVyIGVu
ZCBjYW4gY29udGFpbiBQaGFudG9tcyBhbmQgdGhlIGxpa2UuIFRoZXJlIHdpbGwgcHJvYmFibHkg
b25seSBiZSBvbmUgb3IgdHdvIG5vZGVzIGFmdGVyIHRoZSB0ZXJtaW5hbC4gVGhleSBhcmUgYWxs
IG5vLW9wcyBhbmQgd2lsbCBub3QgaGF2ZSBhbnkgY2hlY2tlZCBjaGlsZHJlbi4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggMGM1ZWVi
NGQwMjVhYWRiMDk0NjRmY2FjYzMwYzFjNjAxZDZiZDk1Ni4uYzYyM2UyYjJhNDljNGRjMzg1ZTNl
YTAwYzZhMWUwMDM5MDI2NmU2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCeXRlQ29kZVBhcnNlci5jcHAKQEAgLTE4MCwxNCArMTgwLDE0IEBAIHByaXZhdGU6CiAgICAg
ICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LCBD
YWxsTGlua1N0YXR1cywKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbik7CiAgICAg
dm9pZCBoYW5kbGVDYWxsKAotICAgICAgICBpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgSW5saW5l
Q2FsbEZyYW1lOjpLaW5kLCB1bnNpZ25lZCBpbnN0cnVjdGlvblNpemUsCisgICAgICAgIGludCBy
ZXN1bHQsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAog
ICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNl
dCwgQ2FsbExpbmtTdGF0dXMpOwotICAgIHZvaWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXpl
LCBpbnQgY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCk7Ci0gICAgdm9p
ZCBoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQpOwotICAgIHZvaWQgaGFuZGxlVmFyYXJnc0NhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBO
b2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7CisgICAgdm9pZCBoYW5kbGVDYWxs
KGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25T
aXplLCBpbnQgY2FsbGVlLCBpbnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCk7CisgICAg
dm9pZCBoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENhbGxNb2RlKTsK
KyAgICB2b2lkIGhhbmRsZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3As
IENhbGxNb2RlKTsKICAgICB2b2lkIGVtaXRGdW5jdGlvbkNoZWNrcyhDYWxsVmFyaWFudCwgTm9k
ZSogY2FsbFRhcmdldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bW50KTsKICAgICB2b2lkIGVt
aXRBcmd1bWVudFBoYW50b21zKGludCByZWdpc3Rlck9mZnNldCwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzKTsKLSAgICB1bnNpZ25lZCBpbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGlu
dCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ29kZVNwZWNpYWxpemF0aW9uS2luZCk7IC8v
IFJldHVybiBVSU5UX01BWCBpZiBpdCdzIG5vdCBhbiBpbmxpbmluZyBjYW5kaWRhdGUuIEJ5IGNv
bnZlbnRpb24sIGludHJpbnNpY3MgaGF2ZSBhIGNvc3Qgb2YgMS4KKyAgICB1bnNpZ25lZCBpbmxp
bmluZ0Nvc3QoQ2FsbFZhcmlhbnQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgQ2Fs
bE1vZGUpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQncyBub3QgYW4gaW5saW5pbmcgY2FuZGlk
YXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhhdmUgYSBjb3N0IG9mIDEuCiAgICAgLy8g
SGFuZGxlIGlubGluaW5nLiBSZXR1cm4gdHJ1ZSBpZiBpdCBzdWNjZWVkZWQsIGZhbHNlIGlmIHdl
IG5lZWQgdG8gcGxhbnQgYSBjYWxsLgogICAgIGJvb2wgaGFuZGxlSW5saW5pbmcoTm9kZSogY2Fs
bFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBjb25zdCBDYWxsTGlua1N0YXR1cyYsIGlu
dCByZWdpc3Rlck9mZnNldCwgVmlydHVhbFJlZ2lzdGVyIHRoaXNBcmd1bWVudCwgVmlydHVhbFJl
Z2lzdGVyIGFyZ3VtZW50c0FyZ3VtZW50LCB1bnNpZ25lZCBhcmd1bWVudHNPZmZzZXQsIGludCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgdW5zaWduZWQgbmV4dE9mZnNldCwgTm9kZVR5cGUg
Y2FsbE9wLCBJbmxpbmVDYWxsRnJhbWU6OktpbmQsIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24p
OwogICAgIGVudW0gQ2FsbGVyTGlua2FiaWxpdHkgeyBDYWxsZXJEb2VzTm9ybWFsTGlua2luZywg
Q2FsbGVyTGlua3NNYW51YWxseSB9OwpAQCAtNjAwLDYgKzYwMCwxMSBAQCBwcml2YXRlOgogICAg
ICAgICByZXR1cm4gbV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgfQog
CisgICAgYm9vbCBhbGxJbmxpbmVGcmFtZXNBcmVUYWlsQ2FsbHMoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICFpbmxpbmVDYWxsRnJhbWUoKSB8fCAhaW5saW5lQ2FsbEZyYW1lKCktPmdldENhbGxl
clNraXBwaW5nRGVhZEZyYW1lcygpOworICAgIH0KKwogICAgIENvZGVPcmlnaW4gY3VycmVudENv
ZGVPcmlnaW4oKQogICAgIHsKICAgICAgICAgcmV0dXJuIENvZGVPcmlnaW4obV9jdXJyZW50SW5k
ZXgsIGlubGluZUNhbGxGcmFtZSgpKTsKQEAgLTY4MCw3ICs2ODUsNyBAQCBwcml2YXRlOgogICAg
IAogICAgIE5vZGUqIGFkZENhbGxXaXRob3V0U2V0dGluZ1Jlc3VsdCgKICAgICAgICAgTm9kZVR5
cGUgb3AsIE9wSW5mbyBvcEluZm8sIE5vZGUqIGNhbGxlZSwgaW50IGFyZ0NvdW50LCBpbnQgcmVn
aXN0ZXJPZmZzZXQsCi0gICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pCisgICAgICAg
IE9wSW5mbyBwcmVkaWN0aW9uKQogICAgIHsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoY2FsbGVl
KTsKICAgICAgICAgc2l6ZV90IHBhcmFtZXRlclNsb3RzID0gSlNTdGFjazo6Q2FsbEZyYW1lSGVh
ZGVyU2l6ZSAtIEpTU3RhY2s6OkNhbGxlckZyYW1lQW5kUENTaXplICsgYXJnQ291bnQ7CkBAIC02
OTAsMTUgKzY5NSwyMiBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFy
Z0NvdW50OyArK2kpCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lz
dGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAKLSAgICAgICAgcmV0dXJuIGFk
ZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBvcCwgb3BJbmZvLCBPcEluZm8ocHJlZGljdGlvbikpOwor
ICAgICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBvcEluZm8sIHByZWRp
Y3Rpb24pOwogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAogICAgICAgICBpbnQgcmVz
dWx0LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291
bnQsIGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlv
bikKICAgICB7CisgICAgICAgIGlmIChvcCA9PSBUYWlsQ2FsbCkgeworICAgICAgICAgICAgaWYg
KGFsbElubGluZUZyYW1lc0FyZVRhaWxDYWxscygpKQorICAgICAgICAgICAgICAgIHJldHVybiBh
ZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQob3AsIE9wSW5mbygpLCBjYWxsZWUsIGFyZ0NvdW50
LCByZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOworICAgICAgICAgICAgb3AgPSBFbXVsYXRlZFRh
aWxDYWxsOworICAgICAgICB9CisKKwogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdpdGhv
dXRTZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3Vu
dCwgcmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICAgICAgb3AsIG9wSW5mbywg
Y2FsbGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAg
ICAgICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWcocmVzdWx0KTsKICAgICAgICAgaWYgKHJl
c3VsdFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQocmVzdWx0UmVnLCBjYWxsKTsKQEAg
LTcxNCwxNCArNzI2LDYyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgU3BlY3VsYXRlZFR5cGUgZ2V0
UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgewot
ICAgICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIHJldHVybiBtX2lubGluZVN0YWNrVG9wLT5t
X3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChs
b2NrZXIsIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9u
OworICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBudWxscHRyOworCisgICAgICAg
IHsKKyAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tU
b3AtPm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBt
X2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25G
b3JCeXRlY29kZU9mZnNldChsb2NrZXIsIGJ5dGVjb2RlSW5kZXgpOworCisgICAgICAgICAgICBp
ZiAocHJlZGljdGlvbiA9PSBTcGVjTm9uZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGhh
dmUgbm8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhbHVlcyB0aGlzCisgICAgICAgICAgICAgICAg
Ly8gbm9kZSBnZW5lcmF0ZXMsIHdlIGNoZWNrIGlmIGJ5IGFueSBjaGFuY2UgaXQgaXMKKyAgICAg
ICAgICAgICAgICAvLyBhIHRhaWwgY2FsbCBvcGNvZGUuIEluIHRoYXQgY2FzZSwgd2Ugd2FsayB1
cCB0aGUKKyAgICAgICAgICAgICAgICAvLyBpbmxpbmUgZnJhbWVzIHRvIGZpbmQgYSBjYWxsIGhp
Z2hlciBpbiB0aGUgY2FsbAorICAgICAgICAgICAgICAgIC8vIGNoYWluIGFuZCB1c2UgaXRzIHBy
ZWRpY3Rpb24uIElmIHdlIG9ubHkgaGF2ZQorICAgICAgICAgICAgICAgIC8vIGlubGluZWQgdGFp
bCBjYWxsIGZyYW1lcywgd2UgdXNlIFNwZWNGdWxsVG9wCisgICAgICAgICAgICAgICAgLy8gdG8g
YXZvaWQgYSBzcHVyaW91cyBPU1IgZXhpdC4KKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiog
aW5zdHJ1Y3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmluc3RydWN0
aW9ucygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIE9wY29kZUlE
IG9wY29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51
Lm9wY29kZSk7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAg
ICAgICAgICAgY2FzZSBvcF90YWlsX2NhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBvcF90YWls
X2NhbGxfdmFyYXJnczogeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFt
ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gU3BlY0Z1bGxUb3A7
CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luID0gaW5saW5lQ2FsbEZy
YW1lKCktPmdldENhbGxlclNraXBwaW5nRGVhZEZyYW1lcygpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIWNvZGVPcmlnaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY3Rpb24g
PSBTcGVjRnVsbFRvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIElubGluZVN0YWNrRW50cnkqIHN0YWNr
ID0gbV9pbmxpbmVTdGFja1RvcDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLT5t
X2lubGluZUNhbGxGcmFtZSAhPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLT5tX2NhbGxlcjsKKyAgICAgICAgICAgICAg
ICAgICAgYnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAg
ICAgICAgICAgICAgIHByb2ZpbGVkQmxvY2sgPSBzdGFjay0+bV9wcm9maWxlZEJsb2NrOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJvZmlsZWRCbG9j
aykgeworICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9j
ay0+bV9sb2NrKTsKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBwcm9maWxlZEJsb2NrLT52YWx1
ZVByb2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQobG9ja2VyLCBieXRlY29kZUluZGV4
KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwcmVkaWN0aW9uOwogICAgIH0KIAogICAg
IFNwZWN1bGF0ZWRUeXBlIGdldFByZWRpY3Rpb24odW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKICAg
ICB7CiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0
aG91dE9TUkV4aXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChwcmVk
aWN0aW9uID09IFNwZWNOb25lKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIG5vIGluZm9ybWF0
aW9uIGFib3V0IHdoYXQgdmFsdWVzIHRoaXMgbm9kZSBnZW5lcmF0ZXMuIEdpdmUgdXAKICAgICAg
ICAgICAgIC8vIG9uIGV4ZWN1dGluZyB0aGlzIGNvZGUsIHNpbmNlIHdlJ3JlIGxpa2VseSB0byBk
byBtb3JlIGRhbWFnZSB0aGFuIGdvb2QuCkBAIC0xMDExLDE2ICsxMDcxLDE3IEBAIHByaXZhdGU6
CiAgICAgbV9jdXJyZW50SW5kZXggKz0gT1BDT0RFX0xFTkdUSChuYW1lKTsgXAogICAgIHJldHVy
biBzaG91bGRDb250aW51ZVBhcnNpbmcKIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2Fs
bChJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtp
bmQpCit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywgTm9k
ZVR5cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIEFTU0VSVChPUENPREVfTEVOR1RI
KG9wX2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY29uc3RydWN0KSk7CisgICAgQVNTRVJUKE9Q
Q09ERV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGwpKTsKICAg
ICBoYW5kbGVDYWxsKAotICAgICAgICBwY1sxXS51Lm9wZXJhbmQsIG9wLCBraW5kLCBPUENPREVf
TEVOR1RIKG9wX2NhbGwpLAorICAgICAgICBwY1sxXS51Lm9wZXJhbmQsIG9wLCBjYWxsTW9kZSwg
T1BDT0RFX0xFTkdUSChvcF9jYWxsKSwKICAgICAgICAgcGNbMl0udS5vcGVyYW5kLCBwY1szXS51
Lm9wZXJhbmQsIC1wY1s0XS51Lm9wZXJhbmQpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsKAotICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRp
b25LaW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICBpbnQgcmVzdWx0LCBO
b2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwK
ICAgICBpbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdp
c3Rlck9mZnNldCkKIHsKICAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KFZpcnR1YWxSZWdpc3Rl
cihjYWxsZWUpKTsKQEAgLTEwMzAsMTcgKzEwOTEsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlQ2FsbCgKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsTGlua0luZm9zLCBt
X2NhbGxDb250ZXh0TWFwKTsKICAgICAKICAgICBoYW5kbGVDYWxsKAotICAgICAgICByZXN1bHQs
IG9wLCBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3Ioa2luZCksIGluc3RydWN0aW9uU2l6ZSwgY2Fs
bFRhcmdldCwKKyAgICAgICAgcmVzdWx0LCBvcCwgY2FsbE1vZGUsIGluc3RydWN0aW9uU2l6ZSwg
Y2FsbFRhcmdldCwKICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVy
T2Zmc2V0LCBjYWxsTGlua1N0YXR1cyk7CiB9CiAgICAgCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpo
YW5kbGVDYWxsKAotICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6
OktpbmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgIGludCByZXN1bHQsIE5v
ZGVUeXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAog
ICAgIE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50
IHJlZ2lzdGVyT2Zmc2V0LAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzKQogewog
ICAgIGhhbmRsZUNhbGwoCi0gICAgICAgIHJlc3VsdCwgb3AsIGtpbmQsIGluc3RydWN0aW9uU2l6
ZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgIHJlc3Vs
dCwgb3AsIElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSksIGluc3RydWN0aW9uU2l6
ZSwgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgIHJlZ2lz
dGVyT2Zmc2V0LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKIH0KIApAQCAtMTA2
MCw3ICsxMTIxLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICBpZiAo
IWNhbGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpIHsKICAgICAgICAgLy8gT2RkbHksIHRoaXMg
Y29uZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVo
YXZlZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fu
bm90IG9wdGltaXplIHRoZW0uCi0gICAgICAgIAorCiAgICAgICAgIGFkZENhbGwocmVzdWx0LCBv
cCwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdp
c3Rlck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDkz
LDEzICsxMTU0LDE0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAg
IH0KICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbE9w
SW5mbywgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zm
c2V0LCBwcmVkaWN0aW9uKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJn
c0NhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2lu
ZCBraW5kKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwoSW5zdHJ1Y3Rp
b24qIHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUpCiB7CiAgICAgQVNTRVJUKE9Q
Q09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSA9PSBPUENPREVfTEVOR1RIKG9wX2NvbnN0cnVj
dF92YXJhcmdzKSk7CisgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSA9
PSBPUENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbF92YXJhcmdzKSk7CiAgICAgCiAgICAgaW50IHJl
c3VsdCA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQgY2FsbGVlID0gcGNbMl0udS5vcGVyYW5k
OwpAQCAtMTEyMiw3ICsxMTg0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJn
c0NhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWwKICAgICAgICAg
ZGF0YUxvZygiICAgIFZhcmFyZ3MgY2FsbCBsaW5rIHN0YXR1cyBhdCAiLCBjdXJyZW50Q29kZU9y
aWdpbigpLCAiOiAiLCBjYWxsTGlua1N0YXR1cywgIlxuIik7CiAgICAgCiAgICAgaWYgKGNhbGxM
aW5rU3RhdHVzLmNhbk9wdGltaXplKCkKLSAgICAgICAgJiYgaGFuZGxlSW5saW5pbmcoY2FsbFRh
cmdldCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0
ZXIodGhpc1JlZyksIFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpLCBmaXJzdFZhckFyZ09mZnNl
dCwgMCwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyksIG9w
LCBJbmxpbmVDYWxsRnJhbWU6OnZhcmFyZ3NLaW5kRm9yKGtpbmQpLCBwcmVkaWN0aW9uKSkgewor
ICAgICAgICAmJiBoYW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3Rh
dHVzLCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdpc3Rlcih0aGlzUmVnKSwgVmlydHVhbFJlZ2lz
dGVyKGFyZ3VtZW50cyksIGZpcnN0VmFyQXJnT2Zmc2V0LCAwLCBtX2N1cnJlbnRJbmRleCArIE9Q
Q09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSwgb3AsIElubGluZUNhbGxGcmFtZTo6dmFyYXJn
c0tpbmRGb3IoY2FsbE1vZGUpLCBwcmVkaWN0aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5j
b21waWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJ
bmxpbmVkQ2FsbCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMTMyLDcgKzExOTQsMTUgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2Rl
VHlwZSBvcCwgQ29kZVNwZWNpYWwKICAgICBkYXRhLT5maXJzdFZhckFyZ09mZnNldCA9IGZpcnN0
VmFyQXJnT2Zmc2V0OwogICAgIAogICAgIE5vZGUqIHRoaXNDaGlsZCA9IGdldChWaXJ0dWFsUmVn
aXN0ZXIodGhpc1JlZykpOwotICAgIAorCisgICAgaWYgKG9wID09IFRhaWxDYWxsVmFyYXJncykg
eworICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpIHsKKyAgICAgICAg
ICAgIGFkZFRvR3JhcGgob3AsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGdl
dChWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSksIHRoaXNDaGlsZCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgb3AgPSBFbXVsYXRlZFRhaWxDYWxsVmFyYXJnczsK
KyAgICB9CisKICAgICBOb2RlKiBjYWxsID0gYWRkVG9HcmFwaChvcCwgT3BJbmZvKGRhdGEpLCBP
cEluZm8ocHJlZGljdGlvbiksIGNhbGxUYXJnZXQsIGdldChWaXJ0dWFsUmVnaXN0ZXIoYXJndW1l
bnRzKSksIHRoaXNDaGlsZCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQp
OwogICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQpAQCAtMTE2Nyw4ICsxMjM3LDkgQEAgdm9p
ZCBCeXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0
LCBpbnQgYXJndW1lbnRDb3VudEkKICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQodmly
dHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiB9CiAKLXVuc2ln
bmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkK
K3Vuc2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVl
LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENhbGxNb2RlIGNhbGxNb2RlKQogewor
ICAgIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCA9IHNwZWNpYWxpemF0aW9uS2luZEZvcihj
YWxsTW9kZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5n
IGlubGluaW5nICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIp
OwogICAgIApAQCAtMTIxMCw3ICsxMjgxLDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6Omlu
bGluaW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKICAg
ICBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBh
YmlsaXR5TGV2ZWwoCiAgICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNh
bGwoKSk7CiAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiICAgIEtpbmQ6ICIs
IGtpbmQsICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgQ2FsbCBtb2RlOiAiLCBjYWxsTW9k
ZSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBjbG9zdXJlIGNhbGw6ICIsIGNhbGxl
ZS5pc0Nsb3N1cmVDYWxsKCksICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgQ2FwYWJpbGl0
eSBsZXZlbDogIiwgY2FwYWJpbGl0eUxldmVsLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAg
IE1pZ2h0IGlubGluZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihjb2RlQmxv
Y2ssIGtpbmQpLCAiXG4iKTsKQEAgLTEyODEsNyArMTM1Miw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJz
ZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBD
YWxsVmFyCiB7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQg
PSBJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKLSAg
ICBBU1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMs
IHNwZWNpYWxpemF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOworICAgIEFTU0VSVChpbmxpbmluZ0Nv
c3QoY2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpj
YWxsTW9kZUZvcihraW5kKSkgIT0gVUlOVF9NQVgpOwogICAgIAogICAgIENvZGVCbG9jayogY29k
ZUJsb2NrID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9ja0Zv
cihzcGVjaWFsaXphdGlvbktpbmQpOwogICAgIGluc2VydENoZWNrcyhjb2RlQmxvY2spOwpAQCAt
MTM3Niw3ICsxNDQ3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBj
YWxsVGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAgICAgbV9jdXJy
ZW50QmxvY2sgPSBtX2dyYXBoLmxhc3RCbG9jaygpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIAorCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VERkdCeXRlQ29kZVBhcnNpbmcoKSkKICAg
ICAgICAgZGF0YUxvZygiICAgIENyZWF0aW5nIG5ldyBibG9jayBhZnRlciBpbmxpbmluZy5cbiIp
OwogCkBAIC0xNDgzLDcgKzE1NTQsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9J
bmxpbmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAg
ICB9CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdD
b3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2lu
ZCk7CisgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBh
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihr
aW5kKSk7CiAgICAgaWYgKG15SW5saW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTMzNTEsNiArMzQyMiwxMiBAQCBib29sIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICB9CiAKICAgICAgICAgY2Fz
ZSBvcF9yZXQ6CisgICAgICAgICAgICBpZiAobV9jdXJyZW50QmxvY2stPnRlcm1pbmFsKCkpIHsK
KyAgICAgICAgICAgICAgICAvLyBXZSBjb3VsZCBiZSB0aGUgZHVtbXkgcmV0dXJuIGFmdGVyIGEg
bm9uLWlubGluZWQsIG5vbi1lbXVsYXRlZCB0YWlsIGNhbGwKKyAgICAgICAgICAgICAgICBOb2Rl
KiB0ZXJtaW5hbCA9IG1fY3VycmVudEJsb2NrLT50ZXJtaW5hbCgpOworICAgICAgICAgICAgICAg
IEFTU0VSVF9VTlVTRUQodGVybWluYWwsIHRlcm1pbmFsLT5vcCgpID09IFJldHVybiB8fCB0ZXJt
aW5hbC0+b3AoKSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFy
Z3MpOworICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3JldCk7CisgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBm
bHVzaEZvclJldHVybigpOwogICAgICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5t
X3JldHVyblZhbHVlLmlzVmFsaWQoKSkKQEAgLTMzOTgsMjIgKzM0NzUsMzcgQEAgYm9vbCBCeXRl
Q29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIExBU1Rf
T1BDT0RFKG9wX3Rocm93X3N0YXRpY19lcnJvcik7CiAgICAgICAgICAgICAKICAgICAgICAgY2Fz
ZSBvcF9jYWxsOgotICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENh
bGwsIENvZGVGb3JDYWxsKTsKKyAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0
aW9uLCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CiAgICAgICAgICAgICAvLyBWZXJpZnkgdGhh
dCBoYW5kbGVDYWxsKCksIHdoaWNoIGNvdWxkIGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCBkaWRu
J3QgdHJhc2ggbV9jdXJyZW50SW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJl
bnRJbnN0cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgTkVYVF9P
UENPREUob3BfY2FsbCk7Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIG9wX3RhaWxfY2Fs
bDoKKyAgICAgICAgICAgIGZsdXNoRm9yUmV0dXJuKCk7CisgICAgICAgICAgICBoYW5kbGVDYWxs
KGN1cnJlbnRJbnN0cnVjdGlvbiwgVGFpbENhbGwsIENhbGxNb2RlOjpUYWlsKTsKKyAgICAgICAg
ICAgIC8vIFZlcmlmeSB0aGF0IGhhbmRsZUNhbGwoKSwgd2hpY2ggY291bGQgaGF2ZSBpbmxpbmVk
IHRoZSBjYWxsZWUsIGRpZG4ndCB0cmFzaCBtX2N1cnJlbnRJbnN0cnVjdGlvbgorICAgICAgICAg
ICAgQVNTRVJUKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbik7Cisg
ICAgICAgICAgICAvLyBXZSBsZXQgdGhlIGZvbGxvd2luZyBvcF9yZXQgaGFuZGxlIGNhc2VzIHJl
bGF0ZWQgdG8KKyAgICAgICAgICAgIC8vIGlubGluaW5nIHRvIGtlZXAgdGhpbmdzIHNpbXBsZS4K
KyAgICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RhaWxfY2FsbCk7CisKICAgICAgICAgY2FzZSBv
cF9jb25zdHJ1Y3Q6Ci0gICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwg
Q29uc3RydWN0LCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGhhbmRsZUNhbGwoY3Vy
cmVudEluc3RydWN0aW9uLCBDb25zdHJ1Y3QsIENhbGxNb2RlOjpDb25zdHJ1Y3QpOwogICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0KTsKICAgICAgICAgICAgIAogICAgICAgICBj
YXNlIG9wX2NhbGxfdmFyYXJnczogewotICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGwoY3Vy
cmVudEluc3RydWN0aW9uLCBDYWxsVmFyYXJncywgQ29kZUZvckNhbGwpOworICAgICAgICAgICAg
aGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsVmFyYXJncywgQ2FsbE1v
ZGU6OlJlZ3VsYXIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF92YXJhcmdzKTsK
ICAgICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6IHsKKyAgICAg
ICAgICAgIGZsdXNoRm9yUmV0dXJuKCk7CisgICAgICAgICAgICBoYW5kbGVWYXJhcmdzQ2FsbChj
dXJyZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsVmFyYXJncywgQ2FsbE1vZGU6OlRhaWwpOworICAg
ICAgICAgICAgTkVYVF9PUENPREUob3BfdGFpbF9jYWxsX3ZhcmFyZ3MpOworICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczogewotICAgICAg
ICAgICAgaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBDb25zdHJ1Y3RWYXJh
cmdzLCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGhhbmRsZVZhcmFyZ3NDYWxsKGN1
cnJlbnRJbnN0cnVjdGlvbiwgQ29uc3RydWN0VmFyYXJncywgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7
CiAgICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7CiAgICAgICAg
IH0KICAgICAgICAgICAgIApAQCAtNDAzNSw3ICs0MTI3LDcgQEAgQnl0ZUNvZGVQYXJzZXI6Oklu
bGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgICAgICBtX2lubGluZUNh
bGxGcmFtZS0+aXNDbG9zdXJlQ2FsbCA9IGZhbHNlOwogICAgICAgICB9IGVsc2UKICAgICAgICAg
ICAgIG1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID0gdHJ1ZTsKLSAgICAgICAgbV9p
bmxpbmVDYWxsRnJhbWUtPmNhbGxlciA9IGJ5dGVDb2RlUGFyc2VyLT5jdXJyZW50Q29kZU9yaWdp
bigpOworICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyID0gYnl0ZUNvZGVQ
YXJzZXItPmN1cnJlbnRDb2RlT3JpZ2luKCk7CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5h
cmd1bWVudHMucmVzaXplVG9GaXQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOyAvLyBTZXQg
dGhlIG51bWJlciBvZiBhcmd1bWVudHMgaW5jbHVkaW5nIHRoaXMsIGJ1dCBkb24ndCBjb25maWd1
cmUgdGhlIHZhbHVlIHJlY292ZXJpZXMsIHlldC4KICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUt
PmtpbmQgPSBraW5kOwogICAgICAgICAKQEAgLTQxMTAsNyArNDIwMiw3IEBAIHZvaWQgQnl0ZUNv
ZGVQYXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVt
cFNvdXJjZUF0REZHVGltZSgpKSkgewogICAgICAgICBWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1w
PiYgZGVmZXJyZWRTb3VyY2VEdW1wID0gbV9ncmFwaC5tX3BsYW4uY2FsbGJhY2stPmVuc3VyZURl
ZmVycmVkU291cmNlRHVtcCgpOwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKLSAg
ICAgICAgICAgIERlZmVycmVkU291cmNlRHVtcCBkdW1wKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJz
aW9uKCksIG1fY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQsIGlubGluZUNhbGxGcmFtZSgpLT5j
YWxsZXIpOworICAgICAgICAgICAgRGVmZXJyZWRTb3VyY2VEdW1wIGR1bXAoY29kZUJsb2NrLT5i
YXNlbGluZVZlcnNpb24oKSwgbV9jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCwgaW5saW5lQ2Fs
bEZyYW1lKCktPmRpcmVjdENhbGxlcik7CiAgICAgICAgICAgICBkZWZlcnJlZFNvdXJjZUR1bXAu
YXBwZW5kKGR1bXApOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRlZmVycmVkU291cmNl
RHVtcC5hcHBlbmQoRGVmZXJyZWRTb3VyY2VEdW1wKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9u
KCkpKTsKQEAgLTQxMjEsNyArNDIxMyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29k
ZUJsb2NrKCkKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAgICAgICAgICBk
YXRhTG9nKAogICAgICAgICAgICAgICAgICIgZm9yIGlubGluaW5nIGF0ICIsIENvZGVCbG9ja1dp
dGhKSVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpLAotICAgICAgICAgICAgICAg
ICIgIiwgaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxlcik7CisgICAgICAgICAgICAgICAgIiAiLCBp
bmxpbmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAgICAgICAgfQogICAgICAgICBkYXRh
TG9nKAogICAgICAgICAgICAgIjogbmVlZHNBY3RpdmF0aW9uID0gIiwgY29kZUJsb2NrLT5uZWVk
c0FjdGl2YXRpb24oKSwKQEAgLTQyMDUsNyArNDI5Nyw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OnBhcnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICAgICAg
ICAgIG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgfSB3aGlsZSAobV9jdXJyZW50
SW5kZXggPCBsaW1pdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NhcGFiaWxpdGllcy5jcHAKaW5kZXggZWY0YzI0NzQ5Yjc4ZmE2ZTA5YTRjM2Q5YzI5MDEzZWFh
NjVkYWE5Mi4uMWQ3MTc3MDk3OWVkMGM3MzIyNDdiYTMyZWE4MzRmYTIxYTE3OGY2MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTc5LDgg
KzE3OSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29k
ZUlELCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfdGhyb3c6CiAg
ICAgY2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CiAgICAgY2FzZSBvcF9jYWxsOgorICAgIGNh
c2Ugb3BfdGFpbF9jYWxsOgogICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgIGNhc2Ugb3BfY2Fs
bF92YXJhcmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF9j
b25zdHJ1Y3RfdmFyYXJnczoKICAgICBjYXNlIG9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgog
ICAgIGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDVjNmQxN2RjZDg1NGZhMzkxZTI1NTA2NTY4NmRh
ZmYwOWNjYmY0MzQuLjFlZmQzZDBjYTg0NWI4MmIxMzEwNzc4MmNlMjE4NzUzYTY5MmU0NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zNzYsMTEgKzM3
NiwxNCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBS
ZWFkRnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgQXJyYXlQdXNoOgogICAg
IGNhc2UgQXJyYXlQb3A6CiAgICAgY2FzZSBDYWxsOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2Fs
bDoKICAgICBjYXNlIENvbnN0cnVjdDoKICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgY2FzZSBO
YXRpdmVDb25zdHJ1Y3Q6CiAgICAgY2FzZSBDYWxsVmFyYXJnczoKICAgICBjYXNlIENhbGxGb3J3
YXJkVmFyYXJnczoKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgorICAgIGNhc2Ug
RW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0VmFyYXJn
czoKICAgICBjYXNlIENvbnN0cnVjdEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgVG9QcmltaXRp
dmU6CkBAIC0zODksNiArMzkyLDEzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAg
IHJlYWQoV29ybGQpOwogICAgICAgICB3cml0ZShIZWFwKTsKICAgICAgICAgcmV0dXJuOworCisg
ICAgY2FzZSBUYWlsQ2FsbDoKKyAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICBjYXNlIFRh
aWxDYWxsRm9yd2FyZFZhcmFyZ3M6CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0
ZShTaWRlU3RhdGUpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0R2V0
dGVyOgogICAgICAgICByZWFkKEdldHRlclNldHRlcl9nZXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU5NDY4NDBkMmY4ODA5NTc5NjkxYzY4Zjk2YzAw
ZDc1ZDE1YTZiODQuLjcyZjA2Y2JmM2FlMTczNDhkNDhlMGE4MzhmMGIxNDcxOGQ3NjgyOGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExNywxMiArMTE3LDE2
IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBh
cmVFcUNvbnN0YW50OgogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgQ2FsbDoK
KyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CiAgICAgY2Fz
ZSBDYWxsVmFyYXJnczoKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgogICAgIGNh
c2UgQ29uc3RydWN0VmFyYXJnczoKICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgIGNhc2UgQ2Fs
bEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CisgICAg
Y2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZv
cndhcmRWYXJhcmdzOgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNlIE5hdGl2ZUNvbnN0
cnVjdDoKICAgICBjYXNlIEJyZWFrcG9pbnQ6CkBAIC0xNDksNiArMTUzLDggQEAgYm9vbCBkb2Vz
R0MoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2Ug
U3dpdGNoOgogICAgIGNhc2UgUmV0dXJuOgorICAgIGNhc2UgVGFpbENhbGw6CisgICAgY2FzZSBU
YWlsQ2FsbFZhcmFyZ3M6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIENvdW50RXhlY3V0aW9u
OgogICAgIGNhc2UgRm9yY2VPU1JFeGl0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Rml4dXBQaGFzZS5jcHAKaW5kZXggMWFmZmExYWI4ZmU5YzEzMDIzODFlODJhMWUyZWU0N2EyZmZl
NjJjMC4uNzc2MDk4YjNlMWE2OTU3YjBhMGFmMzQ0ODljN2E0ODhhYWJhOTQ1MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xMjc4LDExICsxMjc4
LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIGNhc2Ug
VmFySW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBDYWxsOgorICAgICAgICBjYXNl
IEVtdWxhdGVkVGFpbENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgogICAgICAgICBjYXNl
IENhbGxWYXJhcmdzOgorICAgICAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgogICAg
ICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJh
cmdzOgogICAgICAgICBjYXNlIENvbnN0cnVjdEZvcndhcmRWYXJhcmdzOgorICAgICAgICBjYXNl
IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZv
cndhcmRWYXJhcmdzOgogICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBjYXNlIFBy
b2ZpbGVDb250cm9sRmxvdzoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgpAQCAtMTMwMiw2ICsx
MzA2LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBSZXR1cm46CisgICAgICAgIGNhc2UgVGFp
bENhbGw6CisgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICBjYXNlIFRocm93
OgogICAgICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIGNhc2UgQ291bnRF
eGVjdXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBo
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDBjYzkz
YTU5MWVkOTdkMWE5OTQwMjZmYTZiOGY1ODlmMjljZDUwODkuLjcxODRhYTYzOWUyYzdjOTczODM0
ZWUyZGMyZjVlMWI0ODNmYWZjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGgu
Y3BwCkBAIC04ODQsMzAgKzg4NCwzMSBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3Io
SW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCiAKIGJvb2wgR3JhcGg6OmlzTGl2ZUlu
Qnl0ZWNvZGUoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIENvZGVPcmlnaW4gY29kZU9yaWdpbikK
IHsKKyAgICBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luUHRyID0gJmNvZGVPcmlnaW47CiAgICAgZm9y
ICg7OykgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gVmlydHVhbFJlZ2lzdGVyKAot
ICAgICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSAtIGNvZGVPcmlnaW4uc3RhY2tPZmZzZXQoKSk7
CisgICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpIC0gY29kZU9yaWdpblB0ci0+c3RhY2tPZmZz
ZXQoKSk7CiAgICAgICAgIAotICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IGNvZGVPcmln
aW4uc3RhY2tPZmZzZXQoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpIHsKKyAgICAg
ICAgaWYgKG9wZXJhbmQub2Zmc2V0KCkgPCBjb2RlT3JpZ2luUHRyLT5zdGFja09mZnNldCgpICsg
SlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkgewogICAgICAgICAgICAgaWYgKHJlZy5pc0Fy
Z3VtZW50KCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWcub2Zmc2V0KCkg
PCBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgICAgICBpZiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwK
KyAgICAgICAgICAgICAgICBpZiAoY29kZU9yaWdpblB0ci0+aW5saW5lQ2FsbEZyYW1lLT5pc0Ns
b3N1cmVDYWxsCiAgICAgICAgICAgICAgICAgICAgICYmIHJlZy5vZmZzZXQoKSA9PSBKU1N0YWNr
OjpDYWxsZWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
ICAgIAotICAgICAgICAgICAgICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNW
YXJhcmdzKCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZU9yaWdpblB0ci0+aW5saW5lQ2FsbEZy
YW1lLT5pc1ZhcmFyZ3MoKQogICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0g
SlNTdGFjazo6QXJndW1lbnRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAg
ICAgICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gbGl2ZW5lc3NGb3IoY29k
ZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUpLm9wZXJhbmRJc0xpdmUoCi0gICAgICAgICAgICAgICAg
cmVnLm9mZnNldCgpLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgcmV0
dXJuIGxpdmVuZXNzRm9yKGNvZGVPcmlnaW5QdHItPmlubGluZUNhbGxGcmFtZSkub3BlcmFuZElz
TGl2ZSgKKyAgICAgICAgICAgICAgICByZWcub2Zmc2V0KCksIGNvZGVPcmlnaW5QdHItPmJ5dGVj
b2RlSW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOworICAgICAgICBJ
bmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW5QdHItPmlubGluZUNh
bGxGcmFtZTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICBicmVh
azsKIApAQCAtOTE3LDcgKzkxOCwxMSBAQCBib29sIEdyYXBoOjppc0xpdmVJbkJ5dGVjb2RlKFZp
cnR1YWxSZWdpc3RlciBvcGVyYW5kLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgICAgICAg
ICAmJiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlZy50b0FyZ3VtZW50KCkpIDwgaW5saW5lQ2FsbEZy
YW1lLT5hcmd1bWVudHMuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IAotICAgICAgICBjb2RlT3JpZ2luID0gaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXI7CisgICAgICAg
IGNvZGVPcmlnaW5QdHIgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nRGVhZEZy
YW1lcygpOworCisgICAgICAgIC8vIFRoZSBmaXJzdCBpbmxpbmUgY2FsbCBmcmFtZSBjb3VsZCBi
ZSBhbiBpbmxpbmUgdGFpbCBjYWxsCisgICAgICAgIGlmICghY29kZU9yaWdpblB0cikKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAppbmRleCA1MTQ4YzI2ZDhlMzdlNzczMjQ0ZThkOWIyNDQzNWIy
M2FhMzAyZTI0Li4wMjA5MjQ4ZTYwMDAzZTJiZjQyMWMzYWJkOWJhZDk2NTJkOWMxOTczIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC02OTYsOSArNjk2LDExIEBAIHB1Ymxp
YzoKICAgICAgICAgLy8gY2FsbCwgYm90aCBjYWxsZWUgYW5kIGNhbGxlciB3aWxsIHNlZSB0aGUg
dmFyaWFibGVzIGxpdmUuCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBleGNsdXNpb25TdGFydDsK
ICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGV4Y2x1c2lvbkVuZDsKKworICAgICAgICBDb2RlT3Jp
Z2luKiBjb2RlT3JpZ2luUHRyID0gJmNvZGVPcmlnaW47CiAgICAgICAgIAogICAgICAgICBmb3Ig
KDs7KSB7Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNv
ZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBp
bmxpbmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luUHRyLT5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAg
ICAgICBWaXJ0dWFsUmVnaXN0ZXIgc3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDApOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBp
ZiAoaW5saW5lQ2FsbEZyYW1lKSB7CkBAIC03MTAsNyArNzEyLDcgQEAgcHVibGljOgogICAgICAg
ICAgICAgCiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJs
b2NrRm9yKGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBGdWxsQnl0ZWNvZGVMaXZlbmVz
cyYgZnVsbExpdmVuZXNzID0gbGl2ZW5lc3NGb3IoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIGNv
bnN0IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gZnVsbExpdmVuZXNzLmdldExpdmVuZXNzKGNv
ZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9y
JiBsaXZlbmVzcyA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZlbmVzcyhjb2RlT3JpZ2luUHRyLT5ieXRl
Y29kZUluZGV4KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNv
ZGVCbG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7IHJlbGF0aXZlTG9jYWwtLTspIHsKICAgICAg
ICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gc3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVn
aXN0ZXJGb3JMb2NhbChyZWxhdGl2ZUxvY2FsKTsKICAgICAgICAgICAgICAgICAKQEAgLTczNyw3
ICs3MzksMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yIChWaXJ0dWFsUmVnaXN0ZXIgcmVn
ID0gZXhjbHVzaW9uU3RhcnQ7IHJlZyA8IGV4Y2x1c2lvbkVuZDsgcmVnICs9IDEpCiAgICAgICAg
ICAgICAgICAgZnVuY3RvcihyZWcpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjb2RlT3Jp
Z2luID0gaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXI7CisgICAgICAgICAgICBjb2RlT3JpZ2luUHRy
ID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoKTsKKworICAg
ICAgICAgICAgLy8gVGhlIGZpcnN0IGlubGluZSBjYWxsIGZyYW1lIGNvdWxkIGJlIGFuIGlubGlu
ZSB0YWlsIGNhbGwKKyAgICAgICAgICAgIGlmICghY29kZU9yaWdpblB0cikKKyAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggOWJjY2E5
ZTQ1NDkwYzM5MjAxYWFlZDBiYzg0YzAyYzQyMjc1ZmUzNi4uYTBlZGI5NmRhZGE0NzdiZGIxZDEw
YjI4NzZjZTM3Yjc0ZTdkM2ZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTM5Myw2ICszOTMsOCBAQCBpbmxp
bmUgYm9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2Nlc3NvcnMoQmFzaWNCbG9j
ayogYmFzaWNCbG9jaykKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0dXJuOgorICAgIGNh
c2UgVGFpbENhbGw6CisgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CiAgICAgY2FzZSBVbnJlYWNo
YWJsZToKICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiA9PSBJ
bnZhbGlkQnJhbmNoRGlyZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGUuaAppbmRleCA5Y2EyY2RjNjgxOGEyM2JjMmE2YjdjMTM2MzBjNGI5
MjJiYmVkMzFmLi5jNzBiYmI0ZWM2NTQ0MTI5OTg3MTNmOWNmZGQ0YjEwM2Q1YzlmOGQ4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtOTk1LDYgKzk5NSwxMCBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIENhbGxWYXJhcmdz
OgogICAgICAgICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3M6CisgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAgICAg
Y2FzZSBFbXVsYXRlZFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2FzZSBFbXVsYXRlZFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICAg
ICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwpAQCAtMTA5Miw2ICsxMDk2LDggQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEJyYW5j
aDoKICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgorICAgICAgICBj
YXNlIFRhaWxDYWxsOgorICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgY2Fz
ZSBVbnJlYWNoYWJsZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0
OgpAQCAtMTI0MiwxMCArMTI0OCwxMyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgR2V0
QnlJZEZsdXNoOgogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIENhbGw6Cisg
ICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CiAg
ICAgICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbFZh
cmFyZ3M6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICAgICAgY2FzZSBDYWxs
Rm9yd2FyZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJh
cmdzOgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3Ry
dWN0OgogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlVHlwZS5oCmluZGV4IDY5ZjZhZTVlYzk5NmJiYzhjOTQ1MGQzNDQ4YjA2ODRhODI5YmY2
OTAuLjA0YTA0MzdkODIxN2ZlMzE3ODVkNTc4NzRjNDNiZDVjMzAxOWQzMzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIzOSw2ICsyMzksOSBAQCBuYW1lc3Bh
Y2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2FsbEZvcndhcmRWYXJhcmdzLCBO
b2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ29uc3RydWN0VmFy
YXJncywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENvbnN0
cnVjdEZvcndhcmRWYXJhcmdzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisg
ICAgbWFjcm8oRW11bGF0ZWRUYWlsQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0
ZSB8IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oRW11bGF0ZWRUYWlsQ2FsbFZhcmFyZ3Ms
IE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbXVsYXRlZFRh
aWxDYWxsRm9yd2FyZFZhcmFyZ3MsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwK
ICAgICBtYWNybyhOYXRpdmVDYWxsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwg
Tm9kZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhOYXRpdmVDb25zdHJ1Y3QsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIFwKQEAgLTMwNCw2
ICszMDcsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQnJh
bmNoLCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVy
YXRlKSBcCiAgICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8o
VGFpbENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAorICAgIG1hY3Jv
KFRhaWxDYWxsVmFyYXJncywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFRhaWxDYWxs
Rm9yd2FyZFZhcmFyZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhVbnJlYWNoYWJs
ZSwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAgICAvKiBDb3VudCBleGVjdXRpb24uICov
XApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGls
ZXJDb21tb24uY3BwCmluZGV4IDU4ZGI5ZmE0YjE1MWQ0MjVlMmJjNGM4Y2IwMmRkY2Y2YmFhZmVi
YTAuLjZjY2U4OTY5ODExZjdlOTA3NDQzZWViZjIzOTk3Y2UxMmY5ZGRkMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYg
aml0LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6
Okp1bXBMaXN0IGxvb3BUaHJlc2hvbGQ7CiAgICAgCi0gICAgZm9yIChJbmxpbmVDYWxsRnJhbWUq
IGlubGluZUNhbGxGcmFtZSA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgaW5s
aW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5p
bmxpbmVDYWxsRnJhbWUpIHsKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZy
YW1lID0gZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7
IGlubGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyLmlubGluZUNh
bGxGcmFtZSkgewogICAgICAgICBsb29wVGhyZXNob2xkLmFwcGVuZCgKICAgICAgICAgICAgIGpp
dC5icmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Ok5vblplcm8s
CkBAIC0xMzYsNjMgKzEzNiw4MCBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJz
JiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogCiB2b2lkIHJlaWZ5SW5saW5lZENhbGxG
cmFtZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogeworICAg
IC8vIEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVy
Zm9ybWluZyBhbiBPU1IgZXhpdAorICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBj
YWxscy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3
NTExCiAgICAgQVNTRVJUKGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5qaXRUeXBlKCkgPT0gSklU
Q29kZTo6QmFzZWxpbmVKSVQpOwogICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRy
dXN0ZWRJbW1QdHIoaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcilKU1N0YWNrOjpDb2RlQmxvY2spKTsKIAotICAgIENv
ZGVPcmlnaW4gY29kZU9yaWdpbjsKLSAgICBmb3IgKGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9y
aWdpbjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7Ci0gICAgICAgIElubGluZUNhbGxGcmFtZSogaW5s
aW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgIENvZGVC
bG9jayogYmFzZWxpbmVDb2RlQmxvY2sgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9y
aWdpbik7Ci0gICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBq
aXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpOwotICAgICAg
ICB2b2lkKiBqdW1wVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2Rl
T3JpZ2luOworICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9y
aWdpbiAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3Jp
Z2luLT5pbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nRGVhZEZyYW1lcygpKSB7Cisg
ICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5s
aW5lQ2FsbEZyYW1lOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gaml0
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKCpjb2RlT3JpZ2luKTsKKyAgICAgICAgQ29kZU9yaWdpbiog
dHJ1ZUNhbGxlciA9IGlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVyU2tpcHBpbmdEZWFkRnJhbWVz
KCk7CiAgICAgICAgIHZvaWQqIHRydWVSZXR1cm5QQyA9IG51bGxwdHI7Ci0gICAgICAgIAotICAg
ICAgICB1bnNpZ25lZCBjYWxsQnl0ZWNvZGVJbmRleCA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVy
LmJ5dGVjb2RlSW5kZXg7Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGlubGluZUNhbGxGcmFt
ZS0+a2luZCkgewotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKLSAgICAgICAg
Y2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKLSAgICAgICAgY2FzZSBJbmxpbmVDYWxs
RnJhbWU6OkNhbGxWYXJhcmdzOgotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3Ry
dWN0VmFyYXJnczogewotICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPQot
ICAgICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5nZXRDYWxsTGlua0lu
Zm9Gb3JCeXRlY29kZUluZGV4KGNhbGxCeXRlY29kZUluZGV4KTsKLSAgICAgICAgICAgIFJFTEVB
U0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGp1bXBU
YXJnZXQgPSBjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRy
ZXNzKCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAg
ICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsOgotICAgICAgICBjYXNlIElubGlu
ZUNhbGxGcmFtZTo6U2V0dGVyQ2FsbDogewotICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8q
IHN0dWJJbmZvID0KLSAgICAgICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+
ZmluZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKLSAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKLSAgICAgICAgICAgIAorICAgICAgICBHUFJSZWcg
Y2FsbGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcjsKKworICAgICAgICBp
ZiAoIXRydWVDYWxsZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmlz
VGFpbCgpKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVz
cyhHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgp
KSwgR1BSSW5mbzo6cmVnVDMpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJl
Z1QzLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFt
ZS0+cmV0dXJuUENPZmZzZXQoKSkpOworICAgICAgICAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlI
ZWxwZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OmNh
bGxlckZyYW1lT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICBjYWxsZXJG
cmFtZUdQUiA9IEdQUkluZm86OnJlZ1QzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
Q29kZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciA9IGppdC5iYXNlbGluZUNvZGVC
bG9ja0ZvcigqdHJ1ZUNhbGxlcik7CisgICAgICAgICAgICB1bnNpZ25lZCBjYWxsQnl0ZWNvZGVJ
bmRleCA9IHRydWVDYWxsZXItPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgICAgICB2b2lkKiBqdW1w
VGFyZ2V0ID0gbnVsbHB0cjsKKwogICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVDYWxsRnJhbWUt
PmtpbmQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsOgot
ICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBqaXQudm0oKS0+Z2V0Q1RJU3R1YihiYXNlbGlu
ZUdldHRlclJldHVyblRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1l
OjpTZXR0ZXJDYWxsOgotICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBqaXQudm0oKS0+Z2V0
Q1RJU3R1YihiYXNlbGluZVNldHRlclJldHVyblRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0
YWJsZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOgor
ICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKKyAgICAgICAgICAg
IGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsVmFyYXJnczoKKyAgICAgICAgICAgIGNhc2UgSW5s
aW5lQ2FsbEZyYW1lOjpDb25zdHJ1Y3RWYXJhcmdzOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVD
YWxsRnJhbWU6OlRhaWxDYWxsOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OlRh
aWxDYWxsVmFyYXJnczogeworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJ
bmZvID0KKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmdl
dENhbGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY2FsbEJ5dGVjb2RlSW5kZXgpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CisKKyAgICAgICAgICAgICAg
ICBqdW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24oKS5leGVjdXRh
YmxlQWRkcmVzcygpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbDoK
KyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpTZXR0ZXJDYWxsOiB7CisgICAgICAg
ICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0KKyAgICAgICAgICAgICAgICAg
ICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmZpbmRTdHViSW5mbyhDb2RlT3JpZ2luKGNh
bGxCeXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1Yklu
Zm8pOworCisgICAgICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVDYWxsRnJhbWUtPmtpbmQpIHsK
KyAgICAgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbDoKKyAgICAg
ICAgICAgICAgICAgICAganVtcFRhcmdldCA9IGppdC52bSgpLT5nZXRDVElTdHViKGJhc2VsaW5l
R2V0dGVyUmV0dXJuVGh1bmtHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOwor
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIElubGluZUNh
bGxGcmFtZTo6U2V0dGVyQ2FsbDoKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IGpp
dC52bSgpLT5nZXRDVElTdHViKGJhc2VsaW5lU2V0dGVyUmV0dXJuVGh1bmtHZW5lcmF0b3IpLmNv
ZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICB0cnVlUmV0dXJuUEMgPSBzdHViSW5mby0+Y2FsbFJl
dHVybkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZv
LT5wYXRjaC5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IH0KKworICAgICAgICAgICAgaWYgKHRydWVDYWxs
ZXItPmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCisgICAg
ICAgICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHRydWVDYWxsZXIt
PmlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwK
KyAgICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsCisgICAgICAg
ICAgICAgICAgICAgIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBjYWxsZXJGcmFt
ZUdQUiA9IEdQUkluZm86OnJlZ1QzOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAg
ICAgICAgICB0cnVlUmV0dXJuUEMgPSBzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVs
QXRPZmZzZXQoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvRG9u
ZSkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IH0K
IAotICAgICAgICBHUFJSZWcgY2FsbGVyRnJhbWVHUFI7Ci0gICAgICAgIGlmIChpbmxpbmVDYWxs
RnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGppdC5hZGRQdHIo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIuaW5s
aW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBHUFJJ
bmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOwotICAgICAgICAgICAgY2Fs
bGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpyZWdUMzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICBjYWxsZXJGcmFtZUdQUiA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyOwotICAgICAgICAK
LSAgICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1w
VGFyZ2V0KSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxs
RnJhbWUtPnJldHVyblBDT2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihBc3Nl
bWJseUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEFzc2VtYmx5SGVscGVyczo6
YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7
CisgICAgICAgIH0KKwogICAgICAgICBpZiAodHJ1ZVJldHVyblBDKQogICAgICAgICAgICAgaml0
LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0cnVlUmV0dXJuUEMpLCBB
c3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNp
emUoKSkub2Zmc2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTIwMiwxMyAr
MjE5LDEzIEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwg
Y29uc3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkp
LCBBc3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAjaWYgVVNF
KEpTVkFMVUU2NCkKICAgICAgICAgaml0LnN0b3JlNjQoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5
SGVscGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFt
ZU9mZnNldCgpKSk7Ci0gICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxGcmFtZTo6
TG9jYXRpb246OmVuY29kZUFzQnl0ZWNvZGVPZmZzZXQoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4
KTsKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbEZyYW1lOjpMb2NhdGlvbjo6
ZW5jb2RlQXNCeXRlY29kZU9mZnNldChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KTsKICAgICAg
ICAgaml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRz
KSwgQXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgIGlm
ICghaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQogICAgICAgICAgICAgaml0LnN0b3Jl
NjQoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUo
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSkpLCBBc3NlbWJseUhlbHBlcnM6OmFk
ZHJlc3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCAr
IEpTU3RhY2s6OkNhbGxlZSkpKTsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC8vIHNvIHRoaXMg
aXMgdGhlIDMyLWJpdCBwYXJ0CiAgICAgICAgIGppdC5zdG9yZVB0cihjYWxsZXJGcmFtZUdQUiwg
QXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUtPmNh
bGxlckZyYW1lT2Zmc2V0KCkpKTsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0g
YmFzZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLmJ5
dGVjb2RlSW5kZXg7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5l
Q29kZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJ
bmRleDsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbEZyYW1lOjpMb2NhdGlv
bjo6ZW5jb2RlQXNCeXRlY29kZUluc3RydWN0aW9uKGluc3RydWN0aW9uKTsKICAgICAgICAgaml0
LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNz
ZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5z
dGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgIGppdC5zdG9y
ZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBBc3Nl
bWJseUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0
YWNrT2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOwpAQCAtMjE3LDEzICsyMzQsMTYgQEAgdm9p
ZCByZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0
QmFzZSYgZXhpdCkKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNlbHNl
IHBhcnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlzIHRoZSAzMi1iaXQgcGFydAogICAgIH0KIAorICAg
IC8vIERvbid0IG5lZWQgdG8gc2V0IHRoZSB0b3BsZXZlbCBjb2RlIG9yaWdpbiBpZiB3ZSBvbmx5
IGRpZCBpbmxpbmUgdGFpbCBjYWxscworICAgIGlmIChjb2RlT3JpZ2luKSB7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKLSAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsRnJhbWU6OkxvY2F0aW9u
OjplbmNvZGVBc0J5dGVjb2RlT2Zmc2V0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAg
ICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxGcmFtZTo6TG9jYXRpb246OmVuY29kZUFz
Qnl0ZWNvZGVPZmZzZXQoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCk7CiAjZWxzZQotICAgIElu
c3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5pbnN0cnVj
dGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OwotICAgIHVpbnQzMl90
IGxvY2F0aW9uQml0cyA9IENhbGxGcmFtZTo6TG9jYXRpb246OmVuY29kZUFzQnl0ZWNvZGVJbnN0
cnVjdGlvbihpbnN0cnVjdGlvbik7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9
IGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9y
aWdpbi0+Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2Fs
bEZyYW1lOjpMb2NhdGlvbjo6ZW5jb2RlQXNCeXRlY29kZUluc3RydWN0aW9uKGluc3RydWN0aW9u
KTsKICNlbmRpZgotICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMy
KGxvY2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIp
KEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5
SGVscGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFn
Rm9yKChWaXJ0dWFsUmVnaXN0ZXIpKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgfQog
fQogCiAjaWYgRU5BQkxFKEdHQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcAppbmRleCA1MWQ2ZTVhMGQ2YWVlMmQ0ODZhZTMwMmY5
ZTg1ZmU1ZDlhNTFlNjU1Li4zZTMxZWYxZDE5MGEwNTgyNTdiMTZmNTUzOWI1YjJkNGQ4NGI1MjJk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRQcmVwYXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0UHJlcGFy
YXRpb24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgcHJlcGFyZUNvZGVPcmlnaW5Gb3JPU1JF
eGl0KEV4ZWNTdGF0ZSogZXhlYywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIFZNJiB2bSA9
IGV4ZWMtPnZtKCk7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIAotICAgIGZv
ciAoOyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICBmb3IgKDsgY29kZU9yaWdpbi5pbmxpbmVD
YWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0
Q2FsbGVyKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9CiAgICAg
ICAgICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2Zjk1MTJiYTUzNGM0OTBkNGJmOTk4
YWY1ZDA4MjQ0MTJkYmI5MTRlLi45YTFkYzQ1ZTFhODJmMTRjNTllMzA1ODg5ODdiZjExMGRlZjAw
ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAg
LTEyNzYsNyArMTI3Niw3IEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJS
ZW9wdGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgT1NSCiAgICAgQVNTRVJUKEpJ
VENvZGU6OmlzT3B0aW1pemluZ0pJVChvcHRpbWl6ZWRDb2RlQmxvY2stPmppdFR5cGUoKSkpOwog
ICAgIAogICAgIGJvb2wgZGlkVHJ5VG9FbnRlckludG9JbmxpbmVkTG9vcHMgPSBmYWxzZTsKLSAg
ICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gZXhpdC0+bV9jb2RlT3Jp
Z2luLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBp
bmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICBmb3IgKElubGlu
ZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gZXhpdC0+bV9jb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJh
bWUtPmRpcmVjdENhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgaWYgKGlubGluZUNh
bGxGcmFtZS0+ZXhlY3V0YWJsZS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CiAgICAgICAgICAg
ICBkaWRUcnlUb0VudGVySW50b0lubGluZWRMb29wcyA9IHRydWU7CiAgICAgICAgICAgICBicmVh
azsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2Fs
Q2xvYmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxD
bG9iYmVyaXplLmgKaW5kZXggMWNkNmIwOWVmZjJkMmFlNDVhMTRiNWMwNzAwZGM1YmY2YTExZDkw
My4uODNmNmM2Nzg0ODY2NDU4ODQ2YjJiZGI2MjdkMjRmNDY3N2I4ZTU0NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgK
QEAgLTExMSw3ICsxMTEsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRC
eVZhbDoKICAgICAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2FzZSBDYWxsRm9y
d2FyZFZhcmFyZ3M6Ci0gICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6IHsKKyAg
ICAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2Fs
bEZvcndhcmRWYXJhcmdzOgorICAgICAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxGb3J3YXJkVmFy
YXJnczogewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBt
X25vZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAg
ICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICAvLyBSZWFkIHRo
ZSBvdXRlcm1vc3QgYXJndW1lbnRzIGFuZCBhcmd1bWVudCBjb3VudC4KQEAgLTEzOCw3ICsxNDAs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaSkp
OwogICAgICAgICAKICAgICAgICAgICAgIC8vIFJlYWQgYWxsIG9mIHRoZSBpbmxpbmUgYXJndW1l
bnRzIGFuZCBjYWxsIGZyYW1lIGhlYWRlcnMgdGhhdCB3ZSBkaWRuJ3QgYWxyZWFkeSBjYXB0dXJl
LgotICAgICAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1f
bm9kZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBp
bmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUp
IHsKKyAgICAgICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBt
X25vZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsg
aW5saW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJJbmxpbmVGcmFtZVNr
aXBwaW5nRGVhZEZyYW1lcygpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
aW5saW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBpLS0gPiAxOykKICAgICAgICAgICAg
ICAgICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkpKTsKICAgICAgICAg
ICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcAppbmRleCBjZGUwOWJmMTIxYjIxZjhhNGZlYjYwZGZhMjRmYjQyMGI2YTliYWJhLi4x
ZmVlOWVjMGZiNWIzN2MwMzYyNDQ2ODNmMDYxZmQwOWViMTZmNTA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcApAQCAtMTk0LDExICsxOTQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNdWx0
aUdldEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgogICAgICAgICBjYXNl
IENhbGw6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBDb25z
dHJ1Y3Q6CiAgICAgICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRU
YWlsQ2FsbFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICAgICAg
Y2FzZSBDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZh
cmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgogICAg
ICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAg
ICAgICBjYXNlIEdldEdsb2JhbFZhcjoKQEAgLTYzMCw2ICs2MzMsOSBAQCBwcml2YXRlOgogICAg
ICAgICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAg
ICAgICAgIGNhc2UgUmV0dXJuOgorICAgICAgICBjYXNlIFRhaWxDYWxsOgorICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgog
ICAgICAgICBjYXNlIFRocm93OgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIGNhc2Ug
UHV0QnlJZEZsdXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
YWZlVG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1
dGUuaAppbmRleCA5NTNiNTRjMjFmNzM5ZDA3ZGU0NjQ1ZGI2Yjc0NzVjMWYwN2JhZTYxLi4zNzdj
YWNkMTJmYzFhNmE5ZjIwOTdiZWRiMDg0NjlmYmI3MmM5OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTkxLDggKzE5MSwxMSBAQCBib29s
IHNhZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5v
ZGUqIG5vZGUpCiAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKICAgICBjYXNlIENvbXBhcmVT
dHJpY3RFcToKICAgICBjYXNlIENhbGw6CisgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxsOgogICAg
IGNhc2UgQ29uc3RydWN0OgogICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgY2FzZSBFbXVsYXRl
ZFRhaWxDYWxsVmFyYXJnczoKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxGb3J3YXJkVmFyYXJn
czoKICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAg
ICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoKQEAgLTIzNSw2ICsyMzgsOSBAQCBib29sIHNhZmVU
b0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUpCiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46
CisgICAgY2FzZSBUYWlsQ2FsbDoKKyAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICBjYXNl
IFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIFRocm93
UmVmZXJlbmNlRXJyb3I6CiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNh
Njg0YThkOGVkMzM5ZTEzMjA3MTM2M2IyYjg0YTNiYzhkZDZiZTQuLjcxNjBlYzEyMzRkYjg1Nzhm
YTZkMDZlZDEwYjNiZTMwYzQ0YWEyZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNjQ0LDEwICs2NDQsMjAgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICBDYWxsTGlua0lu
Zm86OkNhbGxUeXBlIGNhbGxUeXBlOwogICAgIGJvb2wgaXNWYXJhcmdzID0gZmFsc2U7CiAgICAg
Ym9vbCBpc0ZvcndhcmRWYXJhcmdzID0gZmFsc2U7CisgICAgYm9vbCBpc1RhaWwgPSBmYWxzZTsK
KyAgICBib29sIGlzRW11bGF0ZWRUYWlsID0gZmFsc2U7CiAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CiAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2Fs
bDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUYWlsQ2FsbDoKKyAgICAgICAgY2FsbFR5cGUg
PSBDYWxsTGlua0luZm86OlRhaWxDYWxsOworICAgICAgICBpc1RhaWwgPSB0cnVlOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGw6CisgICAgICAgIGNhbGxUeXBlID0g
Q2FsbExpbmtJbmZvOjpDYWxsOworICAgICAgICBpc0VtdWxhdGVkVGFpbCA9IHRydWU7CisgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0OgogICAgICAgICBjYWxsVHlwZSA9IENhbGxM
aW5rSW5mbzo6Q29uc3RydWN0OwogICAgICAgICBicmVhazsKQEAgLTY1NSw2ICs2NjUsMTYgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgY2FsbFR5
cGUgPSBDYWxsTGlua0luZm86OkNhbGxWYXJhcmdzOwogICAgICAgICBpc1ZhcmFyZ3MgPSB0cnVl
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2Fs
bFR5cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxsVmFyYXJnczsKKyAgICAgICAgaXNWYXJhcmdz
ID0gdHJ1ZTsKKyAgICAgICAgaXNUYWlsID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBFbXVsYXRlZFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0lu
Zm86OkNhbGxWYXJhcmdzOworICAgICAgICBpc1ZhcmFyZ3MgPSB0cnVlOworICAgICAgICBpc0Vt
dWxhdGVkVGFpbCA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0VmFy
YXJnczoKICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7
CiAgICAgICAgIGlzVmFyYXJncyA9IHRydWU7CkBAIC02NjMsNiArNjgzLDE2IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhbGxUeXBlID0gQ2Fs
bExpbmtJbmZvOjpDYWxsVmFyYXJnczsKICAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAg
ICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxsVmFyYXJnczsKKyAgICAgICAgaXNU
YWlsID0gdHJ1ZTsKKyAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAgICBj
YWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3M7CisgICAgICAgIGlzRW11bGF0ZWRU
YWlsID0gdHJ1ZTsKKyAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7CisgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhbGxUeXBl
ID0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3RWYXJhcmdzOwogICAgICAgICBpc0ZvcndhcmRWYXJh
cmdzID0gdHJ1ZTsKQEAgLTc4NSw3ICs4MTUsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1p
dENhbGwoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZTMyKGNhbGxlZVBheWxvYWRHUFIsIG1f
aml0LmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoSlNTdGFjazo6Q2FsbGVlKSk7CiAgICAgbV9qaXQu
c3RvcmUzMihjYWxsZWVUYWdHUFIsIG1faml0LmNhbGxlZUZyYW1lVGFnU2xvdChKU1N0YWNrOjpD
YWxsZWUpKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgLy8gRklYTUU6IFdlIHNob3Vs
ZCBkbyBhbiBlZmZpY2llbnQgbW92ZSBvZiB0aGUgYXJndW1lbnRzIGludG8KKyAgICAvLyB0aGVp
ciB0YXJnZXQgc3RhY2sgcG9zaXRpb24gaW5zdGVhZCBvZiBidWlsZGluZyB0aGVuIG1lbW1vdmlu
ZworICAgIC8vIHRoZSBjYWxsZWUgZnJhbWUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NzUwOAorICAgIGlmIChpc1RhaWwpCisgICAgICAgIEFTU0VS
VChpc0ZsdXNoZWQoKSk7CisgICAgZWxzZQorICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCiAg
ICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICBHUFJGbHVz
aGVkQ2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwpAQCAtNzk1LDE0ICs4MzIsMjggQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICBKSVRDb21waWxlcjo6
RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNs
b3dQYXRoOwogCi0gICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2Vt
YW50aWMpOworICAgIENvZGVPcmlnaW4gc3RhdGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFu
dGljOworICAgIEFTU0VSVCghaXNUYWlsIHx8ICFzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1l
IHx8ICFzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ0RlYWRG
cmFtZXMoKSk7CisgICAgQVNTRVJUKCFpc0VtdWxhdGVkVGFpbCB8fCAoc3RhdGljT3JpZ2luLmlu
bGluZUNhbGxGcmFtZSAmJiBzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJT
a2lwcGluZ0RlYWRGcmFtZXMoKSkpOworICAgIENvZGVPcmlnaW4gZHluYW1pY09yaWdpbiA9Cisg
ICAgICAgIGlzRW11bGF0ZWRUYWlsID8gKnN0YXRpY09yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmdl
dENhbGxlclNraXBwaW5nRGVhZEZyYW1lcygpIDogc3RhdGljT3JpZ2luOworCisgICAgbV9qaXQu
ZW1pdFN0b3JlQ29kZU9yaWdpbihkeW5hbWljT3JpZ2luKTsKICAgICAKICAgICBDYWxsTGlua0lu
Zm8qIGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAKICAgICBz
bG93UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygp
KSk7CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fz
c2VtYmxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKIAot
ICAgIEpJVENvbXBpbGVyOjpDYWxsIGZhc3RDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKKyAgICBp
ZiAoaXNUYWlsKSB7CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gYW4gZWZmaWNpZW50
IG1vdmUgb2YgdGhlIGFyZ3VtZW50cyBpbnRvCisgICAgICAgIC8vIHRoZWlyIHRhcmdldCBzdGFj
ayBwb3NpdGlvbiBpbnN0ZWFkIG9mIGJ1aWxkaW5nIHRoZW4gbWVtbW92aW5nCisgICAgICAgIC8v
IHRoZSBjYWxsZWUgZnJhbWUuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDc1MDgKKyAgICAgICAgbV9qaXQucHJlcGFyZUZvclRhaWxDYWxsU2xv
dygpOworICAgIH0KKworICAgIEpJVENvbXBpbGVyOjpDYWxsIGZhc3RDYWxsID0gaXNUYWlsID8g
bV9qaXQubmVhclRhaWxDYWxsKCkgOiBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgSklUQ29tcGls
ZXI6Okp1bXAgZG9uZSA9IG1faml0Lmp1bXAoKTsKIApAQCAtODI1LDE3ICs4NzYsMjIgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKIAogICAgIGRvbmUubGluaygm
bV9qaXQpOwogCi0gICAgbV9qaXQuc2V0dXBSZXN1bHRzKHJlc3VsdFBheWxvYWRHUFIsIHJlc3Vs
dFRhZ0dQUik7CisgICAgaWYgKGlzVGFpbCkKKyAgICAgICAgbV9qaXQuYnJlYWtwb2ludCgpOwor
ICAgIGVsc2UgeworICAgICAgICBtX2ppdC5zZXR1cFJlc3VsdHMocmVzdWx0UGF5bG9hZEdQUiwg
cmVzdWx0VGFnR1BSKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVz
dWx0UGF5bG9hZEdQUiwgbm9kZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxp
Y2l0bHkpOwogCi0gICAganNWYWx1ZVJlc3VsdChyZXN1bHRUYWdHUFIsIHJlc3VsdFBheWxvYWRH
UFIsIG5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsKKyAg
ICAgICAgLy8gQWZ0ZXIgdGhlIGNhbGxzIGFyZSBkb25lLCB3ZSBuZWVkIHRvIHJlZXN0YWJsaXNo
IG91ciBzdGFjaworICAgICAgICAvLyBwb2ludGVyLiBXZSByZWx5IG9uIHRoaXMgZm9yIHZhcmFy
Z3MgY2FsbHMsIGNhbGxzIHdpdGggYXJpdHkKKyAgICAgICAgLy8gbWlzbWF0Y2ggKHRoZSBjYWxs
ZnJhbWUgaXMgc2xpZGVkKSBhbmQgdGFpbCBjYWxscy4KKyAgICAgICAgbV9qaXQuYWRkUHRyKFRy
dXN0ZWRJbW0zMihtX2ppdC5ncmFwaCgpLnN0YWNrUG9pbnRlck9mZnNldCgpICogc2l6ZW9mKFJl
Z2lzdGVyKSksIEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBKSVRDb21waWxlcjo6c3RhY2tQ
b2ludGVyUmVnaXN0ZXIpOworICAgIH0KIAogICAgIGluZm8tPnNldFVwQ2FsbChjYWxsVHlwZSwg
bm9kZS0+b3JpZ2luLnNlbWFudGljLCBjYWxsZWVQYXlsb2FkR1BSKTsKICAgICBtX2ppdC5hZGRK
U0NhbGwoZmFzdENhbGwsIHNsb3dDYWxsLCB0YXJnZXRUb0NoZWNrLCBpbmZvKTsKLSAgICAKLSAg
ICAvLyBBZnRlciB0aGUgY2FsbHMgYXJlIGRvbmUsIHdlIG5lZWQgdG8gcmVlc3RhYmxpc2ggb3Vy
IHN0YWNrCi0gICAgLy8gcG9pbnRlci4gV2UgcmVseSBvbiB0aGlzIGZvciB2YXJhcmdzIGNhbGxz
LCBjYWxscyB3aXRoIGFyaXR5Ci0gICAgLy8gbWlzbWF0Y2ggKHRoZSBjYWxsZnJhbWUgaXMgc2xp
ZGVkKSBhbmQgdGFpbCBjYWxscy4KLSAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1faml0
LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5m
bzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7
CisKIH0KIAogdGVtcGxhdGU8Ym9vbCBzdHJpY3Q+CkBAIC00MjE5LDEwICs0Mjc1LDE2IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIENhbGw6CisgICAgY2FzZSBUYWlsQ2FsbDoKKyAgICBjYXNlIEVtdWxhdGVkVGFp
bENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CiAgICAgY2FzZSBDYWxsVmFyYXJnczoKLSAgICBj
YXNlIENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICBj
YXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoK
KyAgICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZh
cmFyZ3M6CisgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2Fz
ZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKICAgICAgICAgZW1pdENhbGwobm9kZSk7CiAgICAg
ICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQ2NC5jcHAKaW5kZXggZWIyZThmM2RmZmNmZDQ5NTNjNTczNzViOGQwNGMzM2Q3YTIwNDNj
My4uY2JjZTQzYTkzNzA5NGQ3YjE3MmM2M2VmYzc2NjUzZjFhMWJhZTEwMyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC02MzAs
MTAgKzYzMCwyMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQog
ICAgIENhbGxMaW5rSW5mbzo6Q2FsbFR5cGUgY2FsbFR5cGU7CiAgICAgYm9vbCBpc1ZhcmFyZ3Mg
PSBmYWxzZTsKICAgICBib29sIGlzRm9yd2FyZFZhcmFyZ3MgPSBmYWxzZTsKKyAgICBib29sIGlz
VGFpbCA9IGZhbHNlOworICAgIGJvb2wgaXNFbXVsYXRlZFRhaWwgPSBmYWxzZTsKICAgICBzd2l0
Y2ggKG5vZGUtPm9wKCkpIHsKICAgICBjYXNlIENhbGw6CiAgICAgICAgIGNhbGxUeXBlID0gQ2Fs
bExpbmtJbmZvOjpDYWxsOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFRhaWxDYWxsOgorICAg
ICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6VGFpbENhbGw7CisgICAgICAgIGlzVGFpbCA9
IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbDoKKyAgICAg
ICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNhbGw7CisgICAgICAgIGlzRW11bGF0ZWRUYWls
ID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CiAgICAgICAgIGNh
bGxUeXBlID0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3Q7CiAgICAgICAgIGJyZWFrOwpAQCAtNjQx
LDYgKzY1MSwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQog
ICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3M7CiAgICAgICAgIGlz
VmFyYXJncyA9IHRydWU7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGFpbENhbGxWYXJhcmdz
OgorICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6VGFpbENhbGxWYXJhcmdzOworICAg
ICAgICBpc1ZhcmFyZ3MgPSB0cnVlOworICAgICAgICBpc1RhaWwgPSB0cnVlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgorICAgICAgICBjYWxsVHlw
ZSA9IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3M7CisgICAgICAgIGlzVmFyYXJncyA9IHRydWU7
CisgICAgICAgIGlzRW11bGF0ZWRUYWlsID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb25zdHJ1Y3RWYXJhcmdzOgogICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q29u
c3RydWN0VmFyYXJnczsKICAgICAgICAgaXNWYXJhcmdzID0gdHJ1ZTsKQEAgLTY1Myw2ICs2NzMs
MTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAg
Y2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7CiAgICAgICAgIGlzRm9y
d2FyZFZhcmFyZ3MgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFRhaWxDYWxsRm9y
d2FyZFZhcmFyZ3M6CisgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZh
cmFyZ3M7CisgICAgICAgIGlzVGFpbCA9IHRydWU7CisgICAgICAgIGlzRm9yd2FyZFZhcmFyZ3Mg
PSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxGb3J3YXJk
VmFyYXJnczoKKyAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNhbGxWYXJhcmdzOwor
ICAgICAgICBpc0VtdWxhdGVkVGFpbCA9IHRydWU7CisgICAgICAgIGlzRm9yd2FyZFZhcmFyZ3Mg
PSB0cnVlOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBERkdfQ1JBU0go
bV9qaXQuZ3JhcGgoKSwgbm9kZSwgImJhZCBub2RlIHR5cGUiKTsKICAgICAgICAgYnJlYWs7CkBA
IC03NjEsMjIgKzc5MSw0MSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBu
b2RlKQogICAgIEdQUlJlZyBjYWxsZWVHUFIgPSBjYWxsZWUuZ3ByKCk7CiAgICAgY2FsbGVlLnVz
ZSgpOwogICAgIG1faml0LnN0b3JlNjQoY2FsbGVlR1BSLCBKSVRDb21waWxlcjo6Y2FsbGVlRnJh
bWVTbG90KEpTU3RhY2s6OkNhbGxlZSkpOwotICAgIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisK
KyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGFuIGVmZmljaWVudCBtb3ZlIG9mIHRoZSBhcmd1
bWVudHMgaW50bworICAgIC8vIHRoZWlyIHRhcmdldCBzdGFjayBwb3NpdGlvbiBpbnN0ZWFkIG9m
IGJ1aWxkaW5nIHRoZW4gbWVtbW92aW5nCisgICAgLy8gdGhlIGNhbGxlZSBmcmFtZS4KKyAgICAv
LyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTA4CisgICAgaWYg
KGlzVGFpbCkKKyAgICAgICAgQVNTRVJUKGlzRmx1c2hlZCgpKTsKKyAgICBlbHNlCisgICAgICAg
IGZsdXNoUmVnaXN0ZXJzKCk7CiAKICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQodGhp
cyk7CiAgICAgR1BSUmVnIHJlc3VsdEdQUiA9IHJlc3VsdC5ncHIoKTsKIAotICAgIEpJVENvbXBp
bGVyOjpEYXRhTGFiZWxQdHIgdGFyZ2V0VG9DaGVjazsKLSAgICBKSVRDb21waWxlcjo6SnVtcCBz
bG93UGF0aDsKKyAgICBDb2RlT3JpZ2luIHN0YXRpY09yaWdpbiA9IG5vZGUtPm9yaWdpbi5zZW1h
bnRpYzsKKyAgICBBU1NFUlQoIWlzVGFpbCB8fCAhc3RhdGljT3JpZ2luLmlubGluZUNhbGxGcmFt
ZSB8fCAhc3RhdGljT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVyU2tpcHBpbmdEZWFk
RnJhbWVzKCkpOworICAgIEFTU0VSVCghaXNFbXVsYXRlZFRhaWwgfHwgKHN0YXRpY09yaWdpbi5p
bmxpbmVDYWxsRnJhbWUgJiYgc3RhdGljT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVy
U2tpcHBpbmdEZWFkRnJhbWVzKCkpKTsKKyAgICBDb2RlT3JpZ2luIGR5bmFtaWNPcmlnaW4gPQor
ICAgICAgICBpc0VtdWxhdGVkVGFpbCA/ICpzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5n
ZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoKSA6IHN0YXRpY09yaWdpbjsKIAotICAgIG1faml0
LmVtaXRTdG9yZUNvZGVPcmlnaW4obm9kZS0+b3JpZ2luLnNlbWFudGljKTsKKyAgICBtX2ppdC5l
bWl0U3RvcmVDb2RlT3JpZ2luKGR5bmFtaWNPcmlnaW4pOwogICAgIAogICAgIENhbGxMaW5rSW5m
byogY2FsbExpbmtJbmZvID0gbV9qaXQuY29kZUJsb2NrKCktPmFkZENhbGxMaW5rSW5mbygpOwot
ICAgIAotICAgIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0aFBhdGNoKE1hY3JvQXNzZW1i
bGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNrLCBNYWNyb0Fzc2VtYmxlcjo6
VHJ1c3RlZEltbVB0cigwKSk7CiAKLSAgICBKSVRDb21waWxlcjo6Q2FsbCBmYXN0Q2FsbCA9IG1f
aml0Lm5lYXJDYWxsKCk7CisgICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciB0YXJnZXRUb0No
ZWNrOworICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoID0gbV9qaXQuYnJhbmNoUHRyV2l0
aFBhdGNoKE1hY3JvQXNzZW1ibGVyOjpOb3RFcXVhbCwgY2FsbGVlR1BSLCB0YXJnZXRUb0NoZWNr
LCBNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cigwKSk7CisKKyAgICBpZiAoaXNUYWlsKSB7
CisgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgZG8gYW4gZWZmaWNpZW50IG1vdmUgb2YgdGhl
IGFyZ3VtZW50cyBpbnRvCisgICAgICAgIC8vIHRoZWlyIHRhcmdldCBzdGFjayBwb3NpdGlvbiBp
bnN0ZWFkIG9mIGJ1aWxkaW5nIHRoZW4gbWVtbW92aW5nCisgICAgICAgIC8vIHRoZSBjYWxsZWUg
ZnJhbWUuCisgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNDc1MDgKKyAgICAgICAgbV9qaXQucHJlcGFyZUZvclRhaWxDYWxsU2xvdygpOworICAgIH0K
KworICAgIEpJVENvbXBpbGVyOjpDYWxsIGZhc3RDYWxsID0gaXNUYWlsID8gbV9qaXQubmVhclRh
aWxDYWxsKCkgOiBtX2ppdC5uZWFyQ2FsbCgpOwogCiAgICAgSklUQ29tcGlsZXI6Okp1bXAgZG9u
ZSA9IG1faml0Lmp1bXAoKTsKICAgICAKQEAgLTc4NSwyMCArODM0LDI1IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgbV9qaXQubW92ZShjYWxsZWVHUFIs
IEdQUkluZm86OnJlZ1QwKTsgLy8gQ2FsbGVlIG5lZWRzIHRvIGJlIGluIHJlZ1QwCiAgICAgbV9q
aXQubW92ZShNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihjYWxsTGlua0luZm8pLCBHUFJJ
bmZvOjpyZWdUMik7IC8vIExpbmsgaW5mbyBuZWVkcyB0byBiZSBpbiByZWdUMgogICAgIEpJVENv
bXBpbGVyOjpDYWxsIHNsb3dDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKLSAgICAKKwogICAgIGRv
bmUubGluaygmbV9qaXQpOwotICAgIAotICAgIG1faml0Lm1vdmUoR1BSSW5mbzo6cmV0dXJuVmFs
dWVHUFIsIHJlc3VsdEdQUik7Ci0gICAgCi0gICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG1f
Y3VycmVudE5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRFeHBsaWNpdGx5KTsK
LSAgICAKKworICAgIGlmIChpc1RhaWwpCisgICAgICAgIG1faml0LmJyZWFrcG9pbnQoKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgbV9qaXQubW92ZShHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQUiwgcmVz
dWx0R1BSKTsKKworICAgICAgICBqc1ZhbHVlUmVzdWx0KHJlc3VsdEdQUiwgbV9jdXJyZW50Tm9k
ZSwgRGF0YUZvcm1hdEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworCisgICAgICAg
IC8vIEFmdGVyIHRoZSBjYWxscyBhcmUgZG9uZSwgd2UgbmVlZCB0byByZWVzdGFibGlzaCBvdXIg
c3RhY2sKKyAgICAgICAgLy8gcG9pbnRlci4gV2UgcmVseSBvbiB0aGlzIGZvciB2YXJhcmdzIGNh
bGxzLCBjYWxscyB3aXRoIGFyaXR5CisgICAgICAgIC8vIG1pc21hdGNoICh0aGUgY2FsbGZyYW1l
IGlzIHNsaWRlZCkgYW5kIHRhaWwgY2FsbHMuCisgICAgICAgIG1faml0LmFkZFB0cihUcnVzdGVk
SW1tMzIobV9qaXQuZ3JhcGgoKS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3Rl
cikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRl
clJlZ2lzdGVyKTsKKyAgICB9CisKICAgICBjYWxsTGlua0luZm8tPnNldFVwQ2FsbChjYWxsVHlw
ZSwgbV9jdXJyZW50Tm9kZS0+b3JpZ2luLnNlbWFudGljLCAgY2FsbGVlR1BSKTsgICAgCiAgICAg
bV9qaXQuYWRkSlNDYWxsKGZhc3RDYWxsLCBzbG93Q2FsbCwgdGFyZ2V0VG9DaGVjaywgY2FsbExp
bmtJbmZvKTsKIAotICAgIC8vIEFmdGVyIHRoZSBjYWxscyBhcmUgZG9uZSwgd2UgbmVlZCB0byBy
ZWVzdGFibGlzaCBvdXIgc3RhY2sKLSAgICAvLyBwb2ludGVyLiBXZSByZWx5IG9uIHRoaXMgZm9y
IHZhcmFyZ3MgY2FsbHMsIGNhbGxzIHdpdGggYXJpdHkKLSAgICAvLyBtaXNtYXRjaCAodGhlIGNh
bGxmcmFtZSBpcyBzbGlkZWQpIGFuZCB0YWlsIGNhbGxzLgotICAgIG1faml0LmFkZFB0cihUcnVz
dGVkSW1tMzIobV9qaXQuZ3JhcGgoKS5zdGFja1BvaW50ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdp
c3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgSklUQ29tcGlsZXI6OnN0YWNrUG9p
bnRlclJlZ2lzdGVyKTsKIH0KIAogLy8gQ2xhbmcgc2hvdWxkIGFsbG93IHVucmVhY2hhYmxlIFtb
Y2xhbmc6OmZhbGx0aHJvdWdoXV0gaW4gdGVtcGxhdGUgZnVuY3Rpb25zIGlmIGFueSB0ZW1wbGF0
ZSBleHBhbnNpb24gdXNlcyBpdApAQCAtNDIzMSwxNCArNDI4NSwyMCBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBD
YWxsOgorICAgIGNhc2UgVGFpbENhbGw6CisgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxsOgogICAg
IGNhc2UgQ29uc3RydWN0OgogICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgY2FzZSBUYWlsQ2Fs
bFZhcmFyZ3M6CisgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxsVmFyYXJnczoKICAgICBjYXNlIENh
bGxGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBD
b25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKKyAgICBjYXNlIFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6
CisgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGVtaXRD
YWxsKG5vZGUpOwogICAgICAgICBicmVhazsKLSAgICAgICAgCisKICAgICBjYXNlIExvYWRWYXJh
cmdzOiB7CiAgICAgICAgIExvYWRWYXJhcmdzRGF0YSogZGF0YSA9IG5vZGUtPmxvYWRWYXJhcmdz
RGF0YSgpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCmluZGV4IDkzNzFkZTU0MDhmMDIzYmZiZDU5
OGQyMzcxZmY5ZjhjYmQxNzQzYTcuLmY1NDcwYWQxZmRmY2IyMzRmNmU2YzNiNjJkMWM1YzE3NjVh
MjllMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0Zv
cndhcmRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJh
cmdzRm9yd2FyZGluZ1BoYXNlLmNwcApAQCAtMTM1LDYgKzEzNSw4IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgCiAgICAgICAgICAgICBjYXNlIENhbGxWYXJhcmdzOgogICAgICAgICAgICAg
Y2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgorICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6
CisgICAgICAgICAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgogICAgICAgICAgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKSA9PSBjYW5kaWRhdGUgfHwgbm9kZS0+Y2hpbGQzKCkgPT0g
Y2FuZGlkYXRlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJib3NlKQogICAgICAgICAg
ICAgICAgICAgICAgICAgZGF0YUxvZygiICAgIEVzY2FwZSBhdCAiLCBub2RlLCAiXG4iKTsKQEAg
LTI4Miw3ICsyODQsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ29uc3RydWN0Rm9yd2Fy
ZFZhcmFyZ3MpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIAorCisg
ICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgICAgICAgICBpZiAobm9k
ZS0+Y2hpbGQyKCkgIT0gY2FuZGlkYXRlKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBFbXVs
YXRlZFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQyKCkg
IT0gY2FuZGlkYXRlKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhFbXVsYXRlZFRhaWxDYWxsRm9yd2FyZFZhcmFy
Z3MpOworICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlIFNldExvY2Fs
OgogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgc3VwZXIgb2RkLiBXZSBkb24ndCBoYXZlIHRv
IGRvIGFueXRoaW5nIGhlcmUsIHNpbmNlIGluIERGRyBJUiwgdGhlIHBoYW50b20KICAgICAgICAg
ICAgICAgICAvLyBhcmd1bWVudHMgbm9kZXMgZG8gcHJvZHVjZSBhIEpTVmFsdWUuIEFsc28sIHdl
IGtub3cgdGhhdCBpZiB0aGlzIFNldExvY2FsIHJlZmVyZW5lY3MgYQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCAyNTkwNjFkZjQ5ZDFh
MWVmMTkyMWY2NzZmZTNjMjUyZGRmN2U4M2Y3Li42MDY5MjI0NzRkODZlZTA0ZmFlOGJjMDFjODlk
ZjcxYmNkZmMzOTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmNwcApAQCAtODUsNyArODUsNyBAQCB1bnNpZ25lZCBDYWxsRnJhbWU6OmJ5dGVj
b2RlT2Zmc2V0RnJvbUNvZGVPcmlnaW5JbmRleCgpCiAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmJhc2VsaW5lQ29kZUJsb2NrKCkgPT0gY29kZUJsb2NrKQogICAgICAgICAgICAgcmV0dXJu
IGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleDsKIAotICAgICAgICBjb2RlT3JpZ2luID0gaW5saW5l
Q2FsbEZyYW1lLT5jYWxsZXI7CisgICAgICAgIGNvZGVPcmlnaW4gPSAqaW5saW5lQ2FsbEZyYW1l
LT5nZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoKTsKICAgICAgICAgaW5saW5lQ2FsbEZyYW1l
ID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7CiAgICAgfQogICAgIHJldHVybiBjb2RlT3Jp
Z2luLmJ5dGVjb2RlSW5kZXg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnBy
ZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDY0OTZmYTRkNDU3MGU3ZjEzZDdmM2EzZDA1Mjhj
ODBkMzU4MzQxNzIuLjYzN2NmZWZhNGU1MGRhNmQzZGZlM2NlY2E1M2RmMjQ0NTNjZGE0YWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
Y3BwCkBAIC01OSw4ICs1OSwxNiBAQCB2b2lkIFN0YWNrVmlzaXRvcjo6Z290b05leHRGcmFtZSgp
CiAjaWYgRU5BQkxFKERGR19KSVQpCiAgICAgaWYgKG1fZnJhbWUuaXNJbmxpbmVkRnJhbWUoKSkg
ewogICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fZnJhbWUuaW5s
aW5lQ2FsbEZyYW1lKCk7Ci0gICAgICAgIENvZGVPcmlnaW4qIGNhbGxlckNvZGVPcmlnaW4gPSAm
aW5saW5lQ2FsbEZyYW1lLT5jYWxsZXI7Ci0gICAgICAgIHJlYWRJbmxpbmVkRnJhbWUobV9mcmFt
ZS5jYWxsRnJhbWUoKSwgY2FsbGVyQ29kZU9yaWdpbik7CisgICAgICAgIENvZGVPcmlnaW4qIGNh
bGxlckNvZGVPcmlnaW4gPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nRGVhZEZy
YW1lcygpOworICAgICAgICBpZiAoIWNhbGxlckNvZGVPcmlnaW4pIHsKKyAgICAgICAgICAgIHdo
aWxlIChpbmxpbmVDYWxsRnJhbWUpIHsKKyAgICAgICAgICAgICAgICByZWFkSW5saW5lZEZyYW1l
KG1fZnJhbWUuY2FsbEZyYW1lKCksICZpbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcik7Cisg
ICAgICAgICAgICAgICAgaW5saW5lQ2FsbEZyYW1lID0gbV9mcmFtZS5pbmxpbmVDYWxsRnJhbWUo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fZnJhbWUubV9WTUVudHJ5RnJhbWUgPSBt
X2ZyYW1lLm1fQ2FsbGVyVk1FbnRyeUZyYW1lOworICAgICAgICAgICAgcmVhZEZyYW1lKG1fZnJh
bWUuY2FsbGVyRnJhbWUoKSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmVhZElubGlu
ZWRGcmFtZShtX2ZyYW1lLmNhbGxGcmFtZSgpLCBjYWxsZXJDb2RlT3JpZ2luKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0NDYWxsSGVscGVycy5oCmluZGV4IDFlYTk5OTJlYmJiY2RiZDdkZDg0MDc0MjEw
YjUxNTc5MGNkYTBkODIuLjU0NDgzNmZjNWRlN2VmMWIyOWM3ODRlZjI1NWRhNTAyNzdjZTA1ZWUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaApAQCAtMjA2Nyw2ICsy
MDY3LDggQEAgcHVibGljOgogI2lmIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgICAgIENPTVBJTEVf
QVNTRVJUKHNpemVvZih2b2lkKikgKiAyID09IHNpemVvZihSZWdpc3RlciksIFJlZ2lzdGVyX2lz
X3R3b19wb2ludGVyc19zaXplZCk7CiAgICAgICAgIGxzaGlmdDMyKFRydXN0ZWRJbW0zMigxKSwg
dGVtcDIpOworI2Vsc2UKKyAgICAgICAgQ09NUElMRV9BU1NFUlQoc2l6ZW9mKHZvaWQqKSA9PSBz
aXplb2YoUmVnaXN0ZXIpLCBSZWdpc3Rlcl9pc19vbmVfcG9pbnRlcl9zaXplZCk7CiAjZW5kaWYK
IAogICAgICAgICAvLyBEbyB0aGUgc2xpZGluZwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rlc3RzL3N0cmVzcy9kZmctdGFpbC1jYWxscy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS90ZXN0cy9zdHJlc3MvZGZnLXRhaWwtY2FsbHMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWY1MWMwY2E4
MmZjZDM5ODU2NmNiMjIxOTE0NTZkYWRiMTY0YTgzYwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGZnLXRhaWwtY2FsbHMuanMKQEAgLTAsMCAr
MSw1NiBAQAorKGZ1bmN0aW9uIG5vbklubGluZWRUYWlsQ2FsbCgpIHsKKyAgICBmdW5jdGlvbiBj
YWxsZWUoKSB7IGlmIChjYWxsZWUuY2FsbGVyICE9IG5vbklubGluZWRUYWlsQ2FsbCkgdGhyb3cg
bmV3IEVycm9yKCk7IH0KKyAgICBub0lubGluZShjYWxsZWUpOworCisgICAgZnVuY3Rpb24gY2Fs
bGVyKCkgeyAidXNlIHN0cmljdCI7IHJldHVybiBjYWxsZWUoKTsgfQorCisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgICAgICBjYWxsZXIoKTsKKworICAgIGZ1bmN0aW9u
IGxvb3AobikgeyAidXNlIHN0cmljdCI7IGlmIChuID4gMCkgcmV0dXJuIGxvb3AobiAtIDEpOyB9
CisgICAgbm9JbmxpbmUobG9vcCk7CisKKyAgICBsb29wKDEwMDAwMDApOworfSkoKTsKKworKGZ1
bmN0aW9uIGlubGluZWRUYWlsQ2FsbCgpIHsKKyAgICBmdW5jdGlvbiBjYWxsZWUoKSB7IGlmIChj
YWxsZWUuY2FsbGVyICE9IGlubGluZWRUYWlsQ2FsbCkgdGhyb3cgbmV3IEVycm9yKCk7IH0KKyAg
ICBmdW5jdGlvbiBjYWxsZXIoKSB7ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIGNhbGxlZSgpOyB9CisK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyArK2kpCisgICAgICAgIGNhbGxlcigpOwor
CisgICAgZnVuY3Rpb24gbG9vcChuKSB7ICJ1c2Ugc3RyaWN0IjsgaWYgKG4gPiAwKSByZXR1cm4g
bG9vcChuIC0gMSk7IH0KKworICAgIGxvb3AoMTAwMDAwMCk7Cit9KSgpOworCisoZnVuY3Rpb24g
bm9uSW5saW5lZEVtdWxhdGVkVGFpbENhbGwoKSB7CisgICAgZnVuY3Rpb24gZW11bGF0b3IoKSB7
IGNhbGxlcigpOyB9CisgICAgZnVuY3Rpb24gY2FsbGVlKCkgeyBpZiAoY2FsbGVlLmNhbGxlciAh
PSBlbXVsYXRvcikgdGhyb3cgbmV3IEVycm9yKCk7IH0KKyAgICBub0lubGluZShjYWxsZWUpOwor
ICAgIGZ1bmN0aW9uIGNhbGxlcigpIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gY2FsbGVlKCk7IH0K
KworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICAgICAgZW11bGF0b3Io
KTsKKworICAgIGZ1bmN0aW9uIHBhZChuKSB7ICJ1c2Ugc3RyaWN0IjsgcmV0dXJuIGxvb3Aobik7
IH0KKyAgICBmdW5jdGlvbiBsb29wKG4pIHsgInVzZSBzdHJpY3QiOyBpZiAobiA+IDApIHJldHVy
biBwYWQobiAtIDEpOyB9CisgICAgbm9JbmxpbmUobG9vcCk7CisKKyAgICBsb29wKDEwMDAwMDAp
OworfSkoKTsKKworKGZ1bmN0aW9uIGlubGluZWRFbXVsYXRlZFRhaWxDYWxsKCkgeworICAgIGZ1
bmN0aW9uIGVtdWxhdG9yKCkgeyBjYWxsZXIoKTsgfQorICAgIGZ1bmN0aW9uIGNhbGxlZSgpIHsg
aWYgKGNhbGxlZS5jYWxsZXIgIT0gZW11bGF0b3IpIHRocm93IG5ldyBFcnJvcigpOyB9CisgICAg
ZnVuY3Rpb24gY2FsbGVyKCkgeyAidXNlIHN0cmljdCI7IHJldHVybiBjYWxsZWUoKTsgfQorCisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytpKQorICAgICAgICBlbXVsYXRvcigpOwor
CisgICAgZnVuY3Rpb24gcGFkKG4pIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gbG9vcChuKTsgfQor
ICAgIGZ1bmN0aW9uIGxvb3AobikgeyAidXNlIHN0cmljdCI7IGlmIChuID4gMCkgcmV0dXJuIHBh
ZChuIC0gMSk7IH0KKworICAgIGxvb3AoMTAwMDAwMCk7Cit9KSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258116</attachid>
            <date>2015-08-03 14:42:45 -0700</date>
            <delta_ts>2015-08-03 16:02:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-146850-20150803144239.patch</filename>
            <type>text/plain</type>
            <size>85050</size>
            <attacher name="Basile Clement">basile_clement</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg3NzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NjhlNjE3ZTBmNzNjZWZkNWI3N2MzNjVjOGZkZTFmZmIxYjhkNzg3Li5jMWMwNTg4NDE4N2QxMmU1
ZDdiNmQ5Zjk1ZmE4NTIyMzkyNTFlZjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMTkgQEAKKzIwMTUtMDctMzEgIEJhc2lsZSBDbGVtZW50ICA8YmFzaWxlX2NsZW1lbnRA
YXBwbGUuY29tPgorCisgICAgICAgIGpzYy10YWlsY2FsbDogSW1wbGVtZW50IHRoZSB0YWlsIGNh
bGwgb3Bjb2RlcyBpbiB0aGUgREZHCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDY4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGFpbCBjYWxscyBpbiB0
aGUgREZHLiBUaGlzIHJlcXVpcmVzIGEgc2xpZ2h0bHkgaGlnaCBudW1iZXIgb2Ygbm9kZXM6CisK
KyAgICAgICAgIC0gVGFpbENhbGwgYW5kIFRhaWxDYWxsVmFyYXJncyBhcmUgc3RyYWlnaHRmb3J3
YXJkLiBUaGV5IGFyZSB0ZXJtaW5hbAorICAgICAgICAgICBub2RlcyBhbmQgaGF2ZSB0aGUgc2Vt
YW50aWNzIG9mIGFuIGFjdHVhbCB0YWlsIGNhbGwuCisKKyAgICAgICAgIC0gRW11bGF0ZWRUYWls
Q2FsbCBhbmQgRW11bGF0ZWRUYWlsQ2FsbFZhcmFyZ3MgYXJlIGhlcmUgdG8gcGVyZm9ybSBhCisg
ICAgICAgICAgIHRhaWwgY2FsbCBpbnNpZGUgYW4gaW5saW5lZCBmdW5jdGlvbi4gVGhleSBhcmUg
bm9uIHRlcm1pbmFsIG5vZGVzLAorICAgICAgICAgICBhbmQgYXJlIHBlcmZvcm1pbmcgdGhlIGNh
bGwgYXMgYSByZWd1bGFyIGNhbGwgYWZ0ZXIgcG9wcGluZyBhbgorICAgICAgICAgICBhcHByb3By
aWF0ZSBudW1iZXIgb2YgaW5saW5lZCB0YWlsIGNhbGwgZnJhbWVzLiAKKworICAgICAgICAgLSBU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzIGFuZCBFbXVsYXRlZFRhaWxDYWxsRm9yd2FyZFZhcmFyZ3Mg
YXJlIHRoZQorICAgICAgICAgICBleHRlbnNpb24gb2YgVGFpbENhbGxWYXJhcmdzIGFuZCBFbXVs
YXRlZFRhaWxDYWxsVmFyYXJncyB0byBlbmFibGUKKyAgICAgICAgICAgdGhlIHZhcmFyZ3MgZm9y
d2FyZGluZyBvcHRpbWl6YXRpb24gc28gdGhhdCB3ZSBkb24ndCBsb3NlCisgICAgICAgICAgIHBl
cmZvcm1hbmNlIHdpdGggYSB0YWlsIGNhbGwgaW5zdGVhZCBvZiBhIHJlZ3VsYXIgY2FsbC4KKwor
ICAgICAgICBUaGlzIGFsc28gcmVxdWlyZWQgdHdvIGJyb2FkIGtpbmQgb2YgY2hhbmdlczoKKwor
ICAgICAgICAgLSBDaGFuZ2VzIGluIHRoZSBKSVQgaXRzZWxmIChERkdTcGVjdWxhdGl2ZUpJVCkg
YXJlIHByZXR0eQorICAgICAgICAgICBzdHJhaWdodGZvcndhcmQgc2luY2UgdGhleSBhcmUganVz
dCBhbiBleHRlbnNpb24gb2YgdGhlIGJhc2VsaW5lIEpJVAorICAgICAgICAgICBjaGFuZ2VzIGlu
dHJvZHVjZWQgcHJldmlvdXNseS4KKworICAgICAgICAgLSBDaGFuZ2VzIGluIHRoZSBydW50aW1l
IGFyZSBtb3N0bHkgcmVsYXRlZCB3aXRoIGhhbmRsaW5nIGlubGluZSBjYWxsCisgICAgICAgICAg
IGZyYW1lcy4gVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHdlIGhhdmUgYSBzcGVjaWFsIFRhaWxDYWxs
IHR5cGUgZm9yCisgICAgICAgICAgIGNhbGwgZnJhbWVzIHRoYXQgaW5kaWNhdGVzIHRvIHRoZSB2
YXJpb3VzIHBpZWNlcyBvZiBjb2RlIHdhbGtpbmcgdGhlCisgICAgICAgICAgIGlubGluZSBjYWxs
IGZyYW1lIHRoYXQgdGhleSBzaG91bGQgKHJlY3Vyc2l2ZWx5KSBza2lwIHRoZSBjYWxsZXIgaW4K
KyAgICAgICAgICAgdGhlaXIgYW5hbHlzaXMuCisKKyAgICAgICAgKiBieXRlY29kZS9DYWxsTW9k
ZS5oOgorICAgICAgICAoSlNDOjpzcGVjaWFsaXphdGlvbktpbmRGb3IpOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVPcmlnaW4uY3BwOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVE
ZXB0aEZvckNhbGxGcmFtZSk6CisgICAgICAgIChKU0M6OkNvZGVPcmlnaW46OmlzQXBwcm94aW1h
dGVseUVxdWFsVG8pOgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjphcHByb3hpbWF0ZUhhc2gp
OgorICAgICAgICAoSlNDOjpDb2RlT3JpZ2luOjppbmxpbmVTdGFjayk6CisgICAgICAgIChKU0M6
OklubGluZUNhbGxGcmFtZTo6ZHVtcEluQ29udGV4dCk6CisgICAgICAgIChXVEY6OnByaW50SW50
ZXJuYWwpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVPcmlnaW4uaDoKKyAgICAgICAgKEpTQzo6
SW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcik6CisgICAgICAgIChKU0M6OklubGluZUNhbGxG
cmFtZTo6a2luZEZvcik6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6dmFyYXJnc0tp
bmRGb3IpOgorICAgICAgICAoSlNDOjpJbmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2lu
ZEZvcik6CisgICAgICAgIChKU0M6OklubGluZUNhbGxGcmFtZTo6aXNWYXJhcmdzKToKKyAgICAg
ICAgKEpTQzo6SW5saW5lQ2FsbEZyYW1lOjppc1RhaWwpOgorICAgICAgICAoSlNDOjpJbmxpbmVD
YWxsRnJhbWU6OmNvbXB1dGVDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMpOgorICAgICAgICAoSlND
OjpJbmxpbmVDYWxsRnJhbWU6OmdldENhbGxlclNraXBwaW5nRGVhZEZyYW1lcyk6CisgICAgICAg
IChKU0M6OklubGluZUNhbGxGcmFtZTo6Z2V0Q2FsbGVySW5saW5lRnJhbWVTa2lwcGluZ0RlYWRG
cmFtZXMpOgorICAgICAgICAqIGRmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oOgor
ICAgICAgICAoSlNDOjpERkc6OkFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+
OjpleGVjdXRlRWZmZWN0cyk6CisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50c0VsaW1pbmF0aW9u
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgIChKU0M6
OkRGRzo6QmFzaWNCbG9jazo6ZmluZFRlcm1pbmFsKToKKyAgICAgICAgKiBkZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphbGxJbmxp
bmVGcmFtZXNBcmVUYWlsQ2FsbHMpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjphZGRDYWxsV2l0aG91dFNldHRpbmdSZXN1bHQpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVD
b2RlUGFyc2VyOjphZGRDYWxsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6
Z2V0UHJlZGljdGlvbldpdGhvdXRPU1JFeGl0KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29k
ZVBhcnNlcjo6Z2V0UHJlZGljdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJz
ZXI6OmhhbmRsZUNhbGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVWYXJhcmdzQ2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGlu
aW5nQ29zdCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwp
OgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9JbmxpbmVDYWxs
KToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAg
ICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0
YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVC
bG9jayk6CisgICAgICAgICogZGZnL0RGR0NhcGFiaWxpdGllcy5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6Y2FwYWJpbGl0eUxldmVsKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgor
ICAgICAgICAoSlNDOjpERkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0Mu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OmRvZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6Cisg
ICAgICAgICogZGZnL0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNM
aXZlSW5CeXRlY29kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OmZvckFsbExvY2Fsc0xpdmVJbkJ5dGVjb2RlKToKKyAgICAgICAgKiBkZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkluUGxhY2VB
YnN0cmFjdFN0YXRlOjptZXJnZVRvU3VjY2Vzc29ycyk6CisgICAgICAgICogZGZnL0RGR05vZGUu
aDoKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpoYXNDYWxsVmFyYXJnc0RhdGEpOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmlzVGVybWluYWwpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6
Omhhc0hlYXBQcmVkaWN0aW9uKToKKyAgICAgICAgKiBkZmcvREZHTm9kZVR5cGUuaDoKKyAgICAg
ICAgKiBkZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcDoKKyAgICAgICAgKEpTQzo6REZH
OjpoYW5kbGVFeGl0Q291bnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpyZWlmeUlubGluZWRDYWxs
RnJhbWVzKToKKyAgICAgICAgKiBkZmcvREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpwcmVwYXJlQ29kZU9yaWdpbkZvck9TUkV4aXQpOgorICAgICAgICAqIGRm
Zy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHUHJlY2lzZUxvY2FsQ2xvYmJl
cml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OlByZWNpc2VMb2NhbENsb2JiZXJpemVBZGFwdG9y
OjpyZWFkVG9wKToKKyAgICAgICAgKiBkZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2Uu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlOjpwcm9w
YWdhdGUpOgorICAgICAgICAqIGRmZy9ERkdTYWZlVG9FeGVjdXRlLmg6CisgICAgICAgIChKU0M6
OkRGRzo6c2FmZVRvRXhlY3V0ZSk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJf
NjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6Cisg
ICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwOgorICAgICAgICAoSlNDOjpERkc6
OlNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAqIGRmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNl
LmNwcDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAoSlND
OjpDYWxsRnJhbWU6OmJ5dGVjb2RlT2Zmc2V0RnJvbUNvZGVPcmlnaW5JbmRleCk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNp
dG9yOjpnb3RvTmV4dEZyYW1lKToKKyAgICAgICAgKiBqaXQvQ0NhbGxIZWxwZXJzLmg6CisgICAg
ICAgICogdGVzdHMvc3RyZXNzL2RmZy10YWlsLWNhbGxzLmpzOiBBZGRlZC4KKwogMjAxNS0wOC0w
MyAgQmFzaWxlIENsZW1lbnQgIDxiYXNpbGVfY2xlbWVudEBhcHBsZS5jb20+CiAKICAgICAgICAg
anNjLXRhaWxjYWxsOiBLcmFrZW4vc3RhbmZvcmQtY3J5cHRvLWNjbSBjcmFzaGVzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ2FsbE1vZGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTW9kZS5oCmluZGV4IGJjYmI2MTMwYzQ4Zjc4ODI0
ZmIwZWE5NDYxMzgwZGRmZDJjYWYxMjUuLmMzNzM0ZTI2YTczMmVkN2UyNjk3ODI1MDM4ZGMxNTIz
YzgzNGUyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxs
TW9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9DYWxsTW9kZS5oCkBA
IC0yNiwxMiArMjYsMjYgQEAKICNpZm5kZWYgQ2FsbE1vZGVfaAogI2RlZmluZSBDYWxsTW9kZV9o
CiAKKyNpbmNsdWRlICJDb2RlU3BlY2lhbGl6YXRpb25LaW5kLmgiCisKIG5hbWVzcGFjZSBKU0Mg
ewogCiBlbnVtIGNsYXNzIENhbGxNb2RlIHsgUmVndWxhciwgVGFpbCwgQ29uc3RydWN0IH07CiAK
IGVudW0gRnJhbWVBY3Rpb24geyBLZWVwVGhlRnJhbWUgPSAwLCBSZXVzZVRoZUZyYW1lIH07CiAK
K2lubGluZSBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIHNwZWNpYWxpemF0aW9uS2luZEZvcihDYWxs
TW9kZSBjYWxsTW9kZSkKK3sKKyAgICBzd2l0Y2ggKGNhbGxNb2RlKSB7CisgICAgY2FzZSBDYWxs
TW9kZTo6VGFpbDoKKyAgICBjYXNlIENhbGxNb2RlOjpSZWd1bGFyOgorICAgICAgICByZXR1cm4g
Q29kZUZvckNhbGw7CisKKyAgICBjYXNlIENhbGxNb2RlOjpDb25zdHJ1Y3Q6CisgICAgICAgIHJl
dHVybiBDb2RlRm9yQ29uc3RydWN0OworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCiAK
IG5hbWVzcGFjZSBXVEYgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVPcmlnaW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVP
cmlnaW4uY3BwCmluZGV4IDVjZjZlMTZiYTc0ZmEzZWNmZGM0ZGQ2YWMxZWVjZWU3ZGY1Yjk0MWMu
LmQwYTRiOTQ2Yjc1YjIzYzhlODZjMjM2ZmZkM2IzYWUyMWEwNmY0ZWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlT3JpZ2luLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5jcHAKQEAgLTM2LDcgKzM2LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiB1bnNpZ25lZCBDb2RlT3JpZ2luOjppbmxpbmVEZXB0aEZvckNhbGxG
cmFtZShJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSkKIHsKICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAxOwotICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBjdXJyZW50ID0gaW5saW5lQ2Fs
bEZyYW1lOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+Y2FsbGVyLmlubGluZUNhbGxGcmFt
ZSkKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZSogY3VycmVudCA9IGlubGluZUNhbGxGcmFtZTsg
Y3VycmVudDsgY3VycmVudCA9IGN1cnJlbnQtPmRpcmVjdENhbGxlci5pbmxpbmVDYWxsRnJhbWUp
CiAgICAgICAgIHJlc3VsdCsrOwogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC03Nyw4ICs3Nyw4
IEBAIGJvb2wgQ29kZU9yaWdpbjo6aXNBcHByb3hpbWF0ZWx5RXF1YWxUbyhjb25zdCBDb2RlT3Jp
Z2luJiBvdGhlcikgY29uc3QKICAgICAgICAgaWYgKGEuaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRh
YmxlLmdldCgpICE9IGIuaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKQogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKLSAgICAgICAgYSA9IGEuaW5saW5lQ2FsbEZy
YW1lLT5jYWxsZXI7Ci0gICAgICAgIGIgPSBiLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyOworICAg
ICAgICBhID0gYS5pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcjsKKyAgICAgICAgYiA9IGIu
aW5saW5lQ2FsbEZyYW1lLT5kaXJlY3RDYWxsZXI7CiAgICAgfQogfQogCkBAIC05OSw3ICs5OSw3
IEBAIHVuc2lnbmVkIENvZGVPcmlnaW46OmFwcHJveGltYXRlSGFzaCgpIGNvbnN0CiAgICAgICAg
IAogICAgICAgICByZXN1bHQgKz0gV1RGOjpQdHJIYXNoPEpTQ2VsbCo+OjpoYXNoKGNvZGVPcmln
aW4uaW5saW5lQ2FsbEZyYW1lLT5leGVjdXRhYmxlLmdldCgpKTsKICAgICAgICAgCi0gICAgICAg
IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyOworICAgICAg
ICBjb2RlT3JpZ2luID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcjsK
ICAgICB9CiB9CiAKQEAgLTEwOCw4ICsxMDgsOCBAQCBWZWN0b3I8Q29kZU9yaWdpbj4gQ29kZU9y
aWdpbjo6aW5saW5lU3RhY2soKSBjb25zdAogICAgIFZlY3RvcjxDb2RlT3JpZ2luPiByZXN1bHQo
aW5saW5lRGVwdGgoKSk7CiAgICAgcmVzdWx0Lmxhc3QoKSA9ICp0aGlzOwogICAgIHVuc2lnbmVk
IGluZGV4ID0gcmVzdWx0LnNpemUoKSAtIDI7Ci0gICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGN1
cnJlbnQgPSBpbmxpbmVDYWxsRnJhbWU7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5jYWxs
ZXIuaW5saW5lQ2FsbEZyYW1lKQotICAgICAgICByZXN1bHRbaW5kZXgtLV0gPSBjdXJyZW50LT5j
YWxsZXI7CisgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGN1cnJlbnQgPSBpbmxpbmVDYWxsRnJh
bWU7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5kaXJlY3RDYWxsZXIuaW5saW5lQ2FsbEZy
YW1lKQorICAgICAgICByZXN1bHRbaW5kZXgtLV0gPSBjdXJyZW50LT5kaXJlY3RDYWxsZXI7CiAg
ICAgUkVMRUFTRV9BU1NFUlQoIXJlc3VsdFswXS5pbmxpbmVDYWxsRnJhbWUpOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBJbmxpbmVDYWxsRnJhbWU6OmR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnMK
ICAgICBvdXQucHJpbnQoYnJpZWZGdW5jdGlvbkluZm9ybWF0aW9uKCksICI6PCIsIFJhd1BvaW50
ZXIoZXhlY3V0YWJsZS5nZXQoKSkpOwogICAgIGlmIChleGVjdXRhYmxlLT5pc1N0cmljdE1vZGUo
KSkKICAgICAgICAgb3V0LnByaW50KCIgKFN0cmljdE1vZGUpIik7Ci0gICAgb3V0LnByaW50KCIs
IGJjIyIsIGNhbGxlci5ieXRlY29kZUluZGV4LCAiLCAiLCBraW5kKTsKKyAgICBvdXQucHJpbnQo
IiwgYmMjIiwgZGlyZWN0Q2FsbGVyLmJ5dGVjb2RlSW5kZXgsICIsICIsIHN0YXRpY19jYXN0PEtp
bmQ+KGtpbmQpKTsKICAgICBpZiAoaXNDbG9zdXJlQ2FsbCkKICAgICAgICAgb3V0LnByaW50KCIs
IGNsb3N1cmUgY2FsbCIpOwogICAgIGVsc2UKQEAgLTIxOCwxMiArMjE4LDE4IEBAIHZvaWQgcHJp
bnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBKU0M6OklubGluZUNhbGxGcmFtZTo6S2luZCBr
aW5kKQogICAgIGNhc2UgSlNDOjpJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKICAgICAgICAg
b3V0LnByaW50KCJDb25zdHJ1Y3QiKTsKICAgICAgICAgcmV0dXJuOworICAgIGNhc2UgSlNDOjpJ
bmxpbmVDYWxsRnJhbWU6OlRhaWxDYWxsOgorICAgICAgICBvdXQucHJpbnQoIlRhaWxDYWxsIik7
CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpDYWxsVmFy
YXJnczoKICAgICAgICAgb3V0LnByaW50KCJDYWxsVmFyYXJncyIpOwogICAgICAgICByZXR1cm47
CiAgICAgY2FzZSBKU0M6OklubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0VmFyYXJnczoKICAgICAg
ICAgb3V0LnByaW50KCJDb25zdHJ1Y3RWYXJhcmdzIik7CiAgICAgICAgIHJldHVybjsKKyAgICBj
YXNlIEpTQzo6SW5saW5lQ2FsbEZyYW1lOjpUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgIG91dC5w
cmludCgiVGFpbENhbGxWYXJhcmdzIik7CisgICAgICAgIHJldHVybjsKICAgICBjYXNlIEpTQzo6
SW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsOgogICAgICAgICBvdXQucHJpbnQoIkdldHRlckNh
bGwiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0NvZGVPcmlnaW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlT3JpZ2luLmgKaW5kZXggZDE4NzlhMzI3ODFhMTU2M2EyZTQ2MWViZGJlN2M0YmVjMjM2YmRk
ZS4uMjA1YzA1NjdkMjQ2ZGE5ZDMzZTQ0MTY1NWRlZDQwMDBiMzc0Y2M3NyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVPcmlnaW4uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZU9yaWdpbi5oCkBAIC0yNiw2ICsyNiw3IEBACiAj
aWZuZGVmIENvZGVPcmlnaW5faAogI2RlZmluZSBDb2RlT3JpZ2luX2gKIAorI2luY2x1ZGUgIkNh
bGxNb2RlLmgiCiAjaW5jbHVkZSAiQ29kZUJsb2NrSGFzaC5oIgogI2luY2x1ZGUgIkNvZGVTcGVj
aWFsaXphdGlvbktpbmQuaCIKICNpbmNsdWRlICJWYWx1ZVJlY292ZXJ5LmgiCkBAIC0xMjAsMzcg
KzEyMSw1OCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1lIHsKICAgICBlbnVtIEtpbmQgewogICAg
ICAgICBDYWxsLAogICAgICAgICBDb25zdHJ1Y3QsCisgICAgICAgIFRhaWxDYWxsLAogICAgICAg
ICBDYWxsVmFyYXJncywKICAgICAgICAgQ29uc3RydWN0VmFyYXJncywKKyAgICAgICAgVGFpbENh
bGxWYXJhcmdzLAogICAgICAgICAKICAgICAgICAgLy8gRm9yIHRoZXNlLCB0aGUgc3RhY2tPZmZz
ZXQgaW5jb3Jwb3JhdGVzIHRoZSBhcmd1bWVudCBjb3VudCBwbHVzIHRoZSB0cnVlIHJldHVybiBQ
QwogICAgICAgICAvLyBzbG90LgogICAgICAgICBHZXR0ZXJDYWxsLAogICAgICAgICBTZXR0ZXJD
YWxsCiAgICAgfTsKLSAgICAKLSAgICBzdGF0aWMgS2luZCBraW5kRm9yKENvZGVTcGVjaWFsaXph
dGlvbktpbmQga2luZCkKKworICAgIHN0YXRpYyBDYWxsTW9kZSBjYWxsTW9kZUZvcihLaW5kIGtp
bmQpCiAgICAgewogICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBDb2RlRm9y
Q2FsbDoKKyAgICAgICAgY2FzZSBDYWxsOgorICAgICAgICBjYXNlIENhbGxWYXJhcmdzOgorICAg
ICAgICBjYXNlIEdldHRlckNhbGw6CisgICAgICAgIGNhc2UgU2V0dGVyQ2FsbDoKKyAgICAgICAg
ICAgIHJldHVybiBDYWxsTW9kZTo6UmVndWxhcjsKKyAgICAgICAgY2FzZSBUYWlsQ2FsbDoKKyAg
ICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgICAgICByZXR1cm4gQ2FsbE1vZGU6
OlRhaWw7CisgICAgICAgIGNhc2UgQ29uc3RydWN0OgorICAgICAgICBjYXNlIENvbnN0cnVjdFZh
cmFyZ3M6CisgICAgICAgICAgICByZXR1cm4gQ2FsbE1vZGU6OkNvbnN0cnVjdDsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHN0YXRpYyBLaW5kIGtpbmRGb3IoQ2FsbE1vZGUgY2FsbE1vZGUpCisg
ICAgeworICAgICAgICBzd2l0Y2ggKGNhbGxNb2RlKSB7CisgICAgICAgIGNhc2UgQ2FsbE1vZGU6
OlJlZ3VsYXI6CiAgICAgICAgICAgICByZXR1cm4gQ2FsbDsKLSAgICAgICAgY2FzZSBDb2RlRm9y
Q29uc3RydWN0OgorICAgICAgICBjYXNlIENhbGxNb2RlOjpDb25zdHJ1Y3Q6CiAgICAgICAgICAg
ICByZXR1cm4gQ29uc3RydWN0OworICAgICAgICBjYXNlIENhbGxNb2RlOjpUYWlsOgorICAgICAg
ICAgICAgcmV0dXJuIFRhaWxDYWxsOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBDYWxsOwogICAgIH0KICAgICAKLSAgICBz
dGF0aWMgS2luZCB2YXJhcmdzS2luZEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQpCisg
ICAgc3RhdGljIEtpbmQgdmFyYXJnc0tpbmRGb3IoQ2FsbE1vZGUgY2FsbE1vZGUpCiAgICAgewot
ICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICAgICAgY2FzZSBDb2RlRm9yQ2FsbDoKKyAgICAg
ICAgc3dpdGNoIChjYWxsTW9kZSkgeworICAgICAgICBjYXNlIENhbGxNb2RlOjpSZWd1bGFyOgog
ICAgICAgICAgICAgcmV0dXJuIENhbGxWYXJhcmdzOwotICAgICAgICBjYXNlIENvZGVGb3JDb25z
dHJ1Y3Q6CisgICAgICAgIGNhc2UgQ2FsbE1vZGU6OkNvbnN0cnVjdDoKICAgICAgICAgICAgIHJl
dHVybiBDb25zdHJ1Y3RWYXJhcmdzOworICAgICAgICBjYXNlIENhbGxNb2RlOjpUYWlsOgorICAg
ICAgICAgICAgcmV0dXJuIFRhaWxDYWxsVmFyYXJnczsKICAgICAgICAgfQogICAgICAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQ2FsbDsKICAgICB9CiAg
ICAgCiAgICAgc3RhdGljIENvZGVTcGVjaWFsaXphdGlvbktpbmQgc3BlY2lhbGl6YXRpb25LaW5k
Rm9yKEtpbmQga2luZCkKQEAgLTE1OCw2ICsxODAsOCBAQCBzdHJ1Y3QgSW5saW5lQ2FsbEZyYW1l
IHsKICAgICAgICAgc3dpdGNoIChraW5kKSB7CiAgICAgICAgIGNhc2UgQ2FsbDoKICAgICAgICAg
Y2FzZSBDYWxsVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbDoKKyAgICAgICAgY2FzZSBU
YWlsQ2FsbFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgR2V0dGVyQ2FsbDoKICAgICAgICAgY2FzZSBT
ZXR0ZXJDYWxsOgogICAgICAgICAgICAgcmV0dXJuIENvZGVGb3JDYWxsOwpAQCAtMTY2LDcgKzE5
MCw2IEBAIHN0cnVjdCBJbmxpbmVDYWxsRnJhbWUgewogICAgICAgICAgICAgcmV0dXJuIENvZGVG
b3JDb25zdHJ1Y3Q7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIENvZGVGb3JDYWxsOwogICAgIH0KICAgICAKICAgICBzdGF0
aWMgYm9vbCBpc1ZhcmFyZ3MoS2luZCBraW5kKQpAQCAtMTc0LDYgKzE5Nyw3IEBAIHN0cnVjdCBJ
bmxpbmVDYWxsRnJhbWUgewogICAgICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICAgICAgY2FzZSBD
YWxsVmFyYXJnczoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgorICAgICAgICBjYXNl
IFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZh
dWx0OgogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTgzLDExICsyMDcsNDkgQEAgc3Ry
dWN0IElubGluZUNhbGxGcmFtZSB7CiAgICAgewogICAgICAgICByZXR1cm4gaXNWYXJhcmdzKHN0
YXRpY19jYXN0PEtpbmQ+KGtpbmQpKTsKICAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc1RhaWwo
S2luZCBraW5kKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChraW5kKSB7CisgICAgICAgIGNhc2Ug
VGFpbENhbGw6CisgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKyAgICB9CisgICAgYm9vbCBpc1RhaWwoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIGlzVGFpbChzdGF0aWNfY2FzdDxLaW5kPihraW5kKSk7CisgICAgfQorCisgICAgc3Rh
dGljIENvZGVPcmlnaW4qIGNvbXB1dGVDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoSW5saW5lQ2Fs
bEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCisgICAgeworICAgICAgICBDb2RlT3JpZ2luKiBjb2Rl
T3JpZ2luOworICAgICAgICBib29sIHRhaWxDYWxsZWU7CisgICAgICAgIGRvIHsKKyAgICAgICAg
ICAgIHRhaWxDYWxsZWUgPSBpbmxpbmVDYWxsRnJhbWUtPmlzVGFpbCgpOworICAgICAgICAgICAg
Y29kZU9yaWdpbiA9ICZpbmxpbmVDYWxsRnJhbWUtPmRpcmVjdENhbGxlcjsKKyAgICAgICAgICAg
IGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4tPmlubGluZUNhbGxGcmFtZTsKKyAgICAgICAg
fSB3aGlsZSAoaW5saW5lQ2FsbEZyYW1lICYmIHRhaWxDYWxsZWUpOworICAgICAgICBpZiAodGFp
bENhbGxlZSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICByZXR1cm4gY29k
ZU9yaWdpbjsKKyAgICB9CisgICAgQ29kZU9yaWdpbiogZ2V0Q2FsbGVyU2tpcHBpbmdEZWFkRnJh
bWVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBjb21wdXRlQ2FsbGVyU2tpcHBpbmdEZWFkRnJh
bWVzKHRoaXMpOworICAgIH0KKyAgICBJbmxpbmVDYWxsRnJhbWUqIGdldENhbGxlcklubGluZUZy
YW1lU2tpcHBpbmdEZWFkRnJhbWVzKCkKKyAgICB7CisgICAgICAgIENvZGVPcmlnaW4qIGNhbGxl
ciA9IGdldENhbGxlclNraXBwaW5nRGVhZEZyYW1lcygpOworICAgICAgICByZXR1cm4gY2FsbGVy
ID8gY2FsbGVyLT5pbmxpbmVDYWxsRnJhbWUgOiBudWxscHRyOworICAgIH0KICAgICAKICAgICBW
ZWN0b3I8VmFsdWVSZWNvdmVyeT4gYXJndW1lbnRzOyAvLyBJbmNsdWRlcyAndGhpcycuCiAgICAg
V3JpdGVCYXJyaWVyPFNjcmlwdEV4ZWN1dGFibGU+IGV4ZWN1dGFibGU7CiAgICAgVmFsdWVSZWNv
dmVyeSBjYWxsZWVSZWNvdmVyeTsKLSAgICBDb2RlT3JpZ2luIGNhbGxlcjsKKyAgICBDb2RlT3Jp
Z2luIGRpcmVjdENhbGxlcjsKIAogICAgIHNpZ25lZCBzdGFja09mZnNldCA6IDI4OwogICAgIHVu
c2lnbmVkIGtpbmQgOiAzOyAvLyByZWFsIHR5cGUgaXMgS2luZApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCmlu
ZGV4IGQ1YWY5Mjc2YjQ1MzBjMGUxYWJlMzI3NGUwMzZlMDVmZTFmMjdjYTguLjA0YzA3YjYxYTVm
NzM4OTNmYzFkNjYzZjQwYmI2Nzg3YmU1MGFhN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKQEAgLTE0
NDIsNiArMTQ0MiwxMyBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgIGNhc2UgUmV0dXJu
OgogICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFsc2UpOwogICAgICAgICBicmVhazsKKwor
ICAgIGNhc2UgVGFpbENhbGw6CisgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAgY2FzZSBU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2lu
LnNlbWFudGljLCBjbG9iYmVyTGltaXQpOworICAgICAgICBtX3N0YXRlLnNldElzVmFsaWQoZmFs
c2UpOworICAgICAgICBicmVhazsKICAgICAgICAgCiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNl
IFRocm93UmVmZXJlbmNlRXJyb3I6CkBAIC0yMjUzLDEzICsyMjYwLDE2IEBAIGJvb2wgQWJzdHJh
Y3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVk
IGNsb2JiZXJMaW1pCiAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgCiAgICAgY2FzZSBDYWxs
OgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbDoKICAgICBjYXNlIENvbnN0cnVjdDoKICAgICBj
YXNlIE5hdGl2ZUNhbGw6CiAgICAgY2FzZSBOYXRpdmVDb25zdHJ1Y3Q6CiAgICAgY2FzZSBDYWxs
VmFyYXJnczoKICAgICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICBjYXNlIEVtdWxhdGVk
VGFpbENhbGxWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICBjYXNlIENv
bnN0cnVjdEZvcndhcmRWYXJhcmdzOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzOgogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBjbG9i
YmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUpLm1ha2VIZWFwVG9wKCk7CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVu
dHNFbGltaW5hdGlvblBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJn
dW1lbnRzRWxpbWluYXRpb25QaGFzZS5jcHAKaW5kZXggNjQ3MjNkMjUzY2Q3N2EwMDUwMjlkMDkz
YzY0N2QyYzEwNzFkMDA5YS4uNWI2M2RkNjE0ZTNmMDY2ZGQ1YzU1YjAxYTIzOWE0MGVhYWJhYzBl
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudHNFbGlt
aW5hdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3Vt
ZW50c0VsaW1pbmF0aW9uUGhhc2UuY3BwCkBAIC0xNjcsNiArMTY3LDggQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgY2FzZSBDYWxsVmFyYXJnczoKICAg
ICAgICAgICAgICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CisgICAgICAgICAgICAgICAgY2Fz
ZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgICAgICAgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxs
VmFyYXJnczoKICAgICAgICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgICAgICAgICAgICAgZXNjYXBlKG5vZGUtPmNoaWxkMygpKTsKICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC01NTMsNyArNTU1LDkgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGNhc2UgQ2FsbFZhcmFy
Z3M6Ci0gICAgICAgICAgICAgICAgY2FzZSBDb25zdHJ1Y3RWYXJhcmdzOiB7CisgICAgICAgICAg
ICAgICAgY2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgorICAgICAgICAgICAgICAgIGNhc2UgVGFpbENh
bGxWYXJhcmdzOgorICAgICAgICAgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbFZhcmFyZ3M6
IHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogY2FuZGlkYXRlID0gbm9kZS0+Y2hpbGQyKCku
bm9kZSgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoIW1fY2FuZGlkYXRlcy5jb250YWlucyhj
YW5kaWRhdGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CkBAIC01NzgsMTYgKzU4
Miw0NCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5tX3ZhckFy
Z0NoaWxkcmVuLmFwcGVuZChub2RlLT5jaGlsZDMoKSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3IgKE5vZGUqIGFyZ3VtZW50IDogYXJndW1lbnRzKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5hcHBlbmQoRWRnZShhcmd1bWVudCkpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+b3AoKSA9PSBDYWxsVmFyYXJncyA/IENhbGwg
OiBDb25zdHJ1Y3QpOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChub2RlLT5vcCgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIENhbGxWYXJhcmdzOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKENhbGwpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAg
Y2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUt
PnNldE9wQW5kRGVmYXVsdEZsYWdzKENvbnN0cnVjdCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJn
czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFn
cyhUYWlsQ2FsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgICAgICAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKEVtdWxhdGVkVGFp
bENhbGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y2hpbGRyZW4gPSBBZGphY2VuY3lMaXN0KAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEFkamFjZW5jeUxpc3Q6OlZhcmlhYmxlLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQsIG1fZ3JhcGgubV92YXJBcmdDaGlsZHJlbi5z
aXplKCkgLSBmaXJzdENoaWxkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAg
ICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncygKLSAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPm9wKCkgPT0gQ2FsbFZhcmFyZ3MgPyBDYWxsRm9yd2FyZFZhcmFyZ3MgOiBDb25zdHJ1
Y3RGb3J3YXJkVmFyYXJncyk7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobm9kZS0+b3Ao
KSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIENhbGxWYXJhcmdzOgorICAgICAgICAgICAg
ICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoQ2FsbEZvcndhcmRWYXJhcmdz
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBj
YXNlIENvbnN0cnVjdFZhcmFyZ3M6CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRP
cEFuZERlZmF1bHRGbGFncyhDb25zdHJ1Y3RGb3J3YXJkVmFyYXJncyk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFy
Z3M6CisgICAgICAgICAgICAgICAgICAgICAgICBub2RlLT5zZXRPcEFuZERlZmF1bHRGbGFncyhU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgICAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgorICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoRW11bGF0ZWRUYWls
Q2FsbEZvcndhcmRWYXJhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suaAppbmRleCA0MjBmZjUx
MWM4YjZlMjI1MGUzNzc5ZGU4NjM5ZDNjZDcwYTA4MjJkLi45MWIyMDFiY2YwZTlhOTFlNGY3YmZm
YzgxMDUwYzlmMDcxNjM3YTNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0Jhc2ljQmxvY2suaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2lj
QmxvY2suaApAQCAtOTIsNiArOTIsOCBAQCBzdHJ1Y3QgQmFzaWNCbG9jayA6IFJlZkNvdW50ZWQ8
QmFzaWNCbG9jaz4gewogICAgICAgICAgICAgY2FzZSBCcmFuY2g6CiAgICAgICAgICAgICBjYXNl
IFN3aXRjaDoKICAgICAgICAgICAgIGNhc2UgUmV0dXJuOgorICAgICAgICAgICAgY2FzZSBUYWls
Q2FsbDoKKyAgICAgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICAgICAgY2Fz
ZSBVbnJlYWNoYWJsZToKICAgICAgICAgICAgICAgICByZXR1cm4gTm9kZUFuZEluZGV4KG5vZGUs
IGkpOwogICAgICAgICAgICAgLy8gVGhlIGJpdHRlciBlbmQgY2FuIGNvbnRhaW4gUGhhbnRvbXMg
YW5kIHRoZSBsaWtlLiBUaGVyZSB3aWxsIHByb2JhYmx5IG9ubHkgYmUgb25lIG9yIHR3byBub2Rl
cyBhZnRlciB0aGUgdGVybWluYWwuIFRoZXkgYXJlIGFsbCBuby1vcHMgYW5kIHdpbGwgbm90IGhh
dmUgYW55IGNoZWNrZWQgY2hpbGRyZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQnl0ZUNvZGVQYXJzZXIuY3BwCmluZGV4IDRjMWY0M2IxZWU2ZmMzY2E3ZjA4Y2RiOGRhZGJl
NjdhNjBlMmY3ZjIuLjY2YmJkZjQzMjllMjE0MTgyYzJlYTMzYjg5ZTMwYTFiYzk2ODMyZTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBA
IC0xODAsMTQgKzE4MCwxNCBAQCBwcml2YXRlOgogICAgICAgICBOb2RlKiBjYWxsVGFyZ2V0LCBp
bnQgYXJnQ291bnQsIGludCByZWdpc3Rlck9mZnNldCwgQ2FsbExpbmtTdGF0dXMsCiAgICAgICAg
IFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24pOwogICAgIHZvaWQgaGFuZGxlQ2FsbCgKLSAgICAg
ICAgaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIElubGluZUNhbGxGcmFtZTo6S2luZCwgdW5zaWdu
ZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgICAgICBpbnQgcmVzdWx0LCBOb2RlVHlwZSBvcCwgQ2Fs
bE1vZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAgICAgICAgTm9kZSogY2FsbFRhcmdl
dCwgaW50IGFyZ0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQsIENhbGxMaW5rU3RhdHVzKTsKLSAg
ICB2b2lkIGhhbmRsZUNhbGwoaW50IHJlc3VsdCwgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFsaXph
dGlvbktpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwgaW50IGNhbGxlZSwgaW50IGFyZ0Nv
dW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQpOwotICAgIHZvaWQgaGFuZGxlQ2FsbChJbnN0cnVjdGlv
biogcGMsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kKTsKLSAgICB2b2lkIGhh
bmRsZVZhcmFyZ3NDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5cGUgb3AsIENvZGVTcGVjaWFs
aXphdGlvbktpbmQpOworICAgIHZvaWQgaGFuZGxlQ2FsbChpbnQgcmVzdWx0LCBOb2RlVHlwZSBv
cCwgQ2FsbE1vZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwgaW50IGNhbGxlZSwgaW50IGFy
Z0NvdW50LCBpbnQgcmVnaXN0ZXJPZmZzZXQpOworICAgIHZvaWQgaGFuZGxlQ2FsbChJbnN0cnVj
dGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSk7CisgICAgdm9pZCBoYW5kbGVWYXJhcmdz
Q2FsbChJbnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDYWxsTW9kZSk7CiAgICAgdm9pZCBl
bWl0RnVuY3Rpb25DaGVja3MoQ2FsbFZhcmlhbnQsIE5vZGUqIGNhbGxUYXJnZXQsIFZpcnR1YWxS
ZWdpc3RlciB0aGlzQXJndW1udCk7CiAgICAgdm9pZCBlbWl0QXJndW1lbnRQaGFudG9tcyhpbnQg
cmVnaXN0ZXJPZmZzZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcyk7Ci0gICAgdW5z
aWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQpOyAvLyBSZXR1cm4gVUlOVF9NQVggaWYgaXQn
cyBub3QgYW4gaW5saW5pbmcgY2FuZGlkYXRlLiBCeSBjb252ZW50aW9uLCBpbnRyaW5zaWNzIGhh
dmUgYSBjb3N0IG9mIDEuCisgICAgdW5zaWduZWQgaW5saW5pbmdDb3N0KENhbGxWYXJpYW50LCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENhbGxNb2RlKTsgLy8gUmV0dXJuIFVJTlRf
TUFYIGlmIGl0J3Mgbm90IGFuIGlubGluaW5nIGNhbmRpZGF0ZS4gQnkgY29udmVudGlvbiwgaW50
cmluc2ljcyBoYXZlIGEgY29zdCBvZiAxLgogICAgIC8vIEhhbmRsZSBpbmxpbmluZy4gUmV0dXJu
IHRydWUgaWYgaXQgc3VjY2VlZGVkLCBmYWxzZSBpZiB3ZSBuZWVkIHRvIHBsYW50IGEgY2FsbC4K
ICAgICBib29sIGhhbmRsZUlubGluaW5nKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0
T3BlcmFuZCwgY29uc3QgQ2FsbExpbmtTdGF0dXMmLCBpbnQgcmVnaXN0ZXJPZmZzZXQsIFZpcnR1
YWxSZWdpc3RlciB0aGlzQXJndW1lbnQsIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudHNBcmd1bWVu
dCwgdW5zaWduZWQgYXJndW1lbnRzT2Zmc2V0LCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXMsIHVuc2lnbmVkIG5leHRPZmZzZXQsIE5vZGVUeXBlIGNhbGxPcCwgSW5saW5lQ2FsbEZyYW1l
OjpLaW5kLCBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKTsKICAgICBlbnVtIENhbGxlckxpbmth
YmlsaXR5IHsgQ2FsbGVyRG9lc05vcm1hbExpbmtpbmcsIENhbGxlckxpbmtzTWFudWFsbHkgfTsK
QEAgLTYwMCw2ICs2MDAsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgcmV0dXJuIG1faW5saW5lU3Rh
Y2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lOwogICAgIH0KIAorICAgIGJvb2wgYWxsSW5saW5lRnJh
bWVzQXJlVGFpbENhbGxzKCkKKyAgICB7CisgICAgICAgIHJldHVybiAhaW5saW5lQ2FsbEZyYW1l
KCkgfHwgIWlubGluZUNhbGxGcmFtZSgpLT5nZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoKTsK
KyAgICB9CisKICAgICBDb2RlT3JpZ2luIGN1cnJlbnRDb2RlT3JpZ2luKCkKICAgICB7CiAgICAg
ICAgIHJldHVybiBDb2RlT3JpZ2luKG1fY3VycmVudEluZGV4LCBpbmxpbmVDYWxsRnJhbWUoKSk7
CkBAIC02ODAsNyArNjg1LDcgQEAgcHJpdmF0ZToKICAgICAKICAgICBOb2RlKiBhZGRDYWxsV2l0
aG91dFNldHRpbmdSZXN1bHQoCiAgICAgICAgIE5vZGVUeXBlIG9wLCBPcEluZm8gb3BJbmZvLCBO
b2RlKiBjYWxsZWUsIGludCBhcmdDb3VudCwgaW50IHJlZ2lzdGVyT2Zmc2V0LAotICAgICAgICBT
cGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKQorICAgICAgICBPcEluZm8gcHJlZGljdGlvbikKICAg
ICB7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGNhbGxlZSk7CiAgICAgICAgIHNpemVfdCBmcmFt
ZVNpemUgPSBKU1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplICsgYXJnQ291bnQ7CkBAIC02OTMs
MTUgKzY5OCwyMiBAQCBwcml2YXRlOgogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ0Nv
dW50OyArK2kpCiAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChnZXQodmlydHVhbFJlZ2lzdGVy
Rm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiAKLSAgICAgICAgcmV0dXJuIGFkZFRv
R3JhcGgoTm9kZTo6VmFyQXJnLCBvcCwgb3BJbmZvLCBPcEluZm8ocHJlZGljdGlvbikpOworICAg
ICAgICByZXR1cm4gYWRkVG9HcmFwaChOb2RlOjpWYXJBcmcsIG9wLCBvcEluZm8sIHByZWRpY3Rp
b24pOwogICAgIH0KICAgICAKICAgICBOb2RlKiBhZGRDYWxsKAogICAgICAgICBpbnQgcmVzdWx0
LCBOb2RlVHlwZSBvcCwgT3BJbmZvIG9wSW5mbywgTm9kZSogY2FsbGVlLCBpbnQgYXJnQ291bnQs
IGludCByZWdpc3Rlck9mZnNldCwKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGlvbikK
ICAgICB7CisgICAgICAgIGlmIChvcCA9PSBUYWlsQ2FsbCkgeworICAgICAgICAgICAgaWYgKGFs
bElubGluZUZyYW1lc0FyZVRhaWxDYWxscygpKQorICAgICAgICAgICAgICAgIHJldHVybiBhZGRD
YWxsV2l0aG91dFNldHRpbmdSZXN1bHQob3AsIE9wSW5mbygpLCBjYWxsZWUsIGFyZ0NvdW50LCBy
ZWdpc3Rlck9mZnNldCwgT3BJbmZvKCkpOworICAgICAgICAgICAgb3AgPSBFbXVsYXRlZFRhaWxD
YWxsOworICAgICAgICB9CisKKwogICAgICAgICBOb2RlKiBjYWxsID0gYWRkQ2FsbFdpdGhvdXRT
ZXR0aW5nUmVzdWx0KAotICAgICAgICAgICAgb3AsIG9wSW5mbywgY2FsbGVlLCBhcmdDb3VudCwg
cmVnaXN0ZXJPZmZzZXQsIHByZWRpY3Rpb24pOworICAgICAgICAgICAgb3AsIG9wSW5mbywgY2Fs
bGVlLCBhcmdDb3VudCwgcmVnaXN0ZXJPZmZzZXQsIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAg
ICAgIFZpcnR1YWxSZWdpc3RlciByZXN1bHRSZWcocmVzdWx0KTsKICAgICAgICAgaWYgKHJlc3Vs
dFJlZy5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBzZXQocmVzdWx0UmVnLCBjYWxsKTsKQEAgLTcx
NywxNCArNzI5LDYyIEBAIHByaXZhdGU6CiAgICAgCiAgICAgU3BlY3VsYXRlZFR5cGUgZ2V0UHJl
ZGljdGlvbldpdGhvdXRPU1JFeGl0KHVuc2lnbmVkIGJ5dGVjb2RlSW5kZXgpCiAgICAgewotICAg
ICAgICBDb25jdXJyZW50SklUTG9ja2VyIGxvY2tlcihtX2lubGluZVN0YWNrVG9wLT5tX3Byb2Zp
bGVkQmxvY2stPm1fbG9jayk7Ci0gICAgICAgIHJldHVybiBtX2lubGluZVN0YWNrVG9wLT5tX3By
b2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JCeXRlY29kZU9mZnNldChsb2Nr
ZXIsIGJ5dGVjb2RlSW5kZXgpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uOwor
ICAgICAgICBDb2RlQmxvY2sqIHByb2ZpbGVkQmxvY2sgPSBudWxscHRyOworCisgICAgICAgIHsK
KyAgICAgICAgICAgIENvbmN1cnJlbnRKSVRMb2NrZXIgbG9ja2VyKG1faW5saW5lU3RhY2tUb3At
Pm1fcHJvZmlsZWRCbG9jay0+bV9sb2NrKTsKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBtX2lu
bGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPnZhbHVlUHJvZmlsZVByZWRpY3Rpb25Gb3JC
eXRlY29kZU9mZnNldChsb2NrZXIsIGJ5dGVjb2RlSW5kZXgpOworCisgICAgICAgICAgICBpZiAo
cHJlZGljdGlvbiA9PSBTcGVjTm9uZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUg
bm8gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHZhbHVlcyB0aGlzCisgICAgICAgICAgICAgICAgLy8g
bm9kZSBnZW5lcmF0ZXMsIHdlIGNoZWNrIGlmIGJ5IGFueSBjaGFuY2UgaXQgaXMKKyAgICAgICAg
ICAgICAgICAvLyBhIHRhaWwgY2FsbCBvcGNvZGUuIEluIHRoYXQgY2FzZSwgd2Ugd2FsayB1cCB0
aGUKKyAgICAgICAgICAgICAgICAvLyBpbmxpbmUgZnJhbWVzIHRvIGZpbmQgYSBjYWxsIGhpZ2hl
ciBpbiB0aGUgY2FsbAorICAgICAgICAgICAgICAgIC8vIGNoYWluIGFuZCB1c2UgaXRzIHByZWRp
Y3Rpb24uIElmIHdlIG9ubHkgaGF2ZQorICAgICAgICAgICAgICAgIC8vIGlubGluZWQgdGFpbCBj
YWxsIGZyYW1lcywgd2UgdXNlIFNwZWNGdWxsVG9wCisgICAgICAgICAgICAgICAgLy8gdG8gYXZv
aWQgYSBzcHVyaW91cyBPU1IgZXhpdC4KKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiogaW5z
dHJ1Y3Rpb24gPSBtX2lubGluZVN0YWNrVG9wLT5tX3Byb2ZpbGVkQmxvY2stPmluc3RydWN0aW9u
cygpLmJlZ2luKCkgKyBieXRlY29kZUluZGV4OworICAgICAgICAgICAgICAgIE9wY29kZUlEIG9w
Y29kZUlEID0gbV92bS0+aW50ZXJwcmV0ZXItPmdldE9wY29kZUlEKGluc3RydWN0aW9uLT51Lm9w
Y29kZSk7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKG9wY29kZUlEKSB7CisgICAgICAgICAg
ICAgICAgY2FzZSBvcF90YWlsX2NhbGw6CisgICAgICAgICAgICAgICAgY2FzZSBvcF90YWlsX2Nh
bGxfdmFyYXJnczogeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlubGluZUNhbGxGcmFtZSgp
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWN0aW9uID0gU3BlY0Z1bGxUb3A7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luID0gaW5saW5lQ2FsbEZyYW1l
KCktPmdldENhbGxlclNraXBwaW5nRGVhZEZyYW1lcygpOworICAgICAgICAgICAgICAgICAgICBp
ZiAoIWNvZGVPcmlnaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY3Rpb24gPSBT
cGVjRnVsbFRvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIElubGluZVN0YWNrRW50cnkqIHN0YWNrID0g
bV9pbmxpbmVTdGFja1RvcDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHN0YWNrLT5tX2lu
bGluZUNhbGxGcmFtZSAhPSBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWUpCisgICAgICAgICAg
ICAgICAgICAgICAgICBzdGFjayA9IHN0YWNrLT5tX2NhbGxlcjsKKyAgICAgICAgICAgICAgICAg
ICAgYnl0ZWNvZGVJbmRleCA9IGNvZGVPcmlnaW4tPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgICAg
ICAgICAgICAgIHByb2ZpbGVkQmxvY2sgPSBzdGFjay0+bV9wcm9maWxlZEJsb2NrOworICAgICAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJvZmlsZWRCbG9jaykg
eworICAgICAgICAgICAgQ29uY3VycmVudEpJVExvY2tlciBsb2NrZXIocHJvZmlsZWRCbG9jay0+
bV9sb2NrKTsKKyAgICAgICAgICAgIHByZWRpY3Rpb24gPSBwcm9maWxlZEJsb2NrLT52YWx1ZVBy
b2ZpbGVQcmVkaWN0aW9uRm9yQnl0ZWNvZGVPZmZzZXQobG9ja2VyLCBieXRlY29kZUluZGV4KTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwcmVkaWN0aW9uOwogICAgIH0KIAogICAgIFNw
ZWN1bGF0ZWRUeXBlIGdldFByZWRpY3Rpb24odW5zaWduZWQgYnl0ZWNvZGVJbmRleCkKICAgICB7
CiAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24gPSBnZXRQcmVkaWN0aW9uV2l0aG91
dE9TUkV4aXQoYnl0ZWNvZGVJbmRleCk7Ci0gICAgICAgIAorCiAgICAgICAgIGlmIChwcmVkaWN0
aW9uID09IFNwZWNOb25lKSB7CiAgICAgICAgICAgICAvLyBXZSBoYXZlIG5vIGluZm9ybWF0aW9u
IGFib3V0IHdoYXQgdmFsdWVzIHRoaXMgbm9kZSBnZW5lcmF0ZXMuIEdpdmUgdXAKICAgICAgICAg
ICAgIC8vIG9uIGV4ZWN1dGluZyB0aGlzIGNvZGUsIHNpbmNlIHdlJ3JlIGxpa2VseSB0byBkbyBt
b3JlIGRhbWFnZSB0aGFuIGdvb2QuCkBAIC0xMDE0LDE2ICsxMDc0LDE3IEBAIHByaXZhdGU6CiAg
ICAgbV9jdXJyZW50SW5kZXggKz0gT1BDT0RFX0xFTkdUSChuYW1lKTsgXAogICAgIHJldHVybiBz
aG91bGRDb250aW51ZVBhcnNpbmcKIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbChJ
bnN0cnVjdGlvbiogcGMsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25LaW5kIGtpbmQp
Cit2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5kbGVDYWxsKEluc3RydWN0aW9uKiBwYywgTm9kZVR5
cGUgb3AsIENhbGxNb2RlIGNhbGxNb2RlKQogewogICAgIEFTU0VSVChPUENPREVfTEVOR1RIKG9w
X2NhbGwpID09IE9QQ09ERV9MRU5HVEgob3BfY29uc3RydWN0KSk7CisgICAgQVNTRVJUKE9QQ09E
RV9MRU5HVEgob3BfY2FsbCkgPT0gT1BDT0RFX0xFTkdUSChvcF90YWlsX2NhbGwpKTsKICAgICBo
YW5kbGVDYWxsKAotICAgICAgICBwY1sxXS51Lm9wZXJhbmQsIG9wLCBraW5kLCBPUENPREVfTEVO
R1RIKG9wX2NhbGwpLAorICAgICAgICBwY1sxXS51Lm9wZXJhbmQsIG9wLCBjYWxsTW9kZSwgT1BD
T0RFX0xFTkdUSChvcF9jYWxsKSwKICAgICAgICAgcGNbMl0udS5vcGVyYW5kLCBwY1szXS51Lm9w
ZXJhbmQsIC1wY1s0XS51Lm9wZXJhbmQpOwogfQogCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDYWxsKAotICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBDb2RlU3BlY2lhbGl6YXRpb25L
aW5kIGtpbmQsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKKyAgICBpbnQgcmVzdWx0LCBOb2Rl
VHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUsIHVuc2lnbmVkIGluc3RydWN0aW9uU2l6ZSwKICAg
ICBpbnQgY2FsbGVlLCBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGludCByZWdpc3Rl
ck9mZnNldCkKIHsKICAgICBOb2RlKiBjYWxsVGFyZ2V0ID0gZ2V0KFZpcnR1YWxSZWdpc3Rlcihj
YWxsZWUpKTsKQEAgLTEwMzMsMTcgKzEwOTQsMTcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlQ2FsbCgKICAgICAgICAgbV9pbmxpbmVTdGFja1RvcC0+bV9jYWxsTGlua0luZm9zLCBtX2Nh
bGxDb250ZXh0TWFwKTsKICAgICAKICAgICBoYW5kbGVDYWxsKAotICAgICAgICByZXN1bHQsIG9w
LCBJbmxpbmVDYWxsRnJhbWU6OmtpbmRGb3Ioa2luZCksIGluc3RydWN0aW9uU2l6ZSwgY2FsbFRh
cmdldCwKKyAgICAgICAgcmVzdWx0LCBvcCwgY2FsbE1vZGUsIGluc3RydWN0aW9uU2l6ZSwgY2Fs
bFRhcmdldCwKICAgICAgICAgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zm
c2V0LCBjYWxsTGlua1N0YXR1cyk7CiB9CiAgICAgCiB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpoYW5k
bGVDYWxsKAotICAgIGludCByZXN1bHQsIE5vZGVUeXBlIG9wLCBJbmxpbmVDYWxsRnJhbWU6Oktp
bmQga2luZCwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAorICAgIGludCByZXN1bHQsIE5vZGVU
eXBlIG9wLCBDYWxsTW9kZSBjYWxsTW9kZSwgdW5zaWduZWQgaW5zdHJ1Y3Rpb25TaXplLAogICAg
IE5vZGUqIGNhbGxUYXJnZXQsIGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgaW50IHJl
Z2lzdGVyT2Zmc2V0LAogICAgIENhbGxMaW5rU3RhdHVzIGNhbGxMaW5rU3RhdHVzKQogewogICAg
IGhhbmRsZUNhbGwoCi0gICAgICAgIHJlc3VsdCwgb3AsIGtpbmQsIGluc3RydWN0aW9uU2l6ZSwg
Y2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCisgICAgICAgIHJlc3VsdCwg
b3AsIElubGluZUNhbGxGcmFtZTo6a2luZEZvcihjYWxsTW9kZSksIGluc3RydWN0aW9uU2l6ZSwg
Y2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsCiAgICAgICAgIHJlZ2lzdGVy
T2Zmc2V0LCBjYWxsTGlua1N0YXR1cywgZ2V0UHJlZGljdGlvbigpKTsKIH0KIApAQCAtMTA2Myw3
ICsxMTI0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlQ2FsbCgKICAgICBpZiAoIWNh
bGxMaW5rU3RhdHVzLmNhbk9wdGltaXplKCkpIHsKICAgICAgICAgLy8gT2RkbHksIHRoaXMgY29u
ZmxhdGVzIGNhbGxzIHRoYXQgaGF2ZW4ndCBleGVjdXRlZCB3aXRoIGNhbGxzIHRoYXQgYmVoYXZl
ZCBzdWZmaWNpZW50bHkgcG9seW1vcnBoaWNhbGx5CiAgICAgICAgIC8vIHRoYXQgd2UgY2Fubm90
IG9wdGltaXplIHRoZW0uCi0gICAgICAgIAorCiAgICAgICAgIGFkZENhbGwocmVzdWx0LCBvcCwg
T3BJbmZvKCksIGNhbGxUYXJnZXQsIGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCByZWdpc3Rl
ck9mZnNldCwgcHJlZGljdGlvbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xMDk2LDEz
ICsxMTU3LDE0IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmhhbmRsZUNhbGwoCiAgICAgICAgIH0K
ICAgICB9CiAjZW5kaWYKLSAgICAKKwogICAgIGFkZENhbGwocmVzdWx0LCBvcCwgY2FsbE9wSW5m
bywgY2FsbFRhcmdldCwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHJlZ2lzdGVyT2Zmc2V0
LCBwcmVkaWN0aW9uKTsKIH0KIAotdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0Nh
bGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBr
aW5kKQordm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwoSW5zdHJ1Y3Rpb24q
IHBjLCBOb2RlVHlwZSBvcCwgQ2FsbE1vZGUgY2FsbE1vZGUpCiB7CiAgICAgQVNTRVJUKE9QQ09E
RV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSA9PSBPUENPREVfTEVOR1RIKG9wX2NvbnN0cnVjdF92
YXJhcmdzKSk7CisgICAgQVNTRVJUKE9QQ09ERV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSA9PSBP
UENPREVfTEVOR1RIKG9wX3RhaWxfY2FsbF92YXJhcmdzKSk7CiAgICAgCiAgICAgaW50IHJlc3Vs
dCA9IHBjWzFdLnUub3BlcmFuZDsKICAgICBpbnQgY2FsbGVlID0gcGNbMl0udS5vcGVyYW5kOwpA
QCAtMTEyNSw3ICsxMTg3LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0Nh
bGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlwZSBvcCwgQ29kZVNwZWNpYWwKICAgICAgICAgZGF0
YUxvZygiICAgIFZhcmFyZ3MgY2FsbCBsaW5rIHN0YXR1cyBhdCAiLCBjdXJyZW50Q29kZU9yaWdp
bigpLCAiOiAiLCBjYWxsTGlua1N0YXR1cywgIlxuIik7CiAgICAgCiAgICAgaWYgKGNhbGxMaW5r
U3RhdHVzLmNhbk9wdGltaXplKCkKLSAgICAgICAgJiYgaGFuZGxlSW5saW5pbmcoY2FsbFRhcmdl
dCwgcmVzdWx0LCBjYWxsTGlua1N0YXR1cywgZmlyc3RGcmVlUmVnLCBWaXJ0dWFsUmVnaXN0ZXIo
dGhpc1JlZyksIFZpcnR1YWxSZWdpc3Rlcihhcmd1bWVudHMpLCBmaXJzdFZhckFyZ09mZnNldCwg
MCwgbV9jdXJyZW50SW5kZXggKyBPUENPREVfTEVOR1RIKG9wX2NhbGxfdmFyYXJncyksIG9wLCBJ
bmxpbmVDYWxsRnJhbWU6OnZhcmFyZ3NLaW5kRm9yKGtpbmQpLCBwcmVkaWN0aW9uKSkgeworICAg
ICAgICAmJiBoYW5kbGVJbmxpbmluZyhjYWxsVGFyZ2V0LCByZXN1bHQsIGNhbGxMaW5rU3RhdHVz
LCBmaXJzdEZyZWVSZWcsIFZpcnR1YWxSZWdpc3Rlcih0aGlzUmVnKSwgVmlydHVhbFJlZ2lzdGVy
KGFyZ3VtZW50cyksIGZpcnN0VmFyQXJnT2Zmc2V0LCAwLCBtX2N1cnJlbnRJbmRleCArIE9QQ09E
RV9MRU5HVEgob3BfY2FsbF92YXJhcmdzKSwgb3AsIElubGluZUNhbGxGcmFtZTo6dmFyYXJnc0tp
bmRGb3IoY2FsbE1vZGUpLCBwcmVkaWN0aW9uKSkgewogICAgICAgICBpZiAobV9ncmFwaC5jb21w
aWxhdGlvbigpKQogICAgICAgICAgICAgbV9ncmFwaC5jb21waWxhdGlvbigpLT5ub3RpY2VJbmxp
bmVkQ2FsbCgpOwogICAgICAgICByZXR1cm47CkBAIC0xMTM1LDcgKzExOTcsMTUgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6aGFuZGxlVmFyYXJnc0NhbGwoSW5zdHJ1Y3Rpb24qIHBjLCBOb2RlVHlw
ZSBvcCwgQ29kZVNwZWNpYWwKICAgICBkYXRhLT5maXJzdFZhckFyZ09mZnNldCA9IGZpcnN0VmFy
QXJnT2Zmc2V0OwogICAgIAogICAgIE5vZGUqIHRoaXNDaGlsZCA9IGdldChWaXJ0dWFsUmVnaXN0
ZXIodGhpc1JlZykpOwotICAgIAorCisgICAgaWYgKG9wID09IFRhaWxDYWxsVmFyYXJncykgewor
ICAgICAgICBpZiAoYWxsSW5saW5lRnJhbWVzQXJlVGFpbENhbGxzKCkpIHsKKyAgICAgICAgICAg
IGFkZFRvR3JhcGgob3AsIE9wSW5mbyhkYXRhKSwgT3BJbmZvKCksIGNhbGxUYXJnZXQsIGdldChW
aXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRzKSksIHRoaXNDaGlsZCk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgb3AgPSBFbXVsYXRlZFRhaWxDYWxsVmFyYXJnczsKKyAg
ICB9CisKICAgICBOb2RlKiBjYWxsID0gYWRkVG9HcmFwaChvcCwgT3BJbmZvKGRhdGEpLCBPcElu
Zm8ocHJlZGljdGlvbiksIGNhbGxUYXJnZXQsIGdldChWaXJ0dWFsUmVnaXN0ZXIoYXJndW1lbnRz
KSksIHRoaXNDaGlsZCk7CiAgICAgVmlydHVhbFJlZ2lzdGVyIHJlc3VsdFJlZyhyZXN1bHQpOwog
ICAgIGlmIChyZXN1bHRSZWcuaXNWYWxpZCgpKQpAQCAtMTE3MCw4ICsxMjQwLDkgQEAgdm9pZCBC
eXRlQ29kZVBhcnNlcjo6ZW1pdEFyZ3VtZW50UGhhbnRvbXMoaW50IHJlZ2lzdGVyT2Zmc2V0LCBp
bnQgYXJndW1lbnRDb3VudEkKICAgICAgICAgYWRkVG9HcmFwaChQaGFudG9tLCBnZXQodmlydHVh
bFJlZ2lzdGVyRm9yQXJndW1lbnQoaSwgcmVnaXN0ZXJPZmZzZXQpKSk7CiB9CiAKLXVuc2lnbmVk
IEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBpbnQgYXJn
dW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCkKK3Vu
c2lnbmVkIEJ5dGVDb2RlUGFyc2VyOjppbmxpbmluZ0Nvc3QoQ2FsbFZhcmlhbnQgY2FsbGVlLCBp
bnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIENhbGxNb2RlIGNhbGxNb2RlKQogeworICAg
IENvZGVTcGVjaWFsaXphdGlvbktpbmQga2luZCA9IHNwZWNpYWxpemF0aW9uS2luZEZvcihjYWxs
TW9kZSk7CiAgICAgaWYgKHZlcmJvc2UpCiAgICAgICAgIGRhdGFMb2coIkNvbnNpZGVyaW5nIGlu
bGluaW5nICIsIGNhbGxlZSwgIiBpbnRvICIsIGN1cnJlbnRDb2RlT3JpZ2luKCksICJcbiIpOwog
ICAgIApAQCAtMTIxMyw3ICsxMjg0LDcgQEAgdW5zaWduZWQgQnl0ZUNvZGVQYXJzZXI6OmlubGlu
aW5nQ29zdChDYWxsVmFyaWFudCBjYWxsZWUsIGludCBhcmd1bWVudENvdW50SW5jbHUKICAgICBD
YXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsID0gaW5saW5lRnVuY3Rpb25Gb3JDYXBhYmls
aXR5TGV2ZWwoCiAgICAgICAgIGNvZGVCbG9jaywga2luZCwgY2FsbGVlLmlzQ2xvc3VyZUNhbGwo
KSk7CiAgICAgaWYgKHZlcmJvc2UpIHsKLSAgICAgICAgZGF0YUxvZygiICAgIEtpbmQ6ICIsIGtp
bmQsICJcbiIpOworICAgICAgICBkYXRhTG9nKCIgICAgQ2FsbCBtb2RlOiAiLCBjYWxsTW9kZSwg
IlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBjbG9zdXJlIGNhbGw6ICIsIGNhbGxlZS5p
c0Nsb3N1cmVDYWxsKCksICJcbiIpOwogICAgICAgICBkYXRhTG9nKCIgICAgQ2FwYWJpbGl0eSBs
ZXZlbDogIiwgY2FwYWJpbGl0eUxldmVsLCAiXG4iKTsKICAgICAgICAgZGF0YUxvZygiICAgIE1p
Z2h0IGlubGluZSBmdW5jdGlvbjogIiwgbWlnaHRJbmxpbmVGdW5jdGlvbkZvcihjb2RlQmxvY2ss
IGtpbmQpLCAiXG4iKTsKQEAgLTEyODQsNyArMTM1NSw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6
OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIGludCByZXN1bHRPcGVyYW5kLCBDYWxs
VmFyCiB7CiAgICAgQ29kZVNwZWNpYWxpemF0aW9uS2luZCBzcGVjaWFsaXphdGlvbktpbmQgPSBJ
bmxpbmVDYWxsRnJhbWU6OnNwZWNpYWxpemF0aW9uS2luZEZvcihraW5kKTsKICAgICAKLSAgICBB
U1NFUlQoaW5saW5pbmdDb3N0KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNw
ZWNpYWxpemF0aW9uS2luZCkgIT0gVUlOVF9NQVgpOworICAgIEFTU0VSVChpbmxpbmluZ0Nvc3Qo
Y2FsbGVlLCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpjYWxs
TW9kZUZvcihraW5kKSkgIT0gVUlOVF9NQVgpOwogICAgIAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbGVlLmZ1bmN0aW9uRXhlY3V0YWJsZSgpLT5iYXNlbGluZUNvZGVCbG9ja0Zvcihz
cGVjaWFsaXphdGlvbktpbmQpOwogICAgIGluc2VydENoZWNrcyhjb2RlQmxvY2spOwpAQCAtMTM3
OSw3ICsxNDUwLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aW5saW5lQ2FsbChOb2RlKiBjYWxs
VGFyZ2V0Tm9kZSwgaW50IHJlc3VsdE9wZXJhbmQsIENhbGxWYXIKICAgICAgICAgbV9jdXJyZW50
QmxvY2sgPSBtX2dyYXBoLmxhc3RCbG9jaygpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgaWYgKE9wdGlvbnM6OnZlcmJvc2VERkdCeXRlQ29kZVBhcnNpbmcoKSkKICAgICAg
ICAgZGF0YUxvZygiICAgIENyZWF0aW5nIG5ldyBibG9jayBhZnRlciBpbmxpbmluZy5cbiIpOwog
CkBAIC0xNDg2LDcgKzE1NTcsNyBAQCBib29sIEJ5dGVDb2RlUGFyc2VyOjphdHRlbXB0VG9Jbmxp
bmVDYWxsKE5vZGUqIGNhbGxUYXJnZXROb2RlLCBpbnQgcmVzdWx0T3BlcmFuZAogICAgICAgICB9
CiAgICAgfQogICAgIAotICAgIHVuc2lnbmVkIG15SW5saW5pbmdDb3N0ID0gaW5saW5pbmdDb3N0
KGNhbGxlZSwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIHNwZWNpYWxpemF0aW9uS2luZCk7
CisgICAgdW5zaWduZWQgbXlJbmxpbmluZ0Nvc3QgPSBpbmxpbmluZ0Nvc3QoY2FsbGVlLCBhcmd1
bWVudENvdW50SW5jbHVkaW5nVGhpcywgSW5saW5lQ2FsbEZyYW1lOjpjYWxsTW9kZUZvcihraW5k
KSk7CiAgICAgaWYgKG15SW5saW5pbmdDb3N0ID4gaW5saW5pbmdCYWxhbmNlKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKQEAgLTMzNTQsNiArMzQyNSwxMiBAQCBib29sIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICB9CiAKICAgICAgICAgY2FzZSBv
cF9yZXQ6CisgICAgICAgICAgICBpZiAobV9jdXJyZW50QmxvY2stPnRlcm1pbmFsKCkpIHsKKyAg
ICAgICAgICAgICAgICAvLyBXZSBjb3VsZCBiZSB0aGUgZHVtbXkgcmV0dXJuIGFmdGVyIGEgbm9u
LWlubGluZWQsIG5vbi1lbXVsYXRlZCB0YWlsIGNhbGwKKyAgICAgICAgICAgICAgICBOb2RlKiB0
ZXJtaW5hbCA9IG1fY3VycmVudEJsb2NrLT50ZXJtaW5hbCgpOworICAgICAgICAgICAgICAgIEFT
U0VSVF9VTlVTRUQodGVybWluYWwsIHRlcm1pbmFsLT5vcCgpID09IFJldHVybiB8fCB0ZXJtaW5h
bC0+b3AoKSA9PSBUYWlsQ2FsbCB8fCB0ZXJtaW5hbC0+b3AoKSA9PSBUYWlsQ2FsbFZhcmFyZ3Mp
OworICAgICAgICAgICAgICAgIExBU1RfT1BDT0RFKG9wX3JldCk7CisgICAgICAgICAgICB9CiAg
ICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKICAgICAgICAgICAgICAgICBmbHVz
aEZvclJldHVybigpOwogICAgICAgICAgICAgICAgIGlmIChtX2lubGluZVN0YWNrVG9wLT5tX3Jl
dHVyblZhbHVlLmlzVmFsaWQoKSkKQEAgLTM0MDEsMjIgKzM0NzgsMzcgQEAgYm9vbCBCeXRlQ29k
ZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgIExBU1RfT1BD
T0RFKG9wX3Rocm93X3N0YXRpY19lcnJvcik7CiAgICAgICAgICAgICAKICAgICAgICAgY2FzZSBv
cF9jYWxsOgotICAgICAgICAgICAgaGFuZGxlQ2FsbChjdXJyZW50SW5zdHJ1Y3Rpb24sIENhbGws
IENvZGVGb3JDYWxsKTsKKyAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVudEluc3RydWN0aW9u
LCBDYWxsLCBDYWxsTW9kZTo6UmVndWxhcik7CiAgICAgICAgICAgICAvLyBWZXJpZnkgdGhhdCBo
YW5kbGVDYWxsKCksIHdoaWNoIGNvdWxkIGhhdmUgaW5saW5lZCB0aGUgY2FsbGVlLCBkaWRuJ3Qg
dHJhc2ggbV9jdXJyZW50SW5zdHJ1Y3Rpb24KICAgICAgICAgICAgIEFTU0VSVChtX2N1cnJlbnRJ
bnN0cnVjdGlvbiA9PSBjdXJyZW50SW5zdHJ1Y3Rpb24pOwogICAgICAgICAgICAgTkVYVF9PUENP
REUob3BfY2FsbCk7Ci0gICAgICAgICAgICAKKworICAgICAgICBjYXNlIG9wX3RhaWxfY2FsbDoK
KyAgICAgICAgICAgIGZsdXNoRm9yUmV0dXJuKCk7CisgICAgICAgICAgICBoYW5kbGVDYWxsKGN1
cnJlbnRJbnN0cnVjdGlvbiwgVGFpbENhbGwsIENhbGxNb2RlOjpUYWlsKTsKKyAgICAgICAgICAg
IC8vIFZlcmlmeSB0aGF0IGhhbmRsZUNhbGwoKSwgd2hpY2ggY291bGQgaGF2ZSBpbmxpbmVkIHRo
ZSBjYWxsZWUsIGRpZG4ndCB0cmFzaCBtX2N1cnJlbnRJbnN0cnVjdGlvbgorICAgICAgICAgICAg
QVNTRVJUKG1fY3VycmVudEluc3RydWN0aW9uID09IGN1cnJlbnRJbnN0cnVjdGlvbik7CisgICAg
ICAgICAgICAvLyBXZSBsZXQgdGhlIGZvbGxvd2luZyBvcF9yZXQgaGFuZGxlIGNhc2VzIHJlbGF0
ZWQgdG8KKyAgICAgICAgICAgIC8vIGlubGluaW5nIHRvIGtlZXAgdGhpbmdzIHNpbXBsZS4KKyAg
ICAgICAgICAgIE5FWFRfT1BDT0RFKG9wX3RhaWxfY2FsbCk7CisKICAgICAgICAgY2FzZSBvcF9j
b25zdHJ1Y3Q6Ci0gICAgICAgICAgICBoYW5kbGVDYWxsKGN1cnJlbnRJbnN0cnVjdGlvbiwgQ29u
c3RydWN0LCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGhhbmRsZUNhbGwoY3VycmVu
dEluc3RydWN0aW9uLCBDb25zdHJ1Y3QsIENhbGxNb2RlOjpDb25zdHJ1Y3QpOwogICAgICAgICAg
ICAgTkVYVF9PUENPREUob3BfY29uc3RydWN0KTsKICAgICAgICAgICAgIAogICAgICAgICBjYXNl
IG9wX2NhbGxfdmFyYXJnczogewotICAgICAgICAgICAgaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVu
dEluc3RydWN0aW9uLCBDYWxsVmFyYXJncywgQ29kZUZvckNhbGwpOworICAgICAgICAgICAgaGFu
ZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBDYWxsVmFyYXJncywgQ2FsbE1vZGU6
OlJlZ3VsYXIpOwogICAgICAgICAgICAgTkVYVF9PUENPREUob3BfY2FsbF92YXJhcmdzKTsKICAg
ICAgICAgfQorCisgICAgICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6IHsKKyAgICAgICAg
ICAgIGZsdXNoRm9yUmV0dXJuKCk7CisgICAgICAgICAgICBoYW5kbGVWYXJhcmdzQ2FsbChjdXJy
ZW50SW5zdHJ1Y3Rpb24sIFRhaWxDYWxsVmFyYXJncywgQ2FsbE1vZGU6OlRhaWwpOworICAgICAg
ICAgICAgTkVYVF9PUENPREUob3BfdGFpbF9jYWxsX3ZhcmFyZ3MpOworICAgICAgICB9CiAgICAg
ICAgICAgICAKICAgICAgICAgY2FzZSBvcF9jb25zdHJ1Y3RfdmFyYXJnczogewotICAgICAgICAg
ICAgaGFuZGxlVmFyYXJnc0NhbGwoY3VycmVudEluc3RydWN0aW9uLCBDb25zdHJ1Y3RWYXJhcmdz
LCBDb2RlRm9yQ29uc3RydWN0KTsKKyAgICAgICAgICAgIGhhbmRsZVZhcmFyZ3NDYWxsKGN1cnJl
bnRJbnN0cnVjdGlvbiwgQ29uc3RydWN0VmFyYXJncywgQ2FsbE1vZGU6OkNvbnN0cnVjdCk7CiAg
ICAgICAgICAgICBORVhUX09QQ09ERShvcF9jb25zdHJ1Y3RfdmFyYXJncyk7CiAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtNDAzOCw3ICs0MTMwLDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGlu
ZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAgICAgICBtX2lubGluZUNhbGxG
cmFtZS0+aXNDbG9zdXJlQ2FsbCA9IGZhbHNlOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
IG1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsID0gdHJ1ZTsKLSAgICAgICAgbV9pbmxp
bmVDYWxsRnJhbWUtPmNhbGxlciA9IGJ5dGVDb2RlUGFyc2VyLT5jdXJyZW50Q29kZU9yaWdpbigp
OworICAgICAgICBtX2lubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyID0gYnl0ZUNvZGVQYXJz
ZXItPmN1cnJlbnRDb2RlT3JpZ2luKCk7CiAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5hcmd1
bWVudHMucmVzaXplVG9GaXQoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMpOyAvLyBTZXQgdGhl
IG51bWJlciBvZiBhcmd1bWVudHMgaW5jbHVkaW5nIHRoaXMsIGJ1dCBkb24ndCBjb25maWd1cmUg
dGhlIHZhbHVlIHJlY292ZXJpZXMsIHlldC4KICAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmtp
bmQgPSBraW5kOwogICAgICAgICAKQEAgLTQxMTMsNyArNDIwNSw3IEBAIHZvaWQgQnl0ZUNvZGVQ
YXJzZXI6OnBhcnNlQ29kZUJsb2NrKCkKICAgICBpZiAoVU5MSUtFTFkoT3B0aW9uczo6ZHVtcFNv
dXJjZUF0REZHVGltZSgpKSkgewogICAgICAgICBWZWN0b3I8RGVmZXJyZWRTb3VyY2VEdW1wPiYg
ZGVmZXJyZWRTb3VyY2VEdW1wID0gbV9ncmFwaC5tX3BsYW4uY2FsbGJhY2stPmVuc3VyZURlZmVy
cmVkU291cmNlRHVtcCgpOwogICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lKCkpIHsKLSAgICAg
ICAgICAgIERlZmVycmVkU291cmNlRHVtcCBkdW1wKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9u
KCksIG1fY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQsIGlubGluZUNhbGxGcmFtZSgpLT5jYWxs
ZXIpOworICAgICAgICAgICAgRGVmZXJyZWRTb3VyY2VEdW1wIGR1bXAoY29kZUJsb2NrLT5iYXNl
bGluZVZlcnNpb24oKSwgbV9jb2RlQmxvY2ssIEpJVENvZGU6OkRGR0pJVCwgaW5saW5lQ2FsbEZy
YW1lKCktPmRpcmVjdENhbGxlcik7CiAgICAgICAgICAgICBkZWZlcnJlZFNvdXJjZUR1bXAuYXBw
ZW5kKGR1bXApOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIGRlZmVycmVkU291cmNlRHVt
cC5hcHBlbmQoRGVmZXJyZWRTb3VyY2VEdW1wKGNvZGVCbG9jay0+YmFzZWxpbmVWZXJzaW9uKCkp
KTsKQEAgLTQxMjQsNyArNDIxNiw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQ29kZUJs
b2NrKCkKICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZSgpKSB7CiAgICAgICAgICAgICBkYXRh
TG9nKAogICAgICAgICAgICAgICAgICIgZm9yIGlubGluaW5nIGF0ICIsIENvZGVCbG9ja1dpdGhK
SVRUeXBlKG1fY29kZUJsb2NrLCBKSVRDb2RlOjpERkdKSVQpLAotICAgICAgICAgICAgICAgICIg
IiwgaW5saW5lQ2FsbEZyYW1lKCktPmNhbGxlcik7CisgICAgICAgICAgICAgICAgIiAiLCBpbmxp
bmVDYWxsRnJhbWUoKS0+ZGlyZWN0Q2FsbGVyKTsKICAgICAgICAgfQogICAgICAgICBkYXRhTG9n
KAogICAgICAgICAgICAgIjogbmVlZHNBY3RpdmF0aW9uID0gIiwgY29kZUJsb2NrLT5uZWVkc0Fj
dGl2YXRpb24oKSwKQEAgLTQyMDgsNyArNDMwMCw3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBh
cnNlQ29kZUJsb2NrKCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gMDsKKyAgICAgICAgICAg
IG1fY3VycmVudEJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgfSB3aGlsZSAobV9jdXJyZW50SW5k
ZXggPCBsaW1pdCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0NhcGFiaWxpdGllcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nh
cGFiaWxpdGllcy5jcHAKaW5kZXggZWY0YzI0NzQ5Yjc4ZmE2ZTA5YTRjM2Q5YzI5MDEzZWFhNjVk
YWE5Mi4uMWQ3MTc3MDk3OWVkMGM3MzIyNDdiYTMyZWE4MzRmYTIxYTE3OGY2MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcApAQCAtMTc5LDggKzE3
OSwxMCBAQCBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1YwogICAgIGNhc2Ugb3BfdGhyb3c6CiAgICAg
Y2FzZSBvcF90aHJvd19zdGF0aWNfZXJyb3I6CiAgICAgY2FzZSBvcF9jYWxsOgorICAgIGNhc2Ug
b3BfdGFpbF9jYWxsOgogICAgIGNhc2Ugb3BfY29uc3RydWN0OgogICAgIGNhc2Ugb3BfY2FsbF92
YXJhcmdzOgorICAgIGNhc2Ugb3BfdGFpbF9jYWxsX3ZhcmFyZ3M6CiAgICAgY2FzZSBvcF9jb25z
dHJ1Y3RfdmFyYXJnczoKICAgICBjYXNlIG9wX2NyZWF0ZV9kaXJlY3RfYXJndW1lbnRzOgogICAg
IGNhc2Ugb3BfY3JlYXRlX3Njb3BlZF9hcmd1bWVudHM6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDVjNmQxN2RjZDg1NGZhMzkxZTI1NTA2NTY4NmRhZmYw
OWNjYmY0MzQuLjFlZmQzZDBjYTg0NWI4MmIxMzEwNzc4MmNlMjE4NzUzYTY5MmU0NTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0zNzYsMTEgKzM3Niwx
NCBAQCB2b2lkIGNsb2JiZXJpemUoR3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlLCBjb25zdCBSZWFk
RnVuY3RvciYgcmVhZCwgY29uc3QgV3JpdGVGdQogICAgIGNhc2UgQXJyYXlQdXNoOgogICAgIGNh
c2UgQXJyYXlQb3A6CiAgICAgY2FzZSBDYWxsOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbDoK
ICAgICBjYXNlIENvbnN0cnVjdDoKICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgY2FzZSBOYXRp
dmVDb25zdHJ1Y3Q6CiAgICAgY2FzZSBDYWxsVmFyYXJnczoKICAgICBjYXNlIENhbGxGb3J3YXJk
VmFyYXJnczoKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgorICAgIGNhc2UgRW11
bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoK
ICAgICBjYXNlIENvbnN0cnVjdEZvcndhcmRWYXJhcmdzOgogICAgIGNhc2UgVG9QcmltaXRpdmU6
CkBAIC0zODksNiArMzkyLDEzIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJl
YWQoV29ybGQpOwogICAgICAgICB3cml0ZShIZWFwKTsKICAgICAgICAgcmV0dXJuOworCisgICAg
Y2FzZSBUYWlsQ2FsbDoKKyAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICBjYXNlIFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3M6CisgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICB3cml0ZShT
aWRlU3RhdGUpOworICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgR2V0R2V0dGVy
OgogICAgICAgICByZWFkKEdldHRlclNldHRlcl9nZXR0ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdEb2VzR0MuY3BwCmluZGV4IDU5NDY4NDBkMmY4ODA5NTc5NjkxYzY4Zjk2YzAwZDc1
ZDE1YTZiODQuLjcyZjA2Y2JmM2FlMTczNDhkNDhlMGE4MzhmMGIxNDcxOGQ3NjgyOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTExNywxMiArMTE3LDE2IEBA
IGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSkKICAgICBjYXNlIENvbXBhcmVF
cUNvbnN0YW50OgogICAgIGNhc2UgQ29tcGFyZVN0cmljdEVxOgogICAgIGNhc2UgQ2FsbDoKKyAg
ICBjYXNlIEVtdWxhdGVkVGFpbENhbGw6CiAgICAgY2FzZSBDb25zdHJ1Y3Q6CiAgICAgY2FzZSBD
YWxsVmFyYXJnczoKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgogICAgIGNhc2Ug
Q29uc3RydWN0VmFyYXJnczoKICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgIGNhc2UgQ2FsbEZv
cndhcmRWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CisgICAgY2Fz
ZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndh
cmRWYXJhcmdzOgogICAgIGNhc2UgTmF0aXZlQ2FsbDoKICAgICBjYXNlIE5hdGl2ZUNvbnN0cnVj
dDoKICAgICBjYXNlIEJyZWFrcG9pbnQ6CkBAIC0xNDksNiArMTUzLDggQEAgYm9vbCBkb2VzR0Mo
R3JhcGgmIGdyYXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgQnJhbmNoOgogICAgIGNhc2UgU3dp
dGNoOgogICAgIGNhc2UgUmV0dXJuOgorICAgIGNhc2UgVGFpbENhbGw6CisgICAgY2FzZSBUYWls
Q2FsbFZhcmFyZ3M6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIENvdW50RXhlY3V0aW9uOgog
ICAgIGNhc2UgRm9yY2VPU1JFeGl0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKaW5kZXggMWFmZmExYWI4ZmU5YzEzMDIzODFlODJhMWUyZWU0N2EyZmZlNjJj
MC4uNzc2MDk4YjNlMWE2OTU3YjBhMGFmMzQ0ODljN2E0ODhhYWJhOTQ1MCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCkBAIC0xMjc4LDExICsxMjc4LDE1
IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgTm90aWZ5V3JpdGU6CiAgICAgICAgIGNhc2UgVmFy
SW5qZWN0aW9uV2F0Y2hwb2ludDoKICAgICAgICAgY2FzZSBDYWxsOgorICAgICAgICBjYXNlIEVt
dWxhdGVkVGFpbENhbGw6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0OgogICAgICAgICBjYXNlIENh
bGxWYXJhcmdzOgorICAgICAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxWYXJhcmdzOgogICAgICAg
ICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdz
OgogICAgICAgICBjYXNlIENvbnN0cnVjdEZvcndhcmRWYXJhcmdzOgorICAgICAgICBjYXNlIFRh
aWxDYWxsRm9yd2FyZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndh
cmRWYXJhcmdzOgogICAgICAgICBjYXNlIExvYWRWYXJhcmdzOgogICAgICAgICBjYXNlIFByb2Zp
bGVDb250cm9sRmxvdzoKICAgICAgICAgY2FzZSBOYXRpdmVDYWxsOgpAQCAtMTMwMiw2ICsxMzA2
LDggQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBDcmVhdGVDbG9uZWRBcmd1bWVudHM6CiAgICAg
ICAgIGNhc2UgSnVtcDoKICAgICAgICAgY2FzZSBSZXR1cm46CisgICAgICAgIGNhc2UgVGFpbENh
bGw6CisgICAgICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgogICAgICAgICBjYXNlIFRocm93Ogog
ICAgICAgICBjYXNlIFRocm93UmVmZXJlbmNlRXJyb3I6CiAgICAgICAgIGNhc2UgQ291bnRFeGVj
dXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3BwCmluZGV4IDBjYzkzYTU5
MWVkOTdkMWE5OTQwMjZmYTZiOGY1ODlmMjljZDUwODkuLjcxODRhYTYzOWUyYzdjOTczODM0ZWUy
ZGMyZjVlMWI0ODNmYWZjYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguY3Bw
CkBAIC04ODQsMzAgKzg4NCwzMSBAQCBCeXRlY29kZUtpbGxzJiBHcmFwaDo6a2lsbHNGb3IoSW5s
aW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUpCiAKIGJvb2wgR3JhcGg6OmlzTGl2ZUluQnl0
ZWNvZGUoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQsIENvZGVPcmlnaW4gY29kZU9yaWdpbikKIHsK
KyAgICBDb2RlT3JpZ2luKiBjb2RlT3JpZ2luUHRyID0gJmNvZGVPcmlnaW47CiAgICAgZm9yICg7
OykgewogICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gVmlydHVhbFJlZ2lzdGVyKAotICAg
ICAgICAgICAgb3BlcmFuZC5vZmZzZXQoKSAtIGNvZGVPcmlnaW4uc3RhY2tPZmZzZXQoKSk7Cisg
ICAgICAgICAgICBvcGVyYW5kLm9mZnNldCgpIC0gY29kZU9yaWdpblB0ci0+c3RhY2tPZmZzZXQo
KSk7CiAgICAgICAgIAotICAgICAgICBpZiAob3BlcmFuZC5vZmZzZXQoKSA8IGNvZGVPcmlnaW4u
c3RhY2tPZmZzZXQoKSArIEpTU3RhY2s6OkNhbGxGcmFtZUhlYWRlclNpemUpIHsKKyAgICAgICAg
aWYgKG9wZXJhbmQub2Zmc2V0KCkgPCBjb2RlT3JpZ2luUHRyLT5zdGFja09mZnNldCgpICsgSlNT
dGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSkgewogICAgICAgICAgICAgaWYgKHJlZy5pc0FyZ3Vt
ZW50KCkpIHsKICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWcub2Zmc2V0KCkgPCBK
U1N0YWNrOjpDYWxsRnJhbWVIZWFkZXJTaXplKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBpZiAoY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmlzQ2xvc3VyZUNhbGwKKyAg
ICAgICAgICAgICAgICBpZiAoY29kZU9yaWdpblB0ci0+aW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1
cmVDYWxsCiAgICAgICAgICAgICAgICAgICAgICYmIHJlZy5vZmZzZXQoKSA9PSBKU1N0YWNrOjpD
YWxsZWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAg
IAotICAgICAgICAgICAgICAgIGlmIChjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+aXNWYXJh
cmdzKCkKKyAgICAgICAgICAgICAgICBpZiAoY29kZU9yaWdpblB0ci0+aW5saW5lQ2FsbEZyYW1l
LT5pc1ZhcmFyZ3MoKQogICAgICAgICAgICAgICAgICAgICAmJiByZWcub2Zmc2V0KCkgPT0gSlNT
dGFjazo6QXJndW1lbnRDb3VudCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gbGl2ZW5lc3NGb3IoY29kZU9y
aWdpbi5pbmxpbmVDYWxsRnJhbWUpLm9wZXJhbmRJc0xpdmUoCi0gICAgICAgICAgICAgICAgcmVn
Lm9mZnNldCgpLCBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXgpOworICAgICAgICAgICAgcmV0dXJu
IGxpdmVuZXNzRm9yKGNvZGVPcmlnaW5QdHItPmlubGluZUNhbGxGcmFtZSkub3BlcmFuZElzTGl2
ZSgKKyAgICAgICAgICAgICAgICByZWcub2Zmc2V0KCksIGNvZGVPcmlnaW5QdHItPmJ5dGVjb2Rl
SW5kZXgpOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOworICAgICAgICBJbmxp
bmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW5QdHItPmlubGluZUNhbGxG
cmFtZTsKICAgICAgICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpCiAgICAgICAgICAgICBicmVhazsK
IApAQCAtOTE3LDcgKzkxOCwxMSBAQCBib29sIEdyYXBoOjppc0xpdmVJbkJ5dGVjb2RlKFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4pCiAgICAgICAgICAgICAm
JiBzdGF0aWNfY2FzdDxzaXplX3Q+KHJlZy50b0FyZ3VtZW50KCkpIDwgaW5saW5lQ2FsbEZyYW1l
LT5hcmd1bWVudHMuc2l6ZSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIAot
ICAgICAgICBjb2RlT3JpZ2luID0gaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXI7CisgICAgICAgIGNv
ZGVPcmlnaW5QdHIgPSBpbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nRGVhZEZyYW1l
cygpOworCisgICAgICAgIC8vIFRoZSBmaXJzdCBpbmxpbmUgY2FsbCBmcmFtZSBjb3VsZCBiZSBh
biBpbmxpbmUgdGFpbCBjYWxsCisgICAgICAgIGlmICghY29kZU9yaWdpblB0cikKKyAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KICAgICAKICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAppbmRleCA1MTQ4YzI2ZDhlMzdlNzczMjQ0ZThkOWIyNDQzNWIyM2Fh
MzAyZTI0Li4wMjA5MjQ4ZTYwMDAzZTJiZjQyMWMzYWJkOWJhZDk2NTJkOWMxOTczIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC02OTYsOSArNjk2LDExIEBAIHB1YmxpYzoK
ICAgICAgICAgLy8gY2FsbCwgYm90aCBjYWxsZWUgYW5kIGNhbGxlciB3aWxsIHNlZSB0aGUgdmFy
aWFibGVzIGxpdmUuCiAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBleGNsdXNpb25TdGFydDsKICAg
ICAgICAgVmlydHVhbFJlZ2lzdGVyIGV4Y2x1c2lvbkVuZDsKKworICAgICAgICBDb2RlT3JpZ2lu
KiBjb2RlT3JpZ2luUHRyID0gJmNvZGVPcmlnaW47CiAgICAgICAgIAogICAgICAgICBmb3IgKDs7
KSB7Ci0gICAgICAgICAgICBJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IGNvZGVP
cmlnaW4uaW5saW5lQ2FsbEZyYW1lOworICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxp
bmVDYWxsRnJhbWUgPSBjb2RlT3JpZ2luUHRyLT5pbmxpbmVDYWxsRnJhbWU7CiAgICAgICAgICAg
ICBWaXJ0dWFsUmVnaXN0ZXIgc3RhY2tPZmZzZXQoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2Fs
bEZyYW1lLT5zdGFja09mZnNldCA6IDApOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAo
aW5saW5lQ2FsbEZyYW1lKSB7CkBAIC03MTAsNyArNzEyLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgCiAgICAgICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGJhc2VsaW5lQ29kZUJsb2Nr
Rm9yKGlubGluZUNhbGxGcmFtZSk7CiAgICAgICAgICAgICBGdWxsQnl0ZWNvZGVMaXZlbmVzcyYg
ZnVsbExpdmVuZXNzID0gbGl2ZW5lc3NGb3IoY29kZUJsb2NrKTsKLSAgICAgICAgICAgIGNvbnN0
IEZhc3RCaXRWZWN0b3ImIGxpdmVuZXNzID0gZnVsbExpdmVuZXNzLmdldExpdmVuZXNzKGNvZGVP
cmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgICAgICAgICBjb25zdCBGYXN0Qml0VmVjdG9yJiBs
aXZlbmVzcyA9IGZ1bGxMaXZlbmVzcy5nZXRMaXZlbmVzcyhjb2RlT3JpZ2luUHRyLT5ieXRlY29k
ZUluZGV4KTsKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgcmVsYXRpdmVMb2NhbCA9IGNvZGVC
bG9jay0+bV9udW1DYWxsZWVSZWdpc3RlcnM7IHJlbGF0aXZlTG9jYWwtLTspIHsKICAgICAgICAg
ICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgcmVnID0gc3RhY2tPZmZzZXQgKyB2aXJ0dWFsUmVnaXN0
ZXJGb3JMb2NhbChyZWxhdGl2ZUxvY2FsKTsKICAgICAgICAgICAgICAgICAKQEAgLTczNyw3ICs3
MzksMTEgQEAgcHVibGljOgogICAgICAgICAgICAgZm9yIChWaXJ0dWFsUmVnaXN0ZXIgcmVnID0g
ZXhjbHVzaW9uU3RhcnQ7IHJlZyA8IGV4Y2x1c2lvbkVuZDsgcmVnICs9IDEpCiAgICAgICAgICAg
ICAgICAgZnVuY3RvcihyZWcpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBjb2RlT3JpZ2lu
ID0gaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXI7CisgICAgICAgICAgICBjb2RlT3JpZ2luUHRyID0g
aW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoKTsKKworICAgICAg
ICAgICAgLy8gVGhlIGZpcnN0IGlubGluZSBjYWxsIGZyYW1lIGNvdWxkIGJlIGFuIGlubGluZSB0
YWlsIGNhbGwKKyAgICAgICAgICAgIGlmICghY29kZU9yaWdpblB0cikKKyAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggOWJjY2E5ZTQ1
NDkwYzM5MjAxYWFlZDBiYzg0YzAyYzQyMjc1ZmUzNi4uYTBlZGI5NmRhZGE0NzdiZGIxZDEwYjI4
NzZjZTM3Yjc0ZTdkM2ZhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKQEAgLTM5Myw2ICszOTMsOCBAQCBpbmxpbmUg
Ym9vbCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6bWVyZ2VUb1N1Y2Nlc3NvcnMoQmFzaWNCbG9jayog
YmFzaWNCbG9jaykKICAgICB9CiAgICAgICAgIAogICAgIGNhc2UgUmV0dXJuOgorICAgIGNhc2Ug
VGFpbENhbGw6CisgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CiAgICAgY2FzZSBVbnJlYWNoYWJs
ZToKICAgICAgICAgQVNTRVJUKGJhc2ljQmxvY2stPmNmYUJyYW5jaERpcmVjdGlvbiA9PSBJbnZh
bGlkQnJhbmNoRGlyZWN0aW9uKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaAppbmRleCA5Y2EyY2RjNjgxOGEyM2JjMmE2YjdjMTM2MzBjNGI5MjJi
YmVkMzFmLi5jNzBiYmI0ZWM2NTQ0MTI5OTg3MTNmOWNmZGQ0YjEwM2Q1YzlmOGQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaApAQCAtOTk1LDYgKzk5NSwxMCBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIHN3aXRjaCAob3AoKSkgewogICAgICAgICBjYXNlIENhbGxWYXJhcmdzOgog
ICAgICAgICBjYXNlIENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbFZh
cmFyZ3M6CisgICAgICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgY2Fz
ZSBFbXVsYXRlZFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxs
Rm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICAgICAg
Y2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpA
QCAtMTA5Miw2ICsxMDk2LDggQEAgc3RydWN0IE5vZGUgewogICAgICAgICBjYXNlIEJyYW5jaDoK
ICAgICAgICAgY2FzZSBTd2l0Y2g6CiAgICAgICAgIGNhc2UgUmV0dXJuOgorICAgICAgICBjYXNl
IFRhaWxDYWxsOgorICAgICAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKICAgICAgICAgY2FzZSBV
bnJlYWNoYWJsZToKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBkZWZhdWx0OgpA
QCAtMTI0MiwxMCArMTI0OCwxMyBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAgIGNhc2UgR2V0QnlJ
ZEZsdXNoOgogICAgICAgICBjYXNlIEdldEJ5VmFsOgogICAgICAgICBjYXNlIENhbGw6CisgICAg
ICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1Y3Q6CiAgICAg
ICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbFZhcmFy
Z3M6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICAgICAgY2FzZSBDYWxsRm9y
d2FyZFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdz
OgogICAgICAgICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0
OgogICAgICAgICBjYXNlIEdldEJ5T2Zmc2V0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdO
b2RlVHlwZS5oCmluZGV4IDY5ZjZhZTVlYzk5NmJiYzhjOTQ1MGQzNDQ4YjA2ODRhODI5YmY2OTAu
LjA0YTA0MzdkODIxN2ZlMzE3ODVkNTc4NzRjNDNiZDVjMzAxOWQzMzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTIzOSw2ICsyMzksOSBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2FsbEZvcndhcmRWYXJhcmdzLCBOb2Rl
UmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oQ29uc3RydWN0VmFyYXJn
cywgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIG1hY3JvKENvbnN0cnVj
dEZvcndhcmRWYXJhcmdzLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAg
bWFjcm8oRW11bGF0ZWRUYWlsQ2FsbCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSB8
IE5vZGVIYXNWYXJBcmdzKSBcCisgICAgbWFjcm8oRW11bGF0ZWRUYWlsQ2FsbFZhcmFyZ3MsIE5v
ZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKKyAgICBtYWNybyhFbXVsYXRlZFRhaWxD
YWxsRm9yd2FyZFZhcmFyZ3MsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAg
ICBtYWNybyhOYXRpdmVDYWxsLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlIHwgTm9k
ZUhhc1ZhckFyZ3MpIFwKICAgICBtYWNybyhOYXRpdmVDb25zdHJ1Y3QsIE5vZGVSZXN1bHRKUyB8
IE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAogICAgIFwKQEAgLTMwNCw2ICsz
MDcsOSBAQCBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQnJhbmNo
LCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8oU3dpdGNoLCBOb2RlTXVzdEdlbmVyYXRl
KSBcCiAgICAgbWFjcm8oUmV0dXJuLCBOb2RlTXVzdEdlbmVyYXRlKSBcCisgICAgbWFjcm8oVGFp
bENhbGwsIE5vZGVNdXN0R2VuZXJhdGUgfCBOb2RlSGFzVmFyQXJncykgXAorICAgIG1hY3JvKFRh
aWxDYWxsVmFyYXJncywgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKFRhaWxDYWxsRm9y
d2FyZFZhcmFyZ3MsIE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhVbnJlYWNoYWJsZSwg
Tm9kZU11c3RHZW5lcmF0ZSkgXAogICAgIFwKICAgICAvKiBDb3VudCBleGVjdXRpb24uICovXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0Q29tcGlsZXJD
b21tb24uY3BwCmluZGV4IDU4ZGI5ZmE0YjE1MWQ0MjVlMmJjNGM4Y2IwMmRkY2Y2YmFhZmViYTAu
LjZjY2U4OTY5ODExZjdlOTA3NDQzZWViZjIzOTk3Y2UxMmY5ZGRkMzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdENvbXBpbGVyQ29tbW9uLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRDb21waWxlckNvbW1vbi5jcHAK
QEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBoYW5kbGVFeGl0Q291bnRzKENDYWxsSGVscGVycyYgaml0
LCBjb25zdCBPU1JFeGl0QmFzZSYgZXhpdCkKICAgICAKICAgICBBc3NlbWJseUhlbHBlcnM6Okp1
bXBMaXN0IGxvb3BUaHJlc2hvbGQ7CiAgICAgCi0gICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlu
bGluZUNhbGxGcmFtZSA9IGV4aXQubV9jb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgaW5saW5l
Q2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxp
bmVDYWxsRnJhbWUpIHsKKyAgICBmb3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
ID0gZXhpdC5tX2NvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWU7IGlu
bGluZUNhbGxGcmFtZSA9IGlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2FsbGVyLmlubGluZUNhbGxG
cmFtZSkgewogICAgICAgICBsb29wVGhyZXNob2xkLmFwcGVuZCgKICAgICAgICAgICAgIGppdC5i
cmFuY2hUZXN0OCgKICAgICAgICAgICAgICAgICBBc3NlbWJseUhlbHBlcnM6Ok5vblplcm8sCkBA
IC0xMzYsNjMgKzEzNiw4MCBAQCB2b2lkIGhhbmRsZUV4aXRDb3VudHMoQ0NhbGxIZWxwZXJzJiBq
aXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogCiB2b2lkIHJlaWZ5SW5saW5lZENhbGxGcmFt
ZXMoQ0NhbGxIZWxwZXJzJiBqaXQsIGNvbnN0IE9TUkV4aXRCYXNlJiBleGl0KQogeworICAgIC8v
IEZJWE1FOiBXZSBzaG91bGRuJ3QgbGVhdmUgaG9sZXMgb24gdGhlIHN0YWNrIHdoZW4gcGVyZm9y
bWluZyBhbiBPU1IgZXhpdAorICAgIC8vIGluIHByZXNlbmNlIG9mIGlubGluZWQgdGFpbCBjYWxs
cy4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTEx
CiAgICAgQVNTRVJUKGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5qaXRUeXBlKCkgPT0gSklUQ29k
ZTo6QmFzZWxpbmVKSVQpOwogICAgIGppdC5zdG9yZVB0cihBc3NlbWJseUhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoaml0LmJhc2VsaW5lQ29kZUJsb2NrKCkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3IoKFZpcnR1YWxSZWdpc3RlcilKU1N0YWNrOjpDb2RlQmxvY2spKTsKIAotICAgIENvZGVP
cmlnaW4gY29kZU9yaWdpbjsKLSAgICBmb3IgKGNvZGVPcmlnaW4gPSBleGl0Lm1fY29kZU9yaWdp
bjsgY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlu
bGluZUNhbGxGcmFtZS0+Y2FsbGVyKSB7Ci0gICAgICAgIElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lID0gY29kZU9yaWdpbi5pbmxpbmVDYWxsRnJhbWU7Ci0gICAgICAgIENvZGVCbG9j
ayogYmFzZWxpbmVDb2RlQmxvY2sgPSBqaXQuYmFzZWxpbmVDb2RlQmxvY2tGb3IoY29kZU9yaWdp
bik7Ci0gICAgICAgIENvZGVCbG9jayogYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXIgPSBqaXQu
YmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIpOwotICAgICAgICB2
b2lkKiBqdW1wVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICBjb25zdCBDb2RlT3JpZ2luKiBjb2RlT3Jp
Z2luOworICAgIGZvciAoY29kZU9yaWdpbiA9ICZleGl0Lm1fY29kZU9yaWdpbjsgY29kZU9yaWdp
biAmJiBjb2RlT3JpZ2luLT5pbmxpbmVDYWxsRnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2lu
LT5pbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nRGVhZEZyYW1lcygpKSB7CisgICAg
ICAgIElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gY29kZU9yaWdpbi0+aW5saW5l
Q2FsbEZyYW1lOworICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gaml0LmJh
c2VsaW5lQ29kZUJsb2NrRm9yKCpjb2RlT3JpZ2luKTsKKyAgICAgICAgQ29kZU9yaWdpbiogdHJ1
ZUNhbGxlciA9IGlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVyU2tpcHBpbmdEZWFkRnJhbWVzKCk7
CiAgICAgICAgIHZvaWQqIHRydWVSZXR1cm5QQyA9IG51bGxwdHI7Ci0gICAgICAgIAotICAgICAg
ICB1bnNpZ25lZCBjYWxsQnl0ZWNvZGVJbmRleCA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyLmJ5
dGVjb2RlSW5kZXg7Ci0gICAgICAgIAotICAgICAgICBzd2l0Y2ggKGlubGluZUNhbGxGcmFtZS0+
a2luZCkgewotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q2FsbDoKLSAgICAgICAgY2Fz
ZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKLSAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJh
bWU6OkNhbGxWYXJhcmdzOgotICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6Q29uc3RydWN0
VmFyYXJnczogewotICAgICAgICAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPQotICAg
ICAgICAgICAgICAgIGJhc2VsaW5lQ29kZUJsb2NrRm9yQ2FsbGVyLT5nZXRDYWxsTGlua0luZm9G
b3JCeXRlY29kZUluZGV4KGNhbGxCeXRlY29kZUluZGV4KTsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKGNhbGxMaW5rSW5mbyk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGp1bXBUYXJn
ZXQgPSBjYWxsTGlua0luZm8tPmNhbGxSZXR1cm5Mb2NhdGlvbigpLmV4ZWN1dGFibGVBZGRyZXNz
KCk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
IGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsOgotICAgICAgICBjYXNlIElubGluZUNh
bGxGcmFtZTo6U2V0dGVyQ2FsbDogewotICAgICAgICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0
dWJJbmZvID0KLSAgICAgICAgICAgICAgICBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlci0+Zmlu
ZFN0dWJJbmZvKENvZGVPcmlnaW4oY2FsbEJ5dGVjb2RlSW5kZXgpKTsKLSAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHN0dWJJbmZvKTsKLSAgICAgICAgICAgIAorICAgICAgICBHUFJSZWcgY2Fs
bGVyRnJhbWVHUFIgPSBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlcjsKKworICAgICAgICBpZiAo
IXRydWVDYWxsZXIpIHsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVDYWxsRnJhbWUtPmlzVGFp
bCgpKTsKKyAgICAgICAgICAgIGppdC5sb2FkUHRyKEFzc2VtYmx5SGVscGVyczo6QWRkcmVzcyhH
UFJJbmZvOjpjYWxsRnJhbWVSZWdpc3RlciwgQ2FsbEZyYW1lOjpyZXR1cm5QQ09mZnNldCgpKSwg
R1BSSW5mbzo6cmVnVDMpOworICAgICAgICAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OnJlZ1Qz
LCBBc3NlbWJseUhlbHBlcnM6OmFkZHJlc3NGb3JCeXRlT2Zmc2V0KGlubGluZUNhbGxGcmFtZS0+
cmV0dXJuUENPZmZzZXQoKSkpOworICAgICAgICAgICAgaml0LmxvYWRQdHIoQXNzZW1ibHlIZWxw
ZXJzOjpBZGRyZXNzKEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyLCBDYWxsRnJhbWU6OmNhbGxl
ckZyYW1lT2Zmc2V0KCkpLCBHUFJJbmZvOjpyZWdUMyk7CisgICAgICAgICAgICBjYWxsZXJGcmFt
ZUdQUiA9IEdQUkluZm86OnJlZ1QzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgQ29k
ZUJsb2NrKiBiYXNlbGluZUNvZGVCbG9ja0ZvckNhbGxlciA9IGppdC5iYXNlbGluZUNvZGVCbG9j
a0ZvcigqdHJ1ZUNhbGxlcik7CisgICAgICAgICAgICB1bnNpZ25lZCBjYWxsQnl0ZWNvZGVJbmRl
eCA9IHRydWVDYWxsZXItPmJ5dGVjb2RlSW5kZXg7CisgICAgICAgICAgICB2b2lkKiBqdW1wVGFy
Z2V0ID0gbnVsbHB0cjsKKwogICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVDYWxsRnJhbWUtPmtp
bmQpIHsKLSAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpHZXR0ZXJDYWxsOgotICAg
ICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBqaXQudm0oKS0+Z2V0Q1RJU3R1YihiYXNlbGluZUdl
dHRlclJldHVyblRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpT
ZXR0ZXJDYWxsOgotICAgICAgICAgICAgICAgIGp1bXBUYXJnZXQgPSBqaXQudm0oKS0+Z2V0Q1RJ
U3R1YihiYXNlbGluZVNldHRlclJldHVyblRodW5rR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKTsKKyAgICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsOgorICAg
ICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OkNvbnN0cnVjdDoKKyAgICAgICAgICAgIGNh
c2UgSW5saW5lQ2FsbEZyYW1lOjpDYWxsVmFyYXJnczoKKyAgICAgICAgICAgIGNhc2UgSW5saW5l
Q2FsbEZyYW1lOjpDb25zdHJ1Y3RWYXJhcmdzOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxs
RnJhbWU6OlRhaWxDYWxsOgorICAgICAgICAgICAgY2FzZSBJbmxpbmVDYWxsRnJhbWU6OlRhaWxD
YWxsVmFyYXJnczogeworICAgICAgICAgICAgICAgIENhbGxMaW5rSW5mbyogY2FsbExpbmtJbmZv
ID0KKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmdldENh
bGxMaW5rSW5mb0ZvckJ5dGVjb2RlSW5kZXgoY2FsbEJ5dGVjb2RlSW5kZXgpOworICAgICAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKGNhbGxMaW5rSW5mbyk7CisKKyAgICAgICAgICAgICAgICBq
dW1wVGFyZ2V0ID0gY2FsbExpbmtJbmZvLT5jYWxsUmV0dXJuTG9jYXRpb24oKS5leGVjdXRhYmxl
QWRkcmVzcygpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbDoKKyAg
ICAgICAgICAgIGNhc2UgSW5saW5lQ2FsbEZyYW1lOjpTZXR0ZXJDYWxsOiB7CisgICAgICAgICAg
ICAgICAgU3RydWN0dXJlU3R1YkluZm8qIHN0dWJJbmZvID0KKyAgICAgICAgICAgICAgICAgICAg
YmFzZWxpbmVDb2RlQmxvY2tGb3JDYWxsZXItPmZpbmRTdHViSW5mbyhDb2RlT3JpZ2luKGNhbGxC
eXRlY29kZUluZGV4KSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3R1YkluZm8p
OworCisgICAgICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVDYWxsRnJhbWUtPmtpbmQpIHsKKyAg
ICAgICAgICAgICAgICBjYXNlIElubGluZUNhbGxGcmFtZTo6R2V0dGVyQ2FsbDoKKyAgICAgICAg
ICAgICAgICAgICAganVtcFRhcmdldCA9IGppdC52bSgpLT5nZXRDVElTdHViKGJhc2VsaW5lR2V0
dGVyUmV0dXJuVGh1bmtHZW5lcmF0b3IpLmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIElubGluZUNhbGxG
cmFtZTo6U2V0dGVyQ2FsbDoKKyAgICAgICAgICAgICAgICAgICAganVtcFRhcmdldCA9IGppdC52
bSgpLT5nZXRDVElTdHViKGJhc2VsaW5lU2V0dGVyUmV0dXJuVGh1bmtHZW5lcmF0b3IpLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICB0cnVlUmV0dXJuUEMgPSBzdHViSW5mby0+Y2FsbFJldHVy
bkxvY2F0aW9uLmxhYmVsQXRPZmZzZXQoCisgICAgICAgICAgICAgICAgICAgIHN0dWJJbmZvLT5w
YXRjaC5kZWx0YUNhbGxUb0RvbmUpLmV4ZWN1dGFibGVBZGRyZXNzKCk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9IH0KKworICAgICAgICAgICAgaWYgKHRydWVDYWxsZXIt
PmlubGluZUNhbGxGcmFtZSkgeworICAgICAgICAgICAgICAgIGppdC5hZGRQdHIoCisgICAgICAg
ICAgICAgICAgICAgIEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKHRydWVDYWxsZXItPmlu
bGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpKSwKKyAg
ICAgICAgICAgICAgICAgICAgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsCisgICAgICAgICAg
ICAgICAgICAgIEdQUkluZm86OnJlZ1QzKTsKKyAgICAgICAgICAgICAgICBjYWxsZXJGcmFtZUdQ
UiA9IEdQUkluZm86OnJlZ1QzOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAg
ICAgICB0cnVlUmV0dXJuUEMgPSBzdHViSW5mby0+Y2FsbFJldHVybkxvY2F0aW9uLmxhYmVsQXRP
ZmZzZXQoCi0gICAgICAgICAgICAgICAgc3R1YkluZm8tPnBhdGNoLmRlbHRhQ2FsbFRvRG9uZSku
ZXhlY3V0YWJsZUFkZHJlc3MoKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IH0KIAot
ICAgICAgICBHUFJSZWcgY2FsbGVyRnJhbWVHUFI7Ci0gICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKLSAgICAgICAgICAgIGppdC5hZGRQdHIoQXNz
ZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXIuaW5saW5l
Q2FsbEZyYW1lLT5zdGFja09mZnNldCAqIHNpemVvZihFbmNvZGVkSlNWYWx1ZSkpLCBHUFJJbmZv
OjpjYWxsRnJhbWVSZWdpc3RlciwgR1BSSW5mbzo6cmVnVDMpOwotICAgICAgICAgICAgY2FsbGVy
RnJhbWVHUFIgPSBHUFJJbmZvOjpyZWdUMzsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBj
YWxsZXJGcmFtZUdQUiA9IEdQUkluZm86OmNhbGxGcmFtZVJlZ2lzdGVyOwotICAgICAgICAKLSAg
ICAgICAgaml0LnN0b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cihqdW1wVGFy
Z2V0KSwgQXNzZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJh
bWUtPnJldHVyblBDT2Zmc2V0KCkpKTsKKyAgICAgICAgICAgIGppdC5zdG9yZVB0cihBc3NlbWJs
eUhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoanVtcFRhcmdldCksIEFzc2VtYmx5SGVscGVyczo6YWRk
cmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5yZXR1cm5QQ09mZnNldCgpKSk7Cisg
ICAgICAgIH0KKwogICAgICAgICBpZiAodHJ1ZVJldHVyblBDKQogICAgICAgICAgICAgaml0LnN0
b3JlUHRyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbVB0cih0cnVlUmV0dXJuUEMpLCBBc3Nl
bWJseUhlbHBlcnM6OmFkZHJlc3NGb3IoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIHZp
cnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGlubGluZUNhbGxGcmFtZS0+YXJndW1lbnRzLnNpemUo
KSkub2Zmc2V0KCkpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAKQEAgLTIwMiwxMyArMjE5
LDEzIEBAIHZvaWQgcmVpZnlJbmxpbmVkQ2FsbEZyYW1lcyhDQ2FsbEhlbHBlcnMmIGppdCwgY29u
c3QgT1NSRXhpdEJhc2UmIGV4aXQpCiAgICAgICAgICAgICBqaXQuc3RvcmUzMihBc3NlbWJseUhl
bHBlcnM6OlRydXN0ZWRJbW0zMihpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50cy5zaXplKCkpLCBB
c3NlbWJseUhlbHBlcnM6OnBheWxvYWRGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZy
YW1lLT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAjaWYgVVNFKEpT
VkFMVUU2NCkKICAgICAgICAgaml0LnN0b3JlNjQoY2FsbGVyRnJhbWVHUFIsIEFzc2VtYmx5SGVs
cGVyczo6YWRkcmVzc0ZvckJ5dGVPZmZzZXQoaW5saW5lQ2FsbEZyYW1lLT5jYWxsZXJGcmFtZU9m
ZnNldCgpKSk7Ci0gICAgICAgIHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxGcmFtZTo6TG9j
YXRpb246OmVuY29kZUFzQnl0ZWNvZGVPZmZzZXQoY29kZU9yaWdpbi5ieXRlY29kZUluZGV4KTsK
KyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbEZyYW1lOjpMb2NhdGlvbjo6ZW5j
b2RlQXNCeXRlY29kZU9mZnNldChjb2RlT3JpZ2luLT5ieXRlY29kZUluZGV4KTsKICAgICAgICAg
aml0LnN0b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwg
QXNzZW1ibHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1l
LT5zdGFja09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgIGlmICgh
aW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQogICAgICAgICAgICAgaml0LnN0b3JlNjQo
QXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tNjQoSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoaW5s
aW5lQ2FsbEZyYW1lLT5jYWxsZWVDb25zdGFudCgpKSkpLCBBc3NlbWJseUhlbHBlcnM6OmFkZHJl
c3NGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCArIEpT
U3RhY2s6OkNhbGxlZSkpKTsKICNlbHNlIC8vIFVTRShKU1ZBTFVFNjQpIC8vIHNvIHRoaXMgaXMg
dGhlIDMyLWJpdCBwYXJ0CiAgICAgICAgIGppdC5zdG9yZVB0cihjYWxsZXJGcmFtZUdQUiwgQXNz
ZW1ibHlIZWxwZXJzOjphZGRyZXNzRm9yQnl0ZU9mZnNldChpbmxpbmVDYWxsRnJhbWUtPmNhbGxl
ckZyYW1lT2Zmc2V0KCkpKTsKLSAgICAgICAgSW5zdHJ1Y3Rpb24qIGluc3RydWN0aW9uID0gYmFz
ZWxpbmVDb2RlQmxvY2stPmluc3RydWN0aW9ucygpLmJlZ2luKCkgKyBjb2RlT3JpZ2luLmJ5dGVj
b2RlSW5kZXg7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGJhc2VsaW5lQ29k
ZUJsb2NrLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRl
eDsKICAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbEZyYW1lOjpMb2NhdGlvbjo6
ZW5jb2RlQXNCeXRlY29kZUluc3RydWN0aW9uKGluc3RydWN0aW9uKTsKICAgICAgICAgaml0LnN0
b3JlMzIoQXNzZW1ibHlIZWxwZXJzOjpUcnVzdGVkSW1tMzIobG9jYXRpb25CaXRzKSwgQXNzZW1i
bHlIZWxwZXJzOjp0YWdGb3IoKFZpcnR1YWxSZWdpc3RlcikoaW5saW5lQ2FsbEZyYW1lLT5zdGFj
a09mZnNldCArIEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CiAgICAgICAgIGppdC5zdG9yZTMy
KEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKEpTVmFsdWU6OkNlbGxUYWcpLCBBc3NlbWJs
eUhlbHBlcnM6OnRhZ0ZvcigoVmlydHVhbFJlZ2lzdGVyKShpbmxpbmVDYWxsRnJhbWUtPnN0YWNr
T2Zmc2V0ICsgSlNTdGFjazo6Q2FsbGVlKSkpOwpAQCAtMjE3LDEzICsyMzQsMTYgQEAgdm9pZCBy
ZWlmeUlubGluZWRDYWxsRnJhbWVzKENDYWxsSGVscGVycyYgaml0LCBjb25zdCBPU1JFeGl0QmFz
ZSYgZXhpdCkKICNlbmRpZiAvLyBVU0UoSlNWQUxVRTY0KSAvLyBlbmRpbmcgdGhlICNlbHNlIHBh
cnQsIHNvIGRpcmVjdGx5IGFib3ZlIGlzIHRoZSAzMi1iaXQgcGFydAogICAgIH0KIAorICAgIC8v
IERvbid0IG5lZWQgdG8gc2V0IHRoZSB0b3BsZXZlbCBjb2RlIG9yaWdpbiBpZiB3ZSBvbmx5IGRp
ZCBpbmxpbmUgdGFpbCBjYWxscworICAgIGlmIChjb2RlT3JpZ2luKSB7CiAjaWYgVVNFKEpTVkFM
VUU2NCkKLSAgICB1aW50MzJfdCBsb2NhdGlvbkJpdHMgPSBDYWxsRnJhbWU6OkxvY2F0aW9uOjpl
bmNvZGVBc0J5dGVjb2RlT2Zmc2V0KGNvZGVPcmlnaW4uYnl0ZWNvZGVJbmRleCk7CisgICAgICAg
IHVpbnQzMl90IGxvY2F0aW9uQml0cyA9IENhbGxGcmFtZTo6TG9jYXRpb246OmVuY29kZUFzQnl0
ZWNvZGVPZmZzZXQoY29kZU9yaWdpbi0+Ynl0ZWNvZGVJbmRleCk7CiAjZWxzZQotICAgIEluc3Ry
dWN0aW9uKiBpbnN0cnVjdGlvbiA9IGppdC5iYXNlbGluZUNvZGVCbG9jaygpLT5pbnN0cnVjdGlv
bnMoKS5iZWdpbigpICsgY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OwotICAgIHVpbnQzMl90IGxv
Y2F0aW9uQml0cyA9IENhbGxGcmFtZTo6TG9jYXRpb246OmVuY29kZUFzQnl0ZWNvZGVJbnN0cnVj
dGlvbihpbnN0cnVjdGlvbik7CisgICAgICAgIEluc3RydWN0aW9uKiBpbnN0cnVjdGlvbiA9IGpp
dC5iYXNlbGluZUNvZGVCbG9jaygpLT5pbnN0cnVjdGlvbnMoKS5iZWdpbigpICsgY29kZU9yaWdp
bi0+Ynl0ZWNvZGVJbmRleDsKKyAgICAgICAgdWludDMyX3QgbG9jYXRpb25CaXRzID0gQ2FsbEZy
YW1lOjpMb2NhdGlvbjo6ZW5jb2RlQXNCeXRlY29kZUluc3RydWN0aW9uKGluc3RydWN0aW9uKTsK
ICNlbmRpZgotICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVscGVyczo6VHJ1c3RlZEltbTMyKGxv
Y2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9yKChWaXJ0dWFsUmVnaXN0ZXIpKEpT
U3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgICAgIGppdC5zdG9yZTMyKEFzc2VtYmx5SGVs
cGVyczo6VHJ1c3RlZEltbTMyKGxvY2F0aW9uQml0cyksIEFzc2VtYmx5SGVscGVyczo6dGFnRm9y
KChWaXJ0dWFsUmVnaXN0ZXIpKEpTU3RhY2s6OkFyZ3VtZW50Q291bnQpKSk7CisgICAgfQogfQog
CiAjaWYgRU5BQkxFKEdHQykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdFByZXBhcmF0aW9uLmNwcAppbmRleCA1MWQ2ZTVhMGQ2YWVlMmQ0ODZhZTMwMmY5ZTg1
ZmU1ZDlhNTFlNjU1Li4zZTMxZWYxZDE5MGEwNTgyNTdiMTZmNTUzOWI1YjJkNGQ4NGI1MjJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXRQcmVwYXJhdGlv
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0UHJlcGFyYXRp
b24uY3BwCkBAIC00MSw3ICs0MSw3IEBAIHZvaWQgcHJlcGFyZUNvZGVPcmlnaW5Gb3JPU1JFeGl0
KEV4ZWNTdGF0ZSogZXhlYywgQ29kZU9yaWdpbiBjb2RlT3JpZ2luKQogICAgIFZNJiB2bSA9IGV4
ZWMtPnZtKCk7CiAgICAgRGVmZXJHQyBkZWZlckdDKHZtLmhlYXApOwogICAgIAotICAgIGZvciAo
OyBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZTsgY29kZU9yaWdpbiA9IGNvZGVPcmlnaW4uaW5s
aW5lQ2FsbEZyYW1lLT5jYWxsZXIpIHsKKyAgICBmb3IgKDsgY29kZU9yaWdpbi5pbmxpbmVDYWxs
RnJhbWU7IGNvZGVPcmlnaW4gPSBjb2RlT3JpZ2luLmlubGluZUNhbGxGcmFtZS0+ZGlyZWN0Q2Fs
bGVyKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9CiAgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihjb2RlT3JpZ2luLmlubGluZUNh
bGxGcmFtZS0+ZXhlY3V0YWJsZS5nZXQoKSk7CiAgICAgICAgIENvZGVCbG9jayogY29kZUJsb2Nr
ID0gZXhlY3V0YWJsZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCA2Zjk1MTJiYTUzNGM0OTBkNGJmOTk4YWY1
ZDA4MjQ0MTJkYmI5MTRlLi45YTFkYzQ1ZTFhODJmMTRjNTllMzA1ODg5ODdiZjExMGRlZjAwZjgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTEy
NzYsNyArMTI3Niw3IEBAIGV4dGVybiAiQyIgdm9pZCBKSVRfT1BFUkFUSU9OIHRyaWdnZXJSZW9w
dGltaXphdGlvbk5vdyhDb2RlQmxvY2sqIGNvZGVCbG9jaywgT1NSCiAgICAgQVNTRVJUKEpJVENv
ZGU6OmlzT3B0aW1pemluZ0pJVChvcHRpbWl6ZWRDb2RlQmxvY2stPmppdFR5cGUoKSkpOwogICAg
IAogICAgIGJvb2wgZGlkVHJ5VG9FbnRlckludG9JbmxpbmVkTG9vcHMgPSBmYWxzZTsKLSAgICBm
b3IgKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gZXhpdC0+bV9jb2RlT3JpZ2lu
LmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxp
bmVDYWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKKyAgICBmb3IgKElubGluZUNh
bGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lID0gZXhpdC0+bV9jb2RlT3JpZ2luLmlubGluZUNhbGxG
cmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxpbmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUt
PmRpcmVjdENhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgaWYgKGlubGluZUNhbGxG
cmFtZS0+ZXhlY3V0YWJsZS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKSB7CiAgICAgICAgICAgICBk
aWRUcnlUb0VudGVySW50b0lubGluZWRMb29wcyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJlY2lzZUxvY2FsQ2xv
YmJlcml6ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9i
YmVyaXplLmgKaW5kZXggMWNkNmIwOWVmZjJkMmFlNDVhMTRiNWMwNzAwZGM1YmY2YTExZDkwMy4u
ODNmNmM2Nzg0ODY2NDU4ODQ2YjJiZGI2MjdkMjRmNDY3N2I4ZTU0NyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVjaXNlTG9jYWxDbG9iYmVyaXplLmgKQEAg
LTExMSw3ICsxMTEsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIEdldE15QXJndW1lbnRCeVZh
bDoKICAgICAgICAgY2FzZSBGb3J3YXJkVmFyYXJnczoKICAgICAgICAgY2FzZSBDYWxsRm9yd2Fy
ZFZhcmFyZ3M6Ci0gICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6IHsKKyAgICAg
ICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbEZv
cndhcmRWYXJhcmdzOgorICAgICAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxGb3J3YXJkVmFyYXJn
czogewogICAgICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25v
ZGUtPmNoaWxkMSgpLT5vcmlnaW4uc2VtYW50aWMuaW5saW5lQ2FsbEZyYW1lOwogICAgICAgICAg
ICAgaWYgKCFpbmxpbmVDYWxsRnJhbWUpIHsKICAgICAgICAgICAgICAgICAvLyBSZWFkIHRoZSBv
dXRlcm1vc3QgYXJndW1lbnRzIGFuZCBhcmd1bWVudCBjb3VudC4KQEAgLTEzOCw3ICsxNDAsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAgICAgIG1fcmVhZChWaXJ0dWFsUmVnaXN0ZXIoaSkpOwog
ICAgICAgICAKICAgICAgICAgICAgIC8vIFJlYWQgYWxsIG9mIHRoZSBpbmxpbmUgYXJndW1lbnRz
IGFuZCBjYWxsIGZyYW1lIGhlYWRlcnMgdGhhdCB3ZSBkaWRuJ3QgYWxyZWFkeSBjYXB0dXJlLgot
ICAgICAgICAgICAgZm9yIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSA9IG1fbm9k
ZS0+b3JpZ2luLnNlbWFudGljLmlubGluZUNhbGxGcmFtZTsgaW5saW5lQ2FsbEZyYW1lOyBpbmxp
bmVDYWxsRnJhbWUgPSBpbmxpbmVDYWxsRnJhbWUtPmNhbGxlci5pbmxpbmVDYWxsRnJhbWUpIHsK
KyAgICAgICAgICAgIGZvciAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJhbWUgPSBtX25v
ZGUtPm9yaWdpbi5zZW1hbnRpYy5pbmxpbmVDYWxsRnJhbWU7IGlubGluZUNhbGxGcmFtZTsgaW5s
aW5lQ2FsbEZyYW1lID0gaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJJbmxpbmVGcmFtZVNraXBw
aW5nRGVhZEZyYW1lcygpKSB7CiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gaW5s
aW5lQ2FsbEZyYW1lLT5hcmd1bWVudHMuc2l6ZSgpOyBpLS0gPiAxOykKICAgICAgICAgICAgICAg
ICAgICAgbV9yZWFkKFZpcnR1YWxSZWdpc3RlcihpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zmc2V0
ICsgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoaSkub2Zmc2V0KCkpKTsKICAgICAgICAgICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxsKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcAppbmRleCBjZGUwOWJmMTIxYjIxZjhhNGZlYjYwZGZhMjRmYjQyMGI2YTliYWJhLi4xZmVl
OWVjMGZiNWIzN2MwMzYyNDQ2ODNmMDYxZmQwOWViMTZmNTA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNl
LmNwcApAQCAtMTk0LDExICsxOTQsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgY2FzZSBNdWx0aUdl
dEJ5T2Zmc2V0OgogICAgICAgICBjYXNlIEdldERpcmVjdFBuYW1lOgogICAgICAgICBjYXNlIENh
bGw6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbDoKICAgICAgICAgY2FzZSBDb25zdHJ1
Y3Q6CiAgICAgICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWls
Q2FsbFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKICAgICAgICAgY2Fz
ZSBDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFy
Z3M6CisgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgogICAgICAg
ICBjYXNlIE5hdGl2ZUNhbGw6CiAgICAgICAgIGNhc2UgTmF0aXZlQ29uc3RydWN0OgogICAgICAg
ICBjYXNlIEdldEdsb2JhbFZhcjoKQEAgLTYzMCw2ICs2MzMsOSBAQCBwcml2YXRlOgogICAgICAg
ICBjYXNlIFB1dENsb3N1cmVWYXI6CiAgICAgICAgIGNhc2UgUHV0VG9Bcmd1bWVudHM6CiAgICAg
ICAgIGNhc2UgUmV0dXJuOgorICAgICAgICBjYXNlIFRhaWxDYWxsOgorICAgICAgICBjYXNlIFRh
aWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2FzZSBUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgogICAg
ICAgICBjYXNlIFRocm93OgogICAgICAgICBjYXNlIFB1dEJ5SWQ6CiAgICAgICAgIGNhc2UgUHV0
QnlJZEZsdXNoOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZl
VG9FeGVjdXRlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUu
aAppbmRleCA5NTNiNTRjMjFmNzM5ZDA3ZGU0NjQ1ZGI2Yjc0NzVjMWYwN2JhZTYxLi4zNzdjYWNk
MTJmYzFhNmE5ZjIwOTdiZWRiMDg0NjlmYmI3MmM5OTc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaApAQCAtMTkxLDggKzE5MSwxMSBAQCBib29sIHNh
ZmVUb0V4ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUpCiAgICAgY2FzZSBDb21wYXJlRXFDb25zdGFudDoKICAgICBjYXNlIENvbXBhcmVTdHJp
Y3RFcToKICAgICBjYXNlIENhbGw6CisgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxsOgogICAgIGNh
c2UgQ29uc3RydWN0OgogICAgIGNhc2UgQ2FsbFZhcmFyZ3M6CisgICAgY2FzZSBFbXVsYXRlZFRh
aWxDYWxsVmFyYXJnczoKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGxGb3J3YXJkVmFyYXJnczoK
ICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBMb2FkVmFyYXJnczoKICAgICBj
YXNlIENhbGxGb3J3YXJkVmFyYXJnczoKQEAgLTIzNSw2ICsyMzgsOSBAQCBib29sIHNhZmVUb0V4
ZWN1dGUoQWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUp
CiAgICAgY2FzZSBCcmFuY2g6CiAgICAgY2FzZSBTd2l0Y2g6CiAgICAgY2FzZSBSZXR1cm46Cisg
ICAgY2FzZSBUYWlsQ2FsbDoKKyAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICBjYXNlIFRh
aWxDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBUaHJvdzoKICAgICBjYXNlIFRocm93UmVm
ZXJlbmNlRXJyb3I6CiAgICAgY2FzZSBDb3VudEV4ZWN1dGlvbjoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCmluZGV4IGNhNjg0
YThkOGVkMzM5ZTEzMjA3MTM2M2IyYjg0YTNiYzhkZDZiZTQuLjZlNjllMTY4ZDIyZDA0ZWFkNzA3
NzI1YjRkODc1M2NlYjE1YTlhOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcApAQCAtNjQ0LDEwICs2NDQsMjAgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICBDYWxsTGlua0luZm86
OkNhbGxUeXBlIGNhbGxUeXBlOwogICAgIGJvb2wgaXNWYXJhcmdzID0gZmFsc2U7CiAgICAgYm9v
bCBpc0ZvcndhcmRWYXJhcmdzID0gZmFsc2U7CisgICAgYm9vbCBpc1RhaWwgPSBmYWxzZTsKKyAg
ICBib29sIGlzRW11bGF0ZWRUYWlsID0gZmFsc2U7CiAgICAgc3dpdGNoIChub2RlLT5vcCgpKSB7
CiAgICAgY2FzZSBDYWxsOgogICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbDsK
ICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBUYWlsQ2FsbDoKKyAgICAgICAgY2FsbFR5cGUgPSBD
YWxsTGlua0luZm86OlRhaWxDYWxsOworICAgICAgICBpc1RhaWwgPSB0cnVlOworICAgICAgICBi
cmVhazsKKyAgICBjYXNlIEVtdWxhdGVkVGFpbENhbGw6CisgICAgICAgIGNhbGxUeXBlID0gQ2Fs
bExpbmtJbmZvOjpDYWxsOworICAgICAgICBpc0VtdWxhdGVkVGFpbCA9IHRydWU7CisgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0OgogICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5r
SW5mbzo6Q29uc3RydWN0OwogICAgICAgICBicmVhazsKQEAgLTY1NSw2ICs2NjUsMTYgQEAgdm9p
ZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICAgICAgY2FsbFR5cGUg
PSBDYWxsTGlua0luZm86OkNhbGxWYXJhcmdzOwogICAgICAgICBpc1ZhcmFyZ3MgPSB0cnVlOwog
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2FsbFR5
cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxsVmFyYXJnczsKKyAgICAgICAgaXNWYXJhcmdzID0g
dHJ1ZTsKKyAgICAgICAgaXNUYWlsID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBF
bXVsYXRlZFRhaWxDYWxsVmFyYXJnczoKKyAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86
OkNhbGxWYXJhcmdzOworICAgICAgICBpc1ZhcmFyZ3MgPSB0cnVlOworICAgICAgICBpc0VtdWxh
dGVkVGFpbCA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29uc3RydWN0VmFyYXJn
czoKICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNvbnN0cnVjdFZhcmFyZ3M7CiAg
ICAgICAgIGlzVmFyYXJncyA9IHRydWU7CkBAIC02NjMsNiArNjgzLDE2IEBAIHZvaWQgU3BlY3Vs
YXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExp
bmtJbmZvOjpDYWxsVmFyYXJnczsKICAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAgICAg
Y2FsbFR5cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxsVmFyYXJnczsKKyAgICAgICAgaXNUYWls
ID0gdHJ1ZTsKKyAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAgICBjYWxs
VHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3M7CisgICAgICAgIGlzRW11bGF0ZWRUYWls
ID0gdHJ1ZTsKKyAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7CisgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CiAgICAgICAgIGNhbGxUeXBlID0g
Q2FsbExpbmtJbmZvOjpDb25zdHJ1Y3RWYXJhcmdzOwogICAgICAgICBpc0ZvcndhcmRWYXJhcmdz
ID0gdHJ1ZTsKQEAgLTc4NSw3ICs4MTUsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdENh
bGwoTm9kZSogbm9kZSkKICAgICBtX2ppdC5zdG9yZTMyKGNhbGxlZVBheWxvYWRHUFIsIG1faml0
LmNhbGxlZUZyYW1lUGF5bG9hZFNsb3QoSlNTdGFjazo6Q2FsbGVlKSk7CiAgICAgbV9qaXQuc3Rv
cmUzMihjYWxsZWVUYWdHUFIsIG1faml0LmNhbGxlZUZyYW1lVGFnU2xvdChKU1N0YWNrOjpDYWxs
ZWUpKTsKIAotICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBk
byBhbiBlZmZpY2llbnQgbW92ZSBvZiB0aGUgYXJndW1lbnRzIGludG8KKyAgICAvLyB0aGVpciB0
YXJnZXQgc3RhY2sgcG9zaXRpb24gaW5zdGVhZCBvZiBidWlsZGluZyB0aGVuIG1lbW1vdmluZwor
ICAgIC8vIHRoZSBjYWxsZWUgZnJhbWUuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE0NzUwOAorICAgIGlmIChpc1RhaWwpCisgICAgICAgIEFTU0VSVChp
c0ZsdXNoZWQoKSk7CisgICAgZWxzZQorICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwogCiAgICAg
R1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0UGF5bG9hZCh0aGlzKTsKICAgICBHUFJGbHVzaGVk
Q2FsbFJlc3VsdDIgcmVzdWx0VGFnKHRoaXMpOwpAQCAtNzk1LDE0ICs4MzIsMjkgQEAgdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6ZW1pdENhbGwoTm9kZSogbm9kZSkKICAgICBKSVRDb21waWxlcjo6RGF0
YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CiAgICAgSklUQ29tcGlsZXI6Okp1bXBMaXN0IHNsb3dQ
YXRoOwogCi0gICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdpbihub2RlLT5vcmlnaW4uc2VtYW50
aWMpOworICAgIENvZGVPcmlnaW4gc3RhdGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGlj
OworICAgIEFTU0VSVCghaXNUYWlsIHx8ICFzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lIHx8
ICFzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFt
ZXMoKSk7CisgICAgQVNTRVJUKCFpc0VtdWxhdGVkVGFpbCB8fCAoc3RhdGljT3JpZ2luLmlubGlu
ZUNhbGxGcmFtZSAmJiBzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lw
cGluZ0RlYWRGcmFtZXMoKSkpOworICAgIENvZGVPcmlnaW4gZHluYW1pY09yaWdpbiA9CisgICAg
ICAgIGlzRW11bGF0ZWRUYWlsID8gKnN0YXRpY09yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmdldENh
bGxlclNraXBwaW5nRGVhZEZyYW1lcygpIDogc3RhdGljT3JpZ2luOworCisgICAgbV9qaXQuZW1p
dFN0b3JlQ29kZU9yaWdpbihkeW5hbWljT3JpZ2luKTsKICAgICAKICAgICBDYWxsTGlua0luZm8q
IGluZm8gPSBtX2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7CiAKICAgICBzbG93
UGF0aC5hcHBlbmQobV9qaXQuYnJhbmNoSWZOb3RDZWxsKGNhbGxlZS5qc1ZhbHVlUmVncygpKSk7
CiAgICAgc2xvd1BhdGguYXBwZW5kKG1faml0LmJyYW5jaFB0cldpdGhQYXRjaChNYWNyb0Fzc2Vt
Ymxlcjo6Tm90RXF1YWwsIGNhbGxlZVBheWxvYWRHUFIsIHRhcmdldFRvQ2hlY2spKTsKIAotICAg
IEpJVENvbXBpbGVyOjpDYWxsIGZhc3RDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKKyAgICBpZiAo
aXNUYWlsKSB7CisgICAgICAgIG1faml0LmVtaXRSZXN0b3JlQ2FsbGVlU2F2ZXMoKTsKKyAgICAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBkbyBhbiBlZmZpY2llbnQgbW92ZSBvZiB0aGUgYXJndW1l
bnRzIGludG8KKyAgICAgICAgLy8gdGhlaXIgdGFyZ2V0IHN0YWNrIHBvc2l0aW9uIGluc3RlYWQg
b2YgYnVpbGRpbmcgdGhlbiBtZW1tb3ZpbmcKKyAgICAgICAgLy8gdGhlIGNhbGxlZSBmcmFtZS4K
KyAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzUw
OAorICAgICAgICBtX2ppdC5wcmVwYXJlRm9yVGFpbENhbGxTbG93KCk7CisgICAgfQorCisgICAg
SklUQ29tcGlsZXI6OkNhbGwgZmFzdENhbGwgPSBpc1RhaWwgPyBtX2ppdC5uZWFyVGFpbENhbGwo
KSA6IG1faml0Lm5lYXJDYWxsKCk7CiAKICAgICBKSVRDb21waWxlcjo6SnVtcCBkb25lID0gbV9q
aXQuanVtcCgpOwogCkBAIC04MjUsMTcgKzg3NywyMiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpl
bWl0Q2FsbChOb2RlKiBub2RlKQogCiAgICAgZG9uZS5saW5rKCZtX2ppdCk7CiAKLSAgICBtX2pp
dC5zZXR1cFJlc3VsdHMocmVzdWx0UGF5bG9hZEdQUiwgcmVzdWx0VGFnR1BSKTsKKyAgICBpZiAo
aXNUYWlsKQorICAgICAgICBtX2ppdC5icmVha3BvaW50KCk7CisgICAgZWxzZSB7CisgICAgICAg
IG1faml0LnNldHVwUmVzdWx0cyhyZXN1bHRQYXlsb2FkR1BSLCByZXN1bHRUYWdHUFIpOworCisg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0VGFnR1BSLCByZXN1bHRQYXlsb2FkR1BSLCBub2Rl
LCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxkcmVuQ2FsbGVkRXhwbGljaXRseSk7CiAKLSAgICBqc1Zh
bHVlUmVzdWx0KHJlc3VsdFRhZ0dQUiwgcmVzdWx0UGF5bG9hZEdQUiwgbm9kZSwgRGF0YUZvcm1h
dEpTLCBVc2VDaGlsZHJlbkNhbGxlZEV4cGxpY2l0bHkpOworICAgICAgICAvLyBBZnRlciB0aGUg
Y2FsbHMgYXJlIGRvbmUsIHdlIG5lZWQgdG8gcmVlc3RhYmxpc2ggb3VyIHN0YWNrCisgICAgICAg
IC8vIHBvaW50ZXIuIFdlIHJlbHkgb24gdGhpcyBmb3IgdmFyYXJncyBjYWxscywgY2FsbHMgd2l0
aCBhcml0eQorICAgICAgICAvLyBtaXNtYXRjaCAodGhlIGNhbGxmcmFtZSBpcyBzbGlkZWQpIGFu
ZCB0YWlsIGNhbGxzLgorICAgICAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1faml0Lmdy
YXBoKCkuc3RhY2tQb2ludGVyT2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6
Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Cisg
ICAgfQogCiAgICAgaW5mby0+c2V0VXBDYWxsKGNhbGxUeXBlLCBub2RlLT5vcmlnaW4uc2VtYW50
aWMsIGNhbGxlZVBheWxvYWRHUFIpOwogICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xv
d0NhbGwsIHRhcmdldFRvQ2hlY2ssIGluZm8pOwotICAgIAotICAgIC8vIEFmdGVyIHRoZSBjYWxs
cyBhcmUgZG9uZSwgd2UgbmVlZCB0byByZWVzdGFibGlzaCBvdXIgc3RhY2sKLSAgICAvLyBwb2lu
dGVyLiBXZSByZWx5IG9uIHRoaXMgZm9yIHZhcmFyZ3MgY2FsbHMsIGNhbGxzIHdpdGggYXJpdHkK
LSAgICAvLyBtaXNtYXRjaCAodGhlIGNhbGxmcmFtZSBpcyBzbGlkZWQpIGFuZCB0YWlsIGNhbGxz
LgotICAgIG1faml0LmFkZFB0cihUcnVzdGVkSW1tMzIobV9qaXQuZ3JhcGgoKS5zdGFja1BvaW50
ZXJPZmZzZXQoKSAqIHNpemVvZihSZWdpc3RlcikpLCBHUFJJbmZvOjpjYWxsRnJhbWVSZWdpc3Rl
ciwgSklUQ29tcGlsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKwogfQogCiB0ZW1wbGF0ZTxi
b29sIHN0cmljdD4KQEAgLTQyMTksMTAgKzQyNzYsMTYgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgQ2FsbDoKKyAg
ICBjYXNlIFRhaWxDYWxsOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbDoKICAgICBjYXNlIENv
bnN0cnVjdDoKICAgICBjYXNlIENhbGxWYXJhcmdzOgotICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJh
cmdzOgorICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2Fs
bFZhcmFyZ3M6CiAgICAgY2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgorICAgIGNhc2UgQ2FsbEZvcndh
cmRWYXJhcmdzOgorICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICBjYXNlIEVt
dWxhdGVkVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKICAgICBjYXNlIENvbnN0cnVjdEZvcndhcmRW
YXJhcmdzOgogICAgICAgICBlbWl0Q2FsbChub2RlKTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBl
YjJlOGYzZGZmY2ZkNDk1M2M1NzM3NWI4ZDA0YzMzZDdhMjA0M2MzLi40YTg0ZjI1MDZjZjljNDkz
ZGQ0NzI4NWRiZjk4MWY2YmM5YTI0ODBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTYzMCwxMCArNjMwLDIwIEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgQ2FsbExpbmtJbmZvOjpD
YWxsVHlwZSBjYWxsVHlwZTsKICAgICBib29sIGlzVmFyYXJncyA9IGZhbHNlOwogICAgIGJvb2wg
aXNGb3J3YXJkVmFyYXJncyA9IGZhbHNlOworICAgIGJvb2wgaXNUYWlsID0gZmFsc2U7CisgICAg
Ym9vbCBpc0VtdWxhdGVkVGFpbCA9IGZhbHNlOwogICAgIHN3aXRjaCAobm9kZS0+b3AoKSkgewog
ICAgIGNhc2UgQ2FsbDoKICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OkNhbGw7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgVGFpbENhbGw6CisgICAgICAgIGNhbGxUeXBlID0gQ2Fs
bExpbmtJbmZvOjpUYWlsQ2FsbDsKKyAgICAgICAgaXNUYWlsID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxsOgorICAgICAgICBjYWxsVHlwZSA9IENhbGxM
aW5rSW5mbzo6Q2FsbDsKKyAgICAgICAgaXNFbXVsYXRlZFRhaWwgPSB0cnVlOworICAgICAgICBi
cmVhazsKICAgICBjYXNlIENvbnN0cnVjdDoKICAgICAgICAgY2FsbFR5cGUgPSBDYWxsTGlua0lu
Zm86OkNvbnN0cnVjdDsKICAgICAgICAgYnJlYWs7CkBAIC02NDEsNiArNjUxLDE2IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgICAgIGNhbGxUeXBlID0g
Q2FsbExpbmtJbmZvOjpDYWxsVmFyYXJnczsKICAgICAgICAgaXNWYXJhcmdzID0gdHJ1ZTsKICAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhbGxUeXBl
ID0gQ2FsbExpbmtJbmZvOjpUYWlsQ2FsbFZhcmFyZ3M7CisgICAgICAgIGlzVmFyYXJncyA9IHRy
dWU7CisgICAgICAgIGlzVGFpbCA9IHRydWU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRW11
bGF0ZWRUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpD
YWxsVmFyYXJnczsKKyAgICAgICAgaXNWYXJhcmdzID0gdHJ1ZTsKKyAgICAgICAgaXNFbXVsYXRl
ZFRhaWwgPSB0cnVlOworICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6
CiAgICAgICAgIGNhbGxUeXBlID0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3RWYXJhcmdzOwogICAg
ICAgICBpc1ZhcmFyZ3MgPSB0cnVlOwpAQCAtNjUzLDYgKzY3MywxNiBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAgICAgICBjYWxsVHlwZSA9IENhbGxMaW5r
SW5mbzo6Q29uc3RydWN0VmFyYXJnczsKICAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgVGFpbENhbGxGb3J3YXJkVmFyYXJnczoKKyAgICAg
ICAgY2FsbFR5cGUgPSBDYWxsTGlua0luZm86OlRhaWxDYWxsVmFyYXJnczsKKyAgICAgICAgaXNU
YWlsID0gdHJ1ZTsKKyAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7CisgICAgICAgIGJy
ZWFrOworICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgICAgICBj
YWxsVHlwZSA9IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3M7CisgICAgICAgIGlzRW11bGF0ZWRU
YWlsID0gdHJ1ZTsKKyAgICAgICAgaXNGb3J3YXJkVmFyYXJncyA9IHRydWU7CisgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIERGR19DUkFTSChtX2ppdC5ncmFwaCgpLCBub2Rl
LCAiYmFkIG5vZGUgdHlwZSIpOwogICAgICAgICBicmVhazsKQEAgLTc2MSwyMiArNzkxLDQyIEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRDYWxsKE5vZGUqIG5vZGUpCiAgICAgR1BSUmVnIGNh
bGxlZUdQUiA9IGNhbGxlZS5ncHIoKTsKICAgICBjYWxsZWUudXNlKCk7CiAgICAgbV9qaXQuc3Rv
cmU2NChjYWxsZWVHUFIsIEpJVENvbXBpbGVyOjpjYWxsZWVGcmFtZVNsb3QoSlNTdGFjazo6Q2Fs
bGVlKSk7Ci0gICAgCi0gICAgZmx1c2hSZWdpc3RlcnMoKTsKKworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgZG8gYW4gZWZmaWNpZW50IG1vdmUgb2YgdGhlIGFyZ3VtZW50cyBpbnRvCisgICAgLy8g
dGhlaXIgdGFyZ2V0IHN0YWNrIHBvc2l0aW9uIGluc3RlYWQgb2YgYnVpbGRpbmcgdGhlbiBtZW1t
b3ZpbmcKKyAgICAvLyB0aGUgY2FsbGVlIGZyYW1lLgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDc1MDgKKyAgICBpZiAoaXNUYWlsKQorICAgICAgICBB
U1NFUlQoaXNGbHVzaGVkKCkpOworICAgIGVsc2UKKyAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsK
IAogICAgIEdQUkZsdXNoZWRDYWxsUmVzdWx0IHJlc3VsdCh0aGlzKTsKICAgICBHUFJSZWcgcmVz
dWx0R1BSID0gcmVzdWx0LmdwcigpOwogCi0gICAgSklUQ29tcGlsZXI6OkRhdGFMYWJlbFB0ciB0
YXJnZXRUb0NoZWNrOwotICAgIEpJVENvbXBpbGVyOjpKdW1wIHNsb3dQYXRoOworICAgIENvZGVP
cmlnaW4gc3RhdGljT3JpZ2luID0gbm9kZS0+b3JpZ2luLnNlbWFudGljOworICAgIEFTU0VSVCgh
aXNUYWlsIHx8ICFzdGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lIHx8ICFzdGF0aWNPcmlnaW4u
aW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoKSk7CisgICAgQVNT
RVJUKCFpc0VtdWxhdGVkVGFpbCB8fCAoc3RhdGljT3JpZ2luLmlubGluZUNhbGxGcmFtZSAmJiBz
dGF0aWNPcmlnaW4uaW5saW5lQ2FsbEZyYW1lLT5nZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMo
KSkpOworICAgIENvZGVPcmlnaW4gZHluYW1pY09yaWdpbiA9CisgICAgICAgIGlzRW11bGF0ZWRU
YWlsID8gKnN0YXRpY09yaWdpbi5pbmxpbmVDYWxsRnJhbWUtPmdldENhbGxlclNraXBwaW5nRGVh
ZEZyYW1lcygpIDogc3RhdGljT3JpZ2luOwogCi0gICAgbV9qaXQuZW1pdFN0b3JlQ29kZU9yaWdp
bihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgIG1faml0LmVtaXRTdG9yZUNvZGVPcmlnaW4o
ZHluYW1pY09yaWdpbik7CiAgICAgCiAgICAgQ2FsbExpbmtJbmZvKiBjYWxsTGlua0luZm8gPSBt
X2ppdC5jb2RlQmxvY2soKS0+YWRkQ2FsbExpbmtJbmZvKCk7Ci0gICAgCi0gICAgc2xvd1BhdGgg
PSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJsZXI6Ok5vdEVxdWFsLCBjYWxs
ZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKDApKTsK
IAotICAgIEpJVENvbXBpbGVyOjpDYWxsIGZhc3RDYWxsID0gbV9qaXQubmVhckNhbGwoKTsKKyAg
ICBKSVRDb21waWxlcjo6RGF0YUxhYmVsUHRyIHRhcmdldFRvQ2hlY2s7CisgICAgSklUQ29tcGls
ZXI6Okp1bXAgc2xvd1BhdGggPSBtX2ppdC5icmFuY2hQdHJXaXRoUGF0Y2goTWFjcm9Bc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBjYWxsZWVHUFIsIHRhcmdldFRvQ2hlY2ssIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tUHRyKDApKTsKKworICAgIGlmIChpc1RhaWwpIHsKKyAgICAgICAgbV9qaXQuZW1p
dFJlc3RvcmVDYWxsZWVTYXZlcygpOworICAgICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGRvIGFu
IGVmZmljaWVudCBtb3ZlIG9mIHRoZSBhcmd1bWVudHMgaW50bworICAgICAgICAvLyB0aGVpciB0
YXJnZXQgc3RhY2sgcG9zaXRpb24gaW5zdGVhZCBvZiBidWlsZGluZyB0aGVuIG1lbW1vdmluZwor
ICAgICAgICAvLyB0aGUgY2FsbGVlIGZyYW1lLgorICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NTA4CisgICAgICAgIG1faml0LnByZXBhcmVGb3JU
YWlsQ2FsbFNsb3coKTsKKyAgICB9CisKKyAgICBKSVRDb21waWxlcjo6Q2FsbCBmYXN0Q2FsbCA9
IGlzVGFpbCA/IG1faml0Lm5lYXJUYWlsQ2FsbCgpIDogbV9qaXQubmVhckNhbGwoKTsKIAogICAg
IEpJVENvbXBpbGVyOjpKdW1wIGRvbmUgPSBtX2ppdC5qdW1wKCk7CiAgICAgCkBAIC03ODUsMjAg
KzgzNSwyNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0Q2FsbChOb2RlKiBub2RlKQogICAg
IG1faml0Lm1vdmUoY2FsbGVlR1BSLCBHUFJJbmZvOjpyZWdUMCk7IC8vIENhbGxlZSBuZWVkcyB0
byBiZSBpbiByZWdUMAogICAgIG1faml0Lm1vdmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW1Q
dHIoY2FsbExpbmtJbmZvKSwgR1BSSW5mbzo6cmVnVDIpOyAvLyBMaW5rIGluZm8gbmVlZHMgdG8g
YmUgaW4gcmVnVDIKICAgICBKSVRDb21waWxlcjo6Q2FsbCBzbG93Q2FsbCA9IG1faml0Lm5lYXJD
YWxsKCk7Ci0gICAgCisKICAgICBkb25lLmxpbmsoJm1faml0KTsKLSAgICAKLSAgICBtX2ppdC5t
b3ZlKEdQUkluZm86OnJldHVyblZhbHVlR1BSLCByZXN1bHRHUFIpOwotICAgIAotICAgIGpzVmFs
dWVSZXN1bHQocmVzdWx0R1BSLCBtX2N1cnJlbnROb2RlLCBEYXRhRm9ybWF0SlMsIFVzZUNoaWxk
cmVuQ2FsbGVkRXhwbGljaXRseSk7Ci0gICAgCisKKyAgICBpZiAoaXNUYWlsKQorICAgICAgICBt
X2ppdC5icmVha3BvaW50KCk7CisgICAgZWxzZSB7CisgICAgICAgIG1faml0Lm1vdmUoR1BSSW5m
bzo6cmV0dXJuVmFsdWVHUFIsIHJlc3VsdEdQUik7CisKKyAgICAgICAganNWYWx1ZVJlc3VsdChy
ZXN1bHRHUFIsIG1fY3VycmVudE5vZGUsIERhdGFGb3JtYXRKUywgVXNlQ2hpbGRyZW5DYWxsZWRF
eHBsaWNpdGx5KTsKKworICAgICAgICAvLyBBZnRlciB0aGUgY2FsbHMgYXJlIGRvbmUsIHdlIG5l
ZWQgdG8gcmVlc3RhYmxpc2ggb3VyIHN0YWNrCisgICAgICAgIC8vIHBvaW50ZXIuIFdlIHJlbHkg
b24gdGhpcyBmb3IgdmFyYXJncyBjYWxscywgY2FsbHMgd2l0aCBhcml0eQorICAgICAgICAvLyBt
aXNtYXRjaCAodGhlIGNhbGxmcmFtZSBpcyBzbGlkZWQpIGFuZCB0YWlsIGNhbGxzLgorICAgICAg
ICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVyT2Zm
c2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIsIEpJ
VENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgfQorCiAgICAgY2FsbExpbmtJ
bmZvLT5zZXRVcENhbGwoY2FsbFR5cGUsIG1fY3VycmVudE5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
IGNhbGxlZUdQUik7ICAgIAogICAgIG1faml0LmFkZEpTQ2FsbChmYXN0Q2FsbCwgc2xvd0NhbGws
IHRhcmdldFRvQ2hlY2ssIGNhbGxMaW5rSW5mbyk7CiAKLSAgICAvLyBBZnRlciB0aGUgY2FsbHMg
YXJlIGRvbmUsIHdlIG5lZWQgdG8gcmVlc3RhYmxpc2ggb3VyIHN0YWNrCi0gICAgLy8gcG9pbnRl
ci4gV2UgcmVseSBvbiB0aGlzIGZvciB2YXJhcmdzIGNhbGxzLCBjYWxscyB3aXRoIGFyaXR5Ci0g
ICAgLy8gbWlzbWF0Y2ggKHRoZSBjYWxsZnJhbWUgaXMgc2xpZGVkKSBhbmQgdGFpbCBjYWxscy4K
LSAgICBtX2ppdC5hZGRQdHIoVHJ1c3RlZEltbTMyKG1faml0LmdyYXBoKCkuc3RhY2tQb2ludGVy
T2Zmc2V0KCkgKiBzaXplb2YoUmVnaXN0ZXIpKSwgR1BSSW5mbzo6Y2FsbEZyYW1lUmVnaXN0ZXIs
IEpJVENvbXBpbGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CiB9CiAKIC8vIENsYW5nIHNob3Vs
ZCBhbGxvdyB1bnJlYWNoYWJsZSBbW2NsYW5nOjpmYWxsdGhyb3VnaF1dIGluIHRlbXBsYXRlIGZ1
bmN0aW9ucyBpZiBhbnkgdGVtcGxhdGUgZXhwYW5zaW9uIHVzZXMgaXQKQEAgLTQyMzEsMTQgKzQy
ODYsMjAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgQ2FsbDoKKyAgICBjYXNlIFRhaWxDYWxsOgorICAgIGNhc2Ug
RW11bGF0ZWRUYWlsQ2FsbDoKICAgICBjYXNlIENvbnN0cnVjdDoKICAgICBjYXNlIENhbGxWYXJh
cmdzOgorICAgIGNhc2UgVGFpbENhbGxWYXJhcmdzOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2Fs
bFZhcmFyZ3M6CiAgICAgY2FzZSBDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAgY2FzZSBDb25zdHJ1
Y3RWYXJhcmdzOgogICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CisgICAgY2FzZSBU
YWlsQ2FsbEZvcndhcmRWYXJhcmdzOgorICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbEZvcndhcmRW
YXJhcmdzOgogICAgICAgICBlbWl0Q2FsbChub2RlKTsKICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IAorCiAgICAgY2FzZSBMb2FkVmFyYXJnczogewogICAgICAgICBMb2FkVmFyYXJnc0RhdGEqIGRh
dGEgPSBub2RlLT5sb2FkVmFyYXJnc0RhdGEoKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJhcmdzRm9yd2FyZGluZ1BoYXNlLmNwcAppbmRl
eCA5MzcxZGU1NDA4ZjAyM2JmYmQ1OThkMjM3MWZmOWY4Y2JkMTc0M2E3Li5mNTQ3MGFkMWZkZmNi
MjM0ZjZlNmMzYjYyZDFjNWMxNzY1YTI5ZTAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1ZhcmFyZ3NGb3J3YXJkaW5nUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHVmFyYXJnc0ZvcndhcmRpbmdQaGFzZS5jcHAKQEAgLTEzNSw2ICsx
MzUsOCBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgY2FzZSBDYWxs
VmFyYXJnczoKICAgICAgICAgICAgIGNhc2UgQ29uc3RydWN0VmFyYXJnczoKKyAgICAgICAgICAg
IGNhc2UgVGFpbENhbGxWYXJhcmdzOgorICAgICAgICAgICAgY2FzZSBFbXVsYXRlZFRhaWxDYWxs
VmFyYXJnczoKICAgICAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkgPT0gY2FuZGlkYXRl
IHx8IG5vZGUtPmNoaWxkMygpID09IGNhbmRpZGF0ZSkgewogICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIiAgICBFc2NhcGUg
YXQgIiwgbm9kZSwgIlxuIik7CkBAIC0yODIsNyArMjg0LDE5IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIG5vZGUtPnNldE9wQW5kRGVmYXVs
dEZsYWdzKENvbnN0cnVjdEZvcndhcmRWYXJhcmdzKTsKICAgICAgICAgICAgICAgICBicmVhazsK
LSAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgY2FzZSBUYWlsQ2FsbFZhcmFyZ3M6Cisg
ICAgICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpICE9IGNhbmRpZGF0ZSkKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0
RmxhZ3MoVGFpbENhbGxGb3J3YXJkVmFyYXJncyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgICAgIGNhc2UgRW11bGF0ZWRUYWlsQ2FsbFZhcmFyZ3M6CisgICAgICAgICAgICAg
ICAgaWYgKG5vZGUtPmNoaWxkMigpICE9IGNhbmRpZGF0ZSkKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0RmxhZ3MoRW11bGF0
ZWRUYWlsQ2FsbEZvcndhcmRWYXJhcmdzKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKwogICAg
ICAgICAgICAgY2FzZSBTZXRMb2NhbDoKICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHN1cGVy
IG9kZC4gV2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyBoZXJlLCBzaW5jZSBpbiBERkcgSVIs
IHRoZSBwaGFudG9tCiAgICAgICAgICAgICAgICAgLy8gYXJndW1lbnRzIG5vZGVzIGRvIHByb2R1
Y2UgYSBKU1ZhbHVlLiBBbHNvLCB3ZSBrbm93IHRoYXQgaWYgdGhpcyBTZXRMb2NhbCByZWZlcmVu
ZWNzIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxs
RnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5j
cHAKaW5kZXggMjU5MDYxZGY0OWQxYTFlZjE5MjFmNjc2ZmUzYzI1MmRkZjdlODNmNy4uNjA2OTIy
NDc0ZDg2ZWUwNGZhZThiYzAxYzg5ZGY3MWJjZGZjMzkwZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTg1LDcgKzg1LDcgQEAgdW5z
aWduZWQgQ2FsbEZyYW1lOjpieXRlY29kZU9mZnNldEZyb21Db2RlT3JpZ2luSW5kZXgoKQogICAg
ICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5iYXNlbGluZUNvZGVCbG9jaygpID09IGNvZGVCbG9j
aykKICAgICAgICAgICAgIHJldHVybiBjb2RlT3JpZ2luLmJ5dGVjb2RlSW5kZXg7CiAKLSAgICAg
ICAgY29kZU9yaWdpbiA9IGlubGluZUNhbGxGcmFtZS0+Y2FsbGVyOworICAgICAgICBjb2RlT3Jp
Z2luID0gKmlubGluZUNhbGxGcmFtZS0+Z2V0Q2FsbGVyU2tpcHBpbmdEZWFkRnJhbWVzKCk7CiAg
ICAgICAgIGlubGluZUNhbGxGcmFtZSA9IGNvZGVPcmlnaW4uaW5saW5lQ2FsbEZyYW1lOwogICAg
IH0KICAgICByZXR1cm4gY29kZU9yaWdpbi5ieXRlY29kZUluZGV4OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAppbmRleCA2NDk2ZmE0
ZDQ1NzBlN2YxM2Q3ZjNhM2QwNTI4YzgwZDM1ODM0MTcyLi42MzdjZmVmYTRlNTBkYTZkM2RmZTNj
ZWNhNTNkZjI0NDUzY2RhNGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtNTksOCArNTksMTYgQEAgdm9pZCBTdGFja1Zp
c2l0b3I6OmdvdG9OZXh0RnJhbWUoKQogI2lmIEVOQUJMRShERkdfSklUKQogICAgIGlmIChtX2Zy
YW1lLmlzSW5saW5lZEZyYW1lKCkpIHsKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUgPSBtX2ZyYW1lLmlubGluZUNhbGxGcmFtZSgpOwotICAgICAgICBDb2RlT3JpZ2lu
KiBjYWxsZXJDb2RlT3JpZ2luID0gJmlubGluZUNhbGxGcmFtZS0+Y2FsbGVyOwotICAgICAgICBy
ZWFkSW5saW5lZEZyYW1lKG1fZnJhbWUuY2FsbEZyYW1lKCksIGNhbGxlckNvZGVPcmlnaW4pOwor
ICAgICAgICBDb2RlT3JpZ2luKiBjYWxsZXJDb2RlT3JpZ2luID0gaW5saW5lQ2FsbEZyYW1lLT5n
ZXRDYWxsZXJTa2lwcGluZ0RlYWRGcmFtZXMoKTsKKyAgICAgICAgaWYgKCFjYWxsZXJDb2RlT3Jp
Z2luKSB7CisgICAgICAgICAgICB3aGlsZSAoaW5saW5lQ2FsbEZyYW1lKSB7CisgICAgICAgICAg
ICAgICAgcmVhZElubGluZWRGcmFtZShtX2ZyYW1lLmNhbGxGcmFtZSgpLCAmaW5saW5lQ2FsbEZy
YW1lLT5kaXJlY3RDYWxsZXIpOworICAgICAgICAgICAgICAgIGlubGluZUNhbGxGcmFtZSA9IG1f
ZnJhbWUuaW5saW5lQ2FsbEZyYW1lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2Zy
YW1lLm1fVk1FbnRyeUZyYW1lID0gbV9mcmFtZS5tX0NhbGxlclZNRW50cnlGcmFtZTsKKyAgICAg
ICAgICAgIHJlYWRGcmFtZShtX2ZyYW1lLmNhbGxlckZyYW1lKCkpOworICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIHJlYWRJbmxpbmVkRnJhbWUobV9mcmFtZS5jYWxsRnJhbWUoKSwgY2FsbGVy
Q29kZU9yaWdpbik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYgLy8gRU5BQkxFKERG
R19KSVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVy
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAppbmRleCAxZWE5
OTkyZWJiYmNkYmQ3ZGQ4NDA3NDIxMGI1MTU3OTBjZGEwZDgyLi41NDQ4MzZmYzVkZTdlZjFiMjlj
Nzg0ZWYyNTVkYTUwMjc3Y2UwNWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0NDYWxsSGVscGVycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvQ0NhbGxI
ZWxwZXJzLmgKQEAgLTIwNjcsNiArMjA2Nyw4IEBAIHB1YmxpYzoKICNpZiBVU0UoSlNWQUxVRTMy
XzY0KQogICAgICAgICBDT01QSUxFX0FTU0VSVChzaXplb2Yodm9pZCopICogMiA9PSBzaXplb2Yo
UmVnaXN0ZXIpLCBSZWdpc3Rlcl9pc190d29fcG9pbnRlcnNfc2l6ZWQpOwogICAgICAgICBsc2hp
ZnQzMihUcnVzdGVkSW1tMzIoMSksIHRlbXAyKTsKKyNlbHNlCisgICAgICAgIENPTVBJTEVfQVNT
RVJUKHNpemVvZih2b2lkKikgPT0gc2l6ZW9mKFJlZ2lzdGVyKSwgUmVnaXN0ZXJfaXNfb25lX3Bv
aW50ZXJfc2l6ZWQpOwogI2VuZGlmCiAKICAgICAgICAgLy8gRG8gdGhlIHNsaWRpbmcKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvZGZnLXRhaWwtY2FsbHMu
anMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2RmZy10YWlsLWNhbGxzLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVmNTFjMGNhODJmY2QzOTg1NjZjYjIyMTkxNDU2ZGFkYjE2NGE4M2MKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL2RmZy10
YWlsLWNhbGxzLmpzCkBAIC0wLDAgKzEsNTYgQEAKKyhmdW5jdGlvbiBub25JbmxpbmVkVGFpbENh
bGwoKSB7CisgICAgZnVuY3Rpb24gY2FsbGVlKCkgeyBpZiAoY2FsbGVlLmNhbGxlciAhPSBub25J
bmxpbmVkVGFpbENhbGwpIHRocm93IG5ldyBFcnJvcigpOyB9CisgICAgbm9JbmxpbmUoY2FsbGVl
KTsKKworICAgIGZ1bmN0aW9uIGNhbGxlcigpIHsgInVzZSBzdHJpY3QiOyByZXR1cm4gY2FsbGVl
KCk7IH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkKKyAgICAgICAgY2Fs
bGVyKCk7CisKKyAgICBmdW5jdGlvbiBsb29wKG4pIHsgInVzZSBzdHJpY3QiOyBpZiAobiA+IDAp
IHJldHVybiBsb29wKG4gLSAxKTsgfQorICAgIG5vSW5saW5lKGxvb3ApOworCisgICAgbG9vcCgx
MDAwMDAwKTsKK30pKCk7CisKKyhmdW5jdGlvbiBpbmxpbmVkVGFpbENhbGwoKSB7CisgICAgZnVu
Y3Rpb24gY2FsbGVlKCkgeyBpZiAoY2FsbGVlLmNhbGxlciAhPSBpbmxpbmVkVGFpbENhbGwpIHRo
cm93IG5ldyBFcnJvcigpOyB9CisgICAgZnVuY3Rpb24gY2FsbGVyKCkgeyAidXNlIHN0cmljdCI7
IHJldHVybiBjYWxsZWUoKTsgfQorCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwMDsgKytp
KQorICAgICAgICBjYWxsZXIoKTsKKworICAgIGZ1bmN0aW9uIGxvb3AobikgeyAidXNlIHN0cmlj
dCI7IGlmIChuID4gMCkgcmV0dXJuIGxvb3AobiAtIDEpOyB9CisKKyAgICBsb29wKDEwMDAwMDAp
OworfSkoKTsKKworKGZ1bmN0aW9uIG5vbklubGluZWRFbXVsYXRlZFRhaWxDYWxsKCkgeworICAg
IGZ1bmN0aW9uIGVtdWxhdG9yKCkgeyBjYWxsZXIoKTsgfQorICAgIGZ1bmN0aW9uIGNhbGxlZSgp
IHsgaWYgKGNhbGxlZS5jYWxsZXIgIT0gZW11bGF0b3IpIHRocm93IG5ldyBFcnJvcigpOyB9Cisg
ICAgbm9JbmxpbmUoY2FsbGVlKTsKKyAgICBmdW5jdGlvbiBjYWxsZXIoKSB7ICJ1c2Ugc3RyaWN0
IjsgcmV0dXJuIGNhbGxlZSgpOyB9CisKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwMDAwOyAr
K2kpCisgICAgICAgIGVtdWxhdG9yKCk7CisKKyAgICBmdW5jdGlvbiBwYWQobikgeyAidXNlIHN0
cmljdCI7IHJldHVybiBsb29wKG4pOyB9CisgICAgZnVuY3Rpb24gbG9vcChuKSB7ICJ1c2Ugc3Ry
aWN0IjsgaWYgKG4gPiAwKSByZXR1cm4gcGFkKG4gLSAxKTsgfQorICAgIG5vSW5saW5lKGxvb3Ap
OworCisgICAgbG9vcCgxMDAwMDAwKTsKK30pKCk7CisKKyhmdW5jdGlvbiBpbmxpbmVkRW11bGF0
ZWRUYWlsQ2FsbCgpIHsKKyAgICBmdW5jdGlvbiBlbXVsYXRvcigpIHsgY2FsbGVyKCk7IH0KKyAg
ICBmdW5jdGlvbiBjYWxsZWUoKSB7IGlmIChjYWxsZWUuY2FsbGVyICE9IGVtdWxhdG9yKSB0aHJv
dyBuZXcgRXJyb3IoKTsgfQorICAgIGZ1bmN0aW9uIGNhbGxlcigpIHsgInVzZSBzdHJpY3QiOyBy
ZXR1cm4gY2FsbGVlKCk7IH0KKworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTAwMDA7ICsraSkK
KyAgICAgICAgZW11bGF0b3IoKTsKKworICAgIGZ1bmN0aW9uIHBhZChuKSB7ICJ1c2Ugc3RyaWN0
IjsgcmV0dXJuIGxvb3Aobik7IH0KKyAgICBmdW5jdGlvbiBsb29wKG4pIHsgInVzZSBzdHJpY3Qi
OyBpZiAobiA+IDApIHJldHVybiBwYWQobiAtIDEpOyB9CisKKyAgICBsb29wKDEwMDAwMDApOwor
fSkoKTsK
</data>
<flag name="review"
          id="283291"
          type_id="1"
          status="+"
          setter="msaboff"
    />
          </attachment>
      

    </bug>

</bugzilla>