<?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>211706</bug_id>
          
          <creation_ts>2020-05-10 16:44:28 -0700</creation_ts>
          <short_desc>[clang-tidy] Run modernize-use-nullptr over JSC</short_desc>
          <delta_ts>2020-05-10 19:37:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1651142</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-10 16:44:28 -0700</bug_when>
    <thetext>[clang-tidy] Run modernize-use-nullptr over JSC</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651144</commentid>
    <comment_count>1</comment_count>
      <attachid>398987</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-10 16:46:36 -0700</bug_when>
    <thetext>Created attachment 398987
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651145</commentid>
    <comment_count>2</comment_count>
      <attachid>398987</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-10 16:48:45 -0700</bug_when>
    <thetext>Comment on attachment 398987
Patch

Looks fine. rs=me if there isn’t a mistake here somewhere that breaks compilation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651146</commentid>
    <comment_count>3</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-10 16:50:25 -0700</bug_when>
    <thetext>Thanks!

For the record, this patch is the result of running the following command:
  run-clang-tidy.py Source/JavaScriptCore -fix -checks=&quot;-*,modernize-use-nullptr&quot; -header-filter=&quot;Source/*&quot;`

None of changes under the API subdirectory are to C header declarations, so everything appears to be safe here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651147</commentid>
    <comment_count>4</comment_count>
      <attachid>398987</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-10 16:55:13 -0700</bug_when>
    <thetext>Comment on attachment 398987
Patch

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

&gt; Source/JavaScriptCore/parser/Parser.cpp:2251
&gt; -                context.appendParameter(parameterList, parameter, 0);
&gt; +                context.appendParameter(parameterList, parameter, nullptr);

EWS failures are about code like this. This is template code and the SyntaxChecker.h use of it will need to be changed. It uses int for this, and could instead use void* or virtually any pointer type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651153</commentid>
    <comment_count>5</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-10 18:39:05 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #4)
&gt; Comment on attachment 398987 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=398987&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/parser/Parser.cpp:2251
&gt; &gt; -                context.appendParameter(parameterList, parameter, 0);
&gt; &gt; +                context.appendParameter(parameterList, parameter, nullptr);
&gt; 
&gt; EWS failures are about code like this. This is template code and the
&gt; SyntaxChecker.h use of it will need to be changed. It uses int for this, and
&gt; could instead use void* or virtually any pointer type.

I think I&apos;ll split that out into a second patch just to keep this one fully-automated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651156</commentid>
    <comment_count>6</comment_count>
      <attachid>398991</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-05-10 18:53:29 -0700</bug_when>
    <thetext>Created attachment 398991
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651163</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-10 19:36:12 -0700</bug_when>
    <thetext>Committed r261464: &lt;https://trac.webkit.org/changeset/261464&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398991.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1651164</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-10 19:37:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/63073140&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398987</attachid>
            <date>2020-05-10 16:46:36 -0700</date>
            <delta_ts>2020-05-10 18:53:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211706-20200510164635.patch</filename>
            <type>text/plain</type>
            <size>351687</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTI5MjRhZTgzNDkzMTEyYTBjOGUxZGQ1Yzk5MjQ5Mzc3NWE3YTAzLi5mMWYxZTRkOTNkMjBkYjY4
OTQzY2UxZTMwNDFlOTRjYTNjNWFiZDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzYgQEAKKzIwMjAtMDUtMTAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtjbGFuZy10aWR5XSBSdW4gbW9kZXJuaXplLXVzZS1udWxscHRy
IG92ZXIgSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTE3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIEFQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgICogQVBJL0pTQVBJR2xvYmFs
T2JqZWN0Lmg6CisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6CisgICAgICAgICogQVBJL0pTQ2Fs
bGJhY2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5jcHA6Cisg
ICAgICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVm
LmNwcDoKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1Zh
bHVlUmVmLmNwcDoKKyAgICAgICAgKiBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHA6
CisgICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAg
ICAqIEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcDoKKyAgICAgICAgKiBh
c3NlbWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9D
UFUuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgICogYnl0
ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRW
YXJpYW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcDoKKyAgICAg
ICAgKiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0xh
enlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFy
aWFudC5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6CisgICAgICAgICog
Ynl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHA6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVj
b2RlR2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6
CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAqIGRmZy9ERkdB
YnN0cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQWRqYWNlbmN5TGlzdC5oOgorICAg
ICAgICAqIGRmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmg6CisgICAgICAgICogZGZnL0RGR0FycmF5
aWZ5U2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHQXZhaWxhYmlsaXR5Lmg6
CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZH
Q0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0NQU1JldGhyZWFk
aW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdDb21waWxhdGlvbktleS5oOgorICAgICAg
ICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0Rp
c2Fzc2VtYmxlci5jcHA6CisgICAgICAgICogZGZnL0RGR0RvdWJsZUZvcm1hdFN0YXRlLmg6Cisg
ICAgICAgICogZGZnL0RGR0VkZ2UuaDoKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6
CisgICAgICAgICogZGZnL0RGR0Zyb3plblZhbHVlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHR2Vu
ZXJhdGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hl
Y2tDb21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeXBvaW50
Q3JlYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2lsZW50UmVnaXN0
ZXJTYXZlUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAg
ICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0
aXZlSklUNjQuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHVHJhbnNpdGlvbi5jcHA6CisgICAgICAgICogZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6
CisgICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBm
dGwvRlRMQXZhaWxhYmxlUmVjb3ZlcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMRXhpdFZhbHVlLmNw
cDoKKyAgICAgICAgKiBmdGwvRlRMRm9ybWF0dGVkVmFsdWUuaDoKKyAgICAgICAgKiBmdGwvRlRM
SklUQ29kZS5jcHA6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAqIGZ0bC9G
VExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAqIGZ0bC9GVExMb3dlcmVkTm9kZVZhbHVlLmg6
CisgICAgICAgICogZnRsL0ZUTE9TUkVudHJ5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhp
dENvbXBpbGVyLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMVHlwZWRQb2ludGVyLmg6CisgICAgICAg
ICogZnRsL0ZUTFZhbHVlRnJvbUJsb2NrLmg6CisgICAgICAgICogZnRsL0ZUTFZhbHVlUmFuZ2Uu
aDoKKyAgICAgICAgKiBoZWFwL0dDU2VnbWVudGVkQXJyYXkuaDoKKyAgICAgICAgKiBoZWFwL0hh
bmRsZS5oOgorICAgICAgICAqIGhlYXAvSGFuZGxlU2V0Lmg6CisgICAgICAgICogaGVhcC9IYW5k
bGVUeXBlcy5oOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAg
ICAgICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKiBoZWFwL1N0cm9uZy5o
OgorICAgICAgICAqIGhlYXAvV2Vha0ltcGwuaDoKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVz
Lmg6CisgICAgICAgICogaGVhcC9XZWFrU2V0LmNwcDoKKyAgICAgICAgKiBoZWFwL1dlYWtTZXQu
aDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGludGVy
cHJldGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNw
cDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oOgorICAgICAgICAqIGlu
dGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tW
aXNpdG9yLmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGpp
dC9DQ2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUQ29kZS5jcHA6CisgICAgICAgICog
aml0L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAg
ICAgKiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAg
ICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRl
ci5oOgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgICogcGFyc2VyL0xleGVy
Lmg6CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
aDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2Vy
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyQXJlbmEuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmg6Cisg
ICAgICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvVW5saW5r
ZWRTb3VyY2VDb2RlLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVl
bmNlLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcDoKKyAg
ICAgICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBwcm9maWxl
ci9Qcm9maWxlck9TUkV4aXRTaXRlLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlck9y
aWdpblN0YWNrLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3Vt
ZW50cy5jcHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuaDoK
KyAgICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
RGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRHVtcENvbnRleHQu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAg
KiBydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6Cisg
ICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJs
ZU9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgICog
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgICogcnVu
dGltZS9KU09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6Cisg
ICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL09w
dGlvbnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKiBydW50
aW1lL1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6
CisgICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKiBydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5
cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcDoK
KyAgICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1ZNLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKiBydW50
aW1lL1dhdGNoZG9nLmg6CisgICAgICAgICogcnVudGltZS9Xcml0ZUJhcnJpZXIuaDoKKyAgICAg
ICAgKiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAg
ICAgICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvUmVndWxhckV4
cHJlc3Npb24uaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6CisgICAgICAg
ICogeWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuaDoKKyAgICAgICAg
KiB5YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisK
IDIwMjAtMDUtMDkgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAg
ICAgICAgIEZpeCBidWlsZCBlcnJvcnMgYW5kIHdhcm5pbmdzIGZvciBub24tdW5pZmllZCBKU0NP
bmx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVu
Y3Rpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5o
CmluZGV4IDQxZThmM2FlNGRkYjc3MDFmNjdjN2FiNzllNjgzODRlMDJhNTVmZmUuLjhjYzNjZWI0
YzM4ODMxN2NmMTNlY2FkMWFjN2EwOWY2ZTIyMDNkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50
OyBpKyspCiAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAKLSAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IDA7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwogICAg
IEpTVmFsdWVSZWYgcmVzdWx0OwogICAgIHsKICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3Mg
ZHJvcEFsbExvY2tzKGdsb2JhbE9iamVjdCk7CkBAIC05MSw3ICs5MSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3Vu
dDsgKytpKQogICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKIAotICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CisgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0g
bnVsbHB0cjsKICAgICAgICAgSlNPYmplY3RSZWYgcmVzdWx0OwogICAgICAgICB7CiAgICAgICAg
ICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZ2xvYmFsT2JqZWN0KTsKQEAg
LTEwNyw3ICsxMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNr
RnVuY3Rpb246OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMocmVzdWx0KSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUyhKU09iamVjdE1ha2UoY3R4LCBqc0Nhc3Q8SlNDYWxsYmFja0Nv
bnN0cnVjdG9yKj4oY29uc3RydWN0b3IpLT5jbGFzc1JlZigpLCAwKSkpOworICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUyhKU09iamVjdE1ha2UoY3R4LCBqc0Nhc3Q8SlNDYWxsYmFja0Nv
bnN0cnVjdG9yKj4oY29uc3RydWN0b3IpLT5jbGFzc1JlZigpLCBudWxscHRyKSkpOwogfQogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNBUElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9i
YWxPYmplY3QuaAppbmRleCBhYWVlMWMxYzQ0MjY5N2NiZTEyZTU1NDEzZmIzYTI3NTI3ZjlhNmJl
Li43Mzk3YzZiNGE2MGM2MmMzOGY0MGM2ODEwNzYxYzg1YzhmYzNjYzc0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5oCkBAIC01NCw3ICs1NCw3IEBA
IHB1YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0s
IEpTVmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgYXV0byogcmVzdWx0ID0gU3RydWN0
dXJlOjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICBhdXRvKiByZXN1bHQgPSBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgbnVsbHB0ciwgcHJvdG90eXBlLCBUeXBlSW5mbyhHbG9iYWxPYmplY3RU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0VHJhbnNp
dGlvbldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZCh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKaW5kZXggMDgzYTdk
M2I4YzdjYmJjMTQxMTdhMDBkNGUyMzg2N2NiYzQ2MWQ4Zi4uNGRmYmJjMWYwNTkwZTBlZmIzYTY0
N2UyYmNiYWI3NmM0ZmU0NTM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcApA
QCAtMTkzLDcgKzE5Myw3IEBAIEpTT2JqZWN0UmVmIEpTR2V0TWVtb3J5VXNhZ2VTdGF0aXN0aWNz
KEpTQ29udGV4dFJlZiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpIHsKICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVu
Y3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5j
dGlvbnMuaAppbmRleCBkOTkzNGM5MzgzN2YyMGZkYjA0ODA4ZDY2ZGQ4NGVkZTExM2QxMmExLi5h
ZDJkMzllMmE3Y2E3NTc1MDU0MDdlOTM3MjQ4MzI0NWVmODZlZDYyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAt
MTc1LDcgKzE3NSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplCiAgICAgICAgICAgICB9IGVs
c2UgaWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3Mt
PmdldFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCiAg
ICAgICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlD
cmVhdGUobmFtZSk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwor
ICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVmIHZhbHVlOwogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAg
ICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGdsb2JhbE9iamVjdCk7
CkBAIC0yMzQsNyArMjM0LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRl
ZmF1bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE8KIAogICAgIGZvciAo
SlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganND
bGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENvbnZl
cnRUb1R5cGVDYWxsYmFjayBjb252ZXJ0VG9UeXBlID0ganNDbGFzcy0+Y29udmVydFRvVHlwZSkg
ewotICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgICAgICAgICAgSlNW
YWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiByZXN1
bHQgPSBjb252ZXJ0VG9UeXBlKGN0eCwgdGhpc1JlZiwganNIaW50LCAmZXhjZXB0aW9uKTsKICAg
ICAgICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CkBA
IC0yNjUsNyArMjY1LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0Nl
bGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFAKICAgICAgICAgICAgIGlm
IChKU09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQ
cm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQogICAgICAg
ICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRl
KG5hbWUpOwotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAg
ICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAg
ICAgYm9vbCByZXN1bHQ7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBK
U0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTI4Miw3
ICsyODIsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2Vs
bCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUAogICAgICAgICAgICAgICAgICAgICBp
ZiAoZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQogICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBp
ZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5ID0gZW50cnktPnNldFBy
b3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9
IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxw
dHI7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxM
b2NrcyBkcm9wQWxsTG9ja3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTMyOSw3ICszMjksNyBAQCBib29s
IEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxi
YWNrIHNldFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgIGlm
ICghcHJvcGVydHlOYW1lUmVmKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9w
YXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7Ci0gICAgICAgICAg
ICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2Vw
dGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgICAgIHsK
ICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZ2xvYmFs
T2JqZWN0KTsKQEAgLTM0Niw3ICszNDYsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50
Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAg
ICAgICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAg
ICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5ID0gZW50cnkt
PnNldFByb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9u
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRy
OwogICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExv
Y2tzKGdsb2JhbE9iamVjdCk7CkBAIC0zODgsNyArMzg4LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2Jq
ZWN0PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3Qq
IGdsb2IKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0ZVByb3BlcnR5Q2FsbGJhY2sgZGVs
ZXRlUHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAg
IGlmICghcHJvcGVydHlOYW1lUmVmKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVS
ZWYgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG5hbWUpOwotICAgICAgICAgICAgICAgIEpT
VmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2Vw
dGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CiAgICAgICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LAogICAgICAgICAgICAgYXJndW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJn
dW1lbnRDb3VudCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50
Q291bnQ7ICsraSkKICAgICAgICAgICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRv
UmVmKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwotICAg
ICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgICAgICAgICAgSlNWYWx1ZVJl
ZiBleGNlcHRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgSlNPYmplY3QqIHJlc3VsdDsKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxs
TG9ja3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBib29sIEpTQ2FsbGJhY2tP
YmplY3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9i
YWxPYmplYwogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NS
ZWYoKTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAg
IGlmIChKU09iamVjdEhhc0luc3RhbmNlQ2FsbGJhY2sgaGFzSW5zdGFuY2UgPSBqc0NsYXNzLT5o
YXNJbnN0YW5jZSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHRvUmVmKGds
b2JhbE9iamVjdCwgdmFsdWUpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAw
OworICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwogICAgICAgICAg
ICAgYm9vbCByZXN1bHQ7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSlNMb2NrOjpE
cm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGdsb2JhbE9iamVjdCk7CkBAIC01MzgsNyArNTM4LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAgICAgICAgIGFyZ3VtZW50cy5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRz
LnVuY2hlY2tlZEFwcGVuZCh0b1JlZihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoaSkpKTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAg
ICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIEpT
VmFsdWUgcmVzdWx0OwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEpTTG9jazo6RHJv
cEFsbExvY2tzIGRyb3BBbGxMb2NrcyhnbG9iYWxPYmplY3QpOwpAQCAtNjM1LDcgKzYzNSw3IEBA
IEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQCiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0
YXRpY1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZ2xv
YmFsT2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRy
eSA9IHN0YXRpY1ZhbHVlcy0+Z2V0KG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChK
U09iamVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkgPSBlbnRyeS0+Z2V0UHJvcGVy
dHkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsK
KyAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsK
ICAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxs
TG9ja3MgZHJvcEFsbExvY2tzKGdsb2JhbE9iamVjdCk7CkBAIC03MDIsNyArNzAyLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5
Q2FsbGJhY2sgZ2V0UHJvcGVydHkgPSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAg
ICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0
eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG5hbWUpOwotICAgICAgICAgICAg
ICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVm
IGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZTsK
ICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExv
Y2tzIGRyb3BBbGxMb2NrcyhnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDbGFzc1JlZi5jcHAKaW5kZXggOTJkZjYzOGUxNWVlNzcyZjliZGMxMjZjMTBmNDc4MDFjYmY2
Y2RhMi4uNTBmNTNlMDMzNTdhZDk4Mjc4NDBkMGFhMGNmZDc1MTMxYzJhYjJjOCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAKIAog
dXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotY29uc3QgSlNDbGFzc0RlZmluaXRpb24ga0pTQ2xhc3NE
ZWZpbml0aW9uRW1wdHkgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAsIDAgfTsKK2NvbnN0IEpTQ2xhc3NEZWZpbml0aW9uIGtKU0NsYXNzRGVmaW5pdGlv
bkVtcHR5ID0geyAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAKIE9wYXF1ZUpTQ2xhc3M6
Ok9wYXF1ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1
ZUpTQ2xhc3MqIHByb3RvQ2xhc3MpIAogICAgIDogcGFyZW50Q2xhc3MoZGVmaW5pdGlvbi0+cGFy
ZW50Q2xhc3MpCi0gICAgLCBwcm90b3R5cGVDbGFzcygwKQorICAgICwgcHJvdG90eXBlQ2xhc3Mo
bnVsbHB0cikKICAgICAsIGluaXRpYWxpemUoZGVmaW5pdGlvbi0+aW5pdGlhbGl6ZSkKICAgICAs
IGZpbmFsaXplKGRlZmluaXRpb24tPmZpbmFsaXplKQogICAgICwgaGFzUHJvcGVydHkoZGVmaW5p
dGlvbi0+aGFzUHJvcGVydHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgT3BhcXVlSlNDbGFzczo6fk9w
YXF1ZUpTQ2xhc3MoKQogCiBSZWY8T3BhcXVlSlNDbGFzcz4gT3BhcXVlSlNDbGFzczo6Y3JlYXRl
Tm9BdXRvbWF0aWNQcm90b3R5cGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24p
CiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNDbGFzcyhkZWZpbml0aW9uLCAw
KSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNDbGFzcyhkZWZpbml0aW9uLCBu
dWxscHRyKSk7CiB9CiAKIFJlZjxPcGFxdWVKU0NsYXNzPiBPcGFxdWVKU0NsYXNzOjpjcmVhdGUo
Y29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGNsaWVudERlZmluaXRpb24pCkBAIC0xMTUsMTIgKzEx
NSwxMiBAQCBSZWY8T3BhcXVlSlNDbGFzcz4gT3BhcXVlSlNDbGFzczo6Y3JlYXRlKGNvbnN0IEpT
Q2xhc3NEZWZpbml0aW9uKiBjbGllbnREZWZpbml0aQogICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRl
ZmluaXRpb24gPSAqY2xpZW50RGVmaW5pdGlvbjsgLy8gQXZvaWQgbW9kaWZ5aW5nIGNsaWVudCBj
b3B5LgogCiAgICAgSlNDbGFzc0RlZmluaXRpb24gcHJvdG9EZWZpbml0aW9uID0ga0pTQ2xhc3NE
ZWZpbml0aW9uRW1wdHk7Ci0gICAgcHJvdG9EZWZpbml0aW9uLmZpbmFsaXplID0gMDsKKyAgICBw
cm90b0RlZmluaXRpb24uZmluYWxpemUgPSBudWxscHRyOwogICAgIHN0ZDo6c3dhcChkZWZpbml0
aW9uLnN0YXRpY0Z1bmN0aW9ucywgcHJvdG9EZWZpbml0aW9uLnN0YXRpY0Z1bmN0aW9ucyk7IC8v
IE1vdmUgc3RhdGljIGZ1bmN0aW9ucyB0byB0aGUgcHJvdG90eXBlLgogICAgIAogICAgIC8vIFdl
IGFyZSBzdXBwb3NlZCB0byB1c2UgSlNDbGFzc1JldGFpbi9SZWxlYXNlIGJ1dCBzaW5jZSB3ZSBr
bm93IHRoYXQgd2UgY3VycmVudGx5IGhhdmUKICAgICAvLyB0aGUgb25seSByZWZlcmVuY2UgdG8g
dGhpcyBjbGFzcyBvYmplY3Qgd2UgY2hlYXQgYW5kIHVzZSBhIFJlZlB0ciBpbnN0ZWFkLgotICAg
IFJlZlB0cjxPcGFxdWVKU0NsYXNzPiBwcm90b0NsYXNzID0gYWRvcHRSZWYobmV3IE9wYXF1ZUpT
Q2xhc3MoJnByb3RvRGVmaW5pdGlvbiwgMCkpOworICAgIFJlZlB0cjxPcGFxdWVKU0NsYXNzPiBw
cm90b0NsYXNzID0gYWRvcHRSZWYobmV3IE9wYXF1ZUpTQ2xhc3MoJnByb3RvRGVmaW5pdGlvbiwg
bnVsbHB0cikpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9wYXF1ZUpTQ2xhc3MoJmRlZmlu
aXRpb24sIHByb3RvQ2xhc3MuZ2V0KCkpKTsKIH0KIApAQCAtMTgyLDcgKzE4Miw3IEBAIEpTT2Jq
ZWN0KiBPcGFxdWVKU0NsYXNzOjpwcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICAgKi8KIAogICAgIGlmICghcHJvdG90eXBlQ2xhc3MpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0
YSYganNDbGFzc0RhdGEgPSBjb250ZXh0RGF0YShnbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZDY5YzMzMmMzMTUxYWQ4ZjBl
ZDRjYmRjMjAwMjBiZTUyODc2NzdlMS4uYTVkYzFiNGU1YTFhNWU2NjM0MDA5ZTE4YmFiOWJjODlm
MWJiZDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRS
ZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApA
QCAtMTI4LDcgKzEyOCw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVh
dGUoSlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykKICAgICB9CiAjZW5kaWYgLy8gT1MoREFS
V0lOKQogCi0gICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoMCwgZ2xvYmFs
T2JqZWN0Q2xhc3MpOworICAgIHJldHVybiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKG51
bGxwdHIsIGdsb2JhbE9iamVjdENsYXNzKTsKIH0KIAogSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xv
YmFsQ29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3NS
ZWYgZ2xvYmFsT2JqZWN0Q2xhc3MpCkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNHbG9iYWxDb250ZXh0
UmVmIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAs
IEpTQ2xhc3MKICAgICAgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dFJldGFpbih0b0dsb2JhbFJl
ZihnbG9iYWxPYmplY3QpKTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0ID0gSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0ZSh2bS5nZXQoKSwg
Z2xvYmFsT2JqZWN0Q2xhc3MsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVh
dGVTdHJ1Y3R1cmUodm0uZ2V0KCksIDAsIGpzTnVsbCgpKSk7CisgICAgSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUo
dm0uZ2V0KCksIGdsb2JhbE9iamVjdENsYXNzLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2Jq
ZWN0Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLmdldCgpLCBudWxscHRyLCBqc051bGwoKSkpOwogICAg
IEpTVmFsdWUgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0Q2xhc3MtPnByb3RvdHlwZShnbG9iYWxP
YmplY3QpOwogICAgIGlmICghcHJvdG90eXBlKQogICAgICAgICBwcm90b3R5cGUgPSBqc051bGwo
KTsKQEAgLTE4Nyw3ICsxODcsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmpl
Y3QoSlNDb250ZXh0UmVmIGN0eCkKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBKU0Nv
bnRleHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQogewogICAg
IGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgcmV0dXJuIHRvUmVmKCZnbG9iYWxPYmpl
Y3QtPnZtKCkpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRl
eHRHZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpIHsK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IHRvSlMoY3R4KTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbE9iamVjdCk7CkBA
IC0yMjIsNyArMjIyLDcgQEAgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCkKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7
CkBAIC0yMzEsNyArMjMxLDcgQEAgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUo
SlNHbG9iYWxDb250ZXh0UmVmIGN0eCkKIAogICAgIFN0cmluZyBuYW1lID0gZ2xvYmFsT2JqZWN0
LT5uYW1lKCk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3Jl
YXRlKG5hbWUpLmxlYWtSZWYoKTsKIH0KQEAgLTMyNCw3ICszMjQsNyBAQCBKU1N0cmluZ1JlZiBK
U0NvbnRleHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3Rh
Y2tTaXplKQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQ
SS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVm
LmNwcAppbmRleCBmNzJiMGFhNzMwYjM2MTg2ZWMzYThiNzdiYjE1OTE3M2YwMmQ3NGJlLi5mYWEx
ODhkOTNjMDJiZWFiY2ZmNzJkYWUyZTJlM2ZlMjFiNGJkNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtODcsNyArODcsNyBAQCBKU09iamVjdFJlZiBK
U09iamVjdE1ha2UoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBk
YXRhKQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZUZ1bmN0aW9uV2l0aENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5h
bWUsCiB7CiAgICAgaWYgKCFjdHgpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY3R4KTsKICAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CkBAIC0xMTksMTMgKzExOSwxMyBAQCBKU09iamVjdFJlZiBKU09iamVj
dE1ha2VDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpT
T2JqZQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAgSlNW
YWx1ZSBqc1Byb3RvdHlwZSA9IGpzQ2xhc3MgPyBqc0NsYXNzLT5wcm90b3R5cGUoZ2xvYmFsT2Jq
ZWN0KSA6IDA7CisgICAgSlNWYWx1ZSBqc1Byb3RvdHlwZSA9IGpzQ2xhc3MgPyBqc0NsYXNzLT5w
cm90b3R5cGUoZ2xvYmFsT2JqZWN0KSA6IG51bGxwdHI7CiAgICAgaWYgKCFqc1Byb3RvdHlwZSkK
ICAgICAgICAganNQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpOwog
CkBAIC0xMzgsNyArMTM4LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlND
b250ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQgcGEKIHsKICAgICBpZiAo
IWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
QEAgLTE1NiwxMyArMTU2LDEzIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uKEpT
Q29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsIHVuc2lnbmVkIHBhCiAgICAgICAgIGF1
dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICB0aHJvd091
dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKICAgICAgICAgaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8gc291cmNlVVJM
U3RyaW5nID0gc291cmNlVVJMID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmluZygpOwogICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIGFyZ3Ms
IG5hbWVJRCwgU291cmNlT3JpZ2luIHsgc291cmNlVVJMU3RyaW5nIH0sIHNvdXJjZVVSTFN0cmlu
ZywgVGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xp
bmVOdW1iZXIpLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93
KQotICAgICAgICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogICAgIHJl
dHVybiB0b1JlZihyZXN1bHQpOwogfQogCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNPYmplY3RSZWYg
SlNPYmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmEKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE4NiwxNSArMTg2LDE1IEBAIEpTT2JqZWN0UmVm
IEpTT2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50
LCBjb25zdCBKU1ZhCiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmpl
Y3QsIHRocm93U2NvcGUpOwogICAgICAgICAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGN0eCwgZXhjZXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RB
cnJheShnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFycmF5QWxsb2NhdGlvblByb2ZpbGUqPigw
KSwgYXJnTGlzdCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEFycmF5KGdsb2JhbE9iamVj
dCwgc3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBhcmdMaXN0
KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9i
YWxPYmplY3QsIDApOworICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2Jh
bE9iamVjdCwgbnVsbHB0cik7CiAKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAg
ICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogCiAgICAgcmV0dXJuIHRv
UmVmKHJlc3VsdCk7CiB9CkBAIC0yMDMsNyArMjAzLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlRGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNW
YWwKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKQEAgLTIxNywxMiArMjE3LDEyIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpT
VmFsCiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3REYXRlKGdsb2JhbE9iamVjdCwgSlNWYWx1ZSgp
LCBhcmdMaXN0KTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwg
ZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAgICByZXN1bHQg
PSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogCiAgICAgcmV0dXJuIHRvUmVmKHJlc3Vs
dCk7CiB9CkBAIC0yMzEsNyArMjMxLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3Io
SlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmEKIHsKICAg
ICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihK
U0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYQogICAgIEpT
T2JqZWN0KiByZXN1bHQgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBlcnJv
clN0cnVjdHVyZSwgbWVzc2FnZSk7CiAKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQo
c2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAg
ICAgICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogCiAgICAgcmV0dXJu
IHRvUmVmKHJlc3VsdCk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgSlNPYmplY3RSZWYgSlNPYmpl
Y3RNYWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25z
dCBKU1YKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKQEAgLTI2NiwxMiArMjY2LDEyIEBAIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0TWFrZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29u
c3QgSlNWCiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3Bl
KTsKICAgICAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9u
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAog
ICAgIEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RSZWdFeHAoZ2xvYmFsT2JqZWN0LCBhcmdM
aXN0KTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0
aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAgICByZXN1bHQgPSAwOwor
ICAgICAgICByZXN1bHQgPSBudWxscHRyOwogICAgIAogICAgIHJldHVybiB0b1JlZihyZXN1bHQp
OwogfQpAQCAtMzAzLDcgKzMwMyw3IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUo
SlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIGlmICghY3R4KSB7
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmplY3QpOwpA
QCAtNTgwLDcgKzU4MCw3IEBAIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBv
YmplY3QpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJ
V3JhcHBlck9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKICNlbmRpZgogICAgIAot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIEpTT2JqZWN0U2V0
UHJpdmF0ZShKU09iamVjdFJlZiBvYmplY3QsIHZvaWQqIGRhdGEpCkBAIC03MTcsNyArNzE3LDcg
QEAgSlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpT
T2JqZWN0UmVmIG9iamVjdCwgSlNPYmplY3QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRD
SF9TQ09QRSh2bSk7CiAKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmpl
Y3QpOwogICAgIEpTT2JqZWN0KiBqc1RoaXNPYmplY3QgPSB0b0pTKHRoaXNPYmplY3QpOwpAQCAt
NzMyLDE2ICs3MzIsMTYgQEAgSlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29u
dGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNPYmplY3QKICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwogICAgICAgICBoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdl
dENhbGxEYXRhKHZtLCBqc09iamVjdCk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERh
dGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAogICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gdG9SZWYoZ2xvYmFsT2JqZWN0LCBwcm9maWxl
ZENhbGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246OkFQSSwganNPYmplY3QsIGNhbGxE
YXRhLCBqc1RoaXNPYmplY3QsIGFyZ0xpc3QpKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZO
ZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93
KQotICAgICAgICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKQEAgLTc2MywxMyArNzYzLDEzIEBAIEpTT2JqZWN0UmVmIEpTT2Jq
ZWN0Q2FsbEFzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0
LCBzaXplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAg
aWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKIAogICAgIGF1dG8gY29u
c3RydWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGpzT2JqZWN0KTsKICAgICBpZiAoY29u
c3RydWN0RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBh
cmdMaXN0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQpA
QCAtNzc4LDEyICs3NzgsMTIgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3Rv
cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHNpemUKICAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHRocm93T3V0
T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwogICAgICAgICBoYW5kbGVF
eGNlcHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgSlNPYmplY3RSZWYgcmVz
dWx0ID0gdG9SZWYocHJvZmlsZWRDb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFz
b246OkFQSSwganNPYmplY3QsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3QpKTsKICAgICBpZiAoaGFu
ZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25T
dGF0dXM6OkRpZFRocm93KQotICAgICAgICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBu
dWxscHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTgwNiw3ICs4MDYsNyBAQCBKU1By
b3BlcnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMoSlNDb250ZXh0UmVm
IGN0eCwgSlNPYmplY3RSZWYgbwogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAg
ICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCBiOWMwYzA4N2VmNTUzMTNhZTIwMmExODMwOTY1
OTM3YjYxZWRkNmVlLi5iYjk2ZWJjY2U2MmNkNGVlZDAwNmQ0NDI3ZTc2MGEyZWQxOWFjMWZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtODgsNyArODgs
NyBAQCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRl
eHQoSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJnZt
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGlm
ICghaXNBU0NJSShzb3VyY2VbaV0pKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBzdGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6
Om1heCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEpTVmFsdWVS
ZWYgSlNTY3JpcHRFdmFsdWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTY3JpcHRSZWYgc2Ny
aXB0LCBKU1ZhbHVlUmVmCiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgaWYgKCZz
Y3JpcHQtPnZtKCkgIT0gJnZtKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBpbnRlcm5hbEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHRo
aXNWYWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IHRvSlMoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWVSZWYp
IDoganNVbmRlZmluZWQoKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBKU1ZhbHVlUmVmIEpTU2NyaXB0
RXZhbHVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU2NyaXB0UmVmIHNjcmlwdCwgSlNWYWx1
ZVJlZgogICAgIGlmIChpbnRlcm5hbEV4Y2VwdGlvbikgewogICAgICAgICBpZiAoZXhjZXB0aW9u
KQogICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGdsb2JhbE9iamVjdCwgaW50ZXJuYWxF
eGNlcHRpb24tPnZhbHVlKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJldHVybiB0b1JlZihnbG9i
YWxPYmplY3QsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNw
cAppbmRleCA1M2I5NzhjY2Y4OGUyNjUzNGIzYjFiMjMwMDdmNTZjNGNkZjEzYjZjLi4yZGYwNTFh
MTY2OTVkMmNlYWE3NzMyY2E2ODBlNTA3MDcxMWQ2YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCBKU1ZhbHVlUmVmIEpTVmFs
dWVNYWtlVW5kZWZpbmVkKEpTQ29udGV4dFJlZiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHRvSlMoY3R4KTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbE9iamVjdCk7CkBAIC0y
OTQsNyArMjk0LDcgQEAgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZU51bGwoSlNDb250ZXh0UmVmIGN0
eCkKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIEpTTG9ja0hvbGRlciBs
b2NrZXIoZ2xvYmFsT2JqZWN0KTsKQEAgLTMwNiw3ICszMDYsNyBAQCBKU1ZhbHVlUmVmIEpTVmFs
dWVNYWtlQm9vbGVhbihKU0NvbnRleHRSZWYgY3R4LCBib29sIHZhbHVlKQogewogICAgIGlmICgh
Y3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmpl
Y3QpOwpAQCAtMzE4LDcgKzMxOCw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlND
b250ZXh0UmVmIGN0eCwgZG91YmxlIHZhbHVlKQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pT
KGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmplY3QpOwpAQCAtMzQ1LDcg
KzM0NSw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwg
SlNTdHJpbmdSZWYgc3RyaW5nKQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBAIEpTVmFs
dWVSZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmlu
Z1JlZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY3R4KTsKICAgICBKU0xv
Y2tIb2xkZXIgbG9ja2VyKGdsb2JhbE9iamVjdCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgSlNTdHJp
bmdSZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJl
ZiBhcGlWYWx1ZSwgdW5zaWcKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTM4Niw5ICszODYsOSBAQCBKU1N0cmlu
Z1JlZiBKU1ZhbHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVm
IGFwaVZhbHVlLCB1bnNpZwogICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwg
YXBpVmFsdWUpOwogICAgIFN0cmluZyByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVj
dCwgdmFsdWUsIGluZGVudCk7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgKmV4Y2VwdGlv
biA9IDA7CisgICAgICAgICpleGNlcHRpb24gPSBudWxscHRyOwogICAgIGlmIChoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6
RGlkVGhyb3cpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICByZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShyZXN1bHQpLmxlYWtSZWYoKTsKIH0K
IApAQCAtNDI4LDcgKzQyOCw3IEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVUb1N0cmluZ0NvcHkoSlND
b250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZioKIHsKICAgICBpZiAo
IWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
QEAgLTQ0Nyw3ICs0NDcsNyBAQCBKU09iamVjdFJlZiBKU1ZhbHVlVG9PYmplY3QoSlNDb250ZXh0
UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZQogewogICAgIGlmICgh
Y3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpA
QCAtNDU4LDcgKzQ1OCw3IEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChKU0NvbnRleHRS
ZWYgY3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlCiAgICAgCiAgICAgSlNP
YmplY3RSZWYgb2JqZWN0UmVmID0gdG9SZWYoanNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3Qp
KTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAgICBvYmplY3RSZWYgPSAwOwor
ICAgICAgICBvYmplY3RSZWYgPSBudWxscHRyOwogICAgIHJldHVybiBvYmplY3RSZWY7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVm
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJl
ZlByaXZhdGUuY3BwCmluZGV4IDIzZTI1MWY2ODQ0MmMwZTFlODIzNWRjYjIzOWJmNzE0NTRjNDdl
OWYuLmUwODQzOGM2YjEwYmMyNWNjNTAzMGY4YjRmMjM3ODE0ZWIyN2U3ZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRl
LmNwcApAQCAtNzIsNyArNzIsNyBAQCBKU09iamVjdFJlZiBKU1dlYWtPYmplY3RNYXBHZXQoSlND
b250ZXh0UmVmIGN0eCwgSlNXZWFrT2JqZWN0TWFwUmVmIG1hcCwgdm9pZCogawogewogICAgIGlm
ICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxP
YmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVj
dXRpb25UaW1lTGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMv
RXhlY3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKaW5kZXggNmU1YjgyZjhhZDQ3YjZhMDlmNWRkOWJm
MWQzNDc3ODI5NGM4YzZjNi4uZmIzZTU2NTYxMDgxZDE0ODRiNjdkMjEyYWRkN2ZhYjExZTAyOWY4
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25U
aW1lTGltaXRUZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4
ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBib29sIGV4
dGVuZFRlcm1pbmF0ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqKQogICAgIGV4dGVu
ZFRlcm1pbmF0ZUNhbGxiYWNrQ2FsbGVkKys7CiAgICAgaWYgKGV4dGVuZFRlcm1pbmF0ZUNhbGxi
YWNrQ2FsbGVkID09IDEpIHsKICAgICAgICAgSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3Vw
ID0gSlNDb250ZXh0R2V0R3JvdXAoY3R4KTsKLSAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVj
dXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCAuMjAwZiwgZXh0ZW5kVGVybWluYXRlQ2FsbGJh
Y2ssIDApOworICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250
ZXh0R3JvdXAsIC4yMDBmLCBleHRlbmRUZXJtaW5hdGVDYWxsYmFjaywgbnVsbHB0cik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTYsNyArMTU2
LDcgQEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogCiAgICAgICAgIC8qIFRlc3Qgc2Ny
aXB0IG9uIGFub3RoZXIgdGhyZWFkOiAqLwogICAgICAgICB0aW1lTGltaXQgPSAxMDBfbXMgKyB0
aWVyQWRqdXN0bWVudDsKLSAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGlt
aXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVDYWxs
YmFjaywgMCk7CisgICAgICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNv
bnRleHRHcm91cCwgdGltZUxpbWl0LnNlY29uZHMoKSwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ss
IG51bGxwdHIpOwogICAgICAgICB7CiAjaWYgT1MoTElOVVgpICYmIChDUFUoTUlQUykgfHwgQ1BV
KEFSTV9USFVNQjIpKQogICAgICAgICAgICAgU2Vjb25kcyB0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3Vs
ZEhhdmVGaXJlZCA9IDUwMF9tcyArIHRpZXJBZGp1c3RtZW50OwpAQCAtMTk0LDcgKzE5NCw3IEBA
IGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKIAogICAgICAgICAvKiBUZXN0IHNjcmlwdCB0
aW1lb3V0OiAqLwogICAgICAgICB0aW1lTGltaXQgPSAxMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsK
LSAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3Vw
LCB0aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAg
ICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGlt
ZUxpbWl0LnNlY29uZHMoKSwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ssIG51bGxwdHIpOwogICAg
ICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZp
cmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCBpbnQg
dGVzdEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAKICAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91
dCB3aXRoIHRhaWwgY2FsbHM6ICovCiAgICAgICAgIHRpbWVMaW1pdCA9IDEwMF9tcyArIHRpZXJB
ZGp1c3RtZW50OwotICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChj
b250ZXh0R3JvdXAsIHRpbWVMaW1pdC5zZWNvbmRzKCksIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNr
LCAwKTsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4
dEdyb3VwLCB0aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgbnVs
bHB0cik7CiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dT
aG91bGRIYXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKIApAQCAtMjgwLDcgKzI4
MCw3IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKIAogICAgICAgICAvKiBUZXN0IHRo
ZSBzY3JpcHQgdGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxkIE5P
VCBiZSBjYXRjaGFibGU6ICovCiAgICAgICAgIHRpbWVMaW1pdCA9IDEwMF9tcyArIHRpZXJBZGp1
c3RtZW50OwotICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250
ZXh0R3JvdXAsIHRpbWVMaW1pdC5zZWNvbmRzKCksIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAw
KTsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdy
b3VwLCB0aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgbnVsbHB0
cik7CiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIApAQCAt
MzI3LDcgKzMyNyw3IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgCiAg
ICAgICAgIC8qIFRlc3Qgc2NyaXB0IHRpbWVvdXQgd2l0aCBubyBjYWxsYmFjazogKi8KICAgICAg
ICAgdGltZUxpbWl0ID0gMTAwX21zICsgdGllckFkanVzdG1lbnQ7Ci0gICAgICAgIEpTQ29udGV4
dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxpbWl0LnNlY29u
ZHMoKSwgMCwgMCk7CisgICAgICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0
KGNvbnRleHRHcm91cCwgdGltZUxpbWl0LnNlY29uZHMoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAg
ICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZl
RmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIApAQCAtMzcyLDcg
KzM3Miw3IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgCiAgICAgICAg
IC8qIFRlc3Qgc2NyaXB0IHRpbWVvdXQgY2FuY2VsbGF0aW9uOiAqLwogICAgICAgICB0aW1lTGlt
aXQgPSAxMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKLSAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRF
eGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQuc2Vjb25kcygpLCBjYW5j
ZWxUZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAgICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0
aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxpbWl0LnNlY29uZHMoKSwgY2FuY2VsVGVy
bWluYXRlQ2FsbGJhY2ssIG51bGxwdHIpOwogICAgICAgICB7CiAgICAgICAgICAgICBTZWNvbmRz
IHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVzdG1l
bnQ7CiAgICAgICAgICAgICAKQEAgLTQxNSw3ICs0MTUsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRp
bWVMaW1pdCgpCiAgICAgICAgIAogICAgICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IGV4dGVu
c2lvbjogKi8KICAgICAgICAgdGltZUxpbWl0ID0gMTAwX21zICsgdGllckFkanVzdG1lbnQ7Ci0g
ICAgICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwg
dGltZUxpbWl0LnNlY29uZHMoKSwgZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ssIDApOworICAgICAg
ICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVM
aW1pdC5zZWNvbmRzKCksIGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrLCBudWxscHRyKTsKICAgICAg
ICAgewogICAgICAgICAgICAgU2Vjb25kcyB0aW1lQmVmb3JlRXh0ZW5kZWREZWFkbGluZSA9IDI1
MF9tcyArIHRpZXJBZGp1c3RtZW50OwogICAgICAgICAgICAgU2Vjb25kcyB0aW1lQWZ0ZXJFeHRl
bmRlZERlYWRsaW5lID0gNjAwX21zICsgdGllckFkanVzdG1lbnQ7CkBAIC00NjYsNyArNDY2LDcg
QEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogI2lmIEhBVkUoTUFDSF9FWENFUFRJT05T
KQogICAgICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IGZyb20gZGlzcGF0Y2ggcXVldWU6ICov
CiAgICAgICAgIHRpbWVMaW1pdCA9IDEwMF9tcyArIHRpZXJBZGp1c3RtZW50OwotICAgICAgICBK
U0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1p
dC5zZWNvbmRzKCksIGRpc3BhdGNoVGVybWl0YXRlQ2FsbGJhY2ssIDApOworICAgICAgICBKU0Nv
bnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdC5z
ZWNvbmRzKCksIGRpc3BhdGNoVGVybWl0YXRlQ2FsbGJhY2ssIG51bGxwdHIpOwogICAgICAgICB7
CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0g
MzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCmluZGV4
IGZiZTQ2ODcyMDMyYjg2MTA5MDMzNDVmNjQ3ZWFkZGEzNGMwZDg5OTEuLmRhZmJiY2NmMzc2YmEz
MjI2MmU0Yjk1ODJiYmUzZjc2MWIyNGRlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcApA
QCAtNTAsNyArNTAsNyBAQCBzdGF0aWMgYm9vbCBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3Rf
aGFzSW5zdGFuY2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogCiAgICAgaW50IGNvdW50
QXRFbnRyeSA9IG5hdGl2ZVJlY3Vyc2lvbkNvdW50Kys7CiAKLSAgICBKU1ZhbHVlUmVmIHJlc3Vs
dCA9IDA7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBudWxscHRyOwogICAgIGlmIChuYXRpdmVS
ZWN1cnNpb25Db3VudCA8IDEwMCkgewogICAgICAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IEpT
VmFsdWVUb09iamVjdChjb250ZXh0LCBoYXNJbnN0YW5jZSwgZXhjZXB0aW9uKTsKICAgICAgICAg
cmVzdWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlvbiwgY29uc3Ry
dWN0b3IsIDEsICZwb3NzaWJsZVZhbHVlLCBleGNlcHRpb24pOwpAQCAtNjUsNyArNjUsNyBAQCBz
dGF0aWMgYm9vbCBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3RfaGFzSW5zdGFuY2UoSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIik7
Iik7CiAKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRG
OENTdHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXN1
bHQgPSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgTlVMTCwgTlVMTCwgMSwgZXhj
ZXB0aW9uKTsKKyAgICAgICAgcmVzdWx0ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3Jp
cHQsIG51bGxwdHIsIG51bGxwdHIsIDEsIGV4Y2VwdGlvbik7CiAgICAgICAgIEpTU3RyaW5nUmVs
ZWFzZShzY3JpcHQpOwogICAgIH0KIApAQCAtODEsMjIgKzgxLDIyIEBAIEpTQ2xhc3NEZWZpbml0
aW9uIFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9kZWZpbml0aW9uID0gewogICAgIGtKU0Ns
YXNzQXR0cmlidXRlTm9uZSwKICAgICAKICAgICAiUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0
IiwKLSAgICBOVUxMLAorICAgIG51bGxwdHIsCiAgICAgCi0gICAgTlVMTCwKLSAgICBOVUxMLAor
ICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKICAgICAKLSAgICBOVUxMLAotICAgIE5VTEwsCi0g
ICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAg
IE5VTEwsCi0gICAgTlVMTCwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0
ciwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRy
LAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKICAgICBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dP
YmplY3RfaGFzSW5zdGFuY2UsCi0gICAgTlVMTCwKKyAgICBudWxscHRyLAogfTsKIAogc3RhdGlj
IEpTQ2xhc3NSZWYgUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0X2NsYXNzKEpTQ29udGV4dFJl
ZiBjb250ZXh0KQpAQCAtMTUxLDkgKzE1MSw5IEBAIGludCB0ZXN0UGluZ1BvbmdTdGFja092ZXJm
bG93KCkKICAgICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSBKU0NvbnRleHRHZXRHbG9iYWxP
YmplY3QoY29udGV4dCk7CiAgICAgQVNTRVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBnbG9i
YWxPYmplY3QpKTsKIAotICAgIEpTT2JqZWN0UmVmIFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVj
dCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3RfY2xh
c3MoY29udGV4dCksIE5VTEwpOworICAgIEpTT2JqZWN0UmVmIFBpbmdQb25nU3RhY2tPdmVyZmxv
d09iamVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmpl
Y3RfY2xhc3MoY29udGV4dCksIG51bGxwdHIpOwogICAgIEpTU3RyaW5nUmVmIFBpbmdQb25nU3Rh
Y2tPdmVyZmxvd09iamVjdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQ
aW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3QiKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNv
bnRleHQsIGdsb2JhbE9iamVjdCwgUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0U3RyaW5nLCBQ
aW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgTlVM
TCk7CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIFBpbmdQ
b25nU3RhY2tPdmVyZmxvd09iamVjdFN0cmluZywgUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOwogICAgIEpTU3RyaW5nUmVsZWFz
ZShQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3RTdHJpbmcpOwogCiAgICAgdW5zaWduZWQgc3Rh
Y2tTaXplID0gMzIgKiBLQjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggMDY3N2NmNzRiOWFiMWE1NDlm
N2M1MzJiYjI1NTkwMzdkYmRlYzgzOC4uYTcxZDA4ODNlNjJmYzhhNTIyNDZkZWIxNzJlMmQwODU3
YjYzNjg5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0
cmFjdE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5NSw3ICsyOTUsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICByZXR1cm4gY29uc3RfY2FzdDx2b2lkKj4obV92YWx1ZSk7CiAgICAgICAgIH0K
IAotICAgICAgICBjb25zdCB2b2lkKiBtX3ZhbHVlIHsgMCB9OworICAgICAgICBjb25zdCB2b2lk
KiBtX3ZhbHVlIHsgbnVsbHB0ciB9OwogICAgIH07CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJp
dmF0ZSBUcnVzdGVkSW1tUHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0NQVS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5jcHAK
aW5kZXggZDIyMjZlOTFjZTE5NGQ1NjNjNWQwZGY2MjIzMzQzMzNjMjYwZTJkMy4uZGJkOTRkZTBj
NDZkMmMzYjY1NGY2NGZmMjAwNGZlN2YwZmNiZWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9DUFUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvQ1BVLmNwcApAQCAtNDEsNyArNDEsNyBAQCBib29sIGlzS2VyblRDU01BdmFpbGFi
bGUoKQogCiAgICAgdWludDMyX3QgdmFsID0gMDsKICAgICBzaXplX3QgdmFsU2l6ZSA9IHNpemVv
Zih2YWwpOwotICAgIGludCByYyA9IHN5c2N0bGJ5bmFtZSgia2Vybi50Y3NtX2F2YWlsYWJsZSIs
ICZ2YWwsICZ2YWxTaXplLCBOVUxMLCAwKTsKKyAgICBpbnQgcmMgPSBzeXNjdGxieW5hbWUoImtl
cm4udGNzbV9hdmFpbGFibGUiLCAmdmFsLCAmdmFsU2l6ZSwgbnVsbHB0ciwgMCk7CiAgICAgaWYg
KHJjIDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiAhIXZhbDsKQEAgLTUw
LDcgKzUwLDcgQEAgYm9vbCBpc0tlcm5UQ1NNQXZhaWxhYmxlKCkKIGJvb2wgZW5hYmxlS2VyblRD
U00oKQogewogICAgIHVpbnQzMl90IHZhbCA9IDE7Ci0gICAgaW50IHJjID0gc3lzY3RsYnluYW1l
KCJrZXJuLnRjc21fZW5hYmxlIiwgTlVMTCwgMCwgJnZhbCwgc2l6ZW9mKHZhbCkpOworICAgIGlu
dCByYyA9IHN5c2N0bGJ5bmFtZSgia2Vybi50Y3NtX2VuYWJsZSIsIG51bGxwdHIsIG51bGxwdHIs
ICZ2YWwsIHNpemVvZih2YWwpKTsKICAgICBpZiAocmMgPCAwKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9D
b2RlQmxvY2suY3BwCmluZGV4IDY5NzRhZGI5NWMxZjVhMzI3M2JlOTZmYjEzM2JmMmRmNTUwZTYz
NDMuLjgzNDA4MmQ4MjdhZWNmYmU0NzZmMWViMDU3YjE4NTllZTlhYjQyYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC05NzMsNyArOTczLDcg
QEAgQ29kZUJsb2NrKiBDb2RlQmxvY2s6OnNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCkKIHsK
ICNpZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoaml0VHlwZSgpICE9IEpJVFR5cGU6OkRGR0pJ
VCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIERGRzo6
SklUQ29kZSogaml0Q29kZSA9IG1faml0Q29kZS0+ZGZnKCk7CiAgICAgcmV0dXJuIGppdENvZGUt
Pm9zckVudHJ5QmxvY2soKTsKICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQpAQCAtMTg3MCw3ICsx
ODcwLDcgQEAgSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlSW5kZXgo
Qnl0ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBSZXEKIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6
OmhhbmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVk
SGFuZGxlcikKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gSGFuZGxlckluZm86OmhhbmRsZXJGb3JJ
bmRleDxIYW5kbGVySW5mbz4obV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgs
IHJlcXVpcmVkSGFuZGxlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwCmluZGV4IGRhZDQyYmU5OWNkMDAwMmFiNTVh
NDVmYzI4NjkyMDAyZTg3YzY2YjUuLmQ5NDFiM2ExOTkyMzAzZTRmMGQyMDIyOGYyMDI1Njc4ZDll
ZjcyZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVC
eUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0
ZUJ5SWRWYXJpYW50LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRGVsZXRlQnlJZFZhcmlh
bnQ6Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiB2b2lkIERlbGV0ZUJ5SWRW
YXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4
dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAogYm9vbCBE
ZWxldGVCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKaW5kZXggMjYzMzM2MjQ0YzhmYjQx
OTZjZTRjNjI5MmY1NmRkNTk5NGE3YzAxZS4uMGUxNjU2MTc5ZjA5MDA0M2ZmNTQwZmFhMzVjYWVh
YTAxZmIzMzJjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dl
dEJ5SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0
QnlJZFZhcmlhbnQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgYm9vbCBHZXRCeUlkVmFyaWFudDo6
ZmluYWxpemUoVk0mIHZtKQogCiB2b2lkIEdldEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFt
JiBvdXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4dChvdXQsIDApOworICAgIGR1bXBJbkNv
bnRleHQob3V0LCBudWxscHRyKTsKIH0KIAogdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcEluQ29u
dGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAppbmRleCAw
YjM3ZjUzNzY4NTk4NTQ0ZGEzOGVlNjZhYzk3OWQxNTNkYjkyNjUzLi5jYTE1MDU3NThiN2VlNmZh
MmZkNWZmYmUyMjA0YjY0ZjdhNmFjNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgSW5CeUlk
VmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQogCiB2b2lkIEluQnlJZFZhcmlhbnQ6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAg
ZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIpOwogfQogCiB2b2lkIEluQnlJZFZhcmlhbnQ6OmR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZy
YW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUu
Y3BwCmluZGV4IDc5OTFhYzJhOGU2N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUuLjgzM2I5
YTE4MzFiYmI3Y2Y2YmVjNTZlZWU0NzlmMTg3NDhmYmU4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC04Miw3ICs4Miw3
IEBAIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQs
IER1bXBDb250ZXh0KiBjb250ZXh0KSBjb25zCiAKIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4dChvdXQsIDApOwor
ICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRW
YWx1ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVy
YW5kVmFsdWVQcm9maWxlLmNwcAppbmRleCA2ZWViMTQ1YjMzNzk2NjJhZjFjMTUwMDE5MDc2NzI3
YTM5ZWUyYmRhLi40YTE4NmQwMjRjYzFhMzAxMmJjYzE3ZDIyM2VmY2U0MGZlZTY0M2NlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVBy
b2ZpbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFu
ZFZhbHVlUHJvZmlsZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUqIExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQoCiAgICAgICAg
IG1fbWFwLmZpbmQoa2V5KTsKICAgICAKICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVy
biBpdGVyLT52YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29kZS9QdXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
UHV0QnlJZFZhcmlhbnQuY3BwCmluZGV4IDcyYzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3
MmU2YzBhMjguLjYzMGM5ZDNkNjliZWI0OGRhNzQwYTlhZjgxNWRiMDU2YjE1OGFjMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcApA
QCAtMjg1LDcgKzI4NSw3IEBAIGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkK
IAogdm9pZCBQdXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewot
ICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKKyAgICBkdW1wSW5Db250ZXh0KG91dCwgbnVsbHB0
cik7CiB9CiAKIHZvaWQgUHV0QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0m
IG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKaW5kZXggOTg2ZmY3NzIxNTk0YWMyYTgwYzdlM2Yz
OWVmNjIxZDUxNzE5NDAzMS4uMjhhNzI3M2Y5NmIxMmUxZjhiNjgxMzE2MmM1ZjI2YzliM2Y0ZjBh
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmls
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaApA
QCAtNjAsMTAgKzYwLDEwIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgSlNW
YWx1ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbYnVja2V0XSk7CiAgICAgICAg
IGlmICghIXZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQotICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7
CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZlNhbXBsZXMoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCmluZGV4IGIx
Mzk0N2YwZTE4ZGYwNjNhODhiM2YyMjdjZGNkYmZlZmZlZGMzMDguLmM1M2Q2YTM2NDdjMDNjNmVj
NzY3ZmFjNTIzNDRlZWFiOTc2YTgwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFZhbHVl
UmVjb3Zlcnk6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNv
bnRleHQpIGNvbnN0CiAKIHZvaWQgVmFsdWVSZWNvdmVyeTo6ZHVtcChQcmludFN0cmVhbSYgb3V0
KSBjb25zdAogewotICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKKyAgICBkdW1wSW5Db250ZXh0
KG91dCwgbnVsbHB0cik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmlu
ZGV4IDM5N2RkZGM3ZTViOGYxMDBlOWE5N2Q3YzM0YTY5Njg2NDYxZTZkZDkuLjRiYzc2MGNmNDJl
NzdjNGZmNjk0OGE1ZGQ2NjQ4YzUyZTUzYjY3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ3MSw3ICs0
NzEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybnMg
dGhlIHBsYWNlIHRvIHdyaXRlIHRoZSBmaW5hbCBvdXRwdXQgb2YgYW4gb3BlcmF0aW9uLgotICAg
ICAgICBSZWdpc3RlcklEKiBmaW5hbERlc3RpbmF0aW9uKFJlZ2lzdGVySUQqIG9yaWdpbmFsRHN0
LCBSZWdpc3RlcklEKiB0ZW1wRHN0ID0gMCkKKyAgICAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0
aW5hdGlvbihSZWdpc3RlcklEKiBvcmlnaW5hbERzdCwgUmVnaXN0ZXJJRCogdGVtcERzdCA9IG51
bGxwdHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChvcmlnaW5hbERzdCAmJiBvcmlnaW5h
bERzdCAhPSBpZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFs
RHN0OwpAQCAtNDg1LDcgKzQ4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoZHN0ICYmIGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGRzdC0+aXNUZW1wb3JhcnkoKSA/IGRzdCA6IG5ld1RlbXBvcmFyeSgpOwotICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQogCiAgICAgICAgIC8vIE1vdmVzIHNyYyB0byBkc3QgaWYgZHN0IGlzIG5vdCBudWxsIGFuZCBp
cyBkaWZmZXJlbnQgZnJvbSBzcmMsIG90aGVyd2lzZSBqdXN0IHJldHVybnMgc3JjLgpAQCAtNDk0
LDcgKzQ5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGRzdCA9PSBp
Z25vcmVkUmVzdWx0KCkgPyBudWxscHRyIDogKGRzdCAmJiBkc3QgIT0gc3JjKSA/IGVtaXRNb3Zl
KGRzdCwgc3JjKSA6IHNyYzsKICAgICAgICAgfQogCi0gICAgICAgIFJlZjxMYWJlbFNjb3BlPiBu
ZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlR5cGUsIGNvbnN0IElkZW50aWZpZXIqID0gMCk7Cisg
ICAgICAgIFJlZjxMYWJlbFNjb3BlPiBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlR5cGUsIGNv
bnN0IElkZW50aWZpZXIqID0gbnVsbHB0cik7CiAKICAgICAgICAgdm9pZCBlbWl0Tm9kZShSZWdp
c3RlcklEKiBkc3QsIFN0YXRlbWVudE5vZGUqIG4pCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAzMTI0
OTJhY2FiODUxZDI5YTVhYTM0NDFiOGM0OWY1YmU4NmNkZmE0Li40YWVjZjBiYWQ2MWMzODNlZjM4
ZmQzYTIyNGRhNGQxNzY3YzBhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBD
b25zdGFudE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVy
YXRvciYgZ2VuZXJhdG9yLAogUmVnaXN0ZXJJRCogQ29uc3RhbnROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlm
IChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIEpTVmFsdWUgY29uc3RhbnQgPSBqc1ZhbHVlKGdl
bmVyYXRvcik7CiAgICAgaWYgKFVOTElLRUxZKCFjb25zdGFudCkpIHsKICAgICAgICAgLy8gVGhp
cyBjYW4gaGFwcGVuIGlmIHdlIHRyeSB0byBwYXJzZSBhIHN0cmluZyBvciBCaWdJbnQgc28gZW5v
cm1vdXMgdGhhdCB3ZSBPT00uCkBAIC0xNzMsNyArMTczLDcgQEAgUmVnaXN0ZXJJRCogVGhpc05v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QKIHsKICAgICBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwogICAgIGlmIChkc3QgPT0gZ2Vu
ZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLm1vdmUoZHN0
LCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0
aGlzTGVuZ3RoID0gc3RybGVuKCJ0aGlzIik7CkBAIC00NjQsNyArNDY0LDcgQEAgUmVnaXN0ZXJJ
RCogQXJyYXlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHMKICAgICB9CiAKICAgICBpZiAobV9lbGlzaW9uKSB7Ci0gICAgICAgIFJl
Z2lzdGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzTnVtYmVyKG1fZWxpc2lv
biArIGxlbmd0aCkpOworICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0
TG9hZChudWxscHRyLCBqc051bWJlcihtX2VsaXNpb24gKyBsZW5ndGgpKTsKICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQdXRCeUlkKGFycmF5LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
Lmxlbmd0aCwgdmFsdWUpOwogICAgIH0KIApAQCAtNDc5LDcgKzQ3OSw3IEBAIGhhbmRsZVNwcmVh
ZDoKICAgICB9KTsKICAgICBmb3IgKDsgbjsgbiA9IG4tPm5leHQoKSkgewogICAgICAgICBpZiAo
bi0+ZWxpc2lvbigpKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcDxPcEFkZD4o
aW5kZXguZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNOdW1iZXIo
bi0+ZWxpc2lvbigpKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQz
MigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEJpbmFyeU9wPE9wQWRkPihpbmRleC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihuLT5lbGlzaW9uKCkpKSwgT3BlcmFuZFR5
cGVzKFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCksIFJlc3VsdFR5cGU6Om51bWJlclR5
cGVJc0ludDMyKCkpKTsKICAgICAgICAgaWYgKG4tPnZhbHVlKCktPmlzU3ByZWFkRXhwcmVzc2lv
bigpKSB7CiAgICAgICAgICAgICBTcHJlYWRFeHByZXNzaW9uTm9kZSogc3ByZWFkID0gc3RhdGlj
X2Nhc3Q8U3ByZWFkRXhwcmVzc2lvbk5vZGUqPihuLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0RW51bWVyYXRpb24oc3ByZWFkLCBzcHJlYWQtPmV4cHJlc3Npb24oKSwgc3By
ZWFkZXIpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIGhhbmRsZVNwcmVhZDoKICAgICB9CiAgICAgCiAg
ICAgaWYgKG1fZWxpc2lvbikgewotICAgICAgICBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9wQWRk
PihpbmRleC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc051bWJl
cihtX2VsaXNpb24pKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMy
KCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsKKyAgICAgICAgZ2VuZXJhdG9y
LmVtaXRCaW5hcnlPcDxPcEFkZD4oaW5kZXguZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3Iu
ZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIobV9lbGlzaW9uKSksIE9wZXJhbmRUeXBlcyhSZXN1
bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQz
MigpKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChhcnJheS5nZXQoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGluZGV4LmdldCgpKTsKICAgICB9CiAgICAgcmV0
dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgYXJyYXkuZ2V0KCkpOwpAQCAtNTE0LDcgKzUxNCw3IEBA
IEFyZ3VtZW50TGlzdE5vZGUqIEFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3QoUGFyc2VyQXJlbmEm
IHBhcnNlckFyZW5hLCBpbnQgbGluZU51CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0
aW9uYWwpOwogICAgIEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb247CiAgICAgbG9jYXRpb24ubGluZSA9IGxpbmVOdW1iZXI7CiAgICAg
bG9jYXRpb24uc3RhcnRPZmZzZXQgPSBzdGFydFBvc2l0aW9uOwpAQCAtNTM0LDcgKzUzNCw3IEBA
IFJlZ2lzdGVySUQqIE9iamVjdExpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiB7CiAgICAgaWYgKCFtX2xpc3QpIHsKICAgICAgICAg
aWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCkpOwogICAgIH0K
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3Qo
Z2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpKTsKQEAgLTE4MDAsNyArMTgwMCw3IEBAIFJl
Z2lzdGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmd1
bWVudHNSZWdpc3RlcjsKICAgICAgICAgICAgIGFyZ3VtZW50c1JlZ2lzdGVyID0gZ2VuZXJhdG9y
LmVtaXROb2RlKHN1YmplY3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhzcHJlYWQtPmRpdm90KCksIHNwcmVhZC0+ZGl2b3RTdGFydCgpLCBzcHJlYWQtPmRpdm90
RW5kKCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdl
bmVyYXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudHNS
ZWdpc3Rlci5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzTnVtYmVyKDApKSk7CisgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRH
ZXRCeVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50c1JlZ2lzdGVyLmdldCgp
LCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpKTsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3NJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQo
KSwgYmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQo
KSwgZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCksIERlYnVnZ2FibGVDYWxsOjpZZXMpOwogICAgICAgICB9IGVsc2UgaWYgKG1fYXJn
cy0+bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAgICAgICAg
ICAgQXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTE4
OTYsMTMgKzE4OTYsMTMgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAg
ICAgICAgUmVmPExhYmVsPiBoYXZlVGhpcyA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAg
ICAgICAgICAgICAgICBSZWY8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAg
ICAgICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tcGFyZVJlc3VsdCA9IGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGluZGV4WmVyb0NvbXBhcmVSZXN1bHQgPSBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9wRXE+
KGNvbXBhcmVSZXN1bHQuZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQoMCwg
anNOdW1iZXIoMCkpLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIo
KSwgUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOworICAgICAgICAgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXhaZXJvQ29tcGFyZVJlc3VsdCA9IGdlbmVyYXRvci5l
bWl0QmluYXJ5T3A8T3BFcT4oY29tcGFyZVJlc3VsdC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVy
YXRvci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRU
eXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigp
KSk7CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoaW5kZXha
ZXJvQ29tcGFyZVJlc3VsdC5nZXQoKSwgaGF2ZVRoaXMuZ2V0KCkpOwogICAgICAgICAgICAgICAg
ICAgICBnZW5lcmF0b3IubW92ZSh0aGlzUmVnaXN0ZXIuZ2V0KCksIHZhbHVlKTsKICAgICAgICAg
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGluZGV4LmdldCgpLCBqc051bWJlcigxKSk7
CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAg
ICAgICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGhhdmVUaGlzLmdldCgpKTsKLSAg
ICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4T25lQ29tcGFyZVJlc3Vs
dCA9IGdlbmVyYXRvci5lbWl0QmluYXJ5T3A8T3BFcT4oY29tcGFyZVJlc3VsdC5nZXQoKSwgaW5k
ZXguZ2V0KCksIGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc051bWJlcigxKSksIE9wZXJhbmRUeXBl
cyhSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBl
SXNJbnQzMigpKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRl
eE9uZUNvbXBhcmVSZXN1bHQgPSBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9wRXE+KGNvbXBhcmVS
ZXN1bHQuZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNO
dW1iZXIoMSkpLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogICAgICAgICAgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdEp1bXBJZkZhbHNlKGluZGV4T25lQ29tcGFyZVJlc3VsdC5nZXQoKSwgZW5k
LmdldCgpKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJndW1lbnRzUmVn
aXN0ZXIuZ2V0KCksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRM
b2FkKGluZGV4LmdldCgpLCBqc051bWJlcigyKSk7CkBAIC0yMTYyLDcgKzIxNjIsNyBAQCBSZWdp
c3RlcklEKiBWb2lkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIGRzdAogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSwgbV9leHByKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5v
ZGUobV9leHByKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmlu
ZWQoKSk7CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBSZWdpc3RlcklEKiBUeXBlT2ZSZXNvbHZlTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAg
IGlmIChSZWdpc3RlcklEKiBsb2NhbCA9IHZhci5sb2NhbCgpKSB7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGxvY2FsLCBudWxscHRyKTsKICAgICAgICAg
aWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRv
ci5lbWl0VHlwZU9mKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsKTsKICAg
ICB9CiAKQEAgLTIxODQsNyArMjE4NCw3IEBAIFJlZ2lzdGVySUQqIFR5cGVPZlJlc29sdmVOb2Rl
OjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RG
b3VuZCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgdmFsdWUu
Z2V0KCksIG51bGxwdHIpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQo
KSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdFR5cGVPZihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNj
b3BlLmdldCgpKSwgdmFsdWUuZ2V0KCkpOwogfQogCkBAIC0yMTk0LDcgKzIxOTQsNyBAQCBSZWdp
c3RlcklEKiBUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcgogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRS
ZXN1bHQoKSwgbV9leHByKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVtaXRO
b2RlKG1fZXhwcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VHlwZU9mKGdlbmVyYXRvci5m
aW5hbERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSk7CkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBS
ZWdpc3RlcklEKiBCaW5hcnlPcE5vZGU6OmVtaXRTdHJjYXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZAogICAgIC8vIGltbWVkaWF0ZSB3ZSBjYW4gdHJpdmlhbGx5
IGRldGVybWluZSB0aGF0IG5vIGNvbnZlcnNpb24gd2lsbCBiZSByZXF1aXJlZC4KICAgICAvLyBJ
ZiB0aGlzIGlzIHRoZSBjYXNlCiAgICAgaWYgKGxlZnRNb3N0QWRkQ2hpbGQtPmlzU3RyaW5nKCkp
Ci0gICAgICAgIGxlZnRNb3N0QWRkQ2hpbGRUZW1wUmVnaXN0ZXIgPSAwOworICAgICAgICBsZWZ0
TW9zdEFkZENoaWxkVGVtcFJlZ2lzdGVyID0gbnVsbHB0cjsKIAogICAgIHdoaWxlIChyZXZlcnNl
RXhwcmVzc2lvbkxpc3Quc2l6ZSgpKSB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBub2RlID0g
cmV2ZXJzZUV4cHJlc3Npb25MaXN0Lmxhc3QoKTsKQEAgLTI0NDksNyArMjQ0OSw3IEBAIFJlZ2lz
dGVySUQqIEJpbmFyeU9wTm9kZTo6ZW1pdFN0cmNhdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkCiAgICAgICAgIC8vIGdlbmVyYXRlZCB0aGUgc2Vjb25kIG5vZGUs
IHdoaWNoIG1lYW5zIGl0IGlzIHRpbWUgdG8gY29udmVydCB0aGUgbGVmdG1vc3Qgb3BlcmFuZC4K
ICAgICAgICAgaWYgKGxlZnRNb3N0QWRkQ2hpbGRUZW1wUmVnaXN0ZXIpIHsKICAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0VG9QcmltaXRpdmUobGVmdE1vc3RBZGRDaGlsZFRlbXBSZWdpc3Rlciwg
bGVmdE1vc3RBZGRDaGlsZFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBsZWZ0TW9zdEFkZENo
aWxkVGVtcFJlZ2lzdGVyID0gMDsgLy8gT25seSBkbyB0aGlzIG9uY2UuCisgICAgICAgICAgICBs
ZWZ0TW9zdEFkZENoaWxkVGVtcFJlZ2lzdGVyID0gbnVsbHB0cjsgLy8gT25seSBkbyB0aGlzIG9u
Y2UuCiAgICAgICAgIH0KICAgICAgICAgLy8gUGxhbnQgYSBjb252ZXJzaW9uIGZvciB0aGlzIG5v
ZGUsIGlmIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKCFub2RlLT5pc1N0cmluZygpKQpAQCAtMjUw
NSw5ICsyNTA1LDkgQEAgc3RhdGljIGlubGluZSBib29sIGNhbkZvbGRUb0JyYW5jaChPcGNvZGVJ
RCBvcGNvZGVJRCwgRXhwcmVzc2lvbk5vZGUqIGJyYW5jaEV4cHIKIHZvaWQgQmluYXJ5T3BOb2Rl
Ojp0cnlGb2xkVG9CcmFuY2goQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVHJpU3RhdGUm
IGJyYW5jaENvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqJiBicmFuY2hFeHByZXNzaW9uKQogewog
ICAgIGJyYW5jaENvbmRpdGlvbiA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwotICAgIGJyYW5j
aEV4cHJlc3Npb24gPSAwOworICAgIGJyYW5jaEV4cHJlc3Npb24gPSBudWxscHRyOwogCi0gICAg
Q29uc3RhbnROb2RlKiBjb25zdGFudCA9IDA7CisgICAgQ29uc3RhbnROb2RlKiBjb25zdGFudCA9
IG51bGxwdHI7CiAgICAgaWYgKG1fZXhwcjEtPmlzQ29uc3RhbnQoKSkgewogICAgICAgICBjb25z
dGFudCA9IHN0YXRpY19jYXN0PENvbnN0YW50Tm9kZSo+KG1fZXhwcjEpOwogICAgICAgICBicmFu
Y2hFeHByZXNzaW9uID0gbV9leHByMjsKQEAgLTMxMDAsNyArMzEwMCw3IEBAIFJlZ2lzdGVySUQq
IEFzc2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0CiAgICAgaWYgKG1fYXNzaWdubWVudENvbnRleHQgPT0gQXNzaWdubWVudENv
bnRleHQ6OkFzc2lnbm1lbnRFeHByZXNzaW9uKQogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNo
ZWNrSWZOZWNlc3NhcnkodmFyLCBudWxscHRyLCBzY29wZS5nZXQoKSk7CiAgICAgaWYgKGRzdCA9
PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICBkc3QgPSAwOworICAgICAgICBk
c3QgPSBudWxscHRyOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3Iu
ZW1pdE5vZGUoZHN0LCBtX3JpZ2h0KTsgLy8gRXhlY3V0ZSBzaWRlIGVmZmVjdHMgZmlyc3QuCiAg
ICAgaWYgKGlzUmVhZE9ubHkpIHsKICAgICAgICAgYm9vbCB0aHJld0V4Y2VwdGlvbiA9IGdlbmVy
YXRvci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwpAQCAtMzk4MCw3ICszOTgw
LDcgQEAgdm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIEFTU0VSVChnZW5lcmF0b3IuY29kZVR5cGUo
KSA9PSBGdW5jdGlvbkNvZGUpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJl
c3VsdCgpKQotICAgICAgICBkc3QgPSAwOworICAgICAgICBkc3QgPSBudWxscHRyOwogCiAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5l
bWl0Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQo
ZHN0LCBqc1VuZGVmaW5lZCgpKTsKIApAQCAtNDIxMyw3ICs0MjEzLDcgQEAgdm9pZCBMYWJlbE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3QpCiB2b2lkIFRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5p
Z25vcmVkUmVzdWx0KCkpCi0gICAgICAgIGRzdCA9IDA7CisgICAgICAgIGRzdCA9IG51bGxwdHI7
CiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHBy
KTsKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleHByLmdldCgpKTsKQEAg
LTQ1MDgsNyArNDUwOCw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGVtaXRTdGF0ZW1l
bnRzQnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAg
ICAgICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1l
bnQoKTsKLSAgICAgICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgICAgIFJldHVy
bk5vZGUqIHJldHVybk5vZGUgPSBudWxscHRyOwogCiAgICAgICAgIC8vIENoZWNrIGZvciBhIHJl
dHVybiBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2lu
Z2xlIGJsb2NrLgogICAgICAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVu
dC0+aXNCbG9jaygpKSB7CkBAIC00NTI2LDcgKzQ1MjYsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQog
ICAgICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgJiYgZ2VuZXJhdG9yLmNv
bnN0cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6TmFrZWQpCiAgICAgICAgICAgICAg
ICAgcjAgPSBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgcjAgPSBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7Cisg
ICAgICAgICAgICAgICAgcjAgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmlu
ZWQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxl
VHlwZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHBy
ZXNzaW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2Vy
J3Mgc291cmNlIGNvZGUuCiAgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5l
U3RhcnRPZmZzZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFdpbGxMZWF2ZUNhbGxG
cmFtZURlYnVnSG9vaygpOwpAQCAtNTIxMCw3ICs1MjEwLDcgQEAgdm9pZCBSZXN0UGFyYW1ldGVy
Tm9kZTo6ZW1pdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogUmVnaXN0ZXJJRCogU3By
ZWFkRXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJu
IDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZ2lzdGVySUQqIE9iamVjdFNwcmVhZEV4
cHJlc3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVn
Z2VyL0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclNjb3BlLmgKaW5kZXggNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlhMWEyMTQ5Nzc1ZWRkODAy
ZS4uOWNmZmRiYWVmOTNjZDcwMDZjZGJlZjdhODViODU3MjE3NTE0ZTY1NSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC0xMTgsNyArMTE4
LDcgQEAgaW5saW5lIERlYnVnZ2VyU2NvcGU6Oml0ZXJhdG9yIERlYnVnZ2VyU2NvcGU6OmJlZ2lu
KCkKIAogaW5saW5lIERlYnVnZ2VyU2NvcGU6Oml0ZXJhdG9yIERlYnVnZ2VyU2NvcGU6OmVuZCgp
CiB7IAotICAgIHJldHVybiBpdGVyYXRvcigwKTsgCisgICAgcmV0dXJuIGl0ZXJhdG9yKG51bGxw
dHIpOyAKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdFZhbHVlLmNwcAppbmRleCA4YzcxYTQ3YzhjYTk3NmIwOTIwMzY3YzI5
MTg2MDE5MGYxM2Y0NTE0Li5jZGVlYmM0MGNmY2EwOTlmN2ExMWQ4MzFhYTk1ZDRlY2RlZTQwNDBh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAK
QEAgLTQ4Niw3ICs0ODYsNyBAQCBSZXN1bHRUeXBlIEFic3RyYWN0VmFsdWU6OnJlc3VsdFR5cGUo
KSBjb25zdAogCiB2b2lkIEFic3RyYWN0VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29u
c3QKIHsKLSAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgZHVtcEluQ29udGV4dChvdXQs
IG51bGxwdHIpOwogfQogCiB2b2lkIEFic3RyYWN0VmFsdWU6OmR1bXBJbkNvbnRleHQoUHJpbnRT
dHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkamFjZW5jeUxpc3QuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCmluZGV4IGQ2ZjJkZGRlZGYyOGU1OGQ4MzRk
YWQ2NGY5NzdmMTMwM2QxYzNmMzEuLjViZmQ2Mjg2NGRlZWQ0OWYzZDE1NzUzYTI0NDUyZDRmMDZi
MmNkMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5
TGlzdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5o
CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICBjaGlsZCgyKSA9IGNoaWxkMzsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBpbml0aWFsaXplKE5vZGUqIGNoaWxkMSA9IDAsIE5vZGUq
IGNoaWxkMiA9IDAsIE5vZGUqIGNoaWxkMyA9IDApCisgICAgdm9pZCBpbml0aWFsaXplKE5vZGUq
IGNoaWxkMSA9IG51bGxwdHIsIE5vZGUqIGNoaWxkMiA9IG51bGxwdHIsIE5vZGUqIGNoaWxkMyA9
IG51bGxwdHIpCiAgICAgewogICAgICAgICBpbml0aWFsaXplKEVkZ2UoY2hpbGQxKSwgRWRnZShj
aGlsZDIpLCBFZGdlKGNoaWxkMykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmgKaW5kZXggODljMDhmYTA4MGNlYTMyZmQ5YzU5MWYz
MGYxZTdkZDQ2ZjFkMTI1ZS4uYmQ4YjBlMGQ0ZWEzZjI1YWQ4NDVhMTQxZDJhZDM4NGEwZDg2MGNm
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0
aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0aW9u
LmgKQEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogc29t
ZVZhcmlhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlcy5pc0VtcHR5
KCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICByZXR1cm4gbV92YXJpYWJsZXNbMF0tPmZpbmQoKTsKICAgICB9CiAgICAgCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5l
cmF0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdl
bmVyYXRvci5oCmluZGV4IDE4NzQxYmVlNGY4YjU4OGM4OWE1MTEwMmUwZDM2ZTc3MjI2OWQxMjAu
LjU1YTk4OWRlMWJmMmE2YjkwZDlmNTJmMmU2MDk3NWYzYjA3YjExODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRv
ci5oCkBAIC01OSwxMyArNTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6
SW50MzI6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICBjYXNl
IEFycmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgICAgIG1fYmFkUHJvcGVydHlKdW1wID0g
aml0LT5zcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAg
ICAgICAgICAgICAgICBtX2JhZFByb3BlcnR5SnVtcCA9IGppdC0+c3BlY3VsYXRpb25DaGVjayhV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fYmFkSW5kZXhpbmdUeXBlSnVtcCA9IGppdC0+
c3BlY3VsYXRpb25DaGVjayhCYWRJbmRleGluZ1R5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRD
ZWxsKG1fYmFzZUdQUiksIDApOworICAgICAgICBtX2JhZEluZGV4aW5nVHlwZUp1bXAgPSBqaXQt
PnNwZWN1bGF0aW9uQ2hlY2soQmFkSW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVk
Q2VsbChtX2Jhc2VHUFIpLCBudWxscHRyKTsKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuaAppbmRleCA2ZDE1N2Y1NDc0
NjQ1NDAzNDNiNDJlZWI3MTZlZWU5MmU1MDdiYjNlLi42YWJmNGNkZTgyMjQxNDg0ZWQ2M2Q1NTUy
YzVlNzY0ZDFhOWYxZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0F2YWlsYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxh
YmlsaXR5LmgKQEAgLTM3LDcgKzM3LDcgQEAgc3RydWN0IE5vZGU7CiBjbGFzcyBBdmFpbGFiaWxp
dHkgewogcHVibGljOgogICAgIEF2YWlsYWJpbGl0eSgpCi0gICAgICAgIDogbV9ub2RlKDApCisg
ICAgICAgIDogbV9ub2RlKG51bGxwdHIpCiAgICAgICAgICwgbV9mbHVzaGVkQXQoRGVhZEZsdXNo
KQogICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNv
ZGVQYXJzZXIuY3BwCmluZGV4IDRlYzE1ZWNjMDdiMDM5ODZmMjMwNjhiM2ZkYzIyYmYwMWIyMjU2
MTEuLjEzMGY2YWU2ZTNjY2UzZTI5OTdkMjFmMTkzMjE1MzYyMWI1ZGI5ZDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xMTAsNyAr
MTEwLDcgQEAgcHVibGljOgogICAgICAgICAsIG1fY29kZUJsb2NrKGdyYXBoLm1fY29kZUJsb2Nr
KQogICAgICAgICAsIG1fcHJvZmlsZWRCbG9jayhncmFwaC5tX3Byb2ZpbGVkQmxvY2spCiAgICAg
ICAgICwgbV9ncmFwaChncmFwaCkKLSAgICAgICAgLCBtX2N1cnJlbnRCbG9jaygwKQorICAgICAg
ICAsIG1fY3VycmVudEJsb2NrKG51bGxwdHIpCiAgICAgICAgICwgbV9jdXJyZW50SW5kZXgoMCkK
ICAgICAgICAgLCBtX2NvbnN0YW50VW5kZWZpbmVkKGdyYXBoLmZyZWV6ZShqc1VuZGVmaW5lZCgp
KSkKICAgICAgICAgLCBtX2NvbnN0YW50TnVsbChncmFwaC5mcmVlemUoanNOdWxsKCkpKQpAQCAt
MTIxLDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX251bVRtcHMobV9jb2RlQmxvY2st
Pm51bVRtcHMoKSkKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCiAgICAgICAgICwgbV9u
dW1QYXNzZWRWYXJBcmdzKDApCi0gICAgICAgICwgbV9pbmxpbmVTdGFja1RvcCgwKQotICAgICAg
ICAsIG1fY3VycmVudEluc3RydWN0aW9uKDApCisgICAgICAgICwgbV9pbmxpbmVTdGFja1RvcChu
dWxscHRyKQorICAgICAgICAsIG1fY3VycmVudEluc3RydWN0aW9uKG51bGxwdHIpCiAgICAgICAg
ICwgbV9oYXNEZWJ1Z2dlckVuYWJsZWQoZ3JhcGguaGFzRGVidWdnZXJFbmFibGVkKCkpCiAgICAg
ewogICAgICAgICBBU1NFUlQobV9wcm9maWxlZEJsb2NrKTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBw
cml2YXRlOgogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgCi0gICAgTm9kZSogYWRk
VG9HcmFwaChOb2RlVHlwZSBvcCwgTm9kZSogY2hpbGQxID0gMCwgTm9kZSogY2hpbGQyID0gMCwg
Tm9kZSogY2hpbGQzID0gMCkKKyAgICBOb2RlKiBhZGRUb0dyYXBoKE5vZGVUeXBlIG9wLCBOb2Rl
KiBjaGlsZDEgPSBudWxscHRyLCBOb2RlKiBjaGlsZDIgPSBudWxscHRyLCBOb2RlKiBjaGlsZDMg
PSBudWxscHRyKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2Rl
KAogICAgICAgICAgICAgb3AsIGN1cnJlbnROb2RlT3JpZ2luKCksIEVkZ2UoY2hpbGQxKSwgRWRn
ZShjaGlsZDIpLApAQCAtNzg3LDcgKzc4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBvcCwg
Y3VycmVudE5vZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJl
dHVybiBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQotICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9k
ZVR5cGUgb3AsIE9wSW5mbyBpbmZvLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBjaGlsZDIgPSAw
LCBOb2RlKiBjaGlsZDMgPSAwKQorICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9w
SW5mbyBpbmZvLCBOb2RlKiBjaGlsZDEgPSBudWxscHRyLCBOb2RlKiBjaGlsZDIgPSBudWxscHRy
LCBOb2RlKiBjaGlsZDMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0g
bV9ncmFwaC5hZGROb2RlKAogICAgICAgICAgICAgb3AsIGN1cnJlbnROb2RlT3JpZ2luKCksIGlu
Zm8sIEVkZ2UoY2hpbGQxKSwgRWRnZShjaGlsZDIpLApAQCAtNzk5LDcgKzc5OSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZShvcCwgY3VycmVudE5v
ZGVPcmlnaW4oKSwgaW5mbywgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJldHVy
biBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQotICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5
cGUgb3AsIE9wSW5mbyBpbmZvMSwgT3BJbmZvIGluZm8yLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2Rl
KiBjaGlsZDIgPSAwLCBOb2RlKiBjaGlsZDMgPSAwKQorICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9k
ZVR5cGUgb3AsIE9wSW5mbyBpbmZvMSwgT3BJbmZvIGluZm8yLCBOb2RlKiBjaGlsZDEgPSBudWxs
cHRyLCBOb2RlKiBjaGlsZDIgPSBudWxscHRyLCBOb2RlKiBjaGlsZDMgPSBudWxscHRyKQogICAg
IHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAogICAgICAgICAgICAg
b3AsIGN1cnJlbnROb2RlT3JpZ2luKCksIGluZm8xLCBpbmZvMiwKQEAgLTE4MTEsNyArMTgxMSw3
IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUs
IE9wZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFuCiAgICAgSW5saW5lVmFyaWFibGVEYXRhIGlubGlu
ZVZhcmlhYmxlRGF0YTsKICAgICBpbmxpbmVWYXJpYWJsZURhdGEuaW5saW5lQ2FsbEZyYW1lID0g
bV9pbmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgaW5saW5lVmFyaWFibGVE
YXRhLmFyZ3VtZW50UG9zaXRpb25TdGFydCA9IGFyZ3VtZW50UG9zaXRpb25TdGFydDsKLSAgICBp
bmxpbmVWYXJpYWJsZURhdGEuY2FsbGVlVmFyaWFibGUgPSAwOworICAgIGlubGluZVZhcmlhYmxl
RGF0YS5jYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQo
CiAgICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVD
YWxsCkBAIC01ODE4LDEyICs1ODE4LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxv
Y2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBvcGVyYW5kc1tBZGphY2VuY3lM
aXN0OjpTaXplXTsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5PcGVyYW5kcyA9IDA7CiAg
ICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsg
KytpKQotICAgICAgICAgICAgICAgIG9wZXJhbmRzW2ldID0gMDsKKyAgICAgICAgICAgICAgICBv
cGVyYW5kc1tpXSA9IG51bGxwdHI7CiAgICAgICAgICAgICBmb3IgKGludCBvcGVyYW5kSWR4ID0g
MDsgb3BlcmFuZElkeCA8IG51bU9wZXJhbmRzOyArK29wZXJhbmRJZHgpIHsKICAgICAgICAgICAg
ICAgICBpZiAoaW5kZXhJbk9wZXJhbmRzID09IG1heEFyZ3VtZW50cykgewogICAgICAgICAgICAg
ICAgICAgICBvcGVyYW5kc1swXSA9IGFkZFRvR3JhcGgoU3RyQ2F0LCBvcGVyYW5kc1swXSwgb3Bl
cmFuZHNbMV0sIG9wZXJhbmRzWzJdKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIG9wZXJhbmRzW2ldID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRz
W2ldID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbk9wZXJhbmRzID0gMTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkBAIC01OTc4LDcgKzU5NzgsNyBA
QCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAg
ICAgICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQx
OTIKICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChiYXNlKTsKICAgICAgICAgICAgICAg
ICBhZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hp
bGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCisgICAgICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0
b3JhZ2UuCiAgICAgICAgICAgICAgICAgTm9kZSogZ2V0QnlWYWwgPSBhZGRUb0dyYXBoKE5vZGU6
OlZhckFyZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJl
ZGljdGlvbikpOwogICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIEdldEJ5VmFs
IG11c3QgYmUgdHJlYXRlZCBhcyBpZiBpdCBjbG9iYmVycyBleGl0IHN0YXRlLCBzaW5jZSBGaXh1
cFBoYXNlIG1heSBtYWtlIGl0IGdlbmVyaWMuCiAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2Rl
Lm1fZHN0LCBnZXRCeVZhbCk7CkBAIC02OTQ3LDcgKzY5NDcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFy
c2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTkyCiAgICAgICAgICAg
ICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGluZGV4KTsKLSAgICAgICAgICAgICAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2Uu
CisgICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSBy
b29tIGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRC
eVZhbCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9k
ZS5hc1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIHNl
dChieXRlY29kZS5tX3ZhbHVlLCBnZXRCeVZhbCk7CiAgICAgICAgICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX2RvbmUsIGZhbHNlTm9kZSk7CkBAIC03MjQ0LDggKzcyNDQsOCBAQCB2b2lkIEJ5
dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICBS
ZXNvbHZlVHlwZSByZXNvbHZlVHlwZTsKICAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5m
bygwKTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMDsKLSAgICAgICAgICAg
IFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gMDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSog
c3RydWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9p
bnRzID0gbnVsbHB0cjsKICAgICAgICAgICAgIHVpbnRwdHJfdCBvcGVyYW5kOwogICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVT
dGFja1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwpAQCAtODA0OCw3ICs4MDQ4LDcgQEAg
Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAg
ICAgIEFTU0VSVCghcmV0dXJuVmFsdWUuaXNWYWxpZCgpKTsKICAgICAgICAgQVNTRVJUKCFpbmxp
bmVDYWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkpOwogCi0gICAgICAgIG1faW5saW5lQ2FsbEZyYW1l
ID0gMDsKKyAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSBudWxscHRyOwogCiAgICAgICAgIG1f
aWRlbnRpZmllclJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7
CiAgICAgICAgIG1fc3dpdGNoUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hK
dW1wVGFibGVzKCkpOwpAQCAtODIxOSw4ICs4MjE5LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
aGFuZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdElu
ZGUKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxk
KHByb3BlcnR5KTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwotICAgICAgICBhZGRW
YXJBcmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KLSAgICAg
ICAgYWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KKyAgICAgICAg
YWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3Jh
Z2UuCisgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBs
ZW5ndGguCiAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5
VmFsRGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8o
Ynl0ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRC
eVZhbCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJl
ciBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAg
ICB9CkBAIC04MzMxLDcgKzgzMzEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAg
ICAgVkVSQk9TRV9MT0coIlBhcnNpbmcgIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsKICAgICAKICAg
ICBJbmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRoaXMsIG1fY29k
ZUJsb2NrLCBtX3Byb2ZpbGVkQmxvY2ssIDAsIFZpcnR1YWxSZWdpc3RlcigpLCBWaXJ0dWFsUmVn
aXN0ZXIoKSwKKyAgICAgICAgdGhpcywgbV9jb2RlQmxvY2ssIG1fcHJvZmlsZWRCbG9jaywgbnVs
bHB0ciwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlcigpLAogICAgICAgICBtX2Nv
ZGVCbG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwsIG51bGxwdHIp
OwogICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCA0NTc5MGJm
ODAzOTE2NGExNGI3YzEyNWRhYTYxMWU2MDg5NzYzZDJlLi5iZWY2ODhmODJhMGVjYmJiZDQ0NDU3
ZjczNmMxMmU5ZDQ3NzI2NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBw
dWJsaWM6CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbC0+Y2hpbGQxKCktPmhhc0Nv
bnN0YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9
IHRlcm1pbmFsLT5jaGlsZDEoKS0+Y29uc3RhbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAg
IFRyaVN0YXRlIGZvdW5kID0gVHJpU3RhdGU6OkZhbHNlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgQmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAg
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgpOyBmb3VuZCA9PSBUcmlTdGF0
ZTo6RmFsc2UgJiYgaS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0g
ZGF0YS0+Y2FzZXNbaV0udmFsdWUuc3RyaWN0RXF1YWwodmFsdWUpOwogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChmb3VuZCA9PSBUcmlTdGF0ZTo6VHJ1ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCmluZGV4IDg3
M2ZhMDQzMDU4YTBmZDE4ZTRkZjEyMzNkZTZmOTY3NmEyYmRlMDAuLjg1YjE1ODNiYmYzNTU0YWY4
YTBkMjgyZjg3OWEyYmUxZjRmMDYyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcApAQCAtNDE0LDcgKzQxNCw3IEBAIHBy
aXZhdGU6CiAgICAgICAgIFZlY3RvcjxQaGlTdGFja0VudHJ5LCAxMjg+JiBwaGlTdGFjayA9IHBo
aVN0YWNrRm9yPG9wZXJhbmRLaW5kPigpOwogICAgICAgICAKICAgICAgICAgLy8gRW5zdXJlIHRo
YXQgYXR0ZW1wdHMgdG8gdXNlIHRoaXMgZmFpbCBpbnN0YW50bHkuCi0gICAgICAgIG1fYmxvY2sg
PSAwOworICAgICAgICBtX2Jsb2NrID0gbnVsbHB0cjsKICAgICAgICAgCiAgICAgICAgIHdoaWxl
ICghcGhpU3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBQaGlTdGFja0VudHJ5IGVudHJ5
ID0gcGhpU3RhY2subGFzdCgpOwpAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZSogbmV3UGhpID0gYWRkUGhpU2lsZW50bHko
YmxvY2ssIGN1cnJlbnRQaGktPm9yaWdpbiwgdmFyaWFibGUpOwogICAgICAgICAgICAgICAgIG5l
d1BoaS0+Y2hpbGRyZW4gPSBjdXJyZW50UGhpLT5jaGlsZHJlbjsKLSAgICAgICAgICAgICAgICBj
dXJyZW50UGhpLT5jaGlsZHJlbi5pbml0aWFsaXplKG5ld1BoaSwgdmFyaWFibGVJblByZXZpb3Vz
LCAwKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UGhpLT5jaGlsZHJlbi5pbml0aWFsaXplKG5l
d1BoaSwgdmFyaWFibGVJblByZXZpb3VzLCBudWxscHRyKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29t
cGlsYXRpb25LZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25L
ZXkuaAppbmRleCBmZDQwODViMjlkYTYyZGUwNThhOGMxODU2MTMwODIwNGQwMWQwMDFiLi41ODMy
ZjZjNjM3NWJmODJmMWQzN2ViZWEzZWRhNDY4NWFkYzEwNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5oCkBAIC0zOCwxMyArMzgsMTMgQEAgbmFt
ZXNwYWNlIERGRyB7CiBjbGFzcyBDb21waWxhdGlvbktleSB7CiBwdWJsaWM6CiAgICAgQ29tcGls
YXRpb25LZXkoKQotICAgICAgICA6IG1fcHJvZmlsZWRCbG9jaygwKQorICAgICAgICA6IG1fcHJv
ZmlsZWRCbG9jayhudWxscHRyKQogICAgICAgICAsIG1fbW9kZShJbnZhbGlkQ29tcGlsYXRpb25N
b2RlKQogICAgIHsKICAgICB9CiAgICAgCiAgICAgQ29tcGlsYXRpb25LZXkoV1RGOjpIYXNoVGFi
bGVEZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fcHJvZmlsZWRCbG9jaygwKQorICAgICAg
ICA6IG1fcHJvZmlsZWRCbG9jayhudWxscHRyKQogICAgICAgICAsIG1fbW9kZShERkdNb2RlKQog
ICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nv
bnN0YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29u
c3RhbnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDkwYTMzNjczODhlNGU2ODIxOTAzODFiNjM5NTk2
ZDQ5YjIwODliNmUuLjJkY2VlYmExMTA4OWRhMmU3MGQzN2NiZmU2YTUzYzlmNWY3MjNmMTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5n
UGhhc2UuY3BwCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBwcml2YXRlOgogICAgICAgICBub2RlLT5j
aGlsZDEoKS5zZXRVc2VLaW5kKEtub3duQ2VsbFVzZSk7CiAgICAgICAgIGNoaWxkRWRnZS5zZXRV
c2VLaW5kKEtub3duQ2VsbFVzZSk7CiAKLSAgICAgICAgVHJhbnNpdGlvbiogdHJhbnNpdGlvbiA9
IDA7CisgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBudWxscHRyOwogICAgICAgICBp
ZiAodmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKICAgICAg
ICAgICAgIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAogICAgICAgICAg
ICAgICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JU
cmFuc2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0
dXJlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNz
ZW1ibGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNw
cAppbmRleCA3MjdlYjQ4YWYxYjY4ZTk3MGRiNzA3N2ViZWEyZDBhZGZjYjNhMWU2Li40ODRmZGM0
MWIxNjY1NDlhMWNjMjExZjhiYjc1MTBiZTk0YWI1MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgVmVjdG9y
PERpc2Fzc2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExpc3QoTGlu
a0J1ZmZlciYgbGlua0J1ZmYKICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAg
Y29uc3QgY2hhciogZGlzYXNzZW1ibHlQcmVmaXggPSAiICAgICAgICAiOwogICAgIAotICAgIE5v
ZGUqIGxhc3ROb2RlID0gMDsKKyAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CiAgICAgTWFj
cm9Bc3NlbWJsZXI6OkxhYmVsIHByZXZpb3VzTGFiZWwgPSBtX3N0YXJ0T2ZDb2RlOwogICAgIGZv
ciAoc2l6ZV90IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3Mo
KTsgKytibG9ja0luZGV4KSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5i
bG9jayhibG9ja0luZGV4KTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBWZWN0b3I8RGlzYXNzZW1ibGVy
OjpEdW1wZWRPcD4gRGlzYXNzZW1ibGVyOjpjcmVhdGVEdW1wTGlzdChMaW5rQnVmZmVyJiBsaW5r
QnVmZgogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIG91dC5w
cmludChwcmVmaXgsICIoRW5kIE9mIE1haW4gUGF0aClcbiIpOwogICAgIGFwcGVuZChyZXN1bHQs
IG91dCwgcHJldmlvdXNPcmlnaW4pOwotICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGRpc2Fzc2Vt
Ymx5UHJlZml4LCBsaW5rQnVmZmVyLCBwcmV2aW91c0xhYmVsLCBtX2VuZE9mQ29kZSwgMCk7Cisg
ICAgZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHBy
ZXZpb3VzTGFiZWwsIG1fZW5kT2ZDb2RlLCBudWxscHRyKTsKICAgICBhcHBlbmQocmVzdWx0LCBv
dXQsIHByZXZpb3VzT3JpZ2luKTsKICAgICBtX2R1bXBDb250ZXh0LmR1bXAob3V0LCBwcmVmaXgp
OwogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oCmluZGV4IGRjYjJiOGMy
N2NiMzBkY2QwNzIzNzI1NzhkNGNkYTUyMTBlZGQwMjguLjg3NWFmYjUzZjcyYjVlZTQ2OTY0MTA0
NzQ2YzM2YjdlYzQ0MTdlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRG91YmxlRm9ybWF0U3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0RvdWJsZUZvcm1hdFN0YXRlLmgKQEAgLTg4LDcgKzg4LDcgQEAgaW5saW5lIGNvbnN0IGNoYXIq
IGRvdWJsZUZvcm1hdFN0YXRlVG9TdHJpbmcoRG91YmxlRm9ybWF0U3RhdGUgc3RhdGUpCiAgICAg
ICAgIHJldHVybiAiRm9yY2VWYWx1ZSI7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gfSAv
LyBuYW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRWRnZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgKaW5kZXgg
Yjc4ZTE4YmJiNTkzZGU5M2FjYmUyODY2N2M1Yzk1MTNlNDgyYmE2NS4uNGEyNTViMDYwODYxNzI3
ZmZjMjNiOTIzYWNlMDI0OTExMjAyNzMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdFZGdlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdl
LmgKQEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQWRqYWNlbmN5TGlzdDsKIAogY2xhc3MgRWRnZSB7
CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgRWRnZShOb2RlKiBub2RlID0gMCwgVXNlS2luZCB1c2VL
aW5kID0gVW50eXBlZFVzZSwgUHJvb2ZTdGF0dXMgcHJvb2ZTdGF0dXMgPSBOZWVkc0NoZWNrLCBL
aWxsU3RhdHVzIGtpbGxTdGF0dXMgPSBEb2VzTm90S2lsbCkKKyAgICBleHBsaWNpdCBFZGdlKE5v
ZGUqIG5vZGUgPSBudWxscHRyLCBVc2VLaW5kIHVzZUtpbmQgPSBVbnR5cGVkVXNlLCBQcm9vZlN0
YXR1cyBwcm9vZlN0YXR1cyA9IE5lZWRzQ2hlY2ssIEtpbGxTdGF0dXMga2lsbFN0YXR1cyA9IERv
ZXNOb3RLaWxsKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIDogbV9lbmNvZGVkV29yZCht
YWtlV29yZChub2RlLCB1c2VLaW5kLCBwcm9vZlN0YXR1cywga2lsbFN0YXR1cykpCiAjZWxzZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggODRkMzll
MjkwZWY1YTdmMzY2ZDg5ZTcwNGI1ODFmMDE2NDQyNTJiOS4uMGYwYWE0NGQ2ZDQ5OWQ4ZjRiM2Qw
NzQyNTQ3ZmE4NjRkNmRlNGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zp
eHVwUGhhc2UuY3BwCkBAIC0zODU3LDcgKzM4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBmaXhF
ZGdlPEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBub2RlLT5zZXRBcnJh
eU1vZGUoYXJyYXlNb2RlKTsKICAgICAgICAgICAgIAotICAgICAgICBOb2RlKiBzdG9yYWdlID0g
Y2hlY2tBcnJheShhcnJheU1vZGUsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgp
LCAwLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOworICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tB
cnJheShhcnJheU1vZGUsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBudWxs
cHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwogICAgICAgICBpZiAoIXN0b3JhZ2UpCiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICAKQEAgLTM4NjYsNyArMzg2Niw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgTm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2lu
LCBOb2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICB7Ci0gICAgICAgIE5vZGUq
IHN0b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgb3JpZ2luLCBjaGlsZCwgMCwgbGVuZ3Ro
TmVlZHNTdG9yYWdlKTsKKyAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlN
b2RlLCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwogICAgICAg
ICByZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgIG1faW5kZXhJ
bkJsb2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAogICAgICAgICAg
ICAgT3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVzZSks
IEVkZ2Uoc3RvcmFnZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGcm96ZW5WYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zyb3plblZh
bHVlLmNwcAppbmRleCAzOWMwOWFkYTU2MmU0YTZlMWVhZWVlODJhZGYzZWJkOTRlNmVmYmQ1Li4z
NjI1NTRhZDEyNjQzMTE4NTFiN2Y4MzkwYzA1Y2ViZjgyMGEwZGVlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zyb3plblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Zyb3plblZhbHVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lk
IEZyb3plblZhbHVlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0
KiBjb250ZXh0KSBjb25zdAogCiB2b2lkIEZyb3plblZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRl
eHQob3V0LCBudWxscHRyKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IGFkZjJiZGFl
NTM3MTQ2MTMzYWVjODI5ODM5ZTRjZTgzYzUyNWJmNWYuLjRmYWY5NDlhNzg2MGQyODQ4YmIxYWJh
MjM3MWE1NDljZjc4NWU1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR2VuZXJhdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dl
bmVyYXRpb25JbmZvLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFj
ZSBERkcgewogY2xhc3MgR2VuZXJhdGlvbkluZm8gewogcHVibGljOgogICAgIEdlbmVyYXRpb25J
bmZvKCkKLSAgICAgICAgOiBtX25vZGUoMCkKKyAgICAgICAgOiBtX25vZGUobnVsbHB0cikKICAg
ICAgICAgLCBtX3VzZUNvdW50KDApCiAgICAgICAgICwgbV9yZWdpc3RlckZvcm1hdChEYXRhRm9y
bWF0Tm9uZSkKICAgICAgICAgLCBtX3NwaWxsRm9ybWF0KERhdGFGb3JtYXROb25lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGVjMGYzYjRiNGI2NTAzZDMxMjE2YjZlMGVk
M2Q4ZWJjNjk3MTg3ZDIuLjU0ZmU1NTI5ZDU5OTA4MjY3ZDhmNjZhZWY1MTU1ZWViMDkzYWFkNTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTI2NywxNCArMjY3LDE0IEBA
IHB1YmxpYzoKICAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSk7CiAgICAgCiAgICAgLy8gQ29kZUJsb2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFk
ZGl0aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMp
LgotICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCksIER1bXBDb250
ZXh0KiA9IDApOworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCks
IER1bXBDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgYm9vbCB0ZXJtaW5hbHNBcmVWYWxpZCgp
OwogICAgIAogICAgIGVudW0gUGhpTm9kZUR1bXBNb2RlIHsgRHVtcExpdmVQaGlzT25seSwgRHVt
cEFsbFBoaXMgfTsKICAgICB2b2lkIGR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYsIGNvbnN0
IGNoYXIqIHByZWZpeCwgQmFzaWNCbG9jayosIFBoaU5vZGVEdW1wTW9kZSwgRHVtcENvbnRleHQq
KTsKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBFZGdlKTsKLSAgICB2b2lkIGR1bXAoUHJp
bnRTdHJlYW0mLCBjb25zdCBjaGFyKiBwcmVmaXgsIE5vZGUqLCBEdW1wQ29udGV4dCogPSAwKTsK
KyAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBwcmVmaXgsIE5vZGUqLCBE
dW1wQ29udGV4dCogPSBudWxscHRyKTsKICAgICBzdGF0aWMgaW50IGFtb3VudE9mTm9kZVdoaXRl
U3BhY2UoTm9kZSopOwogICAgIHN0YXRpYyB2b2lkIHByaW50Tm9kZVdoaXRlU3BhY2UoUHJpbnRT
dHJlYW0mLCBOb2RlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHSW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdJblBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggN2NjMzRhZTJkMGQ0ZTVmODQ4ZTY5NTcz
MDI0OTJjMTIxZDcxZmVkOC4uNWI0NDliZWZlMThiMTA3MDZhZTdhNzFkOGFkZThmMjk2Mjk4Mzlh
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJz
dHJhY3RTdGF0ZS5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0
YXRlOjplbmRCYXNpY0Jsb2NrKCkKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6cmVzZXQo
KQogewotICAgIG1fYmxvY2sgPSAwOworICAgIG1fYmxvY2sgPSBudWxscHRyOwogICAgIG1faXNW
YWxpZCA9IGZhbHNlOwogICAgIG1fYnJhbmNoRGlyZWN0aW9uID0gSW52YWxpZEJyYW5jaERpcmVj
dGlvbjsKICAgICBtX3N0cnVjdHVyZUNsb2JiZXJTdGF0ZSA9IFN0cnVjdHVyZXNBcmVXYXRjaGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJD
aGVja0NvbWJpbmluZ1BoYXNlLmNwcAppbmRleCA5MDE4ZmE5NGQzYmNkZjU1ODRjMDUyMzI3MDcy
ODg2NjI3N2RjMmJkLi4xY2E5YzUxNmVlOGE1OGVjOTNhMjAwMmE0ZTkyODVkNjYyNzQ3NWYzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJp
bmluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJD
aGVja0NvbWJpbmluZ1BoYXNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICBSYW5nZUtleSByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQubV9raW5kID0gQWRkaXRp
b247CiAgICAgICAgICAgICByZXN1bHQubV9zb3VyY2UgPSBlZGdlLnNhbml0aXplZCgpOwotICAg
ICAgICAgICAgcmVzdWx0Lm1fa2V5ID0gMDsKKyAgICAgICAgICAgIHJlc3VsdC5tX2tleSA9IG51
bGxwdHI7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAppbmRleCAwMWY0
MmY4YjRjNTRiYjg5YThiYTU1MzZkMTgyMmNkZDRlYzQyNTgzLi4yYzRjNjExZDhhOTQ5NDYyZWM1
M2I0NmMwNjA0YzhjYTk0ZjNhOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0xhenlKU1ZhbHVlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgTGF6eUpTVmFsdWU6OmR1
bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0
CiAKIHZvaWQgTGF6eUpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAg
ICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIp
OwogfQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZS5oCmluZGV4IGZmMzhjZWQ1ZWI1MDk3ZmRhYjYwYjZkNWJhNGIyMzdjN2U1MjQ3ODguLmQw
YWNhMDFkM2RlMDc2OTJlMmVjMjY5OTRiNmQxODU1ZmQxYzYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZS5oCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljX2Fzc2VydChzaXplb2Yo
RGF0YVZpZXdEYXRhKSA9PSBzaXplb2YodWludDY0X3QpLCAiIik7CiAKIHN0cnVjdCBCcmFuY2hU
YXJnZXQgewogICAgIEJyYW5jaFRhcmdldCgpCi0gICAgICAgIDogYmxvY2soMCkKKyAgICAgICAg
OiBibG9jayhudWxscHRyKQogICAgICAgICAsIGNvdW50KFBOYU4pCiAgICAgewogICAgIH0KQEAg
LTk5NCw3ICs5OTQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHJlc3VsdCA9IG1fb3BJbmZvLmFzPFZhcmlhYmxlQWNjZXNzRGF0YSo+KCk7CiAgICAgICAg
IGlmICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+ZmluZCgpOwogICAgIH0KICAgICAKQEAg
LTMzMDYsNyArMzMwNiw3IEBAIENTdHJpbmcgbm9kZUxpc3REdW1wKGNvbnN0IFQmIG5vZGVMaXN0
KQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotQ1N0cmluZyBub2RlTWFwRHVtcChjb25zdCBU
JiBub2RlTWFwLCBEdW1wQ29udGV4dCogY29udGV4dCA9IDApCitDU3RyaW5nIG5vZGVNYXBEdW1w
KGNvbnN0IFQmIG5vZGVNYXAsIER1bXBDb250ZXh0KiBjb250ZXh0ID0gbnVsbHB0cikKIHsKICAg
ICBWZWN0b3I8dHlwZW5hbWUgVDo6S2V5VHlwZT4ga2V5czsKICAgICBmb3IgKApAQCAtMzMyMiw3
ICszMzIyLDcgQEAgQ1N0cmluZyBub2RlTWFwRHVtcChjb25zdCBUJiBub2RlTWFwLCBEdW1wQ29u
dGV4dCogY29udGV4dCA9IDApCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1DU3RyaW5nIG5v
ZGVWYWx1ZVBhaXJMaXN0RHVtcChjb25zdCBUJiBub2RlVmFsdWVQYWlyTGlzdCwgRHVtcENvbnRl
eHQqIGNvbnRleHQgPSAwKQorQ1N0cmluZyBub2RlVmFsdWVQYWlyTGlzdER1bXAoY29uc3QgVCYg
bm9kZVZhbHVlUGFpckxpc3QsIER1bXBDb250ZXh0KiBjb250ZXh0ID0gbnVsbHB0cikKIHsKICAg
ICB1c2luZyBWID0gdHlwZW5hbWUgVDo6VmFsdWVUeXBlOwogICAgIFQgc29ydGVkTGlzdCA9IG5v
ZGVWYWx1ZVBhaXJMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPU1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAppbmRleCA2MDk2ODY2M2I2NGMy
YjY4NTRlNDYxNjFmOTQ5OTQ2NTdlMWFlZmQ1Li43ZGQ2YzUxZDAyMTI5OTdkOWZiYzdhOWE4NWQ2
NjVhYzkxMjlkOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09T
UkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcApAQCAtNTksNyArNTksNyBAQCBw
dWJsaWM6CiAgICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gbV9ncmFwaC5t
X3Byb2ZpbGVkQmxvY2s7CiAgICAgICAgIAotICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXQgPSAw
OworICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXQgPSBudWxscHRyOwogICAgICAgICBmb3IgKHVu
c2lnbmVkIGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7
CiAgICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRl
eCk7CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T1NSRXhpdC5jcHAKaW5kZXggMzI1ZjE3NDkxYjlmZDRkN2Q3OWMzN2NhNzA4M2RmYjU3YTgzMWRm
MC4uNmRmMzU2MjQ4NjY5NzZjZDcwNzQ2OTc5ZDQ1YmI5MGQ0MzE0MjFiNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJhbmRzOwogICAgIGNvZGVCbG9jay0+
aml0Q29kZSgpLT5kZmcoKS0+dmFyaWFibGVFdmVudFN0cmVhbS5yZWNvbnN0cnVjdChjb2RlQmxv
Y2ssIGV4aXQubV9jb2RlT3JpZ2luLCBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPm1pbmlm
aWVkREZHLCBleGl0Lm1fc3RyZWFtSW5kZXgsIG9wZXJhbmRzKTsKIAotICAgIFNwZWN1bGF0aW9u
UmVjb3ZlcnkqIHJlY292ZXJ5ID0gMDsKKyAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVy
eSA9IG51bGxwdHI7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4ICE9IFVJTlRfTUFYKQog
ICAgICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPnNwZWN1bGF0
aW9uUmVjb3ZlcnlbZXhpdC5tX3JlY292ZXJ5SW5kZXhdOwogCkBAIC00NTcsNyArNDU3LDcgQEAg
dm9pZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25z
dCBPU1JFeGl0JiBleGl0LCBjb25zdAogICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZyb20gR1BScyBp
bnRvIHRoZSBzY3JhdGNoIGJ1ZmZlci4KIAogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZm
ZXIgPSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb3Bl
cmFuZHMuc2l6ZSgpKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaCA9IHNjcmF0Y2hCdWZm
ZXIgPyBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZm
ZXIoKSkgOiAwOworICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/
IHN0YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigp
KSA6IG51bGxwdHI7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFu
ZHMuc2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292
ZXJ5ID0gb3BlcmFuZHNbaW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3Bl
cmF0aW9ucy5jcHAKaW5kZXggN2IzZTE5NzIyNmU1YWE3ZDZiZjZjOGY0ZTdkNWQ2YWRjMDQ4Nzg5
ZC4uYzE2ZjFmYzM2MzAwYTFjMjQ0M2MyMjBhNjM1ZTI5MWIyMzQyZTMzNCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAg
Y2hhciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFZNJiB2bSwgU3RydWN0dXJlKiBzdHIKIAogICAgIGlmIChzaXplIDwgMCkgewogICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiX3MpKTsKLSAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKICAgICBpZiAodmVj
dG9yKQpAQCAtMjE4NSw3ICsyMTg1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25B
bGxvY2F0ZVNpbXBsZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoVk0KICAgICBK
SVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7
CiAKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCi0gICAgICAgIEJ1dHRlcmZs
eTo6Y3JlYXRlVW5pbml0aWFsaXplZCh2bSwgMCwgMCwgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5
LCBmYWxzZSwgMCkpOworICAgICAgICBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0s
IG51bGxwdHIsIDAsIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSwgZmFsc2UsIDApKTsKIH0KIAog
Y2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVNpbXBsZVByb3BlcnR5U3RvcmFn
ZShWTSogdm1Qb2ludGVyLCBzaXplX3QgbmV3U2l6ZSkKQEAgLTIxOTUsNyArMjE5NSw3IEBAIGNo
YXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVTaW1wbGVQcm9wZXJ0eVN0b3JhZ2Uo
Vk0qIHZtUG9pbnRlciwgc2l6ZV90CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVU
cmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nh
c3Q8Y2hhcio+KAotICAgICAgICBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIDAs
IDAsIG5ld1NpemUsIGZhbHNlLCAwKSk7CisgICAgICAgIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0
aWFsaXplZCh2bSwgbnVsbHB0ciwgMCwgbmV3U2l6ZSwgZmFsc2UsIDApKTsKIH0KIAogY2hhciog
SklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZUNvbXBsZXhQcm9wZXJ0eVN0b3JhZ2VXaXRo
SW5pdGlhbENhcGFjaXR5KFZNKiB2bVBvaW50ZXIsIEpTT2JqZWN0KiBvYmplY3QpCkBAIC0yMjI2
LDcgKzIyMjYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZUludDMyKFZN
KiB2bVBvaW50ZXIsIEpTQ2VsbCogY2VsbCkKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxG
cmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgaWYgKCFjZWxsLT5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ICAgICBhdXRvKiByZXN1bHQgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihhc09iamVjdChjZWxs
KS0+dHJ5TWFrZVdyaXRhYmxlSW50MzIodm0pLmRhdGEoKSk7CiAgICAgQVNTRVJUKCghaXNDb3B5
T25Xcml0ZShhc09iamVjdChjZWxsKS0+aW5kZXhpbmdNb2RlKCkpICYmIGhhc0ludDMyKGNlbGwt
PmluZGV4aW5nTW9kZSgpKSkgfHwgIXJlc3VsdCk7CkBAIC0yMjQwLDcgKzIyNDAsNyBAQCBjaGFy
KiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZURvdWJsZShWTSogdm1Qb2ludGVyLCBKU0Nl
bGwqIGNlbGwpCiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2Vy
KHZtLCBjYWxsRnJhbWUpOwogICAgIAogICAgIGlmICghY2VsbC0+aXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byogcmVzdWx0
ID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYXNPYmplY3QoY2VsbCktPnRyeU1ha2VXcml0YWJs
ZURvdWJsZSh2bSkuZGF0YSgpKTsKICAgICBBU1NFUlQoKCFpc0NvcHlPbldyaXRlKGFzT2JqZWN0
KGNlbGwpLT5pbmRleGluZ01vZGUoKSkgJiYgaGFzRG91YmxlKGNlbGwtPmluZGV4aW5nTW9kZSgp
KSkgfHwgIXJlc3VsdCk7CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9O
IG9wZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXMoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICAKICAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBhdXRvKiByZXN1bHQgPSByZWlu
dGVycHJldF9jYXN0PGNoYXIqPihhc09iamVjdChjZWxsKS0+dHJ5TWFrZVdyaXRhYmxlQ29udGln
dW91cyh2bSkuZGF0YSgpKTsKICAgICBBU1NFUlQoKCFpc0NvcHlPbldyaXRlKGFzT2JqZWN0KGNl
bGwpLT5pbmRleGluZ01vZGUoKSkgJiYgaGFzQ29udGlndW91cyhjZWxsLT5pbmRleGluZ01vZGUo
KSkpIHx8ICFyZXN1bHQpOwpAQCAtMjI2OCw3ICsyMjY4LDcgQEAgY2hhciogSklUX09QRVJBVElP
TiBvcGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxs
KQogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2Fs
bEZyYW1lKTsKICAgICAKICAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8qIHJlc3VsdCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8Y2hhcio+KGFzT2JqZWN0KGNlbGwpLT5lbnN1cmVBcnJheVN0b3JhZ2Uodm0p
KTsKICAgICBBU1NFUlQoKCFpc0NvcHlPbldyaXRlKGFzT2JqZWN0KGNlbGwpLT5pbmRleGluZ01v
ZGUoKSkgJiYgaGFzQW55QXJyYXlTdG9yYWdlKGNlbGwtPmluZGV4aW5nTW9kZSgpKSkgfHwgIXJl
c3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJl
Z2lzdGVyU2F2ZVBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVn
aXN0ZXJTYXZlUGxhbi5oCmluZGV4IDgwMGI1NzMyNDlmNGFkYTJlYTUwNmZlNDA3MDI3NWFkYjcw
YWQ0OTMuLmZhYjBmODdlYzFkOWI1ZGEwNTg3NGJiMTE0MWQ5MzE0ZGU1YTBhNWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxh
bi5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3NwaWxsQWN0aW9uKERv
Tm90aGluZ0ZvclNwaWxsKQogICAgICAgICAsIG1fZmlsbEFjdGlvbihEb05vdGhpbmdGb3JGaWxs
KQogICAgICAgICAsIG1fcmVnaXN0ZXIoLTEpCi0gICAgICAgICwgbV9ub2RlKDApCisgICAgICAg
ICwgbV9ub2RlKG51bGxwdHIpCiAgICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZmEyOGYzOTMwZDRkODJl
ZTY4Y2QwMjg3MGZjMTY4N2QwMmMyNTkyYy4uODFjZWVmY2Q1MGJiMWNiMDRjMmY3NDMwOTA4MmUy
ZTNiYWFjZDAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBf
SURFTlRJRklFUihTcGVjdWxhdGl2ZUpJVCk7CiBTcGVjdWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVK
SVQoSklUQ29tcGlsZXImIGppdCkKICAgICA6IG1faml0KGppdCkKICAgICAsIG1fZ3JhcGgobV9q
aXQuZ3JhcGgoKSkKLSAgICAsIG1fY3VycmVudE5vZGUoMCkKKyAgICAsIG1fY3VycmVudE5vZGUo
bnVsbHB0cikKICAgICAsIG1fbGFzdEdlbmVyYXRlZE5vZGUoTGFzdE5vZGVUeXBlKQogICAgICwg
bV9pbmRleEluQmxvY2soMCkKICAgICAsIG1fZ2VuZXJhdGlvbkluZm8obV9qaXQuZ3JhcGgoKS5m
cmFtZVJlZ2lzdGVyQ291bnQoKSkKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjaGVja0FycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5
U3RvcmFnZTogewogICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhi
YXNlUmVnLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSksIHRlbXBHUFIudmFs
dWUoKSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBCYWRJbmRleGlu
Z1R5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCAwLAorICAgICAgICAg
ICAgQmFkSW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwg
bnVsbHB0ciwKICAgICAgICAgICAgIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQ
Ui52YWx1ZSgpLCBub2RlLT5hcnJheU1vZGUoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CkBA
IC0xMjYzLDcgKzEyNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIq
IGxhYmVsKQogfQogCiBHUFJUZW1wb3Jhcnk6OkdQUlRlbXBvcmFyeSgpCi0gICAgOiBtX2ppdCgw
KQorICAgIDogbV9qaXQobnVsbHB0cikKICAgICAsIG1fZ3ByKEludmFsaWRHUFJSZWcpCiB7CiB9
CkBAIC0xMzY5LDcgKzEzNjksNyBAQCB2b2lkIEdQUlRlbXBvcmFyeTo6YWRvcHQoR1BSVGVtcG9y
YXJ5JiBvdGhlcikKICAgICBBU1NFUlQob3RoZXIubV9ncHIgIT0gSW52YWxpZEdQUlJlZyk7CiAg
ICAgbV9qaXQgPSBvdGhlci5tX2ppdDsKICAgICBtX2dwciA9IG90aGVyLm1fZ3ByOwotICAgIG90
aGVyLm1faml0ID0gMDsKKyAgICBvdGhlci5tX2ppdCA9IG51bGxwdHI7CiAgICAgb3RoZXIubV9n
cHIgPSBJbnZhbGlkR1BSUmVnOwogfQogCkBAIC0yMTQzLDcgKzIxNDMsNyBAQCB2b2lkIFNwZWN1
bGF0aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwoTm9kZSogbm9kZSwgU3BlY3VsYXRlQ2Vs
bE9wZXJhbmQmIGJhcwogICAgIAogICAgIGlmIChhcnJheU1vZGUuaXNJbkJvdW5kcygpKSB7CiAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBPdXRPZkJvdW5kcywgSlNWYWx1
ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgIE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JF
cXVhbCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1
dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNz
ZW1ibGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3Jh
Z2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtMjE1MSw3ICsy
MTUxLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUq
IG5vZGUsIFNwZWN1bGF0ZUNlbGxPcGVyYW5kJiBiYXMKICAgICAgICAgc2xvd0Nhc2UgPSBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rv
ckxlbmd0aCgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWFycmF5TW9kZS5pc091dE9mQm91
bmRzKCkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVl
UmVncygpLCAwLCBzbG93Q2FzZSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9m
Qm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBzbG93Q2FzZSk7CiAgICAgICAgIAogICAg
ICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHByb3BlcnR5UmVnLCB0ZW1wb3JhcnlS
ZWcpOwogICAgICAgICBtX2ppdC5zdG9yZTMyKHRlbXBvcmFyeVJlZywgTWFjcm9Bc3NlbWJsZXI6
OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7
CkBAIC0yMTk3LDcgKzIxOTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hh
ckNvZGVBdChOb2RlKiBub2RlKQogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RyaW5nUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaFJlZyk7
CiAgICAgCiAgICAgLy8gdW5zaWduZWQgY29tcGFyaXNvbiBzbyB3ZSBjYW4gZmlsdGVyIG91dCBu
ZWdhdGl2ZSBpbmRpY2VzIGFuZCBpbmRpY2VzIHRoYXQgYXJlIHRvbyBsYXJnZQotICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4UmVnLCBDQ2FsbEhlbHBlcnM6OkFk
ZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpKSk7Cisg
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhSZWcsIEND
YWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlP
ZmZzZXQoKSkpKTsKIAogICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlciBpbnRvIHNjcmF0Y2hSZWcK
ICAgICBKSVRDb21waWxlcjo6SnVtcCBpczE2Qml0ID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3Jv
QXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJp
bmdJbXBsOjpmbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhC
aXQoKSkpOwpAQCAtMjI0Myw3ICsyMjQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUdldEJ5VmFsT25TdHJpbmcoTm9kZSogbm9kZSkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFi
b3ZlT3JFcXVhbCwgcHJvcGVydHlSZWcsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHNjcmF0Y2hSZWcsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSk7CiAgICAgaWYg
KG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwgb3V0T2ZCb3VuZHMpOworICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBvdXRP
ZkJvdW5kcyk7CiAKICAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIgaW50byBzY3JhdGNoUmVnCiAg
ICAgSklUQ29tcGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fz
c2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5n
SW1wbDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0
KCkpKTsKQEAgLTIzNjUsNyArMjM2NSw3IEBAIEdlbmVyYXRlZE9wZXJhbmRUeXBlIFNwZWN1bGF0
aXZlSklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqIG5vZGUpCiAKICAgICBj
YXNlIERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgICAg
IHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygp
LCAwKTsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIG51bGxwdHIpOwogICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFu
ZFR5cGVVbmtub3duOwogCiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZToKQEAgLTI1OTQsNyArMjU5
NCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlKiBu
b2RlKQogCiAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAKLSAgICBz
cGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gz
MihNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKDAp
KSk7CisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0
ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZXN1bHQuZ3ByKCks
IFRydXN0ZWRJbW0zMigwKSkpOwogCiAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0Lmdwcigp
LCBub2RlLCBvcDEuZm9ybWF0KCkpOwogfQpAQCAtMjYxNCw3ICsyNjE0LDcgQEAgdm9pZCBTcGVj
dWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MzIoTm9kZSogbm9kZSkKICAgICBtX2ppdC5i
cmFuY2hDb252ZXJ0RG91YmxlVG9JbnQzMigKICAgICAgICAgdmFsdWVGUFIsIHJlc3VsdEdQUiwg
ZmFpbHVyZUNhc2VzLCBzY3JhdGNoRlBSLAogICAgICAgICBzaG91bGRDaGVja05lZ2F0aXZlWmVy
byhub2RlLT5hcml0aE1vZGUoKSkpOwotICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIDAsIGZhaWx1cmVDYXNlcyk7CisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVy
ZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgZmFpbHVyZUNhc2VzKTsKIAogICAgIHN0cmlj
dEludDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0yOTA3LDcgKzI5MDcsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUs
IEdQUlJlZyBiYXNlR1BSLCBHUFJSZQogICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1w
Rm9yVHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKICAgICBp
ZiAoIWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsIGp1bXApOworICAgIHNwZWN1bGF0aW9uQ2hl
Y2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwogfQogCiBKSVRD
b21waWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlJc05ldXRlcmVk
SWZPdXRPZkJvdW5kcyhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZSwgSklUQ29tcGlsZXI6Okp1bXAg
b3V0T2ZCb3VuZHMpCkBAIC0yOTE2LDcgKzI5MTYsNyBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVj
dWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlJc05ldXRlcmVkSWZPdXRPZkJvdW5kcyhOb2Rl
KgogICAgIGlmIChvdXRPZkJvdW5kcy5pc1NldCgpKSB7CiAgICAgICAgIGRvbmUgPSBtX2ppdC5q
dW1wKCk7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpCi0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlU291cmNlKCksIDAs
IG91dE9mQm91bmRzKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMs
IEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgb3V0T2ZCb3VuZHMpOwogICAgICAgICBlbHNlIHsK
ICAgICAgICAgICAgIG91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKIApAQCAtMjk3OSw3ICsyOTc5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQoTm9k
ZSogbm9kZSwgR1BSUmVnIHJlc3VsdFJlZywgVHkKICAgICAKICAgICBBU1NFUlQoZWxlbWVudFNp
emUodHlwZSkgPT0gNCAmJiAhaXNTaWduZWQodHlwZSkpOwogICAgIGlmIChub2RlLT5zaG91bGRT
cGVjdWxhdGVJbnQzMigpICYmIGNhblNwZWN1bGF0ZSkgewotICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2Vt
Ymxlcjo6TGVzc1RoYW4sIHJlc3VsdFJlZywgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgcmVzdWx0UmVnLCBUcnVzdGVkSW1tMzIo
MCkpKTsKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KQEAgLTMwNDIsNyArMzA0Miw3IEBAIGJvb2wgU3BlY3VsYXRpdmVK
SVQ6OmdldEludFR5cGVkQXJyYXlTdG9yZU9wZXJhbmQoCiAgICAgaWYgKGlzQXBwcm9wcmlhdGVD
b25zdGFudCkgewogICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZVVzZS0+YXNKU1ZhbHVl
KCk7CiAgICAgICAgIGlmICghanNWYWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICB0ZXJt
aW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7
CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIH0KICAgICAgICAgZG91YmxlIGQgPSBqc1ZhbHVlLmFzTnVtYmVyKCk7CkBAIC0zNDA3LDcg
KzM0MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdz
KE5vZGUqIG5vZGUpCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSB3b3JrcyBmb3IgY2hlY2tpbmcg
aWYgYSBzaW5nbGUgYml0IGlzIHNldC4gSWYgd2Ugd2FudCB0byBjaGVjayBtb3JlCiAgICAgLy8g
dGhhbiBvbmUgYml0IGF0IG9uY2UsIHdlJ2xsIG5lZWQgdG8gZml4IHRoaXM6CiAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTcwNQotICAgIHNwZWN1bGF0
aW9uQ2hlY2soQmFkVHlwZUluZm9GbGFncywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNo
VGVzdDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VH
UFIsIEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihub2RlLT50eXBlSW5mb09wZXJhbmQoKSkpKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNr
KEJhZFR5cGVJbmZvRmxhZ3MsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFRl
c3Q4KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BS
LCBKU0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVk
SW1tMzIobm9kZS0+dHlwZUluZm9PcGVyYW5kKCkpKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsK
IH0KQEAgLTQwODgsNyArNDA4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1
ZUFkZChOb2RlKiBub2RlKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0g
bV9qaXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRl
bXBHUFIsIHJlc3VsdEdQUik7CiAKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCaWdJbnQzMk92
ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hl
Y2soQmlnSW50MzJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgY2hlY2spOwogCiAg
ICAgICAgIG1faml0LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CiAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTQxOTUsNyArNDE5NSw3IEBAIHZvaWQgU3BlY3VsYXRp
dmVKSVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogCiAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJm
bG93LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CiAKLSAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhCaWdJbnQzMk92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soQmlnSW50MzJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVs
bHB0ciwgY2hlY2spOwogCiAgICAgICAgIG1faml0LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CiAg
ICAgICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTQ1NTQsMTAgKzQ1NTQs
MTAgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQWRkKE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRk
MzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBncHIxLCBJbW0zMihpbW0yKSwgZ3ByUmVzdWx0
KTsKICAgICAgICAgICAgIGlmIChncHIxID09IGdwclJlc3VsdCkgewotICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrLAorICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51
bGxwdHIsIGNoZWNrLAogICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KFNw
ZWN1bGF0aXZlQWRkSW1tZWRpYXRlLCBncHIxLCBpbW0yKSk7CiAgICAgICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygp
LCAwLCBjaGVjayk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgY2hlY2spOwogCiAgICAgICAgICAgICBzdHJpY3RJbnQz
MlJlc3VsdChncHJSZXN1bHQsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDU3Nywx
MyArNDU3NywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhBZGQoTm9kZSog
bm9kZSkKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJh
bmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBncHIxLCBncHIyLCBncHJSZXN1bHQp
OwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGdwcjEgPT0gZ3ByUmVzdWx0ICYm
IGdwcjIgPT0gZ3ByUmVzdWx0KQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrLCBTcGVjdWxhdGlvblJlY292ZXJ5KFNwZWN1
bGF0aXZlQWRkU2VsZiwgZ3ByUmVzdWx0LCBncHIyKSk7CisgICAgICAgICAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgY2hlY2ssIFNwZWN1
bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGRTZWxmLCBncHJSZXN1bHQsIGdwcjIpKTsKICAg
ICAgICAgICAgIGVsc2UgaWYgKGdwcjEgPT0gZ3ByUmVzdWx0KQotICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrLCBTcGVjdWxh
dGlvblJlY292ZXJ5KFNwZWN1bGF0aXZlQWRkLCBncHJSZXN1bHQsIGdwcjIpKTsKKyAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRy
LCBjaGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVzdWx0LCBn
cHIyKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChncHIyID09IGdwclJlc3VsdCkKLSAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVj
aywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVzdWx0LCBncHIxKSk7
CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3Mo
KSwgbnVsbHB0ciwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGQsIGdw
clJlc3VsdCwgZ3ByMSkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKyAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRy
LCBjaGVjayk7CiAgICAgICAgIH0KIAogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChncHJSZXN1
bHQsIG5vZGUpOwpAQCAtNDYxMiw3ICs0NjEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoQWRkKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhp
cyk7CiAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgSW50NTJPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgMCwKKyAgICAgICAgICAgIEludDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxw
dHIsCiAgICAgICAgICAgICBtX2ppdC5icmFuY2hBZGQ2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZs
b3csIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CiAgICAgICAgIGludDUyUmVzdWx0KHJlc3Vs
dC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ2NTEsNyArNDY1MSw3IEBAIHZv
aWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aEFicyhOb2RlKiBub2RlKQogICAgICAgICBt
X2ppdC5hZGQzMihzY3JhdGNoLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC54
b3IzMihzY3JhdGNoLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBpZiAoc2hvdWxkQ2hl
Y2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9B
c3NlbWJsZXI6OlNpZ25lZCwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0
MzIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwgcmVzdWx0LmdwcigpKSk7CiAgICAgICAgIHN0cmlj
dEludDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0K
QEAgLTQ3NDAsNyArNDc0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1
YihOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKEltbTMyKGltbTIpLCBy
ZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBHUFJU
ZW1wb3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2Vt
Ymxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSwgc2Ny
YXRjaC5ncHIoKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3cs
IEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVy
OjpPdmVyZmxvdywgb3AxLmdwcigpLCBJbW0zMihpbW0yKSwgcmVzdWx0LmdwcigpLCBzY3JhdGNo
LmdwcigpKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHN0cmljdEludDMyUmVzdWx0
KHJlc3VsdC5ncHIoKSwgbm9kZSk7CkBAIC00NzU2LDcgKzQ3NTYsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlQXJpdGhTdWIoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmICghc2hv
dWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbV9q
aXQuc3ViMzIob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAs
IG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdwcigpLCBy
ZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93
LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxl
cjo6T3ZlcmZsb3csIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CiAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNDc3MCw3ICs0NzcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZUFyaXRoU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9w
MS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG1faml0LnN1YjMyKG9wMi5ncHIo
KSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hTdWIzMihNYWNy
b0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkp
KTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCks
IG51bGxwdHIsIG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3Ax
LmdwcigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOwogCiAgICAgICAgIHN0cmljdEludDMy
UmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ3OTksNyAr
NDc5OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlKiBub2Rl
KQogICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBtX2ppdC5tb3Zl
KG9wMS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAg
ICAgICAgICAgIEludDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBJ
bnQ1Mk92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLAogICAgICAgICAgICAgbV9qaXQu
YnJhbmNoU3ViNjQoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5n
cHIoKSkpOwogICAgICAgICBpbnQ1MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAg
ICByZXR1cm47CkBAIC00ODY5LDkgKzQ4NjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhOZWdhdGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFzaG91bGRDaGVja092ZXJm
bG93KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgIG1faml0Lm5lZzMyKHJlc3VsdC5n
cHIoKSk7CiAgICAgICAgIGVsc2UgaWYgKCFzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5h
cml0aE1vZGUoKSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1Zh
bHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hOZWczMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3cs
IHJlc3VsdC5ncHIoKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoTmVnMzIoTWFjcm9Bc3NlbWJsZXI6
Ok92ZXJmbG93LCByZXN1bHQuZ3ByKCkpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hU
ZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKDB4
N2ZmZmZmZmYpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1Zh
bHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olpl
cm8sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKSk7CiAgICAgICAgICAg
ICBtX2ppdC5uZWczMihyZXN1bHQuZ3ByKCkpOwogICAgICAgICB9CiAKQEAgLTQ4OTIsNyArNDg5
Miw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZShOb2RlKiBub2Rl
KQogICAgICAgICAgICAgbV9qaXQubmVnNjQocmVzdWx0R1BSKTsKICAgICAgICAgICAgIGlmIChz
aG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkpIHsKICAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8s
IEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNW
YWx1ZVJlZ3MoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVz
dDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgb3AxLmZvcm1hdCgpKTsKQEAg
LTQ5MDUsMTEgKzQ5MDUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVn
YXRlKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7
CiAgICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAotICAgICAgICAgICAgSW50NTJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwK
KyAgICAgICAgICAgIEludDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAg
ICAgICAgICBtX2ppdC5icmFuY2hOZWc2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3Vs
dEdQUikpOwogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhN
b2RlKCkpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAg
IE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBOZWdhdGl2
ZVplcm8sIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJh
bmNoVGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKICAgICAgICAgfQog
ICAgICAgICBpbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNTA0Niw3ICs1MDQ2LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hNdWwzMihNYWNy
b0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKIAot
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKEJpZ0ludDMyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCks
IDAsIGNoZWNrKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCaWdJbnQzMk92ZXJmbG93LCBK
U1ZhbHVlUmVncygpLCBudWxscHRyLCBjaGVjayk7CiAKICAgICAgICAgbV9qaXQuYm94QmlnSW50
MzIocmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpA
QCAtNTEyNSw3ICs1MTI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVs
KE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBpZiAoIXNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+
YXJpdGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG1faml0Lm11bDMyKEltbTMyKGltbSksIG9w
MUdQUiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwKICAg
ICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJm
bG93LCBvcDFHUFIsIEltbTMyKGltbSksIHJlc3VsdEdQUikpOwogICAgICAgICAgICAgfQogCkBA
IC01MTM0LDEyICs1MTM0LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11
bChOb2RlKiBub2RlKQogICAgICAgICAgICAgLy8gLXplcm8tb3AxICogbmVnYXRpdmUgY29uc3Rh
bnQuCiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhN
b2RlKCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbW0pCi0gICAgICAgICAgICAgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5i
cmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwgb3AxR1BSKSk7CisgICAgICAgICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCBu
dWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwgb3AxR1BS
KSk7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW1tIDwgMCkgewogICAgICAgICAgICAgICAg
ICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJl
Z3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRH
UFIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVa
ZXJvLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIHJlc3VsdEdQUikpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVybywgSlNWYWx1
ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFH
UFIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVa
ZXJvLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3Nl
bWJsZXI6Olplcm8sIG9wMUdQUikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IApAQCAtNTE2MCwxNSArNTE2MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJp
dGhNdWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm11bDMyKHJlZzEsIHJlZzIsIHJl
c3VsdC5ncHIoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
aygKLSAgICAgICAgICAgICAgICBPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAg
ICAgICAgICBPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAg
ICBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlZzEsIHJlZzIs
IHJlc3VsdC5ncHIoKSkpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgLy8gQ2hl
Y2sgZm9yIG5lZ2F0aXZlIHplcm8sIGlmIHRoZSB1c2VycyBvZiB0aGlzIG5vZGUgY2FyZSBhYm91
dCBzdWNoIHRoaW5ncy4KICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUt
PmFyaXRoTW9kZSgpKSkgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmVzdWx0
Tm9uWmVybyA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgcmVz
dWx0LmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBK
U1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25l
ZCwgcmVnMSkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZVplcm8sIEpT
VmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6U2lnbmVk
LCByZWcyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVybywgSlNW
YWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpT
aWduZWQsIHJlZzEpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJv
LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJs
ZXI6OlNpZ25lZCwgcmVnMikpOwogICAgICAgICAgICAgcmVzdWx0Tm9uWmVyby5saW5rKCZtX2pp
dCk7CiAgICAgICAgIH0KIApAQCAtNTIxNCwxNyArNTIxNCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhNdWwoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIG1faml0
Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAg
ICAgICAgICAgSW50NTJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgIElu
dDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAgICAgICBtX2ppdC5i
cmFuY2hNdWw2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMkdQUiwgcmVzdWx0R1BSKSk7
CiAgICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJp
dGhNb2RlKCkpKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByZXN1bHROb25a
ZXJvID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpOb25aZXJvLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAg
ICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAg
ICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLAogICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AxR1BSLCBUcnVz
dGVkSW1tMzIoMCkpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAg
ICAgICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgIE5l
Z2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICBtX2pp
dC5icmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTMy
KDApKSk7CiAgICAgICAgICAgICByZXN1bHROb25aZXJvLmxpbmsoJm1faml0KTsKICAgICAgICAg
fQpAQCAtNTQyMCw4ICs1NDIwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRo
RGl2KE5vZGUqIG5vZGUpCiAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25l
OwogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpIHsK
LSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAs
IG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgb3AyR1BSKSk7Ci0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5i
cmFuY2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMUdQUiwgVHJ1c3RlZEltbTMyKC0yMTQ3NDgz
NjQ3LTEpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
UmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIG9w
MkdQUikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIs
IFRydXN0ZWRJbW0zMigtMjE0NzQ4MzY0Ny0xKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSB3aGVyZSB3ZSBjb252ZXJ0IHRoZSByZXN1bHQgdG8g
YW4gaW50IGFmdGVyIHdlJ3JlIGRvbmUsIGFuZCB3ZQogICAgICAgICAgICAgLy8gYWxyZWFkeSBr
bm93IHRoYXQgdGhlIGRlbm9taW5hdG9yIGlzIGVpdGhlciAtMSBvciAwLiBTbywgaWYgdGhlIGRl
bm9taW5hdG9yIGlzCkBAIC01NDQ5LDcgKzU0NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlQXJpdGhEaXYoTm9kZSogbm9kZSkKICAgICAgICAgLy8gdG8gcHJvZHVjZSBuZWdhdGl2
ZSB6ZXJvLgogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhN
b2RlKCkpKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBudW1lcmF0b3JOb25a
ZXJvID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIp
OwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdz
KCksIDAsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AyR1BSLCBU
cnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVa
ZXJvLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CiAgICAgICAgICAgICBudW1l
cmF0b3JOb25aZXJvLmxpbmsoJm1faml0KTsKICAgICAgICAgfQogICAgIApAQCAtNTQ2OCw3ICs1
NDY4LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KE5vZGUqIG5vZGUp
CiAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlcmUgd2FzIG5vIHJlbWFpbmRlci4gSWYgdGhlcmUg
aGFkIGJlZW4sIHRoZW4gd2UnZCBiZSBvYmxpZ2F0ZWQgdG8KICAgICAgICAgLy8gcHJvZHVjZSBh
IGRvdWJsZSByZXN1bHQgaW5zdGVhZC4KICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3co
bm9kZS0+YXJpdGhNb2RlKCkpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxv
dywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpOb25a
ZXJvLCBlZHguZ3ByKCkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3cs
IEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6
Tm9uWmVybywgZWR4LmdwcigpKSk7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJm1faml0
KTsKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQoZWF4LmdwcigpLCBub2RlKTsKQEAgLTU2NDgs
NyArNTY0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZChOb2RlKiBu
b2RlKQogICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5h
cml0aE1vZGUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSdyZSBu
b3QgYWJvdXQgdG8gY3JlYXRlIG5lZ2F0aXZlIHplcm8uCiAgICAgICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpKdW1wIG51bWVyYXRvclBvc2l0aXZlID0gbV9qaXQuYnJhbmNoMzIoSklUQ29t
cGlsZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgZGl2aWRlbmRHUFIsIFRydXN0ZWRJbW0zMigwKSk7
Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1Zh
bHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIHJlc3Vs
dEdQUikpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVy
bywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVy
OjpaZXJvLCByZXN1bHRHUFIpKTsKICAgICAgICAgICAgICAgICAgICAgbnVtZXJhdG9yUG9zaXRp
dmUubGluaygmbV9qaXQpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtNTY4NCw3ICs1Njg0LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZGUqIG5vZGUpCiAgICAg
ICAgICAgICAgICAgbV9qaXQueDg2RGl2MzIoc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAg
aWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSkgewogICAgICAg
ICAgICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBudW1lcmF0b3JQb3NpdGl2ZSA9IG1faml0
LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIG9wMVNhdmVHUFIsIFRy
dXN0ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6
WmVybywgZWR4LmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFRlc3QzMihKSVRD
b21waWxlcjo6WmVybywgZWR4LmdwcigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG51bWVyYXRv
clBvc2l0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAK
QEAgLTU3NDAsOCArNTc0MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1v
ZChOb2RlKiBub2RlKQogICAgICAgICAvLyBGSVhNRTogLTJeMzEgLyAtMSB3aWxsIGFjdHVhbGx5
IHlpZWxkIG5lZ2F0aXZlIHplcm8sIHNvIHdlIGNvdWxkIGhhdmUgYQogICAgICAgICAvLyBzZXBh
cmF0ZSBjYXNlIGZvciB0aGF0LiBCdXQgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgc28gbXVj
aC4KICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKSB7
Ci0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAw
LCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIG9wMkdQUikpOwotICAgICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQu
YnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW0zMigtMjE0NzQ4
MzY0Ny0xKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1
ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBv
cDJHUFIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVS
ZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BS
LCBUcnVzdGVkSW1tMzIoLTIxNDc0ODM2NDctMSkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgd2UgY29udmVydCB0aGUgcmVzdWx0IHRv
IGFuIGludCBhZnRlciB3ZSdyZSBkb25lLCBhbmQgd2UKICAgICAgICAgICAgIC8vIGFscmVhZHkg
a25vdyB0aGF0IHRoZSBkZW5vbWluYXRvciBpcyBlaXRoZXIgLTEgb3IgMC4gU28sIGlmIHRoZSBk
ZW5vbWluYXRvciBpcwpAQCAtNTc4MCw3ICs1NzgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoTW9kKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UncmUg
bm90IGFib3V0IHRvIGNyZWF0ZSBuZWdhdGl2ZSB6ZXJvLgogICAgICAgICBpZiAoc2hvdWxkQ2hl
Y2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKSB7CiAgICAgICAgICAgICBKSVRDb21w
aWxlcjo6SnVtcCBudW1lcmF0b3JQb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVy
OjpHcmVhdGVyVGhhbk9yRXF1YWwsIG9wMVNhdmVHUFIsIFRydXN0ZWRJbW0zMigwKSk7Ci0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2pp
dC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIGVkeC5ncHIoKSkpOworICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9q
aXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBlZHguZ3ByKCkpKTsKICAgICAgICAg
ICAgIG51bWVyYXRvclBvc2l0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgfQogICAgIApAQCAt
NzI0Niw3ICs3MjQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25E
aXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBBU1NFUlQoQXJyYXlNb2RlKEFycmF5OjpE
aXJlY3RBcmd1bWVudHMsIEFycmF5OjpSZWFkKS5hbHJlYWR5Q2hlY2tlZChtX2ppdC5ncmFwaCgp
LCBub2RlLCBtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSkpKTsK
ICAgICAKICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICBFeG90aWNPYmplY3RNb2RlLCBK
U1ZhbHVlU291cmNlKCksIDAsCisgICAgICAgIEV4b3RpY09iamVjdE1vZGUsIEpTVmFsdWVTb3Vy
Y2UoKSwgbnVsbHB0ciwKICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigKICAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3MoYmFzZVJlZywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygp
KSkpOwpAQCAtNzI1NCw3ICs3MjU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsT25EaXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBtX2ppdC5sb2FkMzIoQ0Nh
bGxIZWxwZXJzOjpBZGRyZXNzKGJhc2VSZWcsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZMZW5n
dGgoKSksIHNjcmF0Y2hSZWcpOwogICAgIGF1dG8gaXNPdXRPZkJvdW5kcyA9IG1faml0LmJyYW5j
aDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgc2NyYXRjaFJlZyk7
CiAgICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkKLSAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVNvdXJjZSgpLCAwLCBpc091dE9mQm91bmRz
KTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVNvdXJjZSgp
LCBudWxscHRyLCBpc091dE9mQm91bmRzKTsKICAgICAKICAgICBtX2ppdC5sb2FkVmFsdWUoCiAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCkBAIC03NDEzLDcgKzc0MTMsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAg
ICAgICAgR1BSUmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgbV9qaXQubG9h
ZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0
T2ZQdWJsaWNMZW5ndGgoKSksIHJlc3VsdFJlZyk7CiAgICAgICAgICAgICAKLSAgICAgICAgc3Bl
Y3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpU
cnVzdGVkSW1tMzIoMCkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwg
SlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxl
c3NUaGFuLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkpKTsKICAg
ICAgICAgICAgIAogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwog
ICAgICAgICBicmVhazsKQEAgLTc0NTcsNyArNzQ1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6
OmNvbXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQoQXJyYXlN
b2RlKEFycmF5OjpEaXJlY3RBcmd1bWVudHMsIEFycmF5OjpSZWFkKS5hbHJlYWR5Q2hlY2tlZCht
X2ppdC5ncmFwaCgpLCBub2RlLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSk7CiAg
ICAgICAgIAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgRXhvdGljT2Jq
ZWN0TW9kZSwgSlNWYWx1ZVNvdXJjZSgpLCAwLAorICAgICAgICAgICAgRXhvdGljT2JqZWN0TW9k
ZSwgSlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVz
dFB0cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKICAgICAgICAg
ICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBEaXJlY3RBcmd1bWVudHM6
Om9mZnNldE9mTWFwcGVkQXJndW1lbnRzKCkpKSk7CkBAIC03NDgxLDcgKzc0ODEsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgQVNTRVJUKEFycmF5TW9kZShBcnJheTo6U2NvcGVkQXJndW1lbnRzLCBBcnJheTo6UmVhZCku
YWxyZWFkeUNoZWNrZWQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKSkpOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAg
ICAgICAgIEV4b3RpY09iamVjdE1vZGUsIEpTVmFsdWVTb3VyY2UoKSwgMCwKKyAgICAgICAgICAg
IEV4b3RpY09iamVjdE1vZGUsIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwKICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25a
ZXJvLAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIFNj
b3BlZEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycm9kZVRoaW5ncygpKSkpOwpAQCAtOTI1OSw3ICs5
MjU5LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2Rl
KQogICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3Jh
Z2VHUFIsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsK
IAogICAgICAgICAgICAgLy8gUmVmdXNlIHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCi0gICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHN0b3JhZ2VMZW5ndGhHUFIsIFRy
dXN0ZWRJbW0zMihsYXJnZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCkpKTsKKyAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0
LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc3RvcmFnZUxlbmd0aEdQUiwgVHJ1c3Rl
ZEltbTMyKGxhcmdlc3RQb3NpdGl2ZUludDMyTGVuZ3RoKSkpOwogCiAgICAgICAgICAgICBNYWNy
b0Fzc2VtYmxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNz
KHN0b3JhZ2VHUFIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKTsKIApAQCAt
OTI4Myw3ICs5MjgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChO
b2RlKiBub2RlKQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Mo
c3RvcmFnZUdQUiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSksIHN0b3JhZ2VMZW5ndGhH
UFIpOwogCiAgICAgICAgIC8vIFJlZnVzZSB0byBoYW5kbGUgYml6YXJyZSBsZW5ndGhzLgotICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHN0b3JhZ2VMZW5ndGhHUFIsIFRydXN0
ZWRJbW0zMihsYXJnZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCkpKTsKKyAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNo
MzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzdG9yYWdlTGVuZ3RoR1BSLCBUcnVzdGVkSW1tMzIo
bGFyZ2VzdFBvc2l0aXZlSW50MzJMZW5ndGgpKSk7CiAKICAgICAgICAgbV9qaXQubW92ZShzdG9y
YWdlTGVuZ3RoR1BSLCBidWZmZXJHUFIpOwogICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1t
MzIoZWxlbWVudENvdW50KSwgYnVmZmVyR1BSKTsKQEAgLTk0OTEsNyArOTQ5MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmVtaXRTdHJ1Y3R1cmVDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2Vs
bEdQUiwgR1BSUmVnIHRlbXBHCiAgICAgCiAgICAgaWYgKG5vZGUtPnN0cnVjdHVyZVNldCgpLnNp
emUoKSA9PSAxKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBCYWRD
YWNoZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIDAsCisgICAgICAgICAg
ICBCYWRDYWNoZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIG51bGxwdHIs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgICAg
IEpJVENvbXBpbGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRk
cmVzcyhjZWxsR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLApAQCAtOTUxNiw3ICs5
NTE2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cnVjdHVyZUNoZWNrKE5vZGUqIG5v
ZGUsIEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEcKICAgICAgICAgfQogICAgICAgICAKICAg
ICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgIEJhZENhY2hlLCBKU1ZhbHVlU291
cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgMCwKKyAgICAgICAgICAgIEJhZENhY2hlLCBKU1Zh
bHVlU291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbnVsbHB0ciwKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5v
dEVxdWFsLCBzdHJ1Y3R1cmVHUFIsIG5vZGUtPnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpOwogICAg
ICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaApp
bmRleCAzMTk5NDgxMTZlYjA5ODEwZjQ0YjQyNDExYzJjZThlNTgwOTM3MGU1Li5lODgyNTlhNWQ2
ZDUyMmU3Yzk5NmM4NTQ0N2RjZDQ4N2FiZDNmYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgog
ICAgIHsKICAgICAgICAgZm9yIChCbG9ja0luZGV4IHJlc3VsdEluZGV4ID0gbV9ibG9jay0+aW5k
ZXggKyAxOyA7IHJlc3VsdEluZGV4KyspIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRJbmRleCA+
PSBtX2ppdC5ncmFwaCgpLm51bUJsb2NrcygpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYgKEJhc2ljQmxv
Y2sqIHJlc3VsdCA9IG1faml0LmdyYXBoKCkuYmxvY2socmVzdWx0SW5kZXgpKQogICAgICAgICAg
ICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTExMzUsNyArMTEzNSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgbGlua0JyYW5jaGVzKCk7CiAKLSAgICB2b2lkIGR1bXAoY29uc3Qg
Y2hhciogbGFiZWwgPSAwKTsKKyAgICB2b2lkIGR1bXAoY29uc3QgY2hhciogbGFiZWwgPSBudWxs
cHRyKTsKIAogICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0SW50NTIoTm9kZSogbm9kZSkKICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklU
NjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNw
cAppbmRleCA4OGU4ZTIwZDVhOTQ0Y2E2YWVhMzlhM2U0YzU0YjMyNDU2ZjlmOGIyLi4xZjI1OTA1
MmQ4NjE0NjRiYWNmNTIxYzA1YjI0NzViM2QyN2JjNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTk0OSw3ICs5NDksNyBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2Ug
ZWRnZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVl
LCBTcGVjSW50MzJPbmx5KTsKICAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CiAgICAgICAgIGlm
IChtYXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKLSAgICAgICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAg
ICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdElu
dDMyOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xMDk0LDcgKzEwOTQs
NyBAQCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1MihFZGdlIGVkZ2Us
IERhdGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKICAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1
ZSwgU3BlY0ludDUyQW55KTsKICAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CiAgICAgICAgIGlm
IChtYXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKLSAgICAgICAgICAgIHRlcm1pbmF0
ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAg
ICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1Zh
bHVlUmVncygpLCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQog
CkBAIC0xMjAyLDcgKzEyMDIsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxh
dGVEb3VibGUoRWRnZSBlZGdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmcHI7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkp
Ci0gICAgICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0
aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBudWxscHRyKTsKICAgICAg
ICAgICAgIHJldHVybiBmcHJBbGxvY2F0ZSgpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTIz
Niw3ICsxMjM2LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChF
ZGdlIGVkZ2UpCiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNDZWxsQ2hlY2sp
OwogICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkpIHsKICAgICAgICAgaWYgKG1heUhhdmVUeXBlQ2hl
Y2soZWRnZS51c2VLaW5kKCkpKQotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVj
dXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICAgICAgdGVybWlu
YXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIG51bGxw
dHIpOwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKQEAgLTEzMTYsNyArMTMx
Niw3IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBl
ZGdlKQogICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQm9vbGVhbik7CiAgICAg
aWYgKHZhbHVlLmlzQ2xlYXIoKSkgewogICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdl
LnVzZUtpbmQoKSkpCi0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihV
bmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0cik7CiAg
ICAgICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIApAQCAtMTQyMiw3ICsxNDIyLDcgQEAg
R1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQog
ICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQmlnSW50MzIpOwogICAgIGlmICh2
YWx1ZS5pc0NsZWFyKCkpIHsKICAgICAgICAgaWYgKG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VL
aW5kKCkpKQotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3Vu
dGFibGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRp
dmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIpOwogICAgICAg
ICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKQEAgLTI3NDEsNyArMjc0MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBpZiAo
IW1fY29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1Zh
bHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFs
LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJl
c3VsdCh0aGlzKTsKIApAQCAtMjc1Myw3ICsyNzUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBub3RIb2xlLmxpbmsoJm1f
aml0KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgTG9hZEZyb21Ib2xlLCBKU1Zh
bHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgTG9hZEZyb21Ib2xlLCBKU1Zh
bHVlUmVncygpLCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
SWZFbXB0eShyZXN1bHQuZ3ByKCkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICAganNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG5vZGUtPmFycmF5TW9kZSgpLnR5
cGUoKSA9PSBBcnJheTo6SW50MzIgPyBEYXRhRm9ybWF0SlNJbnQzMiA6IERhdGFGb3JtYXRKUyk7
CkBAIC0yODA0LDExICsyODA0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9k
ZSogbm9kZSkKICAgICAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAg
ICAgICAgICAgICAgIEZQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7CiAKLSAgICAgICAg
ICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBt
X2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywg
TWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1
YmxpY0xlbmd0aCgpKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZC
b3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhz
dG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAKICAgICAg
ICAgICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3Rv
cmFnZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0
UmVnKTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWlu
KCkpCi0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBK
U1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZk5hTihyZXN1bHRSZWcpKTsKKyAgICAgICAg
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCks
IG51bGxwdHIsIG1faml0LmJyYW5jaElmTmFOKHJlc3VsdFJlZykpOwogICAgICAgICAgICAgICAg
IGRvdWJsZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQpAQCAtMjg1OCwxMSArMjg1OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5
KQogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5n
dGhPZmZzZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91
bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rv
cmFnZVJlZywgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKICAgICAgICAg
ICAgIAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAg
ICAgICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJl
ZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6
OnZlY3Rvck9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZF
bXB0eShyZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExv
YWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoSWZFbXB0eShy
ZXN1bHQuZ3ByKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1
bHQocmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMwMjgs
NyArMzAyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAg
ICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91bmRzKCkpIHsKICAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICBPdXRP
ZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fz
c2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVu
Z3RoKCkpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIE1hY3JvQXNz
ZW1ibGVyOjpKdW1wIGluQm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJl
bG93LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0
dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC0zMDM2LDcgKzMwMzYsNyBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAg
c2xvd0Nhc2UgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5
OjpvZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAg
ICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKQotICAgICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBzbG93Q2Fz
ZSk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpT
VmFsdWVSZWdzKCksIG51bGxwdHIsIHNsb3dDYXNlKTsKICAgICAgICAgICAgICAgICAKICAgICAg
ICAgICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHByb3BlcnR5UmVnLCB0ZW1w
b3JhcnlSZWcpOwogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodGVtcG9yYXJ5UmVnLCBN
YWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVi
bGljTGVuZ3RoKCkpKTsKQEAgLTMwOTgsMTQgKzMwOTgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJ
VDo6Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVt
cCBiZXlvbmRBcnJheUJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92
ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVn
LCBBcnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CiAgICAgICAgICAgICBpZiAo
IWFycmF5TW9kZS5pc091dE9mQm91bmRzKCkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwgYmV5b25kQXJyYXlCb3VuZHMpOwor
ICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdz
KCksIG51bGxwdHIsIGJleW9uZEFycmF5Qm91bmRzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJleW9uZEFycmF5Qm91bmRzKTsKIAogICAgICAg
ICAgICAgLy8gQ2hlY2sgaWYgd2UncmUgd3JpdGluZyB0byBhIGhvbGU7IGlmIHNvIGluY3JlbWVu
dCBtX251bVZhbHVlc0luVmVjdG9yLgogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91
bmRzKCkpIHsKICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAg
ICAgICAgICBTdG9yZVRvSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAg
ICAgU3RvcmVUb0hvbGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAgICAgICAgICAg
ICAgIG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpKSk7CiAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdEhvbGVWYWx1
ZSA9IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgTWFjcm9Bc3Nl
bWJsZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6
OlRpbWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpKTsKQEAgLTQ5NDgsNyAr
NDk0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgYnJlYWs7CiAKICAgICBjYXNlIEZvcmNlT1NSRXhpdDogewotICAgICAgICB0ZXJtaW5hdGVT
cGVjdWxhdGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIDAp
OworICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJh
Z2UsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
ICAgIApAQCAtNTY4Myw3ICs1NjgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0
cmluZ0NvZGVQb2ludEF0KE5vZGUqIG5vZGUpCiAgICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkp
LCBzY3JhdGNoMkdQUik7CiAKICAgICAvLyB1bnNpZ25lZCBjb21wYXJpc29uIHNvIHdlIGNhbiBm
aWx0ZXIgb3V0IG5lZ2F0aXZlIGluZGljZXMgYW5kIGluZGljZXMgdGhhdCBhcmUgdG9vIGxhcmdl
Ci0gICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9q
aXQuYnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBzY3JhdGNo
MkdQUikpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCks
IG51bGxwdHIsIG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBpbmRl
eEdQUiwgc2NyYXRjaDJHUFIpKTsKIAogICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlciBpbnRvIHNj
cmF0Y2gxR1BSCiAgICAgYXV0byBpczE2Qml0ID0gbV9qaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVs
cGVyczo6WmVybywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBTdHJpbmdJbXBs
OjpmbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0
cmFjdFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJz
dHJhY3RWYWx1ZS5jcHAKaW5kZXggMTI0MzMyMWQzMDk2OTk2YTMzNDUzYzJmMGZhNjU0ZmUwYjJh
N2MwOC4uZmU5Y2QzYzViZjJiMGMzODk4NDA0NzA3Mzc2MzA1YTk5MmI3OThkZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFs
dWUuY3BwCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpk
dW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXgKIAogdm9p
ZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7
Ci0gICAgZHVtcEluQ29udGV4dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxs
cHRyKTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjp2YWxpZGF0ZVJlZmVyZW5j
ZXMoY29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmIHRyYWNrZWRSZWZlcmVuY2VzKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAKaW5kZXggYTU0ZWMzNDg1
ZDExZTU4NDFlMjY0Y2JjMTM0OGNmOWFiZjJhMzBlMS4uMWEwMDAyNWI2ZDk4Nzg1ZjY0ZTdjYjlj
YjI2NjI1NWJmNzEwNjc0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdUcmFuc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5z
aXRpb24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgVHJhbnNpdGlvbjo6ZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIAogdm9pZCBU
cmFuc2l0aW9uOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29u
dGV4dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAogfSB9
IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggOTJkMGM4ZjFjNDU2Mzcz
OTBjMDYzNGE4MTU4MjQyODVlOTdhM2ViMi4uN2NhZTU2OWFkYjc0Y2FjMTQwOWNlYzA1M2NkMjgw
NmYzOGZlOGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBl
Q2hlY2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1R5cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBDaGVj
a0RhdGEgewogICAgIGJvb2wgbV9hcnJheU1vZGVIb2lzdGluZ09rYXk7CiAgICAgCiAgICAgQ2hl
Y2tEYXRhKCkKLSAgICAgICAgOiBtX3N0cnVjdHVyZSgwKQorICAgICAgICA6IG1fc3RydWN0dXJl
KG51bGxwdHIpCiAgICAgICAgICwgbV9hcnJheU1vZGVJc1ZhbGlkKGZhbHNlKQogICAgICAgICAs
IG1fYXJyYXlNb2RlSG9pc3RpbmdPa2F5KGZhbHNlKQogICAgIHsKQEAgLTY0LDcgKzY0LDcgQEAg
c3RydWN0IENoZWNrRGF0YSB7CiAgICAgfQogCiAgICAgQ2hlY2tEYXRhKEFycmF5TW9kZSBhcnJh
eU1vZGUpCi0gICAgICAgIDogbV9zdHJ1Y3R1cmUoMCkKKyAgICAgICAgOiBtX3N0cnVjdHVyZShu
dWxscHRyKQogICAgICAgICAsIG1fYXJyYXlNb2RlKGFycmF5TW9kZSkKICAgICAgICAgLCBtX2Fy
cmF5TW9kZUlzVmFsaWQodHJ1ZSkKICAgICAgICAgLCBtX2FycmF5TW9kZUhvaXN0aW5nT2theSh0
cnVlKQpAQCAtNTAzLDcgKzUwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVjdHVy
ZS5nZXQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZS5tX3N0cnVjdHVyZSA9IDA7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9z
dHJ1Y3R1cmUgPSBudWxscHRyOwogICAgIH0KICAgICAKICAgICB2b2lkIG5vdGljZVN0cnVjdHVy
ZUNoZWNrKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVT
ZXQgc2V0KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHN0cnVjdCBTdHJ1Y3R1cmVUeXBlQ2hlY2sgewog
CiAgICAgc3RhdGljIHZvaWQgZGlzYWJsZUhvaXN0aW5nKENoZWNrRGF0YSYgY2hlY2tEYXRhKQog
ICAgIHsKLSAgICAgICAgY2hlY2tEYXRhLm1fc3RydWN0dXJlID0gMDsKKyAgICAgICAgY2hlY2tE
YXRhLm1fc3RydWN0dXJlID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0Nv
bnRyYXZlbmVkQnlWYWx1ZShDaGVja0RhdGEmIGNoZWNrRGF0YSwgSlNWYWx1ZSB2YWx1ZSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggNzRlN2IwNGQyODAw
YzA2MzNiYzk4MDRlYjJjYWE4OTQ0NjcwNDJmZC4uNjcyMGUyM2U5M2U5NzM0MjY4NWUxZmIxZGE3
MGFiODE1MzRlMjFiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdX
b3JrbGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAKQEAgLTYzNCw3ICs2MzQsNyBAQCBXb3JrbGlzdCogZXhpc3RpbmdXb3JrbGlzdEZvckluZGV4
T3JOdWxsKHVuc2lnbmVkIGluZGV4KQogICAgICAgICByZXR1cm4gZXhpc3RpbmdHbG9iYWxGVExX
b3JrbGlzdE9yTnVsbCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJz
dHJhY3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggMmY0OWE4ZTJjNjNmMWY2NzkxMDgwN2ZlNmIzNGJi
NGFkNDU5MzYyOC4uOTJmYzQwODBiMTk2MDIyYTA1ZTlhMzBkNTk3NTliOGY3ZmVhNzM4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBv
c2l0b3J5LmgKQEAgLTIyMSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAoaW5k
ZXhpbmdUeXBlKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAg
ICAgICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgCiAgICAgICAg
IGNhc2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuICZpbmRl
eGVkSW50MzJQcm9wZXJ0aWVzOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgIAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmgKaW5kZXggMWYzNmMzYjg3YTg2ZTMwNTBmMTRiYTc5
Y2YwNWRjYjM1ZDNkMWYwZS4uN2FhNTNlN2NkMjQxY2NjZDJlMTY4OGUzN2U5ZjAwMmU5MjZkYjY2
YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBdmFpbGFibGVSZWNv
dmVyeS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQXZhaWxhYmxlUmVjb3Zl
cnkuaApAQCAtMzcsMTEgKzM3LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsK
IGNsYXNzIEF2YWlsYWJsZVJlY292ZXJ5IHsKIHB1YmxpYzoKICAgICBBdmFpbGFibGVSZWNvdmVy
eSgpCi0gICAgICAgIDogbV9ub2RlKDApCisgICAgICAgIDogbV9ub2RlKG51bGxwdHIpCiAgICAg
ICAgICwgbV9mb3JtYXQoRGF0YUZvcm1hdE5vbmUpCiAgICAgICAgICwgbV9vcGNvZGUoQWRkUmVj
b3ZlcnkpCi0gICAgICAgICwgbV9sZWZ0KDApCi0gICAgICAgICwgbV9yaWdodCgwKQorICAgICAg
ICAsIG1fbGVmdChudWxscHRyKQorICAgICAgICAsIG1fcmlnaHQobnVsbHB0cikKICAgICB7CiAg
ICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCmlu
ZGV4IDBjYWNmMDk0NmIxNzk0NmMwM2Y2ZWMyYTYyMGJmNjA5M2Q1NzZiYzMuLjFiNTdkYTA3MjNl
NTFmZDcxODMxYTViOGRmODc2NzM4YWU0NTY1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTEV4aXRWYWx1ZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEV4aXRWYWx1ZTo6
ZHVtcEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29u
c3QKIAogdm9pZCBFeGl0VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAg
ICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIp
OwogfQogCiB2b2lkIEV4aXRWYWx1ZTo6dmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRS
ZWZlcmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMRm9ybWF0dGVkVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMRm9ybWF0dGVkVmFsdWUuaAppbmRleCBlZTBhMDcwMWZiNjQzNjAwNGIwMjRj
MjMwMTdiMDRhNTI4YjlmOTAzLi5kYjY0ZjAxZmU2OTYwYjdkM2YxODI2NzUzYWZlZTQyNTU4MjA5
MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvcm1hdHRlZFZh
bHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JtYXR0ZWRWYWx1ZS5o
CkBAIC00MCw3ICs0MCw3IEBAIGNsYXNzIEZvcm1hdHRlZFZhbHVlIHsKIHB1YmxpYzoKICAgICBG
b3JtYXR0ZWRWYWx1ZSgpCiAgICAgICAgIDogbV9mb3JtYXQoRGF0YUZvcm1hdE5vbmUpCi0gICAg
ICAgICwgbV92YWx1ZSgwKQorICAgICAgICAsIG1fdmFsdWUobnVsbHB0cikKICAgICB7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2Rl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKaW5kZXggZWRi
YjM5ZGY1ZTVmNDJkYmVjOTQxMDE3ZjIxOWUyNGIzMWNhNzFlYy4uNzM5YTY0ZGMxYjEzMDIyNWYy
OGQxMTM2YWQ5YTkwOTY2OWFlN2VlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJ
VENvZGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCogSklUQ29kZTo6ZGF0YUFkZHJlc3NB
dE9mZnNldChzaXplX3QpCiAgICAgLy8gV2UgY2FuJ3QgcGF0Y2ggRlRMIGNvZGUsIHlldC4gRXZl
biBpZiB3ZSBkaWQsIGl0J3Mgbm90IGNsZWFyIHRoYXQgd2Ugd291bGQgZG8gc28KICAgICAvLyB0
aHJvdWdoIHRoaXMgQVBJLgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHVuc2lnbmVkIEpJVENvZGU6Om9m
ZnNldE9mKHZvaWQqKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExM
aW5rLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggM2Uw
ZDU4ZmU3OTc2Mjc5MzZiMzY3NjIzZTg4NDQxNGE4NGRmNDM4NS4uNWIwYjMzM2ZmZTVmYmQ1MWZk
ZWUyYmZkNDE0ZDk5NmNhMWFmZDljZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsu
Y3BwCkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIAog
ICAgICAgICBEdW1wQ29udGV4dCBkdW1wQ29udGV4dDsKICAgICAgICAgU3RyaW5nUHJpbnRTdHJl
YW0gb3V0OwotICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IDA7CisgICAgICAgIE5vZGUqIGxhc3RO
b2RlID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChzaXplX3QgYmxvY2tJbmRleCA9IDA7IGJsb2Nr
SW5kZXggPCBncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CiAgICAgICAgICAgICBC
YXNpY0Jsb2NrKiBibG9jayA9IGdyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAg
aWYgKCFibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0Iz
LmNwcAppbmRleCA1MmE2OTlmZmM5Y2U2YjgzYWIwNGZjYmQzMDc0M2YwNDY0Y2E0MjM0Li5kNDcx
MWE5OWZlNzZhMDEzM2I3NjEzYWFjZGRjZjIwZmJhNzMxMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00ODQsMTMgKzQ4NCwxMyBAQCBw
cml2YXRlOgogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbG93QmxvY2sgPSBtX2Jsb2Nr
cy5nZXQobV9oaWdoQmxvY2spOwogICAgICAgICAKLSAgICAgICAgbV9uZXh0SGlnaEJsb2NrID0g
MDsKKyAgICAgICAgbV9uZXh0SGlnaEJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChCbG9j
a0luZGV4IG5leHRCbG9ja0luZGV4ID0gbV9oaWdoQmxvY2stPmluZGV4ICsgMTsgbmV4dEJsb2Nr
SW5kZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK25leHRCbG9ja0luZGV4KSB7CiAgICAgICAg
ICAgICBtX25leHRIaWdoQmxvY2sgPSBtX2dyYXBoLmJsb2NrKG5leHRCbG9ja0luZGV4KTsKICAg
ICAgICAgICAgIGlmIChtX25leHRIaWdoQmxvY2spCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KLSAgICAgICAgbV9uZXh0TG93QmxvY2sgPSBtX25leHRIaWdoQmxvY2sgPyBtX2Js
b2Nrcy5nZXQobV9uZXh0SGlnaEJsb2NrKSA6IDA7CisgICAgICAgIG1fbmV4dExvd0Jsb2NrID0g
bV9uZXh0SGlnaEJsb2NrID8gbV9ibG9ja3MuZ2V0KG1fbmV4dEhpZ2hCbG9jaykgOiBudWxscHRy
OwogICAgICAgICAKICAgICAgICAgLy8gQWxsIG9mIHRoaXMgZWZmb3J0IHRvIGZpbmQgdGhlIG5l
eHQgYmxvY2sgZ2l2ZXMgdXMgdGhlIGFiaWxpdHkgdG8ga2VlcCB0aGUKICAgICAgICAgLy8gZ2Vu
ZXJhdGVkIElSIGluIHJvdWdobHkgcHJvZ3JhbSBvcmRlci4gVGhpcyBvdWdodCBub3QgYWZmZWN0
IHRoZSBwZXJmb3JtYW5jZQpAQCAtMjcxNCw3ICsyNzE0LDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgICAgICBMQmFzaWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oemVyb051
bWVyYXRvciwgbnVtZXJhdG9yQ29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgICAgIHNwZWN1
bGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1f
b3V0Lmxlc3NUaGFuKGRlbm9taW5hdG9yLCBtX291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgICAg
ICAgICAgICAgTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFu
KGRlbm9taW5hdG9yLCBtX291dC5pbnQzMlplcm8pKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0
Lmp1bXAobnVtZXJhdG9yQ29udGludWF0aW9uKTsKIApAQCAtMjczOSw3ICsyNzM5LDcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3RO
ZXh0KTsKICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZGl2KG51bWVyYXRv
ciwgZGVub21pbmF0b3IpOwogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAg
ICAgICAgICAgT3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgT3Zl
cmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90
RXF1YWwobV9vdXQubXVsKHJlc3VsdCwgZGVub21pbmF0b3IpLCBudW1lcmF0b3IpKTsKICAgICAg
ICAgICAgICAgICBzZXRJbnQzMihyZXN1bHQpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0yODIx
LDcgKzI4MjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5u
ZXJMYXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5lZ2F0aXZlTnVtZXJhdG9yLCBudW1lcmF0b3JD
b250aW51YXRpb24pOwogCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlWmVybywg
bm9WYWx1ZSgpLCAwLCBtX291dC5pc1plcm8zMihyZW1haW5kZXIpKTsKKyAgICAgICAgICAgICAg
ICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmlzWmVy
bzMyKHJlbWFpbmRlcikpOwogCiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChudW1lcmF0b3JD
b250aW51YXRpb24pOwogCkBAIC0yOTA2LDcgKzI5MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhvcihtYXNrLCBtX291dC5hZGQobWFzaywgdmFs
dWUpKTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobV9ub2RlLT5hcml0
aE1vZGUoKSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCks
IDAsIG1fb3V0Lmxlc3NUaGFuKHJlc3VsdCwgbV9vdXQuaW50MzJaZXJvKSk7CisgICAgICAgICAg
ICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NU
aGFuKHJlc3VsdCwgbV9vdXQuaW50MzJaZXJvKSk7CiAKICAgICAgICAgICAgIHNldEludDMyKHJl
c3VsdCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMyOTUsNyArMzI5NSw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgYmxlc3NTcGVjdWxhdGlvbihjaGVjaywgT3ZlcmZsb3csIG5vVmFs
dWUoKSwgbnVsbHB0ciwgbV9vcmlnaW4pOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNoZWNr
OwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGUoT3ZlcmZs
b3csIG5vVmFsdWUoKSwgMCwgbV9vdXQudGVzdElzWmVybzMyKHZhbHVlLCBtX291dC5jb25zdElu
dDMyKDB4N2ZmZmZmZmYpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBu
b1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LnRlc3RJc1plcm8zMih2YWx1ZSwgbV9vdXQuY29uc3RJ
bnQzMigweDdmZmZmZmZmKSkpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0Lm5lZyh2
YWx1ZSk7CiAgICAgICAgICAgICB9CiAKQEAgLTMzMDksNyArMzMwOSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5j
aGlsZDEoKSwga2luZCk7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0Lm5l
Zyh2YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG1f
bm9kZS0+YXJpdGhNb2RlKCkpKQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRp
dmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzY0KHJlc3VsdCkpOworICAgICAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIG51bGxwdHIsIG1f
b3V0LmlzWmVybzY0KHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIHNldEludDUyKHJlc3VsdCwg
a2luZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMzE4LDcg
KzMzMTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9v
dXQuc3BlY3VsYXRlU3ViKG1fb3V0LmludDY0WmVybywgdmFsdWUpOwogICAgICAgICAgICAgYmxl
c3NTcGVjdWxhdGlvbihyZXN1bHQsIEludDUyT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwg
bV9vcmlnaW4pOwogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG1fbm9k
ZS0+YXJpdGhNb2RlKCkpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8s
IG5vVmFsdWUoKSwgMCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CisgICAgICAgICAgICAgICAg
c3BlY3VsYXRlKE5lZ2F0aXZlWmVybywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5pc1plcm82
NChyZXN1bHQpKTsKICAgICAgICAgICAgIHNldEludDUyKHJlc3VsdCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQpAQCAtMzU1MSw3ICszNTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9W
YWx1ZSgpLCAwLCBtX291dC5sZXNzVGhhbih2YWx1ZSwgbV9vdXQuaW50MzJaZXJvKSk7CisgICAg
ICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5sZXNzVGhh
bih2YWx1ZSwgbV9vdXQuaW50MzJaZXJvKSk7CiAgICAgICAgIHNldEludDMyKHZhbHVlKTsKICAg
ICB9CiAgICAgCkBAIC0zNzI0LDcgKzM3MjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGls
ZUFycmF5aWZ5KCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gISFtX25vZGUtPmNoaWxkMigp
ID8gbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkgOiAwOworICAgICAgICBMVmFsdWUgcHJvcGVy
dHkgPSAhIW1fbm9kZS0+Y2hpbGQyKCkgPyBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSA6IG51
bGxwdHI7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayB1bmV4cGVjdGVkU3RydWN0dXJl
ID0gbV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0g
bV9vdXQubmV3QmxvY2soKTsKQEAgLTM3NDcsNyArMzc0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1
b3VzOgogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgVW5j
b3VudGFibGUsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgVW5jb3VudGFibGUs
IG5vVmFsdWUoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVx
dWFsKHByb3BlcnR5LCBtX291dC5jb25zdEludDMyKE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpKSk7
CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMzc3NCw3
ICszNzc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAg
ICAgIAotICAgICAgICBzcGVjdWxhdGUoQmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2Vs
bCksIDAsIGlzVW5leHBlY3RlZEFycmF5KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlKEJhZElu
ZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBudWxscHRyLCBpc1VuZXhwZWN0ZWRBcnJh
eShjZWxsKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAg
ICAgICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNDI4NCw3
ICs0Mjg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
ICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVl
KGNlbGwpLCAwLAorICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2Vs
bCksIG51bGxwdHIsCiAgICAgICAgICAgICBtX291dC5sb2dpY2FsTm90KGlzQXJyYXlUeXBlRm9y
Q2hlY2tBcnJheShjZWxsLCBtX25vZGUtPmFycmF5TW9kZSgpKSkpOwogICAgIH0KIApAQCAtNDMx
MCw3ICs0MzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIHNwZWN1bGF0ZSgK
LSAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCAwLAorICAg
ICAgICAgICAgQmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG51bGxwdHIsCiAg
ICAgICAgICAgICBtX291dC5sb2dpY2FsTm90KGlzQXJyYXlUeXBlRm9yQ2hlY2tBcnJheShjZWxs
LCBtX25vZGUtPmFycmF5TW9kZSgpKSkpOwogCiAgICAgICAgIGlmIChtYXlTZWVFbXB0eVZhbHVl
KSB7CkBAIC00NTMwLDcgKzQ1MzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUNoZWNr
SW5Cb3VuZHMoKQogICAgIHsKICAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgT3V0T2ZC
b3VuZHMsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgIE91dE9mQm91bmRzLCBub1ZhbHVlKCks
IG51bGxwdHIsCiAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwobG93SW50MzIobV9ub2Rl
LT5jaGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAKICAgICAgICAgLy8g
RXZlbiB0aG91Z2ggd2UgY2xhaW0gdG8gaGF2ZSBKU1ZhbHVlIHJlc3VsdCwgbm8gdXNlciBvZiB1
cyBzaG91bGQKQEAgLTQ1NjEsNyArNDU2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IG1fb3V0LnNlbGVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9s
ZSwgbV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCByZXN1
bHQpOwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxh
dGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIGlzSG9sZSk7CisgICAgICAgICAgICAgICAg
ICAgIHNwZWN1bGF0ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNIb2xlKTsK
ICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSB0byBrZWVwIGNv
bnRlbnQgaW4gc3RvcmFnZSBhbGl2ZS4KICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJh
eU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpCiAgICAgICAgICAgICAgICAgICAg
IGVuc3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwpAQCAtNDYxMCw3ICs0NjEwLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlN
b2RlKCkuaXNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgMCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIExvYWRGcm9tSG9sZSwgbm9WYWx1ZSgpLCBudWxscHRyLAogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZChyZXN1
bHQsIHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzZXREb3Vi
bGUocmVzdWx0KTsKQEAgLTQ4NzAsNyArNDg3MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAg
IGlmIChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgICAg
IExWYWx1ZSByZXN1bHQgPSBtX291dC5sb2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGlu
ZGV4LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKTsKLSAgICAgICAgICAgICAgICBz
cGVjdWxhdGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzY0KHJlc3Vs
dCkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwg
bnVsbHB0ciwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CiAgICAgICAgICAgICAgICAgLy8gV2Ug
aGF2ZSB0byBrZWVwIGJhc2UgYWxpdmUgdG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUu
CiAgICAgICAgICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAg
ICAgICAgc2V0SlNWYWx1ZShyZXN1bHQpOwpAQCAtNTE5Miw3ICs1MTkyLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91bmRzKCkp
IHsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGUoU3RvcmVUb0hvbGUsIG5vVmFsdWUoKSwgMCwg
bV9vdXQuaXNaZXJvNjQobV9vdXQubG9hZDY0KGVsZW1lbnRQb2ludGVyKSkpOworICAgICAgICAg
ICAgICAgIHNwZWN1bGF0ZShTdG9yZVRvSG9sZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5p
c1plcm82NChtX291dC5sb2FkNjQoZWxlbWVudFBvaW50ZXIpKSk7CiAgICAgICAgICAgICAgICAg
bV9vdXQuc3RvcmU2NCh2YWx1ZSwgZWxlbWVudFBvaW50ZXIpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KQEAgLTUyMDQsNyArNTIwNCw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9u
UHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFs
QmV5b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgp
ID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJv
dW5kc05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJp
Y3QpOwogICAgICAgICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKSB7Ci0gICAg
ICAgICAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIDAsIGlzT3V0T2ZC
b3VuZHMpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgp
LCBudWxscHRyLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRz
ID0gbV9vdXQuYm9vbGVhbkZhbHNlOwogICAgICAgICAgICAgfQogCkBAIC03ODU3LDcgKzc4NTcs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAga2lkc1syXSA9IGxvd0NlbGwoZWRnZXNbMl0pOwog
ICAgICAgICAgICAgbnVtS2lkcyA9IDM7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBr
aWRzWzJdID0gMDsKKyAgICAgICAgICAgIGtpZHNbMl0gPSBudWxscHRyOwogICAgICAgICAgICAg
bnVtS2lkcyA9IDI7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC04MDQzLDcgKzgwNDMsNyBAQCBw
cml2YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsK
ICAgICAgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRz
KCkpIHsKLSAgICAgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCAwLCBt
X291dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5v
VmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYm9vbGVhblRydWUpOwogICAgICAgICAgICAgcmVzdWx0
cy5hcHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IEpTR2xvYmFsT2JqZWN0LgpAQCAtODA5
Niw3ICs4MDk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291
dC5sb2FkUHRyKGJhc2UsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwogCiAgICAgICAgIHNwZWN1
bGF0ZSgKLSAgICAgICAgICAgIFVuY291bnRhYmxlLCBub1ZhbHVlKCksIDAsCisgICAgICAgICAg
ICBVbmNvdW50YWJsZSwgbm9WYWx1ZSgpLCBudWxscHRyLAogICAgICAgICAgICAgbV9vdXQuYWJv
dmVPckVxdWFsKAogICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2
ZShzdHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfbGVuZ3RoKSkpOwogICAgICAgICAKQEAg
LTgxNDcsNyArODE0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0g
bV9vdXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKICAgICAgICAgTFZh
bHVlIGxlbmd0aCA9IG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0cmluZ0ltcGwsIG1faGVhcHMu
U3RyaW5nSW1wbF9sZW5ndGgpOwogCi0gICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9W
YWx1ZSgpLCAwLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworICAgICAgICBz
cGVjdWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVx
dWFsKGluZGV4LCBsZW5ndGgpKTsKIAogICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAg
ICBtX291dC50ZXN0SXNaZXJvMzIoCkBAIC0xMTk0OSw3ICsxMTk0OSw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKCkKICAgICB7CiAgICAgICAgIHNwZWN1
bGF0ZSgKLSAgICAgICAgICAgIEJhZFR5cGVJbmZvRmxhZ3MsIG5vVmFsdWUoKSwgMCwKKyAgICAg
ICAgICAgIEJhZFR5cGVJbmZvRmxhZ3MsIG5vVmFsdWUoKSwgbnVsbHB0ciwKICAgICAgICAgICAg
IG1fb3V0LnRlc3RJc1plcm8zMigKICAgICAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQz
Mihsb3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdz
KSwKICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKG1fbm9kZS0+dHlwZUluZm9PcGVy
YW5kKCkpKSk7CkBAIC0xMzE4MCw3ICsxMzE4MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgaWYg
KHNldC5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAg
ICAgIGV4aXRLaW5kLCBmb3JtYXR0ZWRWYWx1ZSwgMCwKKyAgICAgICAgICAgICAgICBleGl0S2lu
ZCwgZm9ybWF0dGVkVmFsdWUsIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1
YWwoc3RydWN0dXJlRGlzY3JpbWluYW50LCB3ZWFrU3RydWN0dXJlRGlzY3JpbWluYW50KHNldFsw
XSkpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTMxOTcsNyArMTMxOTcs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCi0g
ICAgICAgICAgICBleGl0S2luZCwgZm9ybWF0dGVkVmFsdWUsIDAsCisgICAgICAgICAgICBleGl0
S2luZCwgZm9ybWF0dGVkVmFsdWUsIG51bGxwdHIsCiAgICAgICAgICAgICBtX291dC5ub3RFcXVh
bChzdHJ1Y3R1cmVEaXNjcmltaW5hbnQsIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQoc2V0Lmxh
c3QoKSkpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAg
LTEzMjA4LDggKzEzMjA4LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIExCYXNpY0Jsb2Nr
IGludENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3RJbnRD
YXNlID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9
IDA7Ci0gICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJlckNhc2UgPSAwOworICAgICAgICBMQmFz
aWNCbG9jayBkb3VibGVDYXNlID0gbnVsbHB0cjsKKyAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVt
YmVyQ2FzZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChlZGdlLnVzZUtpbmQoKSA9PSBOb3RDZWxs
Tm9yQmlnSW50VXNlKSB7CiAgICAgICAgICAgICBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2so
KTsKICAgICAgICAgICAgIG5vdE51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTUy
MzQsOCArMTUyMzQsOCBAQCBwcml2YXRlOgogICAgIAogICAgIHN0cnVjdCBBcnJheVZhbHVlcyB7
CiAgICAgICAgIEFycmF5VmFsdWVzKCkKLSAgICAgICAgICAgIDogYXJyYXkoMCkKLSAgICAgICAg
ICAgICwgYnV0dGVyZmx5KDApCisgICAgICAgICAgICA6IGFycmF5KG51bGxwdHIpCisgICAgICAg
ICAgICAsIGJ1dHRlcmZseShudWxscHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAg
CkBAIC0xNTU5Miw3ICsxNTU5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgZGVm
YXVsdDoKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtp
bmQiKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xNTcwOCw3ICsxNTcwOCw3IEBAIHByaXZhdGU6
CiAgICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2Us
IG1faGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCkpOwogICAgICAgICAgICAgICAgIAogICAg
ICAgICAgICAgaWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKLSAgICAg
ICAgICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwgaXNPdXRPZkJv
dW5kcyk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCks
IG51bGxwdHIsIGlzT3V0T2ZCb3VuZHMpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICAgICAgTEJhc2ljQmxvY2sgb3V0T2ZCb3VuZHNDYXNlID0KICAgICAgICAgICAgICAgICAgICAg
bV9vdXQubmV3QmxvY2soKTsKQEAgLTE2MzgxLDcgKzE2MzgxLDcgQEAgcHJpdmF0ZToKICAgICAg
ICAgCiAgICAgICAgIGlmIChtX25vZGUtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgJiYgY2FuU3Bl
Y3VsYXRlKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICAgICAgT3ZlcmZs
b3csIG5vVmFsdWUoKSwgMCwgbV9vdXQubGVzc1RoYW4ocmVzdWx0LCBtX291dC5pbnQzMlplcm8p
KTsKKyAgICAgICAgICAgICAgICBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5s
ZXNzVGhhbihyZXN1bHQsIG1fb3V0LmludDMyWmVybykpOwogICAgICAgICAgICAgc2V0SW50MzIo
cmVzdWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTcxMTgsNyArMTcx
MTgsNyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0go
bV9ncmFwaCwgbV9ub2RlLCBtYWtlU3RyaW5nKCJWYWx1ZSBub3QgZGVmaW5lZDogIiwgU3RyaW5n
OjpudW1iZXIoZWRnZS5ub2RlKCktPmluZGV4KCkpKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBMVmFsdWUg
bG93Tm90Q2VsbChFZGdlIGVkZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTExvd2VyZWROb2RlVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
TG93ZXJlZE5vZGVWYWx1ZS5oCmluZGV4IDA1OTY2N2I3ZjZjZWMxZDdhODk3NjBhYjYxMjA3NTFl
YWJkYzQ4ZDMuLjcwNzQxZWJkOGFmMmQ4MWFkMzg1ZTExN2I3N2I1NmVkYWM3NDc4MTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJlZE5vZGVWYWx1ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJlZE5vZGVWYWx1ZS5oCkBAIC00
Myw4ICs0Myw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIGNsYXNzIExvd2Vy
ZWROb2RlVmFsdWUgewogcHVibGljOgogICAgIExvd2VyZWROb2RlVmFsdWUoKQotICAgICAgICA6
IG1fdmFsdWUoMCkKLSAgICAgICAgLCBtX2Jsb2NrKDApCisgICAgICAgIDogbV92YWx1ZShudWxs
cHRyKQorICAgICAgICAsIG1fYmxvY2sobnVsbHB0cikKICAgICB7CiAgICAgfQogICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAppbmRleCAwNWNhZWQ5NTEzNzUy
YjU5NGU5NmRlMTgwOTI2MGMyNmI3NTQ2ZjQ3Li42MDJjNTYwMzFhOTFhNDdhNGM5MTY4NmU3N2Rk
NDgxMzUxZjg0MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9T
UkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNw
cApAQCAtNTAsNyArNTAsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAKICAgICBpZiAoIWVu
dHJ5Q29kZS0+ZGZnQ29tbW9uKCktPmlzU3RpbGxWYWxpZCkgewogICAgICAgICBkZmdDb2RlLT5j
bGVhck9TUkVudHJ5QmxvY2tBbmRSZXNldFRocmVzaG9sZHMoZGZnQ29kZUJsb2NrKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCogcHJl
cGFyZU9TUkVudHJ5KAogCiAgICAgaWYgKGJ5dGVjb2RlSW5kZXggIT0gZW50cnlDb2RlLT5ieXRl
Y29kZUluZGV4KCkpIHsKICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCAiICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFuIGVudHJ5cG9pbnQgZm9y
ICIsIGJ5dGVjb2RlSW5kZXgsICI7IG91cnMgaXMgZm9yICIsIGVudHJ5Q29kZS0+Ynl0ZWNvZGVJ
bmRleCgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICAKICAgICBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4gdmFsdWVzOwpAQCAtOTgs
NyArOTgsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgaW50IHN0YWNrRnJhbWVTaXpl
ID0gZW50cnlDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5k
RXhpdCgpOwogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmY2Fs
bEZyYW1lLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFja0ZyYW1lU2l6
ZSAtIDEpLm9mZnNldCgpXSkpKSB7CiAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJv
c2VPU1IoKSwgIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC4iKTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAK
ICAgICBjYWxsRnJhbWUtPnNldENvZGVCbG9jayhlbnRyeUNvZGVCbG9jayk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggMWY0Mzg1
YTI3MmI5Y2YwNTgyZTQwMTQyOGY1MGYwNTEzODY3NTU5Ny4uOGNlYmZkOWI1NDU5OGE2NjQzYjEw
ODQ2NDEzY2I5OTI1MjllODQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyB2b2lkIGNv
bXBpbGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JF
eGl0JiBleGl0CiAgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMuc2l6ZSgp
ICsgbnVtTWF0ZXJpYWxpemF0aW9ucyArIG1heE1hdGVyaWFsaXphdGlvbk51bUFyZ3VtZW50cykg
KwogICAgICAgICByZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpICsKICAgICAgICAg
Y29kZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKSAqIHNpemVvZih1aW50NjRf
dCkpOwotICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0YXRp
Y19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6IDA7
CisgICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBzY3JhdGNoQnVmZmVyID8gc3RhdGljX2Nh
c3Q8RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogbnVsbHB0
cjsKICAgICBFbmNvZGVkSlNWYWx1ZSogbWF0ZXJpYWxpemF0aW9uUG9pbnRlcnMgPSBzY3JhdGNo
ICsgZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVzLnNpemUoKTsKICAgICBFbmNvZGVkSlNWYWx1
ZSogbWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzID0gbWF0ZXJpYWxpemF0aW9uUG9pbnRlcnMgKyBu
dW1NYXRlcmlhbGl6YXRpb25zOwogICAgIGNoYXIqIHJlZ2lzdGVyU2NyYXRjaCA9IGJpdHdpc2Vf
Y2FzdDxjaGFyKj4obWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzICsgbWF4TWF0ZXJpYWxpemF0aW9u
TnVtQXJndW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
VHlwZWRQb2ludGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFR5cGVkUG9pbnRl
ci5oCmluZGV4IDhjMGNiYWU1ZjFkYTU3M2VlZGJiNzYyZmM2MDRhYzEwYzcxZjVhNTUuLjIwNjg1
MTljNWMyM2U1MDFmNzM2MDFkN2I4Y2ZlYWNkYTY2ZTc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVHlwZWRQb2ludGVyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExUeXBlZFBvaW50ZXIuaApAQCAtMzUsOCArMzUsOCBAQCBuYW1lc3BhY2Ug
SlNDIHsgbmFtZXNwYWNlIEZUTCB7CiBjbGFzcyBUeXBlZFBvaW50ZXIgewogcHVibGljOgogICAg
IFR5cGVkUG9pbnRlcigpCi0gICAgICAgIDogbV9oZWFwKDApCi0gICAgICAgICwgbV92YWx1ZSgw
KQorICAgICAgICA6IG1faGVhcChudWxscHRyKQorICAgICAgICAsIG1fdmFsdWUobnVsbHB0cikK
ICAgICB7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExWYWx1ZUZyb21CbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1
ZUZyb21CbG9jay5oCmluZGV4IDViZDE0Y2E2MjFhMDRkNTRjYzlmNTQwZjZkMWFmMTBkNDI0Njg0
NmUuLmI4ZDEwYjFhZDJmNGU1ZGZiZmJhZDlmZmYzMWQ1MzMwOGI3YTFjNTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGcm9tQmxvY2suaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRnJvbUJsb2NrLmgKQEAgLTM0LDggKzM0LDgg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVmFsdWVGcm9tQmxvY2sg
ewogcHVibGljOgogICAgIFZhbHVlRnJvbUJsb2NrKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0g
ICAgICAgICwgbV9ibG9jaygwKQorICAgICAgICA6IG1fdmFsdWUobnVsbHB0cikKKyAgICAgICAg
LCBtX2Jsb2NrKG51bGxwdHIpCiAgICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVSYW5nZS5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExWYWx1ZVJhbmdlLmgKaW5kZXggM2FlM2RjYmY5MzI0MjQyZDU4OGRhYzY4MWIy
MzY1ODcxMzBhYjRjMS4uNzU1ODE4ZjY1YzFiZDQ0NWQzMGU4OWM5NzcyOTZjZmQyMmE1NTFiYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVJhbmdlLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVJhbmdlLmgKQEAgLTM0LDggKzM0
LDggQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVmFsdWVSYW5nZSB7
CiBwdWJsaWM6CiAgICAgVmFsdWVSYW5nZSgpCi0gICAgICAgIDogbV9iZWdpbigwKQotICAgICAg
ICAsIG1fZW5kKDApCisgICAgICAgIDogbV9iZWdpbihudWxscHRyKQorICAgICAgICAsIG1fZW5k
KG51bGxwdHIpCiAgICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL0dDU2VnbWVudGVkQXJyYXkuaAppbmRleCBkNDA3ZDVhMjIwOGEyMzc4MGQ0Mjk4Zjc1ZmVl
M2NhNmMyYWY0NzczLi4zZTZkYWVjMThiMTU5MTc0OGNmNmFiMmU1MDY0ZWE0ZjljYjJjZDRiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCkBAIC0x
MTgsNyArMTE4LDcgQEAgY2xhc3MgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yIHsKICAgICBmcmll
bmQgY2xhc3MgR0NTZWdtZW50ZWRBcnJheTxUPjsKIHB1YmxpYzoKICAgICBHQ1NlZ21lbnRlZEFy
cmF5SXRlcmF0b3IoKQotICAgICAgICA6IG1fY3VycmVudFNlZ21lbnQoMCkKKyAgICAgICAgOiBt
X2N1cnJlbnRTZWdtZW50KG51bGxwdHIpCiAgICAgICAgICwgbV9jdXJyZW50T2Zmc2V0KDApCiAg
ICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRs
ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKaW5kZXggODY2YTA3Njll
YzZiYTg5MGY1MWY4Y2FiMmE3MjJkNWRlNGFiNTMzNS4uMWRlM2ZhMDljMzI4YmY0OTM1OWIyY2Zk
ZDYzZGRhYTNjOTA4OTQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGFuZGxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKQEAgLTEy
Myw3ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgRXh0ZXJuYWxUeXBlIGdldCgpIGNvbnN0IHsgcmV0
dXJuIEhhbmRsZVR5cGVzPFQ+OjpnZXRGcm9tU2xvdCh0aGlzLT5zbG90KCkpOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBIYW5kbGUoSGFuZGxlU2xvdCBzbG90ID0gMCkKKyAgICBIYW5kbGUoSGFuZGxl
U2xvdCBzbG90ID0gbnVsbHB0cikKICAgICAgICAgOiBIYW5kbGVCYXNlKHNsb3QpCiAgICAgewog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgKaW5kZXggNWQyMjJkOTU2
MGMxNDc0MjUxYmFiYzIxMTE4NzJkMTQwYjY1OTM5NC4uZDQ0M2ZjZTM2MjM0OTYzNWI3MWJhZGUx
NzI5MWQ0OGIxY2E3ZDJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
SGFuZGxlU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgK
QEAgLTEzOSwxNCArMTM5LDE0IEBAIGlubGluZSB2b2lkIEhhbmRsZVNldDo6ZGVhbGxvY2F0ZShI
YW5kbGVTbG90IGhhbmRsZSkKIH0KIAogaW5saW5lIEhhbmRsZU5vZGU6OkhhbmRsZU5vZGUoKQot
ICAgIDogbV9wcmV2KDApCi0gICAgLCBtX25leHQoMCkKKyAgICA6IG1fcHJldihudWxscHRyKQor
ICAgICwgbV9uZXh0KG51bGxwdHIpCiB7CiB9CiAKIGlubGluZSBIYW5kbGVOb2RlOjpIYW5kbGVO
b2RlKFdURjo6U2VudGluZWxUYWcpCi0gICAgOiBtX3ByZXYoMCkKLSAgICAsIG1fbmV4dCgwKQor
ICAgIDogbV9wcmV2KG51bGxwdHIpCisgICAgLCBtX25leHQobnVsbHB0cikKIHsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlwZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmgKaW5kZXggNGUzNTMwZTlkMTExNDFi
MDJjOTM3MjIzYzhjMWY2MWFlNTE1NGMyMy4uYWQzNmRmY2VlNTE0MTIxMTM0ZDgxYzJjOGZkYmNl
OTI1OWRhYjg0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxl
VHlwZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVUeXBlcy5oCkBA
IC0zMyw3ICszMyw3IEBAIHR5cGVkZWYgSlNWYWx1ZSogSGFuZGxlU2xvdDsKIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4gc3RydWN0IEhhbmRsZVR5cGVzIHsKICAgICB0eXBlZGVmIFQqIEV4dGVybmFs
VHlwZTsKLSAgICBzdGF0aWMgRXh0ZXJuYWxUeXBlIGdldEZyb21TbG90KEhhbmRsZVNsb3Qgc2xv
dCkgeyByZXR1cm4gKHNsb3QgJiYgKnNsb3QpID8gcmVpbnRlcnByZXRfY2FzdDxFeHRlcm5hbFR5
cGU+KHN0YXRpY19jYXN0PHZvaWQqPihzbG90LT5hc0NlbGwoKSkpIDogMDsgfQorICAgIHN0YXRp
YyBFeHRlcm5hbFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJldHVybiAoc2xv
dCAmJiAqc2xvdCkgPyByZWludGVycHJldF9jYXN0PEV4dGVybmFsVHlwZT4oc3RhdGljX2Nhc3Q8
dm9pZCo+KHNsb3QtPmFzQ2VsbCgpKSkgOiBudWxscHRyOyB9CiAgICAgc3RhdGljIEpTVmFsdWUg
dG9KU1ZhbHVlKFQqIGNlbGwpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2Vs
bCk7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB2YWxpZGF0ZVVwY2Fz
dCgpIHsgVCogdGVtcDsgdGVtcCA9IChVKikwOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCAyNTg5ZTJjZmM1OTJj
YThlZDllMTcxNTM3ZTE2M2ZhNWZkNzE0ZjRkLi5kYjQ3MDEzYTRiMzM1ZWFmNWQzMjBiMDllZmE5
M2U3MzY5OTk0NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFw
U25hcHNob3RCdWlsZGVyLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFN0cmluZyBIZWFwU25hcHNo
b3RCdWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4g
YWxsb3dOCiAgICAgICAgICAgICBuZXh0Q2xhc3NOYW1lSW5kZXgrKzsKICAgICAgICAgdW5zaWdu
ZWQgY2xhc3NOYW1lSW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgICAgIHZv
aWQqIHdyYXBwZWRBZGRyZXNzID0gMDsKKyAgICAgICAgdm9pZCogd3JhcHBlZEFkZHJlc3MgPSBu
dWxscHRyOwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0gMDsKICAgICAgICAgaWYgKCFu
b2RlLmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAg
ICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1cmUodm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxp
bmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaApp
bmRleCBmMjdlZWY0YjQyMzE2NGFjODk4NDYzMDBjOTk5ZmNjNDFhNDE0NmRlLi5iOWFhZTVhNjky
Y2Y4NzZhMDZhODY2OWRjYjZhOTdkYzI1NmNjMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQg
TWFya2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCogZnJlZUxpc3Qs
IE1hcmtlZEJsb2NrOjpIYW5kCiAgICAgLy8gVGhpcyBwcm9kdWNlcyBhIGZyZWUgbGlzdCB0aGF0
IGlzIG9yZGVyZWQgaW4gcmV2ZXJzZSB0aHJvdWdoIHRoZSBibG9jay4KICAgICAvLyBUaGlzIGlz
IGZpbmUsIHNpbmNlIHRoZSBhbGxvY2F0aW9uIGNvZGUgbWFrZXMgbm8gYXNzdW1wdGlvbnMgYWJv
dXQgdGhlCiAgICAgLy8gb3JkZXIgb2YgdGhlIGZyZWUgbGlzdC4KLSAgICBGcmVlQ2VsbCogaGVh
ZCA9IDA7CisgICAgRnJlZUNlbGwqIGhlYWQgPSBudWxscHRyOwogICAgIHNpemVfdCBjb3VudCA9
IDA7CiAgICAgdWludHB0cl90IHNlY3JldDsKICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZh
bHVlcygmc2VjcmV0LCBzaXplb2YodWludHB0cl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9TdHJvbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0
cm9uZy5oCmluZGV4IGMzNzQ4MWE5NmYzNDVjZTI1ZjJiMmRmNzA4ZDc2NjQxOGNjNDg2MDUuLjZj
ZmRmM2RmZTA2MTIyNmRiY2RhZmIzZWRmOTdjMWUyM2IzNzI3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL1N0cm9uZy5oCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlm
IChzaG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgPT0gU2hvdWxkU3Ryb25nRGVzdHJ1Y3Rv
ckdyYWJMb2NrOjpZZXMpIHsKICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBob2xkZXIoaGVhcC0+
dm0oKSk7CiAgICAgICAgICAgICBoZWFwLT5kZWFsbG9jYXRlKHNsb3QoKSk7Ci0gICAgICAgICAg
ICBzZXRTbG90KDApOworICAgICAgICAgICAgc2V0U2xvdChudWxscHRyKTsKICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgIGhlYXAtPmRlYWxsb2NhdGUoc2xvdCgpKTsKLSAgICAgICAgICAg
IHNldFNsb3QoMCk7CisgICAgICAgICAgICBzZXRTbG90KG51bGxwdHIpOwogICAgICAgICB9CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0ltcGwuaAppbmRleCAzZjZmZmJmYTQz
NTEwYjU1ODU0ODNiNGFmYWU0M2MwZTE2MDIyMzAyLi40NDJhMDdmYzdkM2Y4N2Y5ODk5ZTZhYWVm
ZmZkYzliYjkwYzdiZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrSW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbXBsLmgKQEAg
LTY1LDggKzY1LDggQEAgcHJpdmF0ZToKIH07CiAKIGlubGluZSBXZWFrSW1wbDo6V2Vha0ltcGwo
KQotICAgIDogbV93ZWFrSGFuZGxlT3duZXIoMCkKLSAgICAsIG1fY29udGV4dCgwKQorICAgIDog
bV93ZWFrSGFuZGxlT3duZXIobnVsbHB0cikKKyAgICAsIG1fY29udGV4dChudWxscHRyKQogewog
ICAgIHNldFN0YXRlKERlYWxsb2NhdGVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9X
ZWFrSW5saW5lcy5oCmluZGV4IGNmNzk5NzE5NDA5YjUwM2RkOTNmYWQ3YTJlNjk3MTZmOTMwZjEy
N2IuLmEyNDQ2NzFmMjc2MWQ2YTM4MmYyZmQ1N2RhYjBmODA5MWFiM2M5NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNw
YWNlIEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKFQq
IGNlbGwsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVyLCB2b2lkKiBjb250ZXh0KQotICAgIDog
bV9pbXBsKGNlbGwgPyBXZWFrU2V0OjphbGxvY2F0ZShjZWxsLCB3ZWFrT3duZXIsIGNvbnRleHQp
IDogMCkKKyAgICA6IG1faW1wbChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoY2VsbCwgd2Vha093
bmVyLCBjb250ZXh0KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
V2Vha1NldC5jcHAKaW5kZXggZmUzMzE2MzQwODk3ZjNiMTY2YjM4NTM2ZTBhNmEyZDY0OWNiNTk2
NC4uZGU1OTEwNjAwMGNiN2U1NTlmZGUxYjZiNzU4NTQxMzhmMTU5MTJiZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvV2Vha1NldC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBXZWFrQmxvY2s6
OkZyZWVDZWxsKiBXZWFrU2V0Ojp0cnlGaW5kQWxsb2NhdG9yKCkKICAgICAgICAgICAgIHJldHVy
biBzd2VlcFJlc3VsdC5mcmVlTGlzdDsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogV2Vha0Jsb2NrOjpGcmVlQ2VsbCogV2Vha1NldDo6YWRkQWxsb2Nh
dG9yKENlbGxDb250YWluZXIgY29udGFpbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha1NldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1Nl
dC5oCmluZGV4IDk4NjdlMjRjNWQwMzA4ODk2YjA1ODFmYjVlMWJjZjZiYjllYjMxNWIuLjRiM2Ex
NGI5OTVhOTRmYWZhZWU4OTJiYzBmZGJkNGQxNTJiZTIzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9XZWFrU2V0LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgV2Vha1NldCA6IHB1YmxpYyBC
YXNpY1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0PiB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zm
c2V0c0V4dHJhY3RvcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBXZWFrSW1wbCogYWxsb2NhdGUo
SlNWYWx1ZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAgICBz
dGF0aWMgV2Vha0ltcGwqIGFsbG9jYXRlKEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSBudWxs
cHRyLCB2b2lkKiBjb250ZXh0ID0gbnVsbHB0cik7CiAgICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0
ZShXZWFrSW1wbCopOwogCiAgICAgV2Vha1NldChWTSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCAyYzc3NWY5NDRmOGVlNzRkNDFj
ZTk5MjM2MjViNTgyNzY3NGVjYmY1Li41NmIxN2VkYWE3YTJmZjMwNDQwYmNiYzFlMDY4NjQyNjQw
MjNkMTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2Fs
bEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIENhbGxGcmFtZTo6aW5pdERlcHJlY2F0ZWRD
YWxsRnJhbWVGb3JEZWJ1Z2dlcihDYWxsRnJhbWUqIGdsb2JhbEV4ZWMsIEpTQ2FsbAogewogICAg
IGdsb2JhbEV4ZWMtPnNldENvZGVCbG9jayhudWxscHRyKTsKICAgICBnbG9iYWxFeGVjLT5zZXRD
YWxsZXJGcmFtZShub0NhbGxlcigpKTsKLSAgICBnbG9iYWxFeGVjLT5zZXRSZXR1cm5QQygwKTsK
KyAgICBnbG9iYWxFeGVjLT5zZXRSZXR1cm5QQyhudWxscHRyKTsKICAgICBnbG9iYWxFeGVjLT5z
ZXRBcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygwKTsKICAgICBnbG9iYWxFeGVjLT5zZXRDYWxs
ZWUoZ2xvYmFsQ2FsbGVlKTsKICAgICBBU1NFUlQoZ2xvYmFsRXhlYy0+aXNEZXByZWNhdGVkQ2Fs
bEZyYW1lRm9yRGVidWdnZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0
ZXIvQ2FsbEZyYW1lLmgKaW5kZXggN2Q1NmZjNzU0NmJjZmUwMTI5ZTI3MGIxM2ZlZDYwNDlhYmVi
YzY3Yy4uMjQyYjMzNWI0ZWRkYTFjZTYwOWFmYTAxYjcwY2FmNTk1OGRiNzhiZiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApAQCAtMTUyLDcgKzE1
Miw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVy
blBDKCkgY29uc3QgeyByZXR1cm4gUmV0dXJuQWRkcmVzc1B0cihjYWxsZXJGcmFtZUFuZFBDKCku
cmV0dXJuUEMpOyB9CiAgICAgICAgIGJvb2wgaGFzUmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiAh
IWNhbGxlckZyYW1lQW5kUEMoKS5yZXR1cm5QQzsgfQotICAgICAgICB2b2lkIGNsZWFyUmV0dXJu
UEMoKSB7IGNhbGxlckZyYW1lQW5kUEMoKS5yZXR1cm5QQyA9IDA7IH0KKyAgICAgICAgdm9pZCBj
bGVhclJldHVyblBDKCkgeyBjYWxsZXJGcmFtZUFuZFBDKCkucmV0dXJuUEMgPSBudWxscHRyOyB9
CiAgICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgcmV0dXJuUENPZmZzZXQoKSB7IHJldHVybiBPQkpF
Q1RfT0ZGU0VUT0YoQ2FsbGVyRnJhbWVBbmRQQywgcmV0dXJuUEMpOyB9CiAgICAgICAgIEFic3Ry
YWN0UEMgYWJzdHJhY3RSZXR1cm5QQyhWTSYgdm0pIHsgcmV0dXJuIEFic3RyYWN0UEModm0sIHRo
aXMpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9J
bnRlcnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwCmluZGV4IDFkOTNlYjg1NDc5MDk1YzhkZjQ3ZTRhOTE0ZDE4NTc2MzE0OTllZTMu
LjgzMzZhOTEyNmNhZGE4NWU5OGZjMzBiZDk3MmQ2NDcxYTY4YjA1MjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNDkwLDcg
KzQ5MCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9u
SGFuZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvCiBjbGFzcyBHZXRDYXRjaEhhbmRsZXJG
dW5jdG9yIHsKIHB1YmxpYzoKICAgICBHZXRDYXRjaEhhbmRsZXJGdW5jdG9yKCkKLSAgICAgICAg
OiBtX2hhbmRsZXIoMCkKKyAgICAgICAgOiBtX2hhbmRsZXIobnVsbHB0cikKICAgICB7CiAgICAg
fQogCkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVD
b25zdHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTTwogICAgICAg
ICB9CiAgICAgfQogCi0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCAwKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgIEFTU0VSVChy
ZXN1bHQuaXNPYmplY3QoKSk7CiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oYXNPYmplY3QocmVz
dWx0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
UHJvdG9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90
b0NhbGxGcmFtZS5oCmluZGV4IDdjZjZkZTkxYmQ0YWYwYjcwYmJhMTY0OTMxZjFiZWQyMzJiN2Iw
YjkuLjQ3YWM4NWY1ODY5N2Q4NzVlN2RhYTk3ODJkYWFkZDE4OWJkNDVlYjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlICphcmdzOwogICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3Q7CiAKLSAgICBpbmxpbmUgdm9pZCBpbml0KENvZGVCbG9jayosIEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqLCBKU1ZhbHVlLCBpbnQsIEpTVmFsdWUqIG90aGVyQXJn
cyA9IDApOworICAgIGlubGluZSB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1ZSogb3RoZXJBcmdzID0gbnVsbHB0cik7
CiAKICAgICBpbmxpbmUgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdDsKICAgICBpbmxpbmUg
dm9pZCBzZXRDb2RlQmxvY2soQ29kZUJsb2NrKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDg1NWI4NTYyM2E5ZDI5NTFh
ODVlZTE3OThiY2IxMTNhM2FjMzBkOTUuLmIwYTViMmZjMjQxYWY5NTY0YzkyMjEwMDI2MjRlMDBj
NTg0YTQ0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFN0YWNrVmlzaXRvcjo6U3RhY2tWaXNp
dG9yKENhbGxGcmFtZSogc3RhcnRGcmFtZSwgVk0mIHZtKQogICAgICAgICB9CiAKICAgICB9IGVs
c2UgewotICAgICAgICBtX2ZyYW1lLm1fZW50cnlGcmFtZSA9IDA7Ci0gICAgICAgIHRvcEZyYW1l
ID0gMDsKKyAgICAgICAgbV9mcmFtZS5tX2VudHJ5RnJhbWUgPSBudWxscHRyOworICAgICAgICB0
b3BGcmFtZSA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fZnJhbWUubV9jYWxsZXJJc0VudHJ5RnJh
bWUgPSBmYWxzZTsKICAgICByZWFkRnJhbWUodG9wRnJhbWUpOwpAQCAtMTg0LDcgKzE4NCw3IEBA
IHZvaWQgU3RhY2tWaXNpdG9yOjpyZWFkTm9uSW5saW5lZEZyYW1lKENhbGxGcmFtZSogY2FsbEZy
YW1lLCBDb2RlT3JpZ2luKiBjb2RlT3JpCiAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi0g
ICAgbV9mcmFtZS5tX2lubGluZUNhbGxGcmFtZSA9IDA7CisgICAgbV9mcmFtZS5tX2lubGluZUNh
bGxGcmFtZSA9IG51bGxwdHI7CiAjZW5kaWYKIH0KIApAQCAtNDI5LDkgKzQyOSw5IEBAIHZvaWQg
U3RhY2tWaXNpdG9yOjpGcmFtZTo6cmV0cmlldmVFeHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBp
bnQmIHN0YXJ0T2Zmc2V0LCBpCiAKIHZvaWQgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c2V0VG9FbmQo
KQogewotICAgIG1fY2FsbEZyYW1lID0gMDsKKyAgICBtX2NhbGxGcmFtZSA9IG51bGxwdHI7CiAj
aWYgRU5BQkxFKERGR19KSVQpCi0gICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOworICAgIG1faW5s
aW5lQ2FsbEZyYW1lID0gbnVsbHB0cjsKICNlbmRpZgogICAgIG1faXNXYXNtRnJhbWUgPSBmYWxz
ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0
b3IuaAppbmRleCAwYzgxZDFiMzIzNjk4Njc5Mjc0MjdjNmQwZjc0ZjE0OTMyM2Q3Nzc0Li5lMGQ5
OTFjZWJmMWU3YWMxMGVkNzE5YzE1MzdkODA3MDEyNzJkN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCkBAIC0xNjgsNyArMTY4LDcg
QEAgcHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdvdG9OZXh0RnJhbWUoKTsK
IAogICAgIHZvaWQgcmVhZEZyYW1lKENhbGxGcmFtZSopOwotICAgIHZvaWQgcmVhZE5vbklubGlu
ZWRGcmFtZShDYWxsRnJhbWUqLCBDb2RlT3JpZ2luKiA9IDApOworICAgIHZvaWQgcmVhZE5vbklu
bGluZWRGcmFtZShDYWxsRnJhbWUqLCBDb2RlT3JpZ2luKiA9IG51bGxwdHIpOwogI2lmIEVOQUJM
RShERkdfSklUKQogICAgIHZvaWQgcmVhZElubGluZWRGcmFtZShDYWxsRnJhbWUqLCBDb2RlT3Jp
Z2luKik7CiAjZW5kaWYKQEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBDYWxsZXJGdW5jdG9yIHsK
IHB1YmxpYzoKICAgICBDYWxsZXJGdW5jdG9yKCkKICAgICAgICAgOiBtX2hhc1NraXBwZWRGaXJz
dEZyYW1lKGZhbHNlKQotICAgICAgICAsIG1fY2FsbGVyRnJhbWUoMCkKKyAgICAgICAgLCBtX2Nh
bGxlckZyYW1lKG51bGxwdHIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qaXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggOTJjYTE0ZTllMzNhZTAyMjkyNGNkNDJkNDYz
MWMyNWFhOTAxNzg3MS4uZjlkNTc3NDRlNzczMjk5NjBiNzY0NTBkMTI3OTk1NGVmZWNlZDA2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC01Myw3
ICs1Myw3IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7
CiBwdWJsaWM6CiAgICAgQXNzZW1ibHlIZWxwZXJzKENvZGVCbG9jayogY29kZUJsb2NrKQogICAg
ICAgICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKLSAgICAgICAgLCBtX2Jhc2VsaW5lQ29kZUJs
b2NrKGNvZGVCbG9jayA/IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpIDogMCkKKyAg
ICAgICAgLCBtX2Jhc2VsaW5lQ29kZUJsb2NrKGNvZGVCbG9jayA/IGNvZGVCbG9jay0+YmFzZWxp
bmVBbHRlcm5hdGl2ZSgpIDogbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChtX2NvZGVCbG9j
aykgewogICAgICAgICAgICAgQVNTRVJUKG1fYmFzZWxpbmVDb2RlQmxvY2spOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggMzVkNTA5YmMzZjU0ZWE4ZGQzMmUw
YWRlYzAwZWZlN2E1MTUyOGFhMi4uZWNkYTU2NGMwNDhkNzJkZDA5MmRjMmYyYTAyNDNhZWQzYjU1
ODk1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC00OSw3
ICs0OSw3IEBAIGNsYXNzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU7CiAKIGNsYXNzIENDYWxsSGVscGVy
cyA6IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogcHVibGljOgotICAgIENDYWxsSGVscGVycyhD
b2RlQmxvY2sqIGNvZGVCbG9jayA9IDApCisgICAgQ0NhbGxIZWxwZXJzKENvZGVCbG9jayogY29k
ZUJsb2NrID0gbnVsbHB0cikKICAgICAgICAgOiBBc3NlbWJseUhlbHBlcnMoY29kZUJsb2NrKQog
ICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENv
ZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAppbmRleCBhODUw
MDczMmE5N2NlMDI1NjQ1MTA2ZGNmZjJlNjc3NzYyMmM5YzJlLi44YjUwZmZmMmU5OGM5NTgyZGM1
NTEzYmZhNTQwMGM5NmZhNWFkYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5j
cHAKQEAgLTcyLDI1ICs3MiwyNSBAQCB2b2lkIEpJVENvZGU6OnZhbGlkYXRlUmVmZXJlbmNlcyhj
b25zdCBUcmFja2VkUmVmZXJlbmNlcyYpCiBERkc6OkNvbW1vbkRhdGEqIEpJVENvZGU6OmRmZ0Nv
bW1vbigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogREZHOjpKSVRDb2RlKiBKSVRDb2RlOjpkZmco
KQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7Cisg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIEZUTDo6SklUQ29kZSogSklUQ29kZTo6ZnRsKCkKIHsK
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJl
dHVybiBudWxscHRyOwogfQogCiBGVEw6OkZvck9TUkVudHJ5SklUQ29kZSogSklUQ29kZTo6ZnRs
Rm9yT1NSRW50cnkoKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgSklUQ29kZTo6c2hyaW5r
VG9GaXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDk3ZjRkYzA3YTVmOWJlNzViODM2NjcwZmM3Mjdl
NjI2YTQyZjIwZTkuLjMzYWE4YzA2NmFmNWRhYWU5NGJhMzQzNjE5MzBlNjYxYTc3MjQyZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTAzOSw3
ICsxMDM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZh
bChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
Ci0gICAgY2FsbGVlRnJhbWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0
Q29kZUJsb2NrKG51bGxwdHIpOwogICAgIAogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVl
RnJhbWUtPmd1YXJhbnRlZWRKU1ZhbHVlQ2FsbGVlKCksIGdsb2JhbEZ1bmNFdmFsKSkKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwpAQCAtMTA1NSw3ICsxMDU1LDcg
QEAgc3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgY2Fs
bGVlRnJhbWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2Nr
KG51bGxwdHIpOwogCiAgICAgaWYgKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCkg
PT0gQ29kZUZvckNhbGwpIHsKICAgICAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZt
LCBjYWxsZWUpOwpAQCAtMTU3OCwyMSArMTU3OCwyMSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklU
X09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRl
YwogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVU
b0RGRyIsICgiY291bnRlciA9ICIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSkpOwog
ICAgICAgICBjb2RlQmxvY2stPnVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7CiAgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNob29zaW5nIG5vdCB0byBvcHRpbWl6ZSAi
LCAqY29kZUJsb2NrLCAiIHlldCwgYmVjYXVzZSB0aGUgdGhyZXNob2xkIGhhc24ndCBiZWVuIHJl
YWNoZWQuIik7Ci0gICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CisgICAgICAgIHJl
dHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7CiAgICAgfQogICAgIAogICAgIERl
YnVnZ2VyKiBkZWJ1Z2dlciA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7
CiAgICAgaWYgKFVOTElLRUxZKGRlYnVnZ2VyICYmIChkZWJ1Z2dlci0+aXNTdGVwcGluZygpIHx8
IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkp
KSkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1p
emVUb0RGRyIsICgiZGVidWdnZXIgaXMgc3RlcHBpbmcgb3IgaGFzIHJlcXVlc3RzIikpOwogICAg
ICAgICB1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZE9wdGltaXplQWZ0ZXJXYXJtVXAoY29kZUJsb2Nr
KTsKLSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKKyAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKICAgICB9CiAKICAgICBpZiAoY29kZUJsb2Nr
LT5tX3Nob3VsZEFsd2F5c0JlSW5saW5lZCkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5U
KGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgic2hvdWxkIGFsd2F5cyBiZSBpbmxp
bmVkIikpOwogICAgICAgICB1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZE9wdGltaXplQWZ0ZXJXYXJt
VXAoY29kZUJsb2NrKTsKICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCAiQ2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBiZWNhdXNl
IG1fc2hvdWxkQWx3YXlzQmVJbmxpbmVkID09IHRydWUuIik7Ci0gICAgICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoMCwgMCk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVs
bHB0cik7CiAgICAgfQogCiAgICAgLy8gV2UgY2Fubm90IGJlIGluIHRoZSBwcm9jZXNzIG9mIGFz
eW5jaHJvbm91cyBjb21waWxhdGlvbiBhbmQgYWxzbyBoYXZlIGFuIG9wdGltaXplZApAQCAtMTYz
NCw3ICsxNjM0LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
T3B0aW1pemUoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWMKICAgICAgICAgLy8gcmVwbGFj
ZW1lbnQuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjb2RlQmxvY2stPmhhc09wdGltaXplZFJl
cGxhY2VtZW50KCkpOwogICAgICAgICBjb2RlQmxvY2stPnNldE9wdGltaXphdGlvblRocmVzaG9s
ZEJhc2VkT25Db21waWxhdGlvblJlc3VsdChDb21waWxhdGlvbkRlZmVycmVkKTsKLSAgICAgICAg
cmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChu
dWxscHRyLCBudWxscHRyKTsKICAgICB9CiAKICAgICBpZiAod29ya2xpc3RTdGF0ZSA9PSBERkc6
OldvcmtsaXN0OjpDb21waWxlZCkgewpAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAgU2xvd1BhdGhSZXR1
cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoVk0qIHZtUG9pbnRlciwgdWlu
dDMyX3QgYnl0ZWMKICAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAi
ZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJjb21waWxlZCBhbmQgZmFpbGVkIikpOwogICAgICAgICAg
ICAgY29kZUJsb2NrLT51cGRhdGVBbGxQcmVkaWN0aW9ucygpOwogICAgICAgICAgICAgZGF0YUxv
Z0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ29kZSBibG9jayAiLCAqY29kZUJsb2NrLCAi
IHdhcyBjb21waWxlZCBidXQgaXQgZG9lc24ndCBoYXZlIGFuIG9wdGltaXplZCByZXBsYWNlbWVu
dC4iKTsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CisgICAgICAgICAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICB9CiAgICAg
fSBlbHNlIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICAgICAg
ICAgQ29kZUJsb2NrKiByZXBsYWNlbWVudCA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKQEAg
LTE2NzEsNyArMTY3MSw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgICAgICAgICAg
ICAgIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgY29kZUJsb2NrLAogICAgICAgICAg
ICAgICAgICIoIiwgcmVwbGFjZW1lbnQsICIpIChpbiBsb29wKS4iKTsKICAgICAgICAgICAgIHJl
cGxhY2VtZW50LT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJl
b3B0aW1pemF0aW9uVHJpZ2dlciwgQ291bnRSZW9wdGltaXphdGlvbik7Ci0gICAgICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3Vs
dChudWxscHRyLCBudWxscHRyKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlm
ICghY29kZUJsb2NrLT5zaG91bGRPcHRpbWl6ZU5vdygpKSB7CkBAIC0xNjc5LDcgKzE2NzksNyBA
QCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSog
dm1Qb2ludGVyLCB1aW50MzJfdCBieXRlYwogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9u
czo6dmVyYm9zZU9TUigpLAogICAgICAgICAgICAgICAgICJEZWxheWluZyBvcHRpbWl6YXRpb24g
Zm9yICIsICpjb2RlQmxvY2ssCiAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIG9mIGluc3VmZmlj
aWVudCBwcm9maWxpbmcuIik7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDAp
OworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKICAg
ICAgICAgfQogCiAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIlRy
aWdnZXJpbmcgb3B0aW1pemVkIGNvbXBpbGF0aW9uIG9mICIsICpjb2RlQmxvY2spOwpAQCAtMTcw
NSw3ICsxNzA1LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9u
T3B0aW1pemUoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWMKICAgICAgICAgCiAgICAgICAg
IGlmIChyZXN1bHQgIT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICBDT0RF
QkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiY29tcGls
YXRpb24gZmFpbGVkIikpOwotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsK
KyAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgCkBAIC0xNzQ2LDcgKzE3NDYsNyBAQCBTbG93UGF0aFJldHVyblR5
cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJf
dCBieXRlYwogICAgICAgICAgICAgIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgY29k
ZUJsb2NrLCAiIC0+ICIsCiAgICAgICAgICAgICBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIg
KGFmdGVyIE9TUiBmYWlsKS4iKTsKICAgICAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5qZXR0aXNv
bihQcm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dl
ck9uT1NSRW50cnlGYWlsLCBDb3VudFJlb3B0aW1pemF0aW9uKTsKLSAgICAgICAgcmV0dXJuIGVu
Y29kZVJlc3VsdCgwLCAwKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBu
dWxscHRyKTsKICAgICB9CiAKICAgICAvLyBPU1IgZmFpbGVkIHRoaXMgdGltZSwgYnV0IGl0IG1p
Z2h0IHN1Y2NlZWQgbmV4dCB0aW1lISBMZXQgdGhlIGNvZGUgcnVuIGEgYml0CkBAIC0xNzU0LDcg
KzE3NTQsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRp
bWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlYwogICAgIGNvZGVCbG9jay0+b3B0aW1p
emVBZnRlcldhcm1VcCgpOwogICAgIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2Nr
LCAiZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwotICAgIHJldHVybiBlbmNv
ZGVSZXN1bHQoMCwgMCk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRy
KTsKIH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2go
Vk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJpdHMpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9SZXBhdGNoLmNwcAppbmRleCAxOGJkNmU0NTNlOGQ2MDU3MGI5M2IxMjQ3ZWI2NWI4
MmVmMjNlZTY3Li5iMTdlYzcyNGI2MWViMTEwYjQyMjc4MzBkMmEyZDBlMmIyNjg4MmVjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTExMTMsNyArMTExMyw3IEBAIHN0
YXRpYyB2b2lkIHJldmVydENhbGwoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywg
TWFjcm9Bc3NlbWJsZXJDb2RlUmVmCiAgICAgICAgIGlmICghY2FsbExpbmtJbmZvLmNsZWFyZWRC
eUpldHRpc29uKCkpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXZlcnRKdW1wUmVw
bGFjZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2Vt
Ymxlcjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLmhv
dFBhdGhCZWdpbigpKSwKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8uY2FsbGVlR1BSKCks
IDApOworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5jYWxsZWVHUFIoKSwgbnVsbHB0cik7
CiAgICAgICAgICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZvLCBjb2RlUmVmKTsKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcihjYWxsTGlua0luZm8uaG90
UGF0aEJlZ2luKCksIG51bGxwdHIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggZjY5OTQ1Y2U0OTlkOGU4OGJjNWI3YTQ4
MTY0NTE1MTUyMGRkZTVhZC4uYzQyNGYxMjMxZWJkMzFkYjUwN2EzZjhiMGI5ZDRjNTg4MTEwZjE0
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApA
QCAtMjcyLDcgKzI3Miw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQ
dHJUYWc+IG5hdGl2ZUZvckdlbmVyYXRvcihWTSYgdm0sIFRodW5rRnVuCiAgICAgICAgIGJyZWFr
OwogICAgIH0KIAotICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoMCwgQ2FsbEZyYW1l
U2xvdDo6Y29kZUJsb2NrKTsKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG51bGxw
dHIsIENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CiAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86
OmNhbGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKIAogICAgIC8vIEhvc3QgZnVu
Y3Rpb24gc2lnbmF0dXJlOiBmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9qc2MuY3BwCmluZGV4IDQzOGI0NDRlNWNkZGJjNmNjNjkxMjljNjk3MjU0OTc0Y2E4NjA1NDMu
LjY4NTMzZWJmMGY4ZmU2MzU4NjVjMzVkOWY0NzczYTlmODllZjUyZGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCkBAIC00ODMsNyArNDgzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwgVHlwZUluZm8o
R2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIG51bGxwdHIsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xv
YmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAgIHN0
YXRpYyBSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2JhbE9i
amVjdCopIHsgcmV0dXJuIFJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpOyB9CkBAIC01
OTIsNyArNTkyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgICAgIGlmICghYXJndW1lbnRz
LmlzRW1wdHkoKSkgewotICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KHRoaXMsIDApOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RF
bXB0eUFycmF5KHRoaXMsIG51bGxwdHIpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgYXJyYXktPnB1dERp
cmVjdEluZGV4KHRoaXMsIGksIGpzU3RyaW5nKHZtLCBhcmd1bWVudHNbaV0pKTsKICAgICAgICAg
ICAgIHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFyZ3VtZW50cyIp
LCBhcnJheSk7CkBAIC0xNDc2LDcgKzE0NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uUnVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZQog
CiAgICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9i
YWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigp
KTsKIAotICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShyZWFsbSwgMCk7
CisgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHJlYWxtLCBudWxscHRy
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsr
aSkgewogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgocmVhbG0sIGkgLSAxLCBjYWxsRnJh
bWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKQEAgLTE1MDgsNyArMTUwOCw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW5TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsCiAKICAgICBHbG9iYWxPYmplY3QqIHJlYWxtID0gR2xvYmFsT2JqZWN0
OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSks
IFZlY3RvcjxTdHJpbmc+KCkpOwogCi0gICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KHJlYWxtLCAwKTsKKyAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkocmVhbG0sIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29k
ZWRKU1ZhbHVlKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBjYWxsRnJhbWUtPmFy
Z3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChyZWFs
bSwgaSAtIDEsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzU5YzEzMjcwZTU4
YzY0NDFhY2YyMWIyZjJkOGM1NThkZTlhODUzMS4uNDUxYWMzNGZlYWM4NWIyZTg3ZDIzZDhkYmY5
N2Y5YzcxNmJhOWIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRT
bG93UGF0aHMuY3BwCkBAIC00NzgsMTEgKzQ3OCwxMSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChs
b29wX29zcikKIAogICAgIGlmICghc2hvdWxkSklUKGNvZGVCbG9jaykpIHsKICAgICAgICAgY29k
ZUJsb2NrLT5kb250SklUQW55dGltZVNvb24oKTsKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCAwKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhudWxscHRyLCBudWxscHRyKTsKICAgICB9
CiAgICAgCiAgICAgaWYgKCFqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyh2bSwgY29kZUJsb2Nr
LCBsb29wT1NSRW50cnlCeXRlY29kZUluZGV4KSkKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTygw
LCAwKTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhudWxscHRyLCBudWxscHRyKTsKICAgICAK
ICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgIm9zckVudHJ5IiwgKCJhdCAiLCBs
b29wT1NSRW50cnlCeXRlY29kZUluZGV4KSk7CiAKQEAgLTIxOTgsNyArMjE5OCw3IEBAIGV4dGVy
biAiQyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KENh
bGxGcmFtZSogY2FsbEZyYW1lCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoVU5MSUtF
TFkoc2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHJldHVy
blRvVGhyb3codm0pLCAwKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChyZXR1cm5Ub1Ro
cm93KHZtKSwgbnVsbHB0cik7CiAKICAgICByZXR1cm4gZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlv
bihjb2RlQmxvY2ssIHBjKTsKIH0KQEAgLTIyMTMsNyArMjIxMyw3IEBAIGV4dGVybiAiQyIgU2xv
d1BhdGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwg
UHJvdG9DYWxsCiAgICAgZWxzZQogICAgICAgICBnbG9iYWxPYmplY3QgPSBwcm90b0ZyYW1lLT5j
YWxsZWUoKS0+Z2xvYmFsT2JqZWN0KCp2bSk7CiAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKKyAg
ICByZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwogfQogCiAjaWYgRU5BQkxF
KENfTE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVp
bGRlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXgg
ZDk1NTgwOGM2YTMyOGRjZTA2ZGE3M2U3NTFkNjIyMzdkZDc3YmE2Mi4uMTBhMTQ1M2Y4YmUyN2Qy
MmUwZTM1YTkwNmU1OTBkY2Y0N2FlMGY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgKQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lv
bk5vZGUqIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25z
dCBJZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIHN0YXJ0KQogICAgIHsKICAgICAgICAgaWYgKFlhcnI6Omhhc0Vycm9yKFlh
cnI6OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkpCi0gICAg
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBS
ZWdFeHBOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWdFeHBOb2RlKGxvY2F0aW9u
LCBwYXR0ZXJuLCBmbGFncyk7CiAgICAgICAgIGludCBzaXplID0gcGF0dGVybi5sZW5ndGgoKSAr
IDI7IC8vICsgMiBmb3IgdGhlIHR3byAvJ3MKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZW5kID0g
c3RhcnQgKyBzaXplOwpAQCAtOTcxLDcgKzk3MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lk
IGFwcGVuZEFycmF5UGF0dGVyblNraXBFbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbikKICAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4
KEFycmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGlzaW9uLCBsb2NhdGlvbiwgMCwgbnVs
bHB0cik7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRp
bmdUeXBlOjpFbGlzaW9uLCBsb2NhdGlvbiwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgfQogCiAg
ICAgdm9pZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwg
RXhwcmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKQEAgLTE1MzYsNyArMTUzNiw3IEBAIEV4cHJl
c3Npb25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mIGxvY2F0aW9uLCBpbnQKICAgICAgICAgcmV0dXJuIG1ha2VQb3dOb2RlKGxvY2F0aW9uLCBs
aHMuZmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICB9CiAg
ICAgQ1JBU0goKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogRXhw
cmVzc2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNz
aW9uTm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNzaWdu
bWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmNwcAppbmRleCA5YWEyNjczMDMzMGQ2NTM4ZjQ4YjBjMDE1MzZiN2MyMzIxNTI3
NWM1Li45YzE1NTRhMDhhOWZlYTg5YjczMmUxY2I2OGEwMzNkN2MyMDgxNzEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgTGV4
ZXI8VD46OnNldENvZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSogYXJl
bmEpCiAgICAgaWYgKCFzb3VyY2VTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHNldENvZGVTdGFy
dChzb3VyY2VTdHJpbmcpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb2RlU3RhcnQgPSAwOworICAg
ICAgICBtX2NvZGVTdGFydCA9IG51bGxwdHI7CiAKICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CiAg
ICAgbV9zb3VyY2VPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKQEAgLTEyMjcsNyArMTIy
Nyw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSB0
eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQg
PSBtYWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKTsKICAg
ICAgICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICB9IGVsc2UKLSAgICAgICAgdG9rZW5EYXRh
LT5pZGVudCA9IDA7CisgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogCiAgICAg
cmV0dXJuIFN0cmluZ1BhcnNlZFN1Y2Nlc3NmdWxseTsKIH0KQEAgLTEzODIsNyArMTM4Miw3IEBA
IHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gYXV0byBMZXhlcjxUPjo6cGFyc2VT
dHJpbmdTbG93Q2FzZShKU1Rva2VuRGF0CiAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKICAg
ICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0YSgp
LCBtX2J1ZmZlcjE2LnNpemUoKSk7CiAgICAgZWxzZQotICAgICAgICB0b2tlbkRhdGEtPmlkZW50
ID0gMDsKKyAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAKICAgICBtX2J1ZmZl
cjE2LnNocmluaygwKTsKICAgICByZXR1cm4gU3RyaW5nUGFyc2VkU3VjY2Vzc2Z1bGx5OwpAQCAt
MjY4MSw3ICsyNjgxLDcgQEAgSlNUb2tlblR5cGUgTGV4ZXI8VD46OnNjYW5UZW1wbGF0ZVN0cmlu
ZyhKU1Rva2VuKiB0b2tlblJlY29yZCwgUmF3U3RyaW5nc0J1aWxkTW8KIHRlbXBsYXRlIDx0eXBl
bmFtZSBUPgogdm9pZCBMZXhlcjxUPjo6Y2xlYXIoKQogewotICAgIG1fYXJlbmEgPSAwOworICAg
IG1fYXJlbmEgPSBudWxscHRyOwogCiAgICAgVmVjdG9yPExDaGFyPiBuZXdCdWZmZXI4OwogICAg
IG1fYnVmZmVyOC5zd2FwKG5ld0J1ZmZlcjgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhl
ci5oCmluZGV4IDdjZmMwM2Y1MTg3MjcxMTUwMmIyMWFlNTIwNjZjMDI5MGNiNTViZDQuLmNjMWFk
YWY1YjY1MTY3YzViM2M5ZTI2MmQ4NDI4ODI5NmUxOWViOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmgKQEAgLTM3OCw3ICszNzgsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5U
eXBlIExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCBP
cAogICAgICAgICAmJiAhbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCiAjZW5kaWYKICAgICAgICAg
KQotICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKKyAgICAgICAgdG9rZW5EYXRhLT5pZGVu
dCA9IG51bGxwdHI7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxD
aGFySWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuY3BwCmluZGV4IDlkMWNmYTRmMTc2MTMwMmEzM2JiYWUzMWVmNjBmZGZjYWYy
MDdkZjUuLjY1YzE2MDEyOGM4YTMyYTgyZWZhMWJmOTE0NDdjZDY4YTUxZDIxZTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgU2NvcGVO
b2RlOjpTY29wZU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9j
YXRpb24mIHN0YXJ0TG9jYXQKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250ZXh0ID8gU3Ry
aWN0TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9pbm5lckFycm93RnVuY3Rpb25D
b2RlRmVhdHVyZXMoTm9Jbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcykKICAgICAsIG1fbnVtQ29u
c3RhbnRzKDApCi0gICAgLCBtX3N0YXRlbWVudHMoMCkKKyAgICAsIG1fc3RhdGVtZW50cyhudWxs
cHRyKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05v
ZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNzRlYmNh
ZTViMGJmNjRhZTc3OTJkNzg5NzFhMTgwYjg4NjhhNjAyMS4uNDNkMTMxYzgzNThjZTllMzE5YmQz
OWU5NzVkOTFlMGFlM2Y3MGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApA
QCAtMTc0LDcgKzE3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93
blR5cGUoKSk7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSAw
KSA9IDA7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSBudWxscHRyKSA9IDA7CiAKICAg
ICAgICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAg
ICAgICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAg
LTIzNSw3ICsyMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0
aW9uID0gMCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSBudWxscHRyKSA9IDA7CiAKICAg
ICAgICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwg
aW50IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgdW5zaWduZWQg
bGFzdExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CkBAIC0yOTIsNyArMjkyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0ICBvdmVy
cmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVlKEJ5
dGVjb2RlR2VuZXJhdG9yJikgY29uc3QgPSAwOwogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZW1p
dEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwmIHRy
dWVUYXJnZXQsIExhYmVsJiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKSBvdmVycmlkZTsK
ICAgICB9OwogCkBAIC0zMjIsNyArMzIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE51
bWJlck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlIHZhbHVlKTsKICAgICAgICAg
ZG91YmxlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAgICB2aXJ0dWFs
IGJvb2wgaXNJbnRlZ2VyTm9kZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBmaW5hbDsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNO
dW1iZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC01NDksNyArNTQ5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHJhdygpIHsgcmV0dXJu
IG1fcmF3OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fY29v
a2VkOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX3JhdzsKQEAgLTU3Nyw3ICs1NzcsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIHRl
bXBsYXRlRXhwcmVzc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3RlbXBsYXRlRXhwcmVzc2lvbnM7
IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVs
bHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgVGVtcGxhdGVTdHJpbmdMaXN0Tm9kZSogbV90ZW1w
bGF0ZVN0cmluZ3M7CiAgICAgICAgIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3ROb2RlKiBtX3RlbXBs
YXRlRXhwcmVzc2lvbnM7CkBAIC01OTAsNyArNTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFRlbXBsYXRlTGl0ZXJhbE5vZGUqIHRlbXBsYXRlTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJu
IG1fdGVtcGxhdGVMaXRlcmFsOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX3RhZzsKICAgICAgICAgVGVtcGxhdGVMaXRlcmFsTm9kZSogbV90ZW1wbGF0ZUxpdGVy
YWw7CkBAIC02MDEsNyArNjAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ0V4cE5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29u
c3QgSWRlbnRpZmllciYgZmxhZ3MpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX3BhdHRlcm47CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fZmxhZ3M7CkBA
IC02MTIsNyArNjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRoaXNOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgU3Vw
ZXJOb2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKQEAgLTYyMSw3ICs2MjEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNTdXBlck5v
ZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIElt
cG9ydE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVF
eHByZXNzaW9uRGF0YSB7CkBAIC02MzAsNyArNjMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAg
ICBwcml2YXRlOgogICAgICAgICBib29sIGlzSW1wb3J0Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRy
KSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBA
IC02NDksNyArNjQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBib29sIGlzTmV3VGFyZ2V0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIH07CiAK
ICAgICBjbGFzcyBJbXBvcnRNZXRhTm9kZSBmaW5hbCA6IHB1YmxpYyBNZXRhUHJvcGVydHlOb2Rl
IHsKQEAgLTY1OCw3ICs2NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgaXNJbXBvcnRNZXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTY3MCw3ICs2NzAsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigp
IGNvbnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBp
c1B1cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgYm9vbCBp
c0xvY2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzA3LDcgKzcw
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEVsZW1lbnROb2RlKiBlbGVtZW50cygp
IGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBp
c1NpbXBsZUFycmF5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTc5NSw3ICs3OTUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc09iamVjdExpdGVyYWwoKSBjb25zdCBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIFByb3BlcnR5TGlzdE5v
ZGUqIG1fbGlzdDsKICAgICB9OwpAQCAtODEwLDcgKzgxMCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9z
dWJzY3JpcHRIYXNBc3NpZ25tZW50czsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlz
TG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIGJvb2wg
aXNCcmFja2V0QWNjZXNzb3JOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpA
QCAtODI4LDcgKzgyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsK
IAogICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CiAgICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJl
dHVybiB0cnVlOyB9CkBAIC04NDQsNyArODQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9u
OyB9CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3ByZWFk
RXhwcmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKQEAgLTg1Nyw3ICs4NTcsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVy
biBtX2V4cHJlc3Npb247IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAgICAgCiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgfTsKQEAgLTg3MSw3ICs4NzEsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIEFyZ3VtZW50c05vZGUgZmluYWwgOiBwdWJsaWMg
UGFyc2VyQXJlbmFGcmVlYWJsZSB7CkBAIC04ODgsNyArODg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIE5ld0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiwgQXJndW1lbnRzTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9leHByOwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CkBAIC04OTksNyAr
ODk5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlv
biYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzRnVuY3Rp
b25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC05MTEsNyArOTEx
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAg
ICBib29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
CkBAIC05MjQsNyArOTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2Fs
bFJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBB
cmd1bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQ
b3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIApAQCAtOTM3LDcgKzkzNyw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cywgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNGdW5jdGlv
bkNhbGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTk1Miw3ICs5NTIs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYs
IEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRy
KSBvdmVycmlkZTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2Fs
bCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTk4Myw3ICs5ODMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICN1bmRlZiBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVO
Q1RJT05TCiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6RnVuY3Rpb247IH0KIApAQCAtOTk4
LDcgKzk5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90
Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3Qg
SWRlbnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3Qs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVy
cmlkZTsKICAgICAgICAgc2l6ZV90IG1fZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5Owog
ICAgIH07CiAgICAgCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1v
c3RDYWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgICAgICBzaXplX3QgbV9kaXN0YW5jZVRv
SW5uZXJtb3N0Q2FsbE9yQXBwbHk7CiAgICAgfTsKIApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzRGVsZXRlTm9kZSgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTAyOCw3ICsxMDI4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBi
b29sIGlzRGVsZXRlTm9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTA0
MSw3ICsxMDQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZURvdE5vZGUoY29u
c3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZp
ZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsK
IAogICAgICAgICBib29sIGlzRGVsZXRlTm9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7
IH0KIApAQCAtMTA1NCw3ICsxMDU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0
ZVZhbHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBv
dmVycmlkZTsKIAogICAgICAgICBib29sIGlzRGVsZXRlTm9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KIApAQCAtMTA2Niw3ICsxMDY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIFZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIp
IG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAg
LTEwNzgsNyArMTA3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsK
IAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC0xMDg4LDcg
KzEwODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTEwOTgsMTAgKzEwOTgsMTAg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90RW5kKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
LSAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJy
YWNrZXQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwotICAgICAgICB2aXJ0
dWFsIFJlZ2lzdGVySUQqIGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lz
dGVySUQqIGVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxs
cHRyKTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0QnJhY2tldChCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cik7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0
ZXJJRCogZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cik7
CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgT3BlcmF0b3IgbV9v
cGVyYXRvcjsKQEAgLTExMTIsMTAgKzExMTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFBvc3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgT3Bl
cmF0b3IsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2
YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVz
b2x2ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRCcmFja2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERvdChCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJyYWNrZXQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIp
IG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3Mg
VW5hcnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewpAQCAtMTEyOCw3ICsxMTI4LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEKCkgY29uc3QgeyBy
ZXR1cm4gbV9vcGNvZGVJRDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByOwogICAgICAgICBPcGNvZGVJRCBtX29wY29kZUlEOwpAQCAtMTEzOSw3ICsxMTM5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFVuYXJ5UGx1c05vZGUoY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIHN0cmlwVW5hcnlQbHVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gZXhwcigpOyB9
CiAgICAgfTsKQEAgLTExNjYsNyArMTE2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBC
aW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIx
LCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogICAgICAgICBCaW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0
VHlwZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29k
ZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRTdHJjYXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZGVzdGlu
YXRpb24sIFJlZ2lzdGVySUQqIGxocyA9IDAsIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSogZW1pdEV4
cHJlc3Npb25JbmZvRm9yTWUgPSAwKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFN0cmNhdChC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBSZWdpc3RlcklEKiBs
aHMgPSBudWxscHRyLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zv
ck1lID0gbnVsbHB0cik7CiAgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250
ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwmIHRydWVUYXJnZXQsIExhYmVsJiBmYWxzZVRh
cmdldCwgRmFsbFRocm91Z2hNb2RlKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbGhzKCkgeyByZXR1cm4gbV9leHByMTsgfTsKQEAgLTExNzgsNyArMTE3OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBlbnVtIGNsYXNzIFVJbnQzMlJlc3VsdCA6IHVpbnQ4X3QgeyBV
SW50MzIsIENvbnN0YW50LCB9OwogCiAgICAgICAgIHZvaWQgdHJ5Rm9sZFRvQnJhbmNoKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgVHJpU3RhdGUmIGJyYW5jaENvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUq
JiBicmFuY2hFeHByZXNzaW9uKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBu
dWxscHRyKSBvdmVycmlkZTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgT3Bjb2RlSUQgb3Bj
b2RlSUQoKSBjb25zdCB7IHJldHVybiBtX29wY29kZUlEOyB9CkBAIC0xMjY4LDcgKzEyNjgsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAg
ICAgfTsKICAgICAKICAgICBjbGFzcyBJbnN0YW5jZU9mTm9kZSBmaW5hbCA6IHB1YmxpYyBUaHJv
d2FibGVCaW5hcnlPcE5vZGUgewpAQCAtMTI3Niw3ICsxMjc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIEluc3RhbmNlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgSW5Ob2RlIGZpbmFsIDog
cHVibGljIFRocm93YWJsZUJpbmFyeU9wTm9kZSB7CkBAIC0xMjg0LDcgKzEyODQsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgSW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgRXF1YWxOb2RlIGZp
bmFsIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgRXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNz
aWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgTm90RXF1YWxOb2Rl
IGZpbmFsIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICAgICAgICAgU3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgTm90
U3RyaWN0RXF1YWxOb2RlIGZpbmFsIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMzM0LDcg
KzEzMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTG9naWNhbE9wTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBl
eHByMiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZW1pdEJ5
dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwmIHRydWVU
YXJnZXQsIExhYmVsJiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKSBvdmVycmlkZTsKIAog
ICAgICAgICBMb2dpY2FsT3BlcmF0b3IgbV9vcGVyYXRvcjsKQEAgLTEzNzYsNyArMTM3Niw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDb25kaXRpb25hbE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwg
RXhwcmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIG1fbG9naWNhbDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CkBAIC0x
Mzg4LDcgKzEzODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVhZE1vZGlmeVJlc29s
dmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRv
ciwgRXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9y
aWdodDsKQEAgLTE0MDEsNyArMTQwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTaG9y
dENpcmN1aXRSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29u
c3QgSWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxw
dHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7
IHJldHVybiBtX2lkZW50OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTQyOCw3
ICsxNDI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lv
bk5vZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBz
dWJzY3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBF
eHByZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9zdWJzY3Jp
cHQ7CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2hvcnRD
aXJjdWl0UmVhZE1vZGlmeUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJl
c3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxw
dHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRp
b24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhw
cmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJp
Z2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNU
ZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7
CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxw
dHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUq
IHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBAIC0xNDg1LDcgKzE0
ODUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBPcGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwog
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIG1faWRlbnQ7CkBAIC0xNDk5LDcgKzE0OTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3Rl
cklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBAIC0x
NTEzLDcgKzE1MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXNzaWduRXJyb3JOb2Rl
KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29u
c3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgQ29tbWFOb2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKQEAgLTE1MjUsNyArMTUyNSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0NvbW1hTm9kZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAg
ICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9l
eHByOwogICAgICAgICBDb21tYU5vZGUqIG1fbmV4dCB7IG51bGxwdHIgfTsKQEAgLTE1NjAsNyAr
MTU2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3Rh
dGVtZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxs
cHRyKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGhhc0NvbXBsZXRpb25WYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlOwogICAgICAgICBib29sIGhhc0Vhcmx5QnJlYWtPckNvbnRpbnVlKCkgY29uc3Qg
b3ZlcnJpZGU7CkBAIC0xNTc1LDcgKzE1NzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
RW1wdHlTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0
ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9v
bCBoYXNDb21wbGV0aW9uVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQog
ICAgICAgICBib29sIGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CkBAIC0xNTg5LDcgKzE1ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9v
bCBpc0RlYnVnZ2VyU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVy
cmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgZmluYWwgOiBwdWJs
aWMgU3RhdGVtZW50Tm9kZSB7CkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICBwcml2YXRlOgogICAgICAgICBib29sIGlzRXhwclN0YXRlbWVudCgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVy
cmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC0xNjEw
LDcgKzE2MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIERlY2xh
cmF0aW9uU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAK
ICAgICAgICAgYm9vbCBoYXNDb21wbGV0aW9uVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBmYWxzZTsgfQogCkBAIC0xNjIyLDcgKzE2MjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgRW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50
aWZpZXImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVu
dDsKICAgICB9OwpAQCAtMTYzMiw3ICsxNjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IEVtcHR5TGV0RXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlm
aWVyJik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7
CiAgICAgfTsKQEAgLTE2NDIsNyArMTY0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJ
ZkVsc2VOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRp
b24sIFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jayk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAg
ICAgICAgYm9vbCB0cnlGb2xkQnJlYWtBbmRDb250aW51ZShCeXRlY29kZUdlbmVyYXRvciYsIFN0
YXRlbWVudE5vZGUqIGlmQmxvY2ssCiAgICAgICAgICAgICBMYWJlbComIHRydWVUYXJnZXQsIEZh
bGxUaHJvdWdoTW9kZSYpOwogCkBAIC0xNjU2LDcgKzE2NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgRG9XaGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9k
ZSosIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVu
dDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTE2NjcsNyArMTY2Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBXaGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAg
ICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9u
Tm9kZSogbV9leHByOwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKQEAgLTE2
NzksNyArMTY3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGb3JOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4
cHIyLCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqLCBWYXJpYWJsZUVudmly
b25tZW50Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBv
dmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByMTsKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fZXhwcjI7CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgUmVnaXN0ZXJJRCogdHJ5R2V0Qm91bmRMb2NhbChCeXRlY29kZUdlbmVyYXRv
ciYpOwogICAgICAgICB2b2lkIGVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQg
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBv
dmVycmlkZTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIEZvck9mTm9kZSBmaW5hbCA6IHB1Ymxp
YyBFbnVtZXJhdGlvbk5vZGUgewpAQCAtMTcyMyw3ICsxNzIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGJvb2wgaXNGb3JBd2FpdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGb3JBd2FpdDsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7
CiAKICAgICAgICAgY29uc3QgYm9vbCBtX2lzRm9yQXdhaXQ7CiAgICAgfTsKQEAgLTE3MzYsNyAr
MTczNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFz
Q29tcGxldGlvblZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgYm9vbCBpc0NvbnRpbnVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC0xNzQ5LDcgKzE3NDksNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhhc0NvbXBsZXRpb25WYWx1ZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIGJvb2wgaXNCcmVhaygpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0
cikgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9
OwpAQCAtMTc2MSw3ICsxNzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNSZXR1
cm5Ob2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0xNzczLDcgKzE3
NzMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgY29uc3QgSlNUZXh0UG9z
aXRpb24mIGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJl
c3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpA
QCAtMTc4OSw3ICsxNzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAg
ICAgICBib29sIGhhc0NvbXBsZXRpb25WYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1f
c3RhdGVtZW50LT5oYXNDb21wbGV0aW9uVmFsdWUoKTsgfQotICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBu
dWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX25hbWU7CiAg
ICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpAQCAtMTgwMCw3ICsxODAwLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRocm93Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
bnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAg
ICB9OwpAQCAtMTgxMSw3ICsxODExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeU5v
ZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIERlc3Ry
dWN0dXJpbmdQYXR0ZXJuTm9kZSogY2F0Y2hQYXR0ZXJuLCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJs
b2NrLCBWYXJpYWJsZUVudmlyb25tZW50JiBjYXRjaEVudmlyb25tZW50LCBTdGF0ZW1lbnROb2Rl
KiBmaW5hbGx5QmxvY2spOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVs
bHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV90cnlCbG9jazsKICAg
ICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBtX2NhdGNoUGF0dGVybjsKQEAgLTE5MTIs
NyArMTkxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGJv
b2wgc2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVt
bjsKICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKQEAgLTE5MjcsNyArMTky
Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2Nv
cGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAg
ICB9OwpAQCAtMTk0Nyw3ICsxOTQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAog
ICAgIHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAg
ICAgICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVt
bjsKICAgICAgICAgUmVmPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CkBAIC0y
MDA4LDcgKzIwMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTW9kdWxlTmFtZU5vZGUq
IG1vZHVsZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWU7IH0KIAogICAgIHByaXZh
dGU6Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgICAgICB2b2lk
IGFuYWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlkZTsKIAogICAgICAgICBJbXBv
cnRTcGVjaWZpZXJMaXN0Tm9kZSogbV9zcGVjaWZpZXJMaXN0OwpAQCAtMjAyMiw3ICsyMDIyLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBhbmFseXplTW9kdWxl
KE1vZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAKICAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1f
bW9kdWxlTmFtZTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsTmFt
ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRl
OwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX2RlY2xhcmF0aW9uOwogICAgICAgICBjb25zdCBJ
ZGVudGlmaWVyJiBtX2xvY2FsTmFtZTsKQEAgLTIwNDksNyArMjA0OSw3IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICBjb25zdCBTdGF0ZW1lbnROb2RlJiBkZWNsYXJhdGlvbigpIGNvbnN0IHsg
cmV0dXJuICptX2RlY2xhcmF0aW9uOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVs
ZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fZGVjbGFyYXRp
b247CiAgICAgfTsKQEAgLTIwODksNyArMjA4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBNb2R1bGVOYW1lTm9kZSogbW9kdWxlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFt
ZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJp
ZGU7CiAgICAgICAgIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRl
OwogICAgICAgICBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogbV9zcGVjaWZpZXJMaXN0OwogICAg
ICAgICBNb2R1bGVOYW1lTm9kZSogbV9tb2R1bGVOYW1lIHsgbnVsbHB0ciB9OwpAQCAtMjE5MCw3
ICsyMTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJz
KiBwYXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKLSAgICAgICAg
dm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92
ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9u
Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMjIzNCw3ICsyMjM0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2Vu
TG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25z
dCBTb3VyY2VDb2RlJiwgRnVuY3Rpb25Nb2RlKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
MCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9v
bCBpc0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9
OwpAQCAtMjI0NCw3ICsyMjQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFycm93RnVu
Y0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5j
dGlvbk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAg
ICAgICAgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQogICAgIH07CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgTWV0aG9kRGVmaW5pdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwog
ICAgICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZp
bmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRh
dGEgewpAQCAtMjI2NSw3ICsyMjY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wg
ZGVsZWdhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlOyB9CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2FyZ3VtZW50OwogICAgICAgICBib29sIG1fZGVsZWdh
dGU7CkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIGFyZ3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudDsgfQogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVy
cmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hcmd1bWVudDsKICAgICB9OwpAQCAt
MjMxMyw3ICsyMzEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaGFzSW5zdGFu
Y2VGaWVsZHMoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzRWxlbWVudHMgPyBtX2NsYXNzRWxlbWVu
dHMtPmhhc0luc3RhbmNlRmllbGRzKCkgOiBmYWxzZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAg
ICBib29sIGlzQ2xhc3NFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0K
IApAQCAtMjMzNiw3ICsyMzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwg
Ym9vbCBpc0JpbmRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmly
dHVhbCBib29sIGlzQXNzaWdubWVudEVsZW1lbnROb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7
IH0KICAgICAgICAgdmlydHVhbCBib29sIGlzUmVzdFBhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmco
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7IHJldHVy
biAwOyB9CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7IHJldHVybiBu
dWxscHRyOyB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5Ob2RlKCk7CkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBib29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3Qgb3Zl
cnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKiBtX2JpbmRpbmdzOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9pbml0aWFs
aXplcjsKQEAgLTI1MjgsNyArMjUyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5j
dGlvbk1ldGFkYXRhTm9kZSogbWV0YWRhdGEoKSB7IHJldHVybiBtX21ldGFkYXRhOyB9CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAg
ICAgICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKICAgICB9OwpAQCAtMjUzOCw3
ICsyNTM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENsYXNzRGVjbE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNsYXNzRXhwcmVzc2lvbik7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAg
ICAgICBib29sIGhhc0NvbXBsZXRpb25WYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZh
bHNlOyB9CiAKQEAgLTI1NDcsNyArMjU0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xh
c3MgQ2FzZUNsYXVzZU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBDYXNlQ2xhdXNlTm9kZShFeHByZXNzaW9uTm9kZSosIFNvdXJj
ZUVsZW1lbnRzKiA9IDApOworICAgICAgICBDYXNlQ2xhdXNlTm9kZShFeHByZXNzaW9uTm9kZSos
IFNvdXJjZUVsZW1lbnRzKiA9IG51bGxwdHIpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBl
eHByKCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKQEAgLTI1OTMsNyArMjU5Myw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSosIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBG
dW5jdGlvblN0YWNrJiYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVs
bHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAg
ICAgQ2FzZUJsb2NrTm9kZSogbV9ibG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCA3NjZhMmIzZWE2NzE1N2Y3ZjQyNWFmM2ExZTc5ZWZhZTA0MzQ4MDVkLi5j
M2FlY2IxODViNjI5OTMzYjI0OWYwMDdlMTg3ODdmNzZhYThkNDc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgdGVtcGxhdGUgPGNs
YXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlU291cmNlRWwKIHsKICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZlVzZVN0cmljdExpdGVy
YWwgPSAxMjsgLy8gInVzZSBzdHJpY3QiLmxlbmd0aAogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
b3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKLSAgICBjb25z
dCBJZGVudGlmaWVyKiBkaXJlY3RpdmUgPSAwOworICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVj
dGl2ZSA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDA7
CiAgICAgYXV0byBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgYm9v
bCBzaG91bGRDaGVja0ZvclVzZVN0cmljdCA9IG1vZGUgPT0gQ2hlY2tGb3JTdHJpY3RNb2RlOwpA
QCAtNDEzLDcgKzQxMyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJj
ZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvCiAgICAgU3ludGF4Q2hl
Y2tlciBzeW50YXhDaGVja2VyKGNvbnN0X2Nhc3Q8Vk0mPihtX3ZtKSwgbV9sZXhlci5nZXQoKSk7
CiAKICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9
IDA7CisgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gbnVsbHB0cjsKICAgICAgICAg
c3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAgICAgICBjYXNlIEVYUE9SVF86CiAgICAgICAg
ICAgICBzdGF0ZW1lbnQgPSBwYXJzZUV4cG9ydERlY2xhcmF0aW9uKGNvbnRleHQpOwpAQCAtNDM4
LDcgKzQzOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1l
bnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvCiAgICAgICAgIH0KIAogICAgICAg
ICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBkaXJlY3RpdmUgPSAw
OworICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0gbnVsbHB0cjsKICAg
ICAgICAgICAgIHVuc2lnbmVkIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwOwogICAgICAgICAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2RlKSB7
CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZVN0YXRlbWVudExpc3RJdGVtKHN5bnRheENoZWNr
ZXIsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpKQpAQCAtNjIxLDcgKzYyMSw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTaW5nbGVG
dW5jdGlvbihUcmVlQnVpbGRlciYgY29udGV4dCwgT3B0aW9uYWw8aW50PiBmdW5jdGlvbkNvbnN0
cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKQogewogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBz
b3VyY2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKLSAgICBUcmVl
U3RhdGVtZW50IHN0YXRlbWVudCA9IDA7CisgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBu
dWxscHRyOwogICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICBjYXNlIEZVTkNUSU9O
OgogICAgICAgICBzdGF0ZW1lbnQgPSBwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb24oY29udGV4dCwg
RXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5k
YXJkLCBmdW5jdGlvbkNvbnN0cnVjdG9yUGFyYW1ldGVyc0VuZFBvc2l0aW9uKTsKQEAgLTY1Nyw3
ICs2NTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlU3RhdGVtZW50TGlzdAogICAgIERlcHRoTWFuYWdlciBzdGF0
ZW1lbnREZXB0aCgmbV9zdGF0ZW1lbnREZXB0aCk7CiAgICAgbV9zdGF0ZW1lbnREZXB0aCsrOwog
ICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3coKTsKLSAgICBUcmVlU3RhdGVtZW50IHJlc3VsdCA9IDA7
CisgICAgVHJlZVN0YXRlbWVudCByZXN1bHQgPSBudWxscHRyOwogICAgIGJvb2wgc2hvdWxkU2V0
RW5kT2Zmc2V0ID0gdHJ1ZTsKICAgICBib29sIHNob3VsZFNldFBhdXNlTG9jYXRpb24gPSBmYWxz
ZTsKIApAQCAtNzQ0LDggKzc0NCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2xhCiAgICAgaW50
IHN0YXJ0ID0gdG9rZW5MaW5lKCk7CiAgICAgaW50IGVuZCA9IDA7CiAgICAgaW50IHNjcmF0Y2g7
Ci0gICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHNjcmF0Y2gxID0gMDsKLSAgICBUcmVlRXhw
cmVzc2lvbiBzY3JhdGNoMiA9IDA7CisgICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIHNjcmF0
Y2gxID0gbnVsbHB0cjsKKyAgICBUcmVlRXhwcmVzc2lvbiBzY3JhdGNoMiA9IG51bGxwdHI7CiAg
ICAgSlNUZXh0UG9zaXRpb24gc2NyYXRjaDM7CiAgICAgYm9vbCBzY3JhdGNoQm9vbDsKICAgICBU
cmVlRXhwcmVzc2lvbiB2YXJpYWJsZURlY2xzID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlz
dChjb250ZXh0LCBzY3JhdGNoLCBzY3JhdGNoMSwgc2NyYXRjaDIsIHNjcmF0Y2gzLCBzY3JhdGNo
Mywgc2NyYXRjaDMsIFZhckRlY2xhcmF0aW9uQ29udGV4dCwgZGVjbGFyYXRpb25UeXBlLCBleHBv
cnRUeXBlLCBzY3JhdGNoQm9vbCk7CkBAIC03NjEsNyArNzYxLDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURvV2hp
bGVTdGF0ZW0KICAgICBBU1NFUlQobWF0Y2goRE8pKTsKICAgICBpbnQgc3RhcnRMaW5lID0gdG9r
ZW5MaW5lKCk7CiAgICAgbmV4dCgpOwotICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7
CisgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gbnVsbHB0cjsKICAgICBzdGFydExvb3Ao
KTsKICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQs
IHVudXNlZCk7CiAgICAgZW5kTG9vcCgpOwpAQCAtNzk2LDcgKzc5Niw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VX
aGlsZVN0YXRlbWVuCiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBoYW5kbGVQ
cm9kdWN0aW9uT3JGYWlsKENMT1NFUEFSRU4sICIpIiwgImVuZCIsICJ3aGlsZSBsb29wIGNvbmRp
dGlvbiIpOwogCi0gICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICBjb25zdCBJ
ZGVudGlmaWVyKiB1bnVzZWQgPSBudWxscHRyOwogICAgIHN0YXJ0TG9vcCgpOwogICAgIFRyZWVT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAg
ICBlbmRMb29wKCk7CkBAIC04MDgsMjIgKzgwOCwyMiBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4
ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdChUcmVlQnVpbGRlciYg
Y29udGV4dCwgaW50JiBkZWNsYXJhdGlvbnMsIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiYgbGFz
dFBhdHRlcm4sIFRyZWVFeHByZXNzaW9uJiBsYXN0SW5pdGlhbGl6ZXIsIEpTVGV4dFBvc2l0aW9u
JiBpZGVudFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYgaW5pdFN0YXJ0LCBKU1RleHRQb3NpdGlvbiYg
aW5pdEVuZCwgVmFyRGVjbGFyYXRpb25MaXN0Q29udGV4dCBkZWNsYXJhdGlvbkxpc3RDb250ZXh0
LCBEZWNsYXJhdGlvblR5cGUgZGVjbGFyYXRpb25UeXBlLCBFeHBvcnRUeXBlIGV4cG9ydFR5cGUs
IGJvb2wmIGZvckxvb3BDb25zdERvZXNOb3RIYXZlSW5pdGlhbGl6ZXIpCiB7CiAgICAgQVNTRVJU
KGRlY2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkxldERlY2xhcmF0aW9uIHx8IGRl
Y2xhcmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OlZhckRlY2xhcmF0aW9uIHx8IGRlY2xh
cmF0aW9uVHlwZSA9PSBEZWNsYXJhdGlvblR5cGU6OkNvbnN0RGVjbGFyYXRpb24pOwotICAgIFRy
ZWVFeHByZXNzaW9uIGhlYWQgPSAwOworICAgIFRyZWVFeHByZXNzaW9uIGhlYWQgPSBudWxscHRy
OwogICAgIEpTVG9rZW5Mb2NhdGlvbiBoZWFkTG9jYXRpb247Ci0gICAgVHJlZUV4cHJlc3Npb24g
dGFpbCA9IDA7CisgICAgVHJlZUV4cHJlc3Npb24gdGFpbCA9IG51bGxwdHI7CiAgICAgY29uc3Qg
SWRlbnRpZmllciogbGFzdElkZW50OwogICAgIEpTVG9rZW4gbGFzdElkZW50VG9rZW47IAogICAg
IEFzc2lnbm1lbnRDb250ZXh0IGFzc2lnbm1lbnRDb250ZXh0ID0gYXNzaWdubWVudENvbnRleHRG
cm9tRGVjbGFyYXRpb25UeXBlKGRlY2xhcmF0aW9uVHlwZSk7CiAgICAgZG8gewotICAgICAgICBs
YXN0SWRlbnQgPSAwOwotICAgICAgICBsYXN0UGF0dGVybiA9IFRyZWVEZXN0cnVjdHVyaW5nUGF0
dGVybigwKTsKKyAgICAgICAgbGFzdElkZW50ID0gbnVsbHB0cjsKKyAgICAgICAgbGFzdFBhdHRl
cm4gPSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4obnVsbHB0cik7CiAgICAgICAgIEpTVG9rZW5M
b2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogICAgICAgICBuZXh0KCk7CiAgICAg
ICAgIGlmIChoZWFkKSB7CiAgICAgICAgICAgICAvLyBNb3ZlIHRoZSBsb2NhdGlvbiBvZiBzdWJz
ZXF1ZW50IGRlY2xhcmF0aW9ucyBhZnRlciB0aGUgY29tbWEuCiAgICAgICAgICAgICBsb2NhdGlv
biA9IHRva2VuTG9jYXRpb24oKTsKICAgICAgICAgfQotICAgICAgICBUcmVlRXhwcmVzc2lvbiBu
b2RlID0gMDsKKyAgICAgICAgVHJlZUV4cHJlc3Npb24gbm9kZSA9IG51bGxwdHI7CiAgICAgICAg
IGRlY2xhcmF0aW9ucysrOwogICAgICAgICBib29sIGhhc0luaXRpYWxpemVyID0gZmFsc2U7CiAg
ICAgICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkpIHsKQEAgLTg3Niw3ICs4NzYsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVZhcmlhYmxlRGVjbAogICAgICAgICAgICAgICAgICAgICBub2RlID0gY29udGV4
dC5jcmVhdGVFbXB0eUxldEV4cHJlc3Npb24odmFyU3RhcnRMb2NhdGlvbiwgKm5hbWUpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbGFzdElkZW50ID0gMDsK
KyAgICAgICAgICAgIGxhc3RJZGVudCA9IG51bGxwdHI7CiAgICAgICAgICAgICBhdXRvIHBhdHRl
cm4gPSBwYXJzZURlc3RydWN0dXJpbmdQYXR0ZXJuKGNvbnRleHQsIGRlc3RydWN0dXJpbmdLaW5k
RnJvbURlY2xhcmF0aW9uVHlwZShkZWNsYXJhdGlvblR5cGUpLCBleHBvcnRUeXBlLCBudWxscHRy
LCBudWxscHRyLCBhc3NpZ25tZW50Q29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShw
YXR0ZXJuLCAiQ2Fubm90IHBhcnNlIHRoaXMgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAgICAg
ICAgICAgICBoYXNJbml0aWFsaXplciA9IG1hdGNoKEVRVUFMKTsKQEAgLTEwNTAsNyArMTA1MCw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJu
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU9iCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBl
PgogdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4g
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQXNzaWdubWVudEVsZW1lbnQoVHJlZUJ1aWxkZXImIGNv
bnRleHQsIERlc3RydWN0dXJpbmdLaW5kIGtpbmQsIEV4cG9ydFR5cGUgZXhwb3J0VHlwZSwgY29u
c3QgSWRlbnRpZmllcioqIGR1cGxpY2F0ZUlkZW50aWZpZXIsIGJvb2wqIGhhc0Rlc3RydWN0dXJp
bmdQYXR0ZXJuLCBBc3NpZ25tZW50Q29udGV4dCBiaW5kaW5nQ29udGV4dCwgaW50IGRlcHRoKQog
ewotICAgIFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBhc3NpZ25tZW50VGFyZ2V0ID0gMDsKKyAg
ICBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gYXNzaWdubWVudFRhcmdldCA9IG51bGxwdHI7CiAK
ICAgICBpZiAobWF0Y2goT1BFTkJSQUNFKSB8fCBtYXRjaChPUEVOQlJBQ0tFVCkpIHsKICAgICAg
ICAgU2F2ZVBvaW50IHNhdmVQb2ludCA9IGNyZWF0ZVNhdmVQb2ludChjb250ZXh0KTsKQEAgLTEx
NTAsNyArMTE1MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0
dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAg
bmV4dCgpOwogICAgICAgICAgICAgICAgIGF1dG8gaW5uZXJQYXR0ZXJuID0gcGFyc2VCaW5kaW5n
T3JBc3NpZ25tZW50RWxlbWVudChjb250ZXh0LCBraW5kLCBleHBvcnRUeXBlLCBkdXBsaWNhdGVJ
ZGVudGlmaWVyLCBoYXNEZXN0cnVjdHVyaW5nUGF0dGVybiwgYmluZGluZ0NvbnRleHQsIGRlcHRo
ICsgMSk7CiAgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRl
c3RydWN0dXJlVG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQYXR0ZXJuKQotICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90IHBhcnNlIHRoaXMg
ZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAgICAgICAgICAgICAgICAgY29udGV4dC5hcHBlbmRB
cnJheVBhdHRlcm5SZXN0RW50cnkoYXJyYXlQYXR0ZXJuLCBsb2NhdGlvbiwgaW5uZXJQYXR0ZXJu
KTsKICAgICAgICAgICAgICAgICByZXN0RWxlbWVudFdhc0ZvdW5kID0gdHJ1ZTsKQEAgLTExNjAs
NyArMTE2MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJp
bmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICBKU1Rva2Vu
TG9jYXRpb24gbG9jYXRpb24gPSBtX3Rva2VuLm1fbG9jYXRpb247CiAgICAgICAgICAgICBhdXRv
IGlubmVyUGF0dGVybiA9IHBhcnNlQmluZGluZ09yQXNzaWdubWVudEVsZW1lbnQoY29udGV4dCwg
a2luZCwgZXhwb3J0VHlwZSwgZHVwbGljYXRlSWRlbnRpZmllciwgaGFzRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm4sIGJpbmRpbmdDb250ZXh0LCBkZXB0aCArIDEpOwogICAgICAgICAgICAgaWYgKGtpbmQg
PT0gRGVzdHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9FeHByZXNzaW9ucyAmJiAhaW5uZXJQ
YXR0ZXJuKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJQYXR0ZXJuLCAiQ2Fubm90
IHBhcnNlIHRoaXMgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAgICAgICAgICAgICBUcmVlRXhw
cmVzc2lvbiBkZWZhdWx0VmFsdWUgPSBwYXJzZURlZmF1bHRWYWx1ZUZvckRlc3RydWN0dXJpbmdQ
YXR0ZXJuKGNvbnRleHQpOwogICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKQEAgLTExOTMs
NyArMTE5Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJp
bmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAgYXV0
byBpbm5lclBhdHRlcm4gPSBwYXJzZU9iamVjdFJlc3RCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVu
dChjb250ZXh0LCBraW5kLCBleHBvcnRUeXBlLCBkdXBsaWNhdGVJZGVudGlmaWVyLCBiaW5kaW5n
Q29udGV4dCk7CiAgICAgICAgICAgICAgICAgcHJvcGFnYXRlRXJyb3IoKTsKICAgICAgICAgICAg
ICAgICBpZiAoIWlubmVyUGF0dGVybikKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgICAgIGNvbnRl
eHQuYXBwZW5kT2JqZWN0UGF0dGVyblJlc3RFbnRyeShtX3ZtLCBvYmplY3RQYXR0ZXJuLCBsb2Nh
dGlvbiwgaW5uZXJQYXR0ZXJuKTsKICAgICAgICAgICAgICAgICByZXN0RWxlbWVudFdhc0ZvdW5k
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBjb250ZXh0LnNldENvbnRhaW5zT2JqZWN0UmVzdEVs
ZW1lbnQob2JqZWN0UGF0dGVybiwgcmVzdEVsZW1lbnRXYXNGb3VuZCk7CkBAIC0xMjAxLDggKzEy
MDEsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0
dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VEZQogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBwcm9wZXJ0eU5hbWUgPSBudWxscHRyOwotICAgICAgICAg
ICAgVHJlZUV4cHJlc3Npb24gcHJvcGVydHlFeHByZXNzaW9uID0gMDsKLSAgICAgICAgICAgIFRy
ZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBpbm5lclBhdHRlcm4gPSAwOworICAgICAgICAgICAgVHJl
ZUV4cHJlc3Npb24gcHJvcGVydHlFeHByZXNzaW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFRy
ZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBpbm5lclBhdHRlcm4gPSBudWxscHRyOwogICAgICAgICAg
ICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uID0gbV90b2tlbi5tX2xvY2F0aW9uOwogICAgICAg
ICAgICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgICAgIGZhaWxJ
ZlRydWUobWF0Y2goTEVUKSAmJiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1
cmVUb0xldCB8fCBraW5kID09IERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvQ29uc3Qp
LCAiQ2Fubm90IHVzZSAnbGV0JyBhcyBhbiBpZGVudGlmaWVyIG5hbWUgZm9yIGEgTGV4aWNhbERl
Y2xhcmF0aW9uIik7CkBAIC0xMjQ0LDcgKzEyNDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1
aWxkZXI+IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VE
ZQogICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGlmIChtX3Rv
a2VuLm1fdHlwZSAhPSBSRVNFUlZFRCAmJiBtX3Rva2VuLm1fdHlwZSAhPSBSRVNFUlZFRF9JRl9T
VFJJQ1QgJiYgIShtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpKSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1
cmVUb0V4cHJlc3Npb25zKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAg
ICAgICAgICAgICAgZmFpbFdpdGhNZXNzYWdlKCJFeHBlY3RlZCBhIHByb3BlcnR5IG5hbWUiKTsK
ICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWUg
PSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKQEAgLTEyNTMsNyArMTI1Myw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAgbmV4dCgpOwogICAgICAgICAgICAgICAgIGlm
ICghY29uc3VtZShDT0xPTikpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVz
dHJ1Y3R1cmluZ0tpbmQ6OkRlc3RydWN0dXJlVG9FeHByZXNzaW9ucykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0b2tlblR5cGUgPT0g
UkVTRVJWRUQsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZv
ciByZXNlcnZlZCBuYW1lICciLCBwcm9wZXJ0eU5hbWUtPmltcGwoKSwgIiciKTsKICAgICAgICAg
ICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSA9PSBSRVNFUlZFRF9JRl9T
VFJJQ1QsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3ludGF4IGZvciBy
ZXNlcnZlZCBuYW1lICciLCBwcm9wZXJ0eU5hbWUtPmltcGwoKSwgIicgaW4gc3RyaWN0IG1vZGUi
KTsKICAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRva2VuVHlwZSAmIEtl
eXdvcmRUb2tlbkZsYWcsICJDYW5ub3QgdXNlIGFiYnJldmlhdGVkIGRlc3RydWN0dXJpbmcgc3lu
dGF4IGZvciBrZXl3b3JkICciLCBwcm9wZXJ0eU5hbWUtPmltcGwoKSwgIiciKTsKQEAgLTEyNjMs
NyArMTI2Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJp
bmdQYXR0ZXJuIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgICAgICAgICAgICAgaW5u
ZXJQYXR0ZXJuID0gcGFyc2VCaW5kaW5nT3JBc3NpZ25tZW50RWxlbWVudChjb250ZXh0LCBraW5k
LCBleHBvcnRUeXBlLCBkdXBsaWNhdGVJZGVudGlmaWVyLCBoYXNEZXN0cnVjdHVyaW5nUGF0dGVy
biwgYmluZGluZ0NvbnRleHQsIGRlcHRoICsgMSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBpZiAoa2luZCA9PSBEZXN0cnVjdHVyaW5nS2luZDo6RGVzdHJ1Y3R1cmVUb0V4cHJlc3Npb25z
ICYmICFpbm5lclBhdHRlcm4pCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShpbm5lclBhdHRl
cm4sICJDYW5ub3QgcGFyc2UgdGhpcyBkZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKICAgICAgICAg
ICAgIFRyZWVFeHByZXNzaW9uIGRlZmF1bHRWYWx1ZSA9IHBhcnNlRGVmYXVsdFZhbHVlRm9yRGVz
dHJ1Y3R1cmluZ1BhdHRlcm4oY29udGV4dCk7CiAgICAgICAgICAgICBwcm9wYWdhdGVFcnJvcigp
OwpAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
RGVzdHJ1Y3R1cmluZ1BhdHRlcm4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRGUKICAgICAgICAg
fSB3aGlsZSAoY29uc3VtZShDT01NQSkpOwogCiAgICAgICAgIGlmIChraW5kID09IERlc3RydWN0
dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvRXhwcmVzc2lvbnMgJiYgIW1hdGNoKENMT1NFQlJBQ0Up
KQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCByZXN0RWxlbWVudFdhc0ZvdW5kID8gIkV4
cGVjdGVkIGEgY2xvc2luZyAnfScgZm9sbG93aW5nIGEgcmVzdCBlbGVtZW50IGRlc3RydWN0dXJp
bmcgcGF0dGVybiIgOiAiRXhwZWN0ZWQgZWl0aGVyIGEgY2xvc2luZyAnfScgb3IgYW4gJywnIGFm
dGVyIGEgcHJvcGVydHkgZGVzdHJ1Y3R1cmluZyBwYXR0ZXJuIik7CiAgICAgICAgIHBhdHRlcm4g
PSBvYmplY3RQYXR0ZXJuOwogICAgICAgICBicmVhazsKQEAgLTEyODYsNyArMTI4Niw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZURlCiAgICAgZGVmYXVsdDogewogICAgICAgICBpZiAoIW1hdGNo
U3BlY0lkZW50aWZpZXIoKSkgewogICAgICAgICAgICAgaWYgKGtpbmQgPT0gRGVzdHJ1Y3R1cmlu
Z0tpbmQ6OkRlc3RydWN0dXJlVG9FeHByZXNzaW9ucykKLSAgICAgICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHNlbWFudGlj
RmFpbHVyZUR1ZVRvS2V5d29yZChkZXN0cnVjdHVyaW5nS2luZFRvVmFyaWFibGVLaW5kTmFtZShr
aW5kKSk7CiAgICAgICAgICAgICBmYWlsV2l0aE1lc3NhZ2UoIkV4cGVjdGVkIGEgcGFyYW1ldGVy
IHBhdHRlcm4gb3IgYSAnKScgaW4gcGFyYW1ldGVyIGxpc3QiKTsKICAgICAgICAgfQpAQCAtMTMw
NSw3ICsxMzA1LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
RGVmYXVsdFZhbHVlRm9yRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oVHJlZUJ1aWxkZXImIGNvbnRleHQp
CiB7CiAgICAgaWYgKCFtYXRjaChFUVVBTCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKIAogICAgIG5leHQoVHJlZUJ1aWxkZXI6OkRvbnRCdWlsZFN0cmluZ3Mp
OyAvLyBjb25zdW1lICc9JwogICAgIHJldHVybiBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNv
bnRleHQpOwpAQCAtMTMzNSw4ICsxMzM1LDggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAg
ICBKU1Rva2VuTG9jYXRpb24gZGVjbExvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAgICAgSlNU
ZXh0UG9zaXRpb24gZGVjbHNTdGFydDsKICAgICBKU1RleHRQb3NpdGlvbiBkZWNsc0VuZDsKLSAg
ICBUcmVlRXhwcmVzc2lvbiBkZWNscyA9IDA7Ci0gICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJu
IHBhdHRlcm4gPSAwOworICAgIFRyZWVFeHByZXNzaW9uIGRlY2xzID0gbnVsbHB0cjsKKyAgICBU
cmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiA9IG51bGxwdHI7CiAgICAgYm9vbCBpc1Zh
ckRlY2xhcmF0b24gPSBtYXRjaChWQVIpOwogICAgIGJvb2wgaXNMZXREZWNsYXJhdGlvbiA9IG1h
dGNoKExFVCk7CiAgICAgYm9vbCBpc0NvbnN0RGVjbGFyYXRpb24gPSBtYXRjaChDT05TVFRPS0VO
KTsKQEAgLTEzNzEsOCArMTM3MSw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAg
ICAgICBsZXhpY2FsU2NvcGUuc2V0SXNWYWxpZChuZXdTY29wZSwgdGhpcyk7CiAgICAgICAgIH0K
IAotICAgICAgICBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gZm9ySW5UYXJnZXQgPSAwOwotICAg
ICAgICBUcmVlRXhwcmVzc2lvbiBmb3JJbkluaXRpYWxpemVyID0gMDsKKyAgICAgICAgVHJlZURl
c3RydWN0dXJpbmdQYXR0ZXJuIGZvckluVGFyZ2V0ID0gbnVsbHB0cjsKKyAgICAgICAgVHJlZUV4
cHJlc3Npb24gZm9ySW5Jbml0aWFsaXplciA9IG51bGxwdHI7CiAgICAgICAgIG1fYWxsb3dzSW4g
PSBmYWxzZTsKICAgICAgICAgSlNUZXh0UG9zaXRpb24gaW5pdFN0YXJ0OwogICAgICAgICBKU1Rl
eHRQb3NpdGlvbiBpbml0RW5kOwpAQCAtMTQyMyw3ICsxNDIzLDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0
YXRlbWVudCgKICAgICAgICAgCiAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VQ
QVJFTiwgIikiLCAiZW5kIiwgKGlzT2ZFbnVtZXJhdGlvbiA/ICJmb3Itb2YgaGVhZGVyIiA6ICJm
b3ItaW4gaGVhZGVyIikpOwogICAgICAgICAKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51
c2VkID0gMDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gbnVsbHB0cjsKICAg
ICAgICAgc3RhcnRMb29wKCk7CiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFy
c2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICAgICAgZW5kTG9vcCgpOwpAQCAtMTQ1
MSw3ICsxNDUxLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICAgICAgICAgIGRlY2xz
RW5kID0gbGFzdFRva2VuRW5kUG9zaXRpb24oKTsKICAgICAgICAgICAgIGlmIChwYXR0ZXJuICYm
IChtYXRjaChJTlRPS0VOKSB8fCBtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJvcGVydHlO
YW1lcy0+b2YpKSkKICAgICAgICAgICAgICAgICBnb3RvIGVudW1lcmF0aW9uTG9vcDsKLSAgICAg
ICAgICAgIHBhdHRlcm4gPSBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRlcm4oMCk7CisgICAgICAgICAg
ICBwYXR0ZXJuID0gVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuKG51bGxwdHIpOwogICAgICAgICAg
ICAgcmVzdG9yZVNhdmVQb2ludChjb250ZXh0LCBzYXZlUG9pbnQpOwogICAgICAgICB9CiAgICAg
ICAgIG1fYWxsb3dzSW4gPSBmYWxzZTsKQEAgLTE0NzAsNyArMTQ3MCw3IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VG
b3JTdGF0ZW1lbnQoCiAgICAgICAgIGlmIChkZWNscykKICAgICAgICAgICAgIHJlY29yZFBhdXNl
TG9jYXRpb24oY29udGV4dC5icmVha3BvaW50TG9jYXRpb24oZGVjbHMpKTsKICAgICAgICAgbmV4
dCgpOwotICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb25kaXRpb24gPSAwOworICAgICAgICBUcmVl
RXhwcmVzc2lvbiBjb25kaXRpb24gPSBudWxscHRyOwogICAgICAgICBmYWlsSWZUcnVlKGZvckxv
b3BDb25zdERvZXNOb3RIYXZlSW5pdGlhbGl6ZXIgJiYgaXNDb25zdERlY2xhcmF0aW9uLCAiY29u
c3QgdmFyaWFibGVzIGluIGZvciBsb29wcyBtdXN0IGhhdmUgaW5pdGlhbGl6ZXJzIik7CiAgICAg
ICAgIAogICAgICAgICBpZiAoIW1hdGNoKFNFTUlDT0xPTikpIHsKQEAgLTE0ODAsNyArMTQ4MCw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VGb3JTdGF0ZW1lbnQoCiAgICAgICAgIH0KICAgICAgICAgY29uc3VtZU9y
RmFpbChTRU1JQ09MT04sICJFeHBlY3RlZCBhICc7JyBhZnRlciB0aGUgZm9yIGxvb3AgY29uZGl0
aW9uIGV4cHJlc3Npb24iKTsKICAgICAgICAgCi0gICAgICAgIFRyZWVFeHByZXNzaW9uIGluY3Jl
bWVudCA9IDA7CisgICAgICAgIFRyZWVFeHByZXNzaW9uIGluY3JlbWVudCA9IG51bGxwdHI7CiAg
ICAgICAgIGlmICghbWF0Y2goQ0xPU0VQQVJFTikpIHsKICAgICAgICAgICAgIGluY3JlbWVudCA9
IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGluY3Jl
bWVudCwgIkNhbm5vdCBwYXJzZSBmb3IgbG9vcCBpdGVyYXRpb24gZXhwcmVzc2lvbiIpOwpAQCAt
MTQ4OCw3ICsxNDg4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVt
ZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICAgICAgfQogICAg
ICAgICBpbnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgICAgICBoYW5kbGVQcm9kdWN0aW9u
T3JGYWlsKENMT1NFUEFSRU4sICIpIiwgImVuZCIsICJmb3ItbG9vcCBoZWFkZXIiKTsKLSAgICAg
ICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmll
ciogdW51c2VkID0gbnVsbHB0cjsKICAgICAgICAgc3RhcnRMb29wKCk7CiAgICAgICAgIFRyZWVT
dGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAg
ICAgICAgZW5kTG9vcCgpOwpAQCAtMTUxOSw3ICsxNTE5LDcgQEAgZW51bWVyYXRpb25Mb29wOgog
ICAgIGludCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgCiAgICAgaGFuZGxlUHJvZHVjdGlv
bk9yRmFpbChDTE9TRVBBUkVOLCAiKSIsICJlbmQiLCAoaXNPZkVudW1lcmF0aW9uID8gImZvci1v
ZiBoZWFkZXIiIDogImZvci1pbiBoZWFkZXIiKSk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogdW51
c2VkID0gMDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSBudWxscHRyOwogICAgIHN0
YXJ0TG9vcCgpOwogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQo
Y29udGV4dCwgdW51c2VkKTsKICAgICBlbmRMb29wKCk7CkBAIC0xNjEwLDcgKzE2MTAsNyBAQCB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlUmV0dXJuU3RhdGVtZQogICAgICAgICBlbmQgPSB0b2tlbkVuZFBvc2l0aW9uKCk7
CiAKICAgICBpZiAoYXV0b1NlbWlDb2xvbigpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVh
dGVSZXR1cm5TdGF0ZW1lbnQobG9jYXRpb24sIDAsIHN0YXJ0LCBlbmQpOworICAgICAgICByZXR1
cm4gY29udGV4dC5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobG9jYXRpb24sIG51bGxwdHIsIHN0YXJ0
LCBlbmQpOwogICAgIFRyZWVFeHByZXNzaW9uIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oY29udGV4
dCwgSXNPbmx5Q2hpbGRPZlN0YXRlbWVudDo6WWVzKTsKICAgICBmYWlsSWZGYWxzZShleHByLCAi
Q2Fubm90IHBhcnNlIHRoZSByZXR1cm4gZXhwcmVzc2lvbiIpOwogICAgIGVuZCA9IGxhc3RUb2tl
bkVuZFBvc2l0aW9uKCk7CkBAIC0xNjU3LDcgKzE2NTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlV2l0aFN0YXRl
bWVudAogICAgIEpTVGV4dFBvc2l0aW9uIGVuZCA9IGxhc3RUb2tlbkVuZFBvc2l0aW9uKCk7CiAg
ICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWls
KENMT1NFUEFSRU4sICIpIiwgInN0YXJ0IiwgInN1YmplY3Qgb2YgYSAnd2l0aCcgc3RhdGVtZW50
Iik7Ci0gICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICBjb25zdCBJZGVudGlm
aWVyKiB1bnVzZWQgPSBudWxscHRyOwogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFy
c2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWlsSWZGYWxzZShzdGF0ZW1lbnQs
ICJBICd3aXRoJyBzdGF0ZW1lbnQgbXVzdCBoYXZlIGEgYm9keSIpOwogICAgIApAQCAtMTcwMyw3
ICsxNzAzLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZUxpc3QgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlU3dp
dGNoQ2xhdXNlcyhUcmVlQnVpbGRlciYgY29udGV4dCkKIHsKICAgICBpZiAoIW1hdGNoKENBU0Up
KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgdW5zaWdu
ZWQgc3RhcnRPZmZzZXQgPSB0b2tlblN0YXJ0KCk7CiAgICAgbmV4dCgpOwogICAgIFRyZWVFeHBy
ZXNzaW9uIGNvbmRpdGlvbiA9IHBhcnNlRXhwcmVzc2lvbihjb250ZXh0KTsKQEAgLTE3MzUsMTMg
KzE3MzUsMTMgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIExleGVyVHlwZT4KIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZUNsYXVzZSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VTd2l0Y2hE
ZWZhdWx0Q2xhdXNlKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewogICAgIGlmICghbWF0Y2goREVG
QVVMVCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB1
bnNpZ25lZCBzdGFydE9mZnNldCA9IHRva2VuU3RhcnQoKTsKICAgICBuZXh0KCk7CiAgICAgY29u
c3VtZU9yRmFpbChDT0xPTiwgIkV4cGVjdGVkIGEgJzonIGFmdGVyIHN3aXRjaCBkZWZhdWx0IGNs
YXVzZSIpOwogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzdGF0ZW1lbnRzID0gcGFyc2VTb3VyY2VF
bGVtZW50cyhjb250ZXh0LCBEb250Q2hlY2tGb3JTdHJpY3RNb2RlKTsKICAgICBmYWlsSWZGYWxz
ZShzdGF0ZW1lbnRzLCAiQ2Fubm90IHBhcnNlIHRoZSBib2R5IG9mIGEgc3dpdGNoIGRlZmF1bHQg
Y2xhdXNlIik7Ci0gICAgVHJlZUNsYXVzZSByZXN1bHQgPSBjb250ZXh0LmNyZWF0ZUNsYXVzZSgw
LCBzdGF0ZW1lbnRzKTsKKyAgICBUcmVlQ2xhdXNlIHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlQ2xh
dXNlKG51bGxwdHIsIHN0YXRlbWVudHMpOwogICAgIGNvbnRleHQuc2V0U3RhcnRPZmZzZXQocmVz
dWx0LCBzdGFydE9mZnNldCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTE3NTEsMTAgKzE3
NTEsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZVRyeVN0YXRlbWVudCgKIHsKICAgICBBU1NFUlQobWF0Y2goVFJZ
KSk7CiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7Ci0gICAg
VHJlZVN0YXRlbWVudCB0cnlCbG9jayA9IDA7Ci0gICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJu
IGNhdGNoUGF0dGVybiA9IDA7Ci0gICAgVHJlZVN0YXRlbWVudCBjYXRjaEJsb2NrID0gMDsKLSAg
ICBUcmVlU3RhdGVtZW50IGZpbmFsbHlCbG9jayA9IDA7CisgICAgVHJlZVN0YXRlbWVudCB0cnlC
bG9jayA9IG51bGxwdHI7CisgICAgVHJlZURlc3RydWN0dXJpbmdQYXR0ZXJuIGNhdGNoUGF0dGVy
biA9IG51bGxwdHI7CisgICAgVHJlZVN0YXRlbWVudCBjYXRjaEJsb2NrID0gbnVsbHB0cjsKKyAg
ICBUcmVlU3RhdGVtZW50IGZpbmFsbHlCbG9jayA9IG51bGxwdHI7CiAgICAgaW50IGZpcnN0TGlu
ZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKICAgICBtYXRjaE9yRmFpbChPUEVOQlJBQ0Us
ICJFeHBlY3RlZCBhIGJsb2NrIHN0YXRlbWVudCBhcyBib2R5IG9mIGEgdHJ5IHN0YXRlbWVudCIp
OwpAQCAtMTg0OCw3ICsxODQ4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUJsb2NrU3RhdGVtZW4KICAgICBpZiAo
bWF0Y2goQ0xPU0VCUkFDRSkpIHsKICAgICAgICAgaW50IGVuZE9mZnNldCA9IG1fdG9rZW4ubV9k
YXRhLm9mZnNldDsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBUcmVlU3RhdGVtZW50IHJlc3Vs
dCA9IGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24sIDAsIHN0YXJ0LCBtX2xh
c3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUsIHNob3VsZFB1c2hMZXhpY2FsU2NvcGUgPyBjdXJyZW50
U2NvcGUoKS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQoKSA6IGVtcHR5RW52aXJvbm1lbnQs
IHNob3VsZFB1c2hMZXhpY2FsU2NvcGUgPyBjdXJyZW50U2NvcGUoKS0+dGFrZUZ1bmN0aW9uRGVj
bGFyYXRpb25zKCkgOiBXVEZNb3ZlKGVtcHR5RnVuY3Rpb25TdGFjaykpOworICAgICAgICBUcmVl
U3RhdGVtZW50IHJlc3VsdCA9IGNvbnRleHQuY3JlYXRlQmxvY2tTdGF0ZW1lbnQobG9jYXRpb24s
IG51bGxwdHIsIHN0YXJ0LCBtX2xhc3RUb2tlbkVuZFBvc2l0aW9uLmxpbmUsIHNob3VsZFB1c2hM
ZXhpY2FsU2NvcGUgPyBjdXJyZW50U2NvcGUoKS0+ZmluYWxpemVMZXhpY2FsRW52aXJvbm1lbnQo
KSA6IGVtcHR5RW52aXJvbm1lbnQsIHNob3VsZFB1c2hMZXhpY2FsU2NvcGUgPyBjdXJyZW50U2Nv
cGUoKS0+dGFrZUZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgOiBXVEZNb3ZlKGVtcHR5RnVuY3Rpb25T
dGFjaykpOwogICAgICAgICBjb250ZXh0LnNldFN0YXJ0T2Zmc2V0KHJlc3VsdCwgc3RhcnRPZmZz
ZXQpOwogICAgICAgICBjb250ZXh0LnNldEVuZE9mZnNldChyZXN1bHQsIGVuZE9mZnNldCk7CiAg
ICAgICAgIGlmIChzaG91bGRQdXNoTGV4aWNhbFNjb3BlKQpAQCAtMTg3Niw3ICsxODc2LDcgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZVN0YXRlbWVudChUcmUKICAgICBtX3N0YXRlbWVudERlcHRoKys7CiAgICAgaW50
IG5vblRyaXZpYWxFeHByZXNzaW9uQ291bnQgPSAwOwogICAgIGZhaWxJZlN0YWNrT3ZlcmZsb3co
KTsKLSAgICBUcmVlU3RhdGVtZW50IHJlc3VsdCA9IDA7CisgICAgVHJlZVN0YXRlbWVudCByZXN1
bHQgPSBudWxscHRyOwogICAgIGJvb2wgc2hvdWxkU2V0RW5kT2Zmc2V0ID0gdHJ1ZTsKICAgICBi
b29sIHNob3VsZFNldFBhdXNlTG9jYXRpb24gPSBmYWxzZTsKICAgICBib29sIHBhcmVudEFsbG93
c0Z1bmN0aW9uRGVjbGFyYXRpb25Bc1N0YXRlbWVudCA9IG1faW1tZWRpYXRlUGFyZW50QWxsb3dz
RnVuY3Rpb25EZWNsYXJhdGlvbkluU3RhdGVtZW50OwpAQCAtMTk0OSw3ICsxOTQ5LDcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+
OjpwYXJzZVN0YXRlbWVudChUcmUKICAgICBjYXNlIENMT1NFQlJBQ0U6CiAgICAgY2FzZSBERUZB
VUxUOgogICAgICAgICAvLyBUaGVzZSB0b2tlbnMgaW1wbHkgdGhlIGVuZCBvZiBhIHNldCBvZiBz
b3VyY2UgZWxlbWVudHMKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIGNhc2UgTEVUOiB7CiAgICAgICAgIGlmICghc3RyaWN0TW9kZSgpKQogICAgICAgICAg
ICAgZ290byBpZGVudGNhc2U7CkBAIC0yMDI4LDcgKzIwMjgsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rp
b25EZWNsYQogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwog
ICAgIGludCBzdGFydCA9IHRva2VuTGluZSgpOwogCi0gICAgVHJlZVN0YXRlbWVudCBmdW5jdGlv
biA9IDA7CisgICAgVHJlZVN0YXRlbWVudCBmdW5jdGlvbiA9IG51bGxwdHI7CiAgICAgaWYgKCFp
c0FzeW5jKQogICAgICAgICBmdW5jdGlvbiA9IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihjb250
ZXh0KTsKICAgICBlbHNlCkBAIC0yMDc1LDggKzIwNzUsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRm9ybWFsUGFyYW1ldGVycyhU
cmVlQgogICAgIGNvbnN0IElkZW50aWZpZXIqIGR1cGxpY2F0ZVBhcmFtZXRlciA9IG51bGxwdHI7
CiAgICAgdW5zaWduZWQgcmVzdFBhcmFtZXRlclN0YXJ0ID0gMDsKICAgICBkbyB7Ci0gICAgICAg
IFRyZWVEZXN0cnVjdHVyaW5nUGF0dGVybiBwYXJhbWV0ZXIgPSAwOwotICAgICAgICBUcmVlRXhw
cmVzc2lvbiBkZWZhdWx0VmFsdWUgPSAwOworICAgICAgICBUcmVlRGVzdHJ1Y3R1cmluZ1BhdHRl
cm4gcGFyYW1ldGVyID0gbnVsbHB0cjsKKyAgICAgICAgVHJlZUV4cHJlc3Npb24gZGVmYXVsdFZh
bHVlID0gbnVsbHB0cjsKIAogICAgICAgICBpZiAoVU5MSUtFTFkobWF0Y2goQ0xPU0VQQVJFTikp
KQogICAgICAgICAgICAgYnJlYWs7CkBAIC0yMjQ4LDcgKzIyNDgsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXIsIGNsYXNzIEZ1bmN0
aW9uSW5mb1R5cAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uSW5mby5wYXJhbWV0ZXJDb3VudCA9
IDE7CiAgICAgICAgICAgICAgICAgYXV0byBwYXJhbWV0ZXIgPSBwYXJzZURlc3RydWN0dXJpbmdQ
YXR0ZXJuKGNvbnRleHQsIERlc3RydWN0dXJpbmdLaW5kOjpEZXN0cnVjdHVyZVRvUGFyYW1ldGVy
cywgRXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQpOwogICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNl
KHBhcmFtZXRlciwgIkNhbm5vdCBwYXJzZSBwYXJhbWV0ZXIgcGF0dGVybiIpOwotICAgICAgICAg
ICAgICAgIGNvbnRleHQuYXBwZW5kUGFyYW1ldGVyKHBhcmFtZXRlckxpc3QsIHBhcmFtZXRlciwg
MCk7CisgICAgICAgICAgICAgICAgY29udGV4dC5hcHBlbmRQYXJhbWV0ZXIocGFyYW1ldGVyTGlz
dCwgcGFyYW1ldGVyLCBudWxscHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0y
MzA0LDcgKzIzMDQsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRy
ZWVCdWlsZGVyOjpGb3JtYWxQYXJhbWV0ZXJMaXN0IFBhcnNlcjxMZQogICAgIGF1dG8gYWRkUGFy
YW1ldGVyID0gWyZdKGNvbnN0IElkZW50aWZpZXImIG5hbWUpIHsKICAgICAgICAgZGVjbGFyZVBh
cmFtZXRlcigmbmFtZSk7CiAgICAgICAgIGF1dG8gYmluZGluZyA9IGNvbnRleHQuY3JlYXRlQmlu
ZGluZ0xvY2F0aW9uKGxvY2F0aW9uLCBuYW1lLCBwb3NpdGlvbiwgcG9zaXRpb24sIEFzc2lnbm1l
bnRDb250ZXh0OjpEZWNsYXJhdGlvblN0YXRlbWVudCk7Ci0gICAgICAgIGNvbnRleHQuYXBwZW5k
UGFyYW1ldGVyKHBhcmFtZXRlcnMsIGJpbmRpbmcsIDApOworICAgICAgICBjb250ZXh0LmFwcGVu
ZFBhcmFtZXRlcihwYXJhbWV0ZXJzLCBiaW5kaW5nLCBudWxscHRyKTsKICAgICAgICAgKytwYXJh
bWV0ZXJDb3VudDsKICAgICB9OwogCkBAIC0yMzU2LDcgKzIzNTYsNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IGJvb2wgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRnVuY3Rpb25JbmZv
KFRyZWVCdWlsZAogICAgICAgICBBU1NFUlQoc3RhcnRDb2x1bW4gIT0gLTEpOwogCiAgICAgICAg
IC8vIElmIHdlIGtub3cgYWJvdXQgdGhpcyBmdW5jdGlvbiBhbHJlYWR5LCB3ZSBjYW4gdXNlIHRo
ZSBjYWNoZWQgaW5mbyBhbmQgc2tpcCB0aGUgcGFyc2VyIHRvIHRoZSBlbmQgb2YgdGhlIGZ1bmN0
aW9uLgotICAgICAgICBpZiAoY29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGNhY2hlZElu
Zm8gPSBUcmVlQnVpbGRlcjo6Q2FuVXNlRnVuY3Rpb25DYWNoZSA/IGZpbmRDYWNoZWRGdW5jdGlv
bkluZm8ocGFyYW1ldGVyc1N0YXJ0KSA6IDApIHsKKyAgICAgICAgaWYgKGNvbnN0IFNvdXJjZVBy
b3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNhblVzZUZ1bmN0aW9u
Q2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKHBhcmFtZXRlcnNTdGFydCkgOiBudWxscHRy
KSB7CiAgICAgICAgICAgICAvLyBJZiB3ZSdyZSBpbiBhIHN0cmljdCBjb250ZXh0LCB0aGUgY2Fj
aGVkIGZ1bmN0aW9uIGluZm8gbXVzdCBzYXkgaXQgd2FzIHN0cmljdCB0b28uCiAgICAgICAgICAg
ICBBU1NFUlQoIXN0cmljdE1vZGUoKSB8fCBjYWNoZWRJbmZvLT5zdHJpY3RNb2RlKTsKICAgICAg
ICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBlbmRMb2NhdGlvbjsKQEAgLTI4NTYsNyArMjg1Niw3IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgfQogICAgIEFTU0VSVChpbmZvLmNsYXNzTmFt
ZSk7CiAKLSAgICBUcmVlRXhwcmVzc2lvbiBwYXJlbnRDbGFzcyA9IDA7CisgICAgVHJlZUV4cHJl
c3Npb24gcGFyZW50Q2xhc3MgPSBudWxscHRyOwogICAgIGlmIChjb25zdW1lKEVYVEVORFMpKSB7
CiAgICAgICAgIHBhcmVudENsYXNzID0gcGFyc2VNZW1iZXJFeHByZXNzaW9uKGNvbnRleHQpOwog
ICAgICAgICBmYWlsSWZGYWxzZShwYXJlbnRDbGFzcywgIkNhbm5vdCBwYXJzZSB0aGUgcGFyZW50
IGNsYXNzIG5hbWUiKTsKQEAgLTI4NjYsOSArMjg2Niw5IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyhUCiAKICAgICBjb25zdW1lT3JGYWlsKE9QRU5CUkFDRSwgIkV4cGVjdGVkIG9wZW5pbmcgJ3sn
IGF0IHRoZSBzdGFydCBvZiBhIGNsYXNzIGJvZHkiKTsKIAotICAgIFRyZWVFeHByZXNzaW9uIGNv
bnN0cnVjdG9yID0gMDsKLSAgICBUcmVlUHJvcGVydHlMaXN0IGNsYXNzRWxlbWVudHMgPSAwOwot
ICAgIFRyZWVQcm9wZXJ0eUxpc3QgY2xhc3NFbGVtZW50c1RhaWwgPSAwOworICAgIFRyZWVFeHBy
ZXNzaW9uIGNvbnN0cnVjdG9yID0gbnVsbHB0cjsKKyAgICBUcmVlUHJvcGVydHlMaXN0IGNsYXNz
RWxlbWVudHMgPSBudWxscHRyOworICAgIFRyZWVQcm9wZXJ0eUxpc3QgY2xhc3NFbGVtZW50c1Rh
aWwgPSBudWxscHRyOwogICAgIHVuc2lnbmVkIG51bUNvbXB1dGVkRmllbGRzID0gMDsKICAgICB3
aGlsZSAoIW1hdGNoKENMT1NFQlJBQ0UpKSB7CiAgICAgICAgIGlmIChtYXRjaChTRU1JQ09MT04p
KSB7CkBAIC0yODk1LDcgKzI4OTUsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3MoVAogICAgICAg
ICAvLyBGSVhNRTogRmlndXJlIG91dCBhIHdheSB0byBzaGFyZSBtb3JlIGNvZGUgd2l0aCBwYXJz
ZVByb3BlcnR5LgogICAgICAgICBjb25zdCBDb21tb25JZGVudGlmaWVycyYgcHJvcGVydHlOYW1l
cyA9ICptX3ZtLnByb3BlcnR5TmFtZXM7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gJnByb3BlcnR5TmFtZXMubnVsbElkZW50aWZpZXI7Ci0gICAgICAgIFRyZWVFeHByZXNzaW9u
IGNvbXB1dGVkUHJvcGVydHlOYW1lID0gMDsKKyAgICAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0
ZWRQcm9wZXJ0eU5hbWUgPSBudWxscHRyOwogICAgICAgICBib29sIGlzR2V0dGVyID0gZmFsc2U7
CiAgICAgICAgIGJvb2wgaXNTZXR0ZXIgPSBmYWxzZTsKICAgICAgICAgU291cmNlUGFyc2VNb2Rl
IHBhcnNlTW9kZSA9IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZTsKQEAgLTI5NzksNyArMjk3
OSw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgICAgIGNsYXNzU2NvcGUtPmFkZENsb3Nl
ZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25hbGx5KGlkZW50LT5pbXBsKCkpOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBpbml0aWFsaXplciA9IDA7Cisg
ICAgICAgICAgICBUcmVlRXhwcmVzc2lvbiBpbml0aWFsaXplciA9IG51bGxwdHI7CiAgICAgICAg
ICAgICBpZiAoY29uc3VtZShFUVVBTCkpIHsKICAgICAgICAgICAgICAgICBTZXRGb3JTY29wZTxi
b29sPiBvdmVycmlkZVBhcnNpbmdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIobV9wYXJzZXJTdGF0ZS5p
c1BhcnNpbmdDbGFzc0ZpZWxkSW5pdGlhbGl6ZXIsIHRydWUpOwogICAgICAgICAgICAgICAgIGNs
YXNzU2NvcGUtPnNldEV4cGVjdGVkU3VwZXJCaW5kaW5nKFN1cGVyQmluZGluZzo6TmVlZGVkKTsK
QEAgLTMwNTMsNyArMzA1Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNv
dXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUluc3RhbmNlCiAKICAgICAgICAg
SlNUb2tlbkxvY2F0aW9uIGZpZWxkTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAg
IGNvbnN0IElkZW50aWZpZXIqIGlkZW50ID0gbnVsbHB0cjsKLSAgICAgICAgVHJlZUV4cHJlc3Np
b24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOworICAgICAgICBUcmVlRXhwcmVzc2lvbiBjb21w
dXRlZFByb3BlcnR5TmFtZSA9IG51bGxwdHI7CiAgICAgICAgIERlZmluZUZpZWxkTm9kZTo6VHlw
ZSB0eXBlID0gRGVmaW5lRmllbGROb2RlOjpUeXBlOjpOYW1lOwogICAgICAgICBzd2l0Y2ggKG1f
dG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgU1RSSU5HOgpAQCAtMzA5MSw3ICszMDkxLDcg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlSW5zdGFuY2UKICAgICAgICAgLy8gT25seSB2YWxpZCBjbGFzcyBm
aWVsZHMgYXJlIGhhbmRsZWQgaW4gdGhpcyBmdW5jdGlvbi4KICAgICAgICAgQVNTRVJUKG1hdGNo
KEVRVUFMKSB8fCBtYXRjaChTRU1JQ09MT04pIHx8IG1hdGNoKENMT1NFQlJBQ0UpIHx8IG1fbGV4
ZXItPmhhc0xpbmVUZXJtaW5hdG9yQmVmb3JlVG9rZW4oKSk7CiAKLSAgICAgICAgVHJlZUV4cHJl
c3Npb24gaW5pdGlhbGl6ZXIgPSAwOworICAgICAgICBUcmVlRXhwcmVzc2lvbiBpbml0aWFsaXpl
ciA9IG51bGxwdHI7CiAgICAgICAgIGlmIChjb25zdW1lKEVRVUFMKSkKICAgICAgICAgICAgIGlu
aXRpYWxpemVyID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbihjb250ZXh0KTsKIApAQCAtMzE2
Nyw3ICszMTY3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cHJlc3Npb25PckwKICAgICBkZWZhdWx0OgogICAg
ICAgICBicmVhazsKICAgICB9Ci0gICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAg
ICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSBudWxscHRyOwogICAgIFNjb3BlUmVmIGxhYmVs
U2NvcGUgPSBjdXJyZW50U2NvcGUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxhYmVs
cy5zaXplKCk7IGkrKykKICAgICAgICAgcHVzaExhYmVsKGxhYmVsc1tpXS5tX2lkZW50LCBpc0xv
b3ApOwpAQCAtMzIyMiwxMyArMzIyMiwxMyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAg
IGludCBlbmQgPSB0b2tlbkxpbmUoKTsKICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsMihDTE9T
RVBBUkVOLCAiKSIsICJlbmQiLCAiJ2lmJyBjb25kaXRpb24iKTsKIAotICAgIGNvbnN0IElkZW50
aWZpZXIqIHVudXNlZCA9IDA7CisgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gbnVsbHB0
cjsKICAgICBtX2ltbWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0aW9uRGVjbGFyYXRpb25JblN0YXRl
bWVudCA9IHRydWU7CiAgICAgVHJlZVN0YXRlbWVudCB0cnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVu
dChjb250ZXh0LCB1bnVzZWQpOwogICAgIGZhaWxJZkZhbHNlKHRydWVCbG9jaywgIkV4cGVjdGVk
IGEgc3RhdGVtZW50IGFzIHRoZSBib2R5IG9mIGFuIGlmIGJsb2NrIik7CiAKICAgICBpZiAoIW1h
dGNoKEVMU0UpKQotICAgICAgICByZXR1cm4gY29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChpZkxv
Y2F0aW9uLCBjb25kaXRpb24sIHRydWVCbG9jaywgMCwgc3RhcnQsIGVuZCk7CisgICAgICAgIHJl
dHVybiBjb250ZXh0LmNyZWF0ZUlmU3RhdGVtZW50KGlmTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1
ZUJsb2NrLCBudWxscHRyLCBzdGFydCwgZW5kKTsKIAogICAgIFZlY3RvcjxUcmVlRXhwcmVzc2lv
bj4gZXhwclN0YWNrOwogICAgIFZlY3RvcjxzdGQ6OnBhaXI8aW50LCBpbnQ+PiBwb3NTdGFjazsK
QEAgLTMyMzksNyArMzIzOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChUCiAgICAgICAgIEpT
VG9rZW5Mb2NhdGlvbiB0ZW1wTG9jYXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CiAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgaWYgKCFtYXRjaChJRikpIHsKLSAgICAgICAgICAgIGNvbnN0IElkZW50
aWZpZXIqIHVudXNlZCA9IDA7CisgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQg
PSBudWxscHRyOwogICAgICAgICAgICAgbV9pbW1lZGlhdGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRl
Y2xhcmF0aW9uSW5TdGF0ZW1lbnQgPSB0cnVlOwogICAgICAgICAgICAgVHJlZVN0YXRlbWVudCBi
bG9jayA9IHBhcnNlU3RhdGVtZW50KGNvbnRleHQsIHVudXNlZCk7CiAgICAgICAgICAgICBmYWls
SWZGYWxzZShibG9jaywgIkV4cGVjdGVkIGEgc3RhdGVtZW50IGFzIHRoZSBib2R5IG9mIGFuIGVs
c2UgYmxvY2siKTsKQEAgLTMyNTcsNyArMzI1Nyw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJZlN0YXRlbWVudChU
CiAgICAgICAgIHJlY29yZFBhdXNlTG9jYXRpb24oY29udGV4dC5icmVha3BvaW50TG9jYXRpb24o
aW5uZXJDb25kaXRpb24pKTsKICAgICAgICAgaW50IGlubmVyRW5kID0gdG9rZW5MaW5lKCk7CiAg
ICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwyKENMT1NFUEFSRU4sICIpIiwgImVuZCIsICIn
aWYnIGNvbmRpdGlvbiIpOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOwor
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSBudWxscHRyOwogICAgICAgICBtX2lt
bWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0aW9uRGVjbGFyYXRpb25JblN0YXRlbWVudCA9IHRydWU7
CiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgaW5uZXJUcnVlQmxvY2sgPSBwYXJzZVN0YXRlbWVudChj
b250ZXh0LCB1bnVzZWQpOwogICAgICAgICBmYWlsSWZGYWxzZShpbm5lclRydWVCbG9jaywgIkV4
cGVjdGVkIGEgc3RhdGVtZW50IGFzIHRoZSBib2R5IG9mIGFuIGlmIGJsb2NrIik7CkBAIC0zMjc2
LDcgKzMyNzYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAgICAgICBwb3NTdGFjay5y
ZW1vdmVMYXN0KCk7CiAgICAgICAgIEpTVG9rZW5Mb2NhdGlvbiBlbHNlTG9jYXRpb24gPSB0b2tl
bkxvY2F0aW9uU3RhY2subGFzdCgpOwogICAgICAgICB0b2tlbkxvY2F0aW9uU3RhY2sucmVtb3Zl
TGFzdCgpOwotICAgICAgICBUcmVlU3RhdGVtZW50IGlmU3RhdGVtZW50ID0gY29udGV4dC5jcmVh
dGVJZlN0YXRlbWVudChlbHNlTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJsb2NrLCAwLCBwb3Mu
Zmlyc3QsIHBvcy5zZWNvbmQpOworICAgICAgICBUcmVlU3RhdGVtZW50IGlmU3RhdGVtZW50ID0g
Y29udGV4dC5jcmVhdGVJZlN0YXRlbWVudChlbHNlTG9jYXRpb24sIGNvbmRpdGlvbiwgdHJ1ZUJs
b2NrLCBudWxscHRyLCBwb3MuZmlyc3QsIHBvcy5zZWNvbmQpOwogICAgICAgICBjb250ZXh0LnNl
dEVuZE9mZnNldChpZlN0YXRlbWVudCwgY29udGV4dC5lbmRPZmZzZXQodHJ1ZUJsb2NrKSk7CiAg
ICAgICAgIHN0YXRlbWVudFN0YWNrLmFwcGVuZChpZlN0YXRlbWVudCk7CiAgICAgfQpAQCAtMzUx
Nyw3ICszNTE3LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKIAogICAgICAgICBuZXh0KCk7
CiAKLSAgICAgICAgVHJlZVN0YXRlbWVudCByZXN1bHQgPSAwOworICAgICAgICBUcmVlU3RhdGVt
ZW50IHJlc3VsdCA9IG51bGxwdHI7CiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbk9yQ2xhc3NEZWNs
YXJhdGlvbiA9IGZhbHNlOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgPSBu
dWxscHRyOwogCkBAIC0zNjIyLDcgKzM2MjIsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQog
ICAgICAgICB9CiAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwyKENMT1NFQlJBQ0UsICJ9
IiwgImVuZCIsICJleHBvcnQgbGlzdCIpOwogCi0gICAgICAgIHR5cGVuYW1lIFRyZWVCdWlsZGVy
OjpNb2R1bGVOYW1lIG1vZHVsZU5hbWUgPSAwOworICAgICAgICB0eXBlbmFtZSBUcmVlQnVpbGRl
cjo6TW9kdWxlTmFtZSBtb2R1bGVOYW1lID0gbnVsbHB0cjsKICAgICAgICAgaWYgKG1hdGNoQ29u
dGV4dHVhbEtleXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5mcm9tKSkgewogICAgICAgICAgICAg
bmV4dCgpOwogICAgICAgICAgICAgbW9kdWxlTmFtZSA9IHBhcnNlTW9kdWxlTmFtZShjb250ZXh0
KTsKQEAgLTM2NTMsNyArMzY1Myw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgZGVm
YXVsdDogewogICAgICAgICAvLyBleHBvcnQgVmFyaWFibGVTdGF0ZW1lbnQKICAgICAgICAgLy8g
ZXhwb3J0IERlY2xhcmF0aW9uCi0gICAgICAgIFRyZWVTdGF0ZW1lbnQgcmVzdWx0ID0gMDsKKyAg
ICAgICAgVHJlZVN0YXRlbWVudCByZXN1bHQgPSBudWxscHRyOwogICAgICAgICBzd2l0Y2ggKG1f
dG9rZW4ubV90eXBlKSB7CiAgICAgICAgIGNhc2UgVkFSOgogICAgICAgICAgICAgcmVzdWx0ID0g
cGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIERlY2xhcmF0aW9uVHlwZTo6VmFyRGVj
bGFyYXRpb24sIEV4cG9ydFR5cGU6OkV4cG9ydGVkKTsKQEAgLTM2OTksNyArMzY5OSw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgfQogCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIExleGVyVHlwZT4KQEAgLTM4MzgsNyArMzgzOCw3IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQXNzaWdubWVuCiAgICAgICAgIGF1dG8gcGF0dGVybiA9IHRyeVBhcnNlRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm5FeHByZXNzaW9uKGNvbnRleHQsIEFzc2lnbm1lbnRDb250ZXh0OjpBc3NpZ25tZW50
RXhwcmVzc2lvbik7CiAgICAgICAgIGlmIChjbGFzc2lmaWVyLmluZGljYXRlc1Bvc3NpYmxlUGF0
dGVybigpICYmICghcGF0dGVybiB8fCAhbWF0Y2goRVFVQUwpKSkgewogICAgICAgICAgICAgcmVz
dG9yZVNhdmVQb2ludFdpdGhFcnJvcihjb250ZXh0LCBleHByZXNzaW9uRXJyb3JMb2NhdGlvbik7
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICB9CiAgICAgICAgIGZhaWxJZkZhbHNlKHBhdHRlcm4sICJDYW5ub3QgcGFyc2UgYXNzaWdu
bWVudCBwYXR0ZXJuIik7CiAgICAgICAgIGNvbnN1bWVPckZhaWwoRVFVQUwsICJFeHBlY3RlZCAn
PScgZm9sbG93aW5nIGFzc2lnbm1lbnQgcGF0dGVybiIpOwpAQCAtMzg5MSw3ICszODkxLDcgQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICAgICAgaWYgKHN0cmljdE1vZGUoKSAmJiBtX3Bh
cnNlclN0YXRlLmxhc3RJZGVudGlmaWVyICYmIGNvbnRleHQuaXNSZXNvbHZlKGxocykpIHsKICAg
ICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChtX3ZtLnByb3BlcnR5TmFtZXMtPmV2YWwgPT0g
Km1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXIsICJDYW5ub3QgbW9kaWZ5ICdldmFsJyBpbiBz
dHJpY3QgbW9kZSIpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZUlmU3RyaWN0KG1fdm0ucHJvcGVy
dHlOYW1lcy0+YXJndW1lbnRzID09ICptX3BhcnNlclN0YXRlLmxhc3RJZGVudGlmaWVyLCAiQ2Fu
bm90IG1vZGlmeSAnYXJndW1lbnRzJyBpbiBzdHJpY3QgbW9kZSIpOwotICAgICAgICAgICAgbV9w
YXJzZXJTdGF0ZS5sYXN0SWRlbnRpZmllciA9IDA7CisgICAgICAgICAgICBtX3BhcnNlclN0YXRl
Lmxhc3RJZGVudGlmaWVyID0gbnVsbHB0cjsKICAgICAgICAgfQogICAgICAgICBsaHMgPSBwYXJz
ZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAgICAgICBmYWlsSWZGYWxzZShsaHMs
ICJDYW5ub3QgcGFyc2UgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZiBhbiBhc3NpZ25tZW50IGV4cHJl
c3Npb24iKTsKQEAgLTQyNTQsOSArNDI1NCw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5
cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxkZXImIGNvbnRleHQsIGJvb2wgc3Ry
aWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgdW5zaWduZWQgZ2V0dGVyT3JTZXR0ZXJTdGFy
dE9mZnNldCwKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3RydWN0b3JLaW5kLCBDbGFzc0VsZW1l
bnRUYWcgdGFnKQogewotICAgIGNvbnN0IElkZW50aWZpZXIqIHN0cmluZ1Byb3BlcnR5TmFtZSA9
IDA7CisgICAgY29uc3QgSWRlbnRpZmllciogc3RyaW5nUHJvcGVydHlOYW1lID0gbnVsbHB0cjsK
ICAgICBkb3VibGUgbnVtZXJpY1Byb3BlcnR5TmFtZSA9IDA7Ci0gICAgVHJlZUV4cHJlc3Npb24g
Y29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOworICAgIFRyZWVFeHByZXNzaW9uIGNvbXB1dGVkUHJv
cGVydHlOYW1lID0gbnVsbHB0cjsKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOwogCkBAIC00NjE3LDcgKzQ2MTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZVByaW1hcnlF
eHByZQogCiAgICAgICAgICAgICAvLyBBdm9pZCB1c2luZyB2YXJpYWJsZSBpZiBpdCBpcyBhbiBh
cnJvdyBmdW5jdGlvbiBwYXJhbWV0ZXIKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShtYXRjaChB
UlJPV0ZVTkNUSU9OKSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgICAgIGNvbnN0IGJvb2wgaXNFdmFsID0gZmFs
c2U7CiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVzb2x2ZUFuZFVzZVZhcmlhYmxlKGNvbnRl
eHQsIGlkZW50LCBpc0V2YWwsIHN0YXJ0LCBsb2NhdGlvbik7CkBAIC00NjM0LDcgKzQ2MzQsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZVByaW1hcnlFeHByZQogCiAgICAgICAgIC8vIEF2b2lkIHVzaW5nIHZhcmlh
YmxlIGlmIGl0IGlzIGFuIGFycm93IGZ1bmN0aW9uIHBhcmFtZXRlcgogICAgICAgICBpZiAoVU5M
SUtFTFkobWF0Y2goQVJST1dGVU5DVElPTikpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICByZXR1cm4gY3JlYXRlUmVzb2x2ZUFu
ZFVzZVZhcmlhYmxlKGNvbnRleHQsIGlkZW50LCAqaWRlbnQgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT5ldmFsLCBzdGFydCwgbG9jYXRpb24pOwogICAgIH0KQEAgLTQ4MDEsNyArNDgwMSw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCByZWNvcmRDYWxsT3JBcHBseURlcHRoKFBhcnNlclR5cGUqLCBWTSYs
IE9wdGlvbmFsPHR5cGVuYW1lIFBhCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VNZW1iZXJFeHByZXNzaW9uKFRyZWVCdWlsZGVyJiBjb250ZXh0KQogewotICAgIFRy
ZWVFeHByZXNzaW9uIGJhc2UgPSAwOworICAgIFRyZWVFeHByZXNzaW9uIGJhc2UgPSBudWxscHRy
OwogICAgIEpTVGV4dFBvc2l0aW9uIGV4cHJlc3Npb25TdGFydCA9IHRva2VuU3RhcnRQb3NpdGlv
bigpOwogICAgIGludCBuZXdDb3VudCA9IDA7CiAgICAgSlNUb2tlbkxvY2F0aW9uIHN0YXJ0TG9j
YXRpb24gPSB0b2tlbkxvY2F0aW9uKCk7CkBAIC00OTAwLDcgKzQ5MDAsNyBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZU1lbWJlckV4cHJlcwogICAgIGZhaWxJZkZhbHNlKGJhc2UsICJDYW5ub3QgcGFyc2UgYmFzZSBl
eHByZXNzaW9uIik7CiAKICAgICBkbyB7Ci0gICAgICAgIFRyZWVFeHByZXNzaW9uIG9wdGlvbmFs
Q2hhaW5CYXNlID0gMDsKKyAgICAgICAgVHJlZUV4cHJlc3Npb24gb3B0aW9uYWxDaGFpbkJhc2Ug
PSBudWxscHRyOwogICAgICAgICBKU1Rva2VuTG9jYXRpb24gb3B0aW9uYWxDaGFpbkxvY2F0aW9u
OwogICAgICAgICBKU1Rva2VuVHlwZSB0eXBlID0gbV90b2tlbi5tX3R5cGU7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDE2OGI2ZmY3ZWY4ZWNlZjVmZDMyYzcxNTgy
ZjBiMDRmNzY5ZGIxY2YuLjU0YjM5NzMwOWVhMmZjY2YzNzMxZmJlOTk4ZGFiNTk5YzliYmUwMTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMjIwLDEyICsyMjAsMTIg
QEAgcHVibGljOgogICAgIFNjb3BlTGFiZWxJbmZvKiBnZXRMYWJlbChjb25zdCBJZGVudGlmaWVy
KiBsYWJlbCkKICAgICB7CiAgICAgICAgIGlmICghbV9sYWJlbHMpCi0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBmb3IgKGludCBpID0g
bV9sYWJlbHMtPnNpemUoKTsgaSA+IDA7IGktLSkgewogICAgICAgICAgICAgaWYgKG1fbGFiZWxz
LT5hdChpIC0gMSkudWlkID09IGxhYmVsLT5pbXBsKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
ICZtX2xhYmVscy0+YXQoaSAtIDEpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICB2b2lkIHNldFNvdXJjZVBhcnNlTW9k
ZShTb3VyY2VQYXJzZU1vZGUgbW9kZSkKQEAgLTk3Nyw3ICs5NzcsNyBAQCBwcml2YXRlOgogICAg
ICAgICAKICAgICAgICAgdm9pZCBzZXRQb3BwZWQoKQogICAgICAgICB7Ci0gICAgICAgICAgICBt
X3BhcnNlciA9IDA7CisgICAgICAgICAgICBtX3BhcnNlciA9IG51bGxwdHI7CiAgICAgICAgIH0K
ICAgICAgICAgCiAgICAgcHJpdmF0ZToKQEAgLTEzNzcsNyArMTM3Nyw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgY29uc3QgU291cmNlUHJvdmlkZXJDYWNoZUl0ZW0qIGZpbmRDYWNoZWRGdW5jdGlv
bkluZm8oaW50IG9wZW5CcmFjZVBvcykgCiAgICAgewotICAgICAgICByZXR1cm4gbV9mdW5jdGlv
bkNhY2hlID8gbV9mdW5jdGlvbkNhY2hlLT5nZXQob3BlbkJyYWNlUG9zKSA6IDA7CisgICAgICAg
IHJldHVybiBtX2Z1bmN0aW9uQ2FjaGUgPyBtX2Z1bmN0aW9uQ2FjaGUtPmdldChvcGVuQnJhY2VQ
b3MpIDogbnVsbHB0cjsKICAgICB9CiAKICAgICBQYXJzZXIoKTsKQEAgLTE1ODIsMTAgKzE1ODIs
MTAgQEAgcHJpdmF0ZToKICAgICBTY29wZUxhYmVsSW5mbyogZ2V0TGFiZWwoY29uc3QgSWRlbnRp
ZmllciogbGFiZWwpCiAgICAgewogICAgICAgICBTY29wZVJlZiBjdXJyZW50ID0gY3VycmVudFNj
b3BlKCk7Ci0gICAgICAgIFNjb3BlTGFiZWxJbmZvKiByZXN1bHQgPSAwOworICAgICAgICBTY29w
ZUxhYmVsSW5mbyogcmVzdWx0ID0gbnVsbHB0cjsKICAgICAgICAgd2hpbGUgKCEocmVzdWx0ID0g
Y3VycmVudC0+Z2V0TGFiZWwobGFiZWwpKSkgewogICAgICAgICAgICAgaWYgKCFjdXJyZW50Lmhh
c0NvbnRhaW5pbmdTY29wZSgpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuY29u
dGFpbmluZ1Njb3BlKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE2
MjEsNyArMTYyMSw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VTaW5nbGVGdW5jdGlvbihUcmVlQnVpbGRlciYsIE9w
dGlvbmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbik7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgcGFyc2VJ
bnN0YW5jZUZpZWxkSW5pdGlhbGl6ZXJTb3VyY2VFbGVtZW50cyhUcmVlQnVpbGRlciYsIGNvbnN0
IFZlY3RvcjxKU1RleHRQb3NpdGlvbj4mKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnRMaXN0SXRlbShUcmVlQnVpbGRlciYsIGNv
bnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFsTGVu
Z3RoKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFy
c2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1
bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDApOworICAgIHRlbXBsYXRlIDxjbGFz
cyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZVN0YXRlbWVudChUcmVlQnVpbGRlciYs
IGNvbnN0IElkZW50aWZpZXIqJiBkaXJlY3RpdmUsIHVuc2lnbmVkKiBkaXJlY3RpdmVMaXRlcmFs
TGVuZ3RoID0gbnVsbHB0cik7CiAgICAgZW51bSBjbGFzcyBFeHBvcnRUeXBlIHsgRXhwb3J0ZWQs
IE5vdEV4cG9ydGVkIH07CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IHBhcnNlQ2xhc3NEZWNsYXJhdGlvbihUcmVlQnVpbGRlciYsIEV4cG9ydFR5cGUgPSBF
eHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dCA9IERlY2xh
cmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5kYXJkKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKFRyZWVCdWls
ZGVyJiwgRXhwb3J0VHlwZSA9IEV4cG9ydFR5cGU6Ok5vdEV4cG9ydGVkLCBEZWNsYXJhdGlvbkRl
ZmF1bHRDb250ZXh0ID0gRGVjbGFyYXRpb25EZWZhdWx0Q29udGV4dDo6U3RhbmRhcmQsIE9wdGlv
bmFsPGludD4gZnVuY3Rpb25Db25zdHJ1Y3RvclBhcmFtZXRlcnNFbmRQb3NpdGlvbiA9IFdURjo6
bnVsbG9wdCk7CkBAIC0yMDI0LDcgKzIwMjQsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UGFyc2VkTm9k
ZT4gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlKFBhcnNlckVycm9yJiBlcnJvciwgY29uc3QgSQog
ICAgICAgICAvLyB3ZSByYW4gb3V0IG9mIHN0YWNrIHdoaWxlIHBhcnNpbmcuIElmIHdlIHNlZSBh
biBlcnJvciB3aGlsZSBwYXJzaW5nIGV2YWwgb3IgcHJvZ3JhbQogICAgICAgICAvLyBjb2RlIHdl
IGFzc3VtZSB0aGF0IGl0IHdhcyBhIHN5bnRheCBlcnJvciBzaW5jZSBydW5uaW5nIG91dCBvZiBz
dGFjayBpcyBtdWNoIGxlc3MKICAgICAgICAgLy8gbGlrZWx5LCBhbmQgd2UgYXJlIGN1cnJlbnRs
eSB1bmFibGUgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgdHdvIGNhc2VzLgotICAgICAgICBp
ZiAoaXNGdW5jdGlvbk1ldGFkYXRhTm9kZShzdGF0aWNfY2FzdDxQYXJzZWROb2RlKj4oMCkpIHx8
IG1faGFzU3RhY2tPdmVyZmxvdykKKyAgICAgICAgaWYgKGlzRnVuY3Rpb25NZXRhZGF0YU5vZGUo
c3RhdGljX2Nhc3Q8UGFyc2VkTm9kZSo+KG51bGxwdHIpKSB8fCBtX2hhc1N0YWNrT3ZlcmZsb3cp
CiAgICAgICAgICAgICBlcnJvciA9IFBhcnNlckVycm9yKFBhcnNlckVycm9yOjpTdGFja092ZXJm
bG93LCBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JOb25lLCBtX3Rva2VuKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JUeXBlIGVycm9yVHlwZSA9
IFBhcnNlckVycm9yOjpTeW50YXhFcnJvcklycmVjb3ZlcmFibGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4IDRiOTQ0NTA1ZTMyNzYzNTM3NTJm
MjYwODdjYTNiN2FhM2U2Mjk2MzAuLjhhYzY2NDJkYWE1OGQ2NWE5MGFmNzJhY2JmNDkxYjg2NTUw
YmM3ODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJl
bmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3Bw
CkBAIC0zNyw4ICszNyw4IEBAIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
SWRlbnRpZmllckFyZW5hKTsKIERFRklORV9BTExPQ0FUT1JfV0lUSF9IRUFQX0lERU5USUZJRVIo
UGFyc2VyQXJlbmEpOwogCiBQYXJzZXJBcmVuYTo6UGFyc2VyQXJlbmEoKQotICAgIDogbV9mcmVl
YWJsZU1lbW9yeSgwKQotICAgICwgbV9mcmVlYWJsZVBvb2xFbmQoMCkKKyAgICA6IG1fZnJlZWFi
bGVNZW1vcnkobnVsbHB0cikKKyAgICAsIG1fZnJlZWFibGVQb29sRW5kKG51bGxwdHIpCiB7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCA0ZDlj
MTlkMGNkYjcxN2Y2YjYzMjYwMDk5ZmVmNmY4YTcxMTVhOGVmLi44YmI5ZDVlYjkwOTJiM2NlN2Mw
ZGY0YmNlMWFlNzA2NmZlOWZmMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oCkBAIC02MCw5ICs2MCw5IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7
CiAgICAgICAgICAgICBtX2lkZW50aWZpZXJzLmNsZWFyKCk7CiAgICAgICAgICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcjsgaSsrKQotICAgICAgICAgICAg
ICAgIG1fc2hvcnRJZGVudGlmaWVyc1tpXSA9IDA7CisgICAgICAgICAgICAgICAgbV9zaG9ydElk
ZW50aWZpZXJzW2ldID0gbnVsbHB0cjsKICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
TWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyOyBpKyspCi0gICAgICAgICAgICAgICAgbV9yZWNlbnRJ
ZGVudGlmaWVyc1tpXSA9IDA7CisgICAgICAgICAgICAgICAgbV9yZWNlbnRJZGVudGlmaWVyc1tp
XSA9IG51bGxwdHI7CiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckZ1bmN0aW9uSW5mby5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJGdW5jdGlvbkluZm8uaAppbmRleCBiOWZkNjc5NTY3
MDhhYzZmOWVkYTk1MzVkNDFhYmZjZWI0OWJlZTNmLi5mYTgyODVmYzBiZGQ5Mjk1OWY0MmM5ODA3
OTNhODk0ZjAxYmM4MThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckZ1bmN0aW9uSW5mby5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyRnVuY3Rpb25JbmZvLmgKQEAgLTI5LDggKzI5LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAK
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4KIHN0cnVjdCBQYXJzZXJGdW5jdGlvbkluZm8g
ewotICAgIGNvbnN0IElkZW50aWZpZXIqIG5hbWUgPSAwOwotICAgIHR5cGVuYW1lIFRyZWVCdWls
ZGVyOjpGdW5jdGlvbkJvZHkgYm9keSA9IDA7CisgICAgY29uc3QgSWRlbnRpZmllciogbmFtZSA9
IG51bGxwdHI7CisgICAgdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkZ1bmN0aW9uQm9keSBib2R5ID0g
bnVsbHB0cjsKICAgICB1bnNpZ25lZCBwYXJhbWV0ZXJDb3VudCA9IDA7CiAgICAgdW5zaWduZWQg
ZnVuY3Rpb25MZW5ndGggPSAwOwogICAgIHVuc2lnbmVkIHN0YXJ0T2Zmc2V0ID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50YXhDaGVja2VyLmgKaW5kZXggZjliYjA3YjRk
ZDQwODljN2IxZTNhMGYzZjU5NTQxYjMxN2E1MmQ3Zi4uYWFiMGI3NGRhYTg5MDY0NDY4MGJjYmQy
ZjA4OGVhYmRjYTkzZGQwNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9TeW50YXhDaGVja2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9TeW50
YXhDaGVja2VyLmgKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHR5cGVkZWYgaW50IEFy
Z3VtZW50czsKICAgICB0eXBlZGVmIEV4cHJlc3Npb25UeXBlIENvbW1hOwogICAgIHN0cnVjdCBQ
cm9wZXJ0eSB7Ci0gICAgICAgIEFMV0FZU19JTkxJTkUgUHJvcGVydHkodm9pZCogPSAwKQorICAg
ICAgICBBTFdBWVNfSU5MSU5FIFByb3BlcnR5KHZvaWQqID0gbnVsbHB0cikKICAgICAgICAgICAg
IDogdHlwZSgoUHJvcGVydHlOb2RlOjpUeXBlKTApCiAgICAgICAgIHsKICAgICAgICAgfQpAQCAt
MTA4LDcgKzEwOCw3IEBAIHB1YmxpYzoKICAgICAgICAgewogICAgICAgICB9CiAgICAgICAgIEFM
V0FZU19JTkxJTkUgUHJvcGVydHkoUHJvcGVydHlOb2RlOjpUeXBlIHR5KQotICAgICAgICAgICAg
OiBuYW1lKDApCisgICAgICAgICAgICA6IG5hbWUobnVsbHB0cikKICAgICAgICAgICAgICwgdHlw
ZSh0eSkKICAgICAgICAgewogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaAppbmRleCBiYjc3NGE5Zjc5ODM1MzVhMDBhYjNm
MWU1NzRmMGY0MzJlZTI1OTdjLi43OTdjYzc2MWQ1ZTFlYzJjZmQ0YThkZGRmMzhmOWU1YWEyNjc3
Mjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291
cmNlQ29kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVW5saW5rZWRTb3Vy
Y2VDb2RlLmgKQEAgLTQwLDcgKzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwdWJsaWM6
CiAgICAgICAgIFVubGlua2VkU291cmNlQ29kZSgpCi0gICAgICAgICAgICA6IG1fcHJvdmlkZXIo
MCkKKyAgICAgICAgICAgIDogbV9wcm92aWRlcihudWxscHRyKQogICAgICAgICAgICAgLCBtX3N0
YXJ0T2Zmc2V0KDApCiAgICAgICAgICAgICAsIG1fZW5kT2Zmc2V0KDApCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2Rl
U2VxdWVuY2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0
ZWNvZGVTZXF1ZW5jZS5jcHAKaW5kZXggOGE4NmMyZjkxYTU4NDkyN2RlZjQxNTM2MzNhNzQwZmMy
ZDE5MTYwOS4uZTc4ZGQ3MzMyZWJlN2QxNTQwMzFkZDViYWUwNTQzZDI2NzM1YjE1YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0ZWNvZGVTZXF1
ZW5jZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQnl0
ZWNvZGVTZXF1ZW5jZS5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgdm9pZCBCeXRlY29kZVNlcXVlbmNl
OjphZGRTZXF1ZW5jZVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmoKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgIEpTQXJyYXkqIGhlYWRlciA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCAwKTsKKyAgICBKU0FycmF5KiBoZWFkZXIgPSBjb25z
dHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9o
ZWFkZXIuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgaGVhZGVyLT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGksIGpzU3RyaW5nKHZtLCBTdHJpbmc6OmZyb21VVEY4KG1faGVhZGVyW2ldKSkp
OwpAQCAtODgsNyArODgsNyBAQCB2b2lkIEJ5dGVjb2RlU2VxdWVuY2U6OmFkZFNlcXVlbmNlUHJv
cGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iagogICAgIH0KICAgICBy
ZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aGVhZGVyLCBoZWFkZXIpOwog
ICAgIAotICAgIEpTQXJyYXkqIHNlcXVlbmNlID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxP
YmplY3QsIDApOworICAgIEpTQXJyYXkqIHNlcXVlbmNlID0gY29uc3RydWN0RW1wdHlBcnJheShn
bG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZv
aWQoKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fc2VxdWVuY2Uuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgc2VxdWVuY2UtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaSwg
bV9zZXF1ZW5jZVtpXS50b0pTKGdsb2JhbE9iamVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRpb24uY3BwCmluZGV4IDU2ZDM5
NTBhZWJkM2M3NTE2NTQyNjRjNzM5NmQyMDhmMjRiYjg4ZTkuLjU3MjI3NGJlYmJjOTlkMmMzNGVk
MjQ2YzAzYzEzMjBlZTcwOWEyYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5jcHAKQEAgLTEyMSw3ICsxMjEsNyBAQCBK
U1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pTKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNv
bnN0CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVjb2Rl
c0lELCBqc051bWJlcihtX2J5dGVjb2Rlcy0+aWQoKSkpOwogICAgIHJlc3VsdC0+cHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb21waWxhdGlvbktpbmQsIGpzU3RyaW5nKHZtLCBTdHJp
bmc6OmZyb21VVEY4KHRvQ1N0cmluZyhtX2tpbmQpKSkpOwogICAgIAotICAgIEpTQXJyYXkqIHBy
b2ZpbGVkQnl0ZWNvZGVzID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIDApOwor
ICAgIEpTQXJyYXkqIHByb2ZpbGVkQnl0ZWNvZGVzID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9i
YWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fcHJvZmlsZWRCeXRlY29kZXMuc2l6ZSgp
OyArK2kpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1fcHJvZmlsZWRCeXRlY29kZXNbaV0udG9K
UyhnbG9iYWxPYmplY3QpOwpAQCAtMTMxLDcgKzEzMSw3IEBAIEpTVmFsdWUgQ29tcGlsYXRpb246
OnRvSlMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICB9CiAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb2ZpbGVkQnl0ZWNvZGVzLCBw
cm9maWxlZEJ5dGVjb2Rlcyk7CiAgICAgCi0gICAgSlNBcnJheSogZGVzY3JpcHRpb25zID0gY29u
c3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIDApOworICAgIEpTQXJyYXkqIGRlc2NyaXB0
aW9ucyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX2Rlc2NyaXB0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvIHZhbHVlID0g
bV9kZXNjcmlwdGlvbnNbaV0udG9KUyhnbG9iYWxPYmplY3QpOwpAQCAtMTQxLDcgKzE0MSw3IEBA
IEpTVmFsdWUgQ29tcGlsYXRpb246OnRvSlMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkg
Y29uc3QKICAgICB9CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
PmRlc2NyaXB0aW9ucywgZGVzY3JpcHRpb25zKTsKICAgICAKLSAgICBKU0FycmF5KiBjb3VudGVy
cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCAwKTsKKyAgICBKU0FycmF5KiBj
b3VudGVycyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGZvciAoYXV0byBpdCA9IG1f
Y291bnRlcnMuYmVnaW4oKSwgZW5kID0gbV9jb3VudGVycy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0
KSB7CiAgICAgICAgIEpTT2JqZWN0KiBjb3VudGVyRW50cnkgPSBjb25zdHJ1Y3RFbXB0eU9iamVj
dChnbG9iYWxPYmplY3QpOwpAQCAtMTU1LDcgKzE1NSw3IEBAIEpTVmFsdWUgQ29tcGlsYXRpb246
OnRvSlMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICB9CiAgICAgcmVz
dWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvdW50ZXJzLCBjb3VudGVycyk7
CiAgICAgCi0gICAgSlNBcnJheSogZXhpdFNpdGVzID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9i
YWxPYmplY3QsIDApOworICAgIEpTQXJyYXkqIGV4aXRTaXRlcyA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29zckV4aXRTaXRlcy5zaXpl
KCk7ICsraSkgewogICAgICAgICBhdXRvIHZhbHVlID0gbV9vc3JFeGl0U2l0ZXNbaV0udG9KUyhn
bG9iYWxPYmplY3QpOwpAQCAtMTY1LDcgKzE2NSw3IEBAIEpTVmFsdWUgQ29tcGlsYXRpb246OnRv
SlMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICB9CiAgICAgcmVzdWx0
LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm9zckV4aXRTaXRlcywgZXhpdFNpdGVz
KTsKICAgICAKLSAgICBKU0FycmF5KiBleGl0cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFs
T2JqZWN0LCAwKTsKKyAgICBKU0FycmF5KiBleGl0cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xv
YmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX29zckV4aXRzLnNpemUoKTsgKytpKSB7
CiAgICAgICAgIGV4aXRzLT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGksIG1fb3NyRXhp
dHNbaV0udG9KUyhnbG9iYWxPYmplY3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcAppbmRleCBkNDU2NDBlNmY2Y2VhM2U2ZTVk
MTgwMGE3MmEwNmNhZjNmN2M2NTEwLi5lOWE0NzhkNWUyZWEzMTg0YjljZjM0ZjMzMjRmY2ViNTE5
N2M4MjE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJEYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2Zp
bGVyRGF0YWJhc2UuY3BwCkBAIC00NSw3ICs0NSw3IEBAIERhdGFiYXNlOjpEYXRhYmFzZShWTSYg
dm0pCiAgICAgOiBtX2RhdGFiYXNlSUQoKytkYXRhYmFzZUNvdW50ZXIpCiAgICAgLCBtX3ZtKHZt
KQogICAgICwgbV9zaG91bGRTYXZlQXRFeGl0KGZhbHNlKQotICAgICwgbV9uZXh0UmVnaXN0ZXJl
ZERhdGFiYXNlKDApCisgICAgLCBtX25leHRSZWdpc3RlcmVkRGF0YWJhc2UobnVsbHB0cikKIHsK
IH0KIApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTVmFsdWUgRGF0YWJhc2U6OnRvSlMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgCi0gICAgSlNBcnJheSogYnl0ZWNvZGVzID0gY29uc3RydWN0
RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIDApOworICAgIEpTQXJyYXkqIGJ5dGVjb2RlcyA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2J5
dGVjb2Rlcy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvIHZhbHVlID0gbV9ieXRlY29kZXNb
aV0udG9KUyhnbG9iYWxPYmplY3QpOwpAQCAtMTEyLDcgKzExMiw3IEBAIEpTVmFsdWUgRGF0YWJh
c2U6OnRvSlMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICB9CiAgICAg
cmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmJ5dGVjb2RlcywgYnl0ZWNv
ZGVzKTsKICAgICAKLSAgICBKU0FycmF5KiBjb21waWxhdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KGdsb2JhbE9iamVjdCwgMCk7CisgICAgSlNBcnJheSogY29tcGlsYXRpb25zID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fY29tcGls
YXRpb25zLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBtX2NvbXBpbGF0aW9u
c1tpXS0+dG9KUyhnbG9iYWxPYmplY3QpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIEpTVmFsdWUgRGF0
YWJhc2U6OnRvSlMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICB9CiAg
ICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbXBpbGF0aW9ucywg
Y29tcGlsYXRpb25zKTsKICAgICAKLSAgICBKU0FycmF5KiBldmVudHMgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KGdsb2JhbE9iamVjdCwgMCk7CisgICAgSlNBcnJheSogZXZlbnRzID0gY29uc3RydWN0
RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZXZlbnRzLnNp
emUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUgPSBtX2V2ZW50c1tpXS50b0pTKGdsb2Jh
bE9iamVjdCk7CkBAIC0xOTksNyArMTk5LDcgQEAgdm9pZCBEYXRhYmFzZTo6cmVtb3ZlRGF0YWJh
c2VGcm9tQXRFeGl0KCkKICAgICAgICAgaWYgKCpjdXJyZW50ICE9IHRoaXMpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgKmN1cnJlbnQgPSBtX25leHRSZWdpc3RlcmVkRGF0YWJhc2U7
Ci0gICAgICAgIG1fbmV4dFJlZ2lzdGVyZWREYXRhYmFzZSA9IDA7CisgICAgICAgIG1fbmV4dFJl
Z2lzdGVyZWREYXRhYmFzZSA9IG51bGxwdHI7CiAgICAgICAgIG1fc2hvdWxkU2F2ZUF0RXhpdCA9
IGZhbHNlOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0yMTcsNyArMjE3LDcgQEAgRGF0YWJh
c2UqIERhdGFiYXNlOjpyZW1vdmVGaXJzdEF0RXhpdERhdGFiYXNlKCkKICAgICBEYXRhYmFzZSog
cmVzdWx0ID0gZmlyc3REYXRhYmFzZTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGZpcnN0
RGF0YWJhc2UgPSByZXN1bHQtPm1fbmV4dFJlZ2lzdGVyZWREYXRhYmFzZTsKLSAgICAgICAgcmVz
dWx0LT5tX25leHRSZWdpc3RlcmVkRGF0YWJhc2UgPSAwOworICAgICAgICByZXN1bHQtPm1fbmV4
dFJlZ2lzdGVyZWREYXRhYmFzZSA9IG51bGxwdHI7CiAgICAgICAgIHJlc3VsdC0+bV9zaG91bGRT
YXZlQXRFeGl0ID0gZmFsc2U7CiAgICAgfQogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPU1JFeGl0U2l0ZS5jcHAK
aW5kZXggOTI3YzllMjBhZTlhM2I1YTYwOWUzN2NhZWY3YmRhMTQ1NThlYjkyOC4uNTgyNzA1Y2Uw
NDA4OGMyZmE1MGQzYWJkNmZkYzc5OTIzOGIyMzIyNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9TUkV4aXRTaXRlLmNwcApAQCAtMzgsNyAr
MzgsNyBAQCBKU1ZhbHVlIE9TUkV4aXRTaXRlOjp0b0pTKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICBKU0FycmF5KiByZXN1bHQg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgMCk7CisgICAgSlNBcnJheSogcmVz
dWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fY29kZUFkZHJlc3Nlcy5zaXplKCk7ICsraSkgewogICAgICAgICByZXN1bHQtPnB1dERp
cmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaSwganNTdHJpbmcodm0sIHRvU3RyaW5nKFJhd1BvaW50
ZXIobV9jb2RlQWRkcmVzc2VzW2ldLmRhdGFMb2NhdGlvbigpKSkpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9yaWdpblN0YWNrLmNwcAppbmRl
eCAyMjIwOTg4OTk4OWRhZWI0MDM2NDEyMzQ4ZGRmMjhjOGQ2NzdmODVhLi43NmUxMmMxZmFkODgz
NWNiMjA2MjU0OWQ5MGFhZTY4ZTcyYTc4NWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcHJvZmlsZXIvUHJvZmlsZXJPcmlnaW5TdGFjay5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2luU3RhY2suY3BwCkBAIC0xMDIsNyArMTAy
LDcgQEAgSlNWYWx1ZSBPcmlnaW5TdGFjazo6dG9KUyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAgSlNBcnJheSogcmVzdWx0ID0g
Y29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIDApOworICAgIEpTQXJyYXkqIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIAogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3N0YWNrLnNpemUoKTsgKytpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcmdMaXN0LmgKaW5kZXggZWE0YTk4NTE4YmVhOTMzOWExOWU5YTU0NDQ5NzE2ZGZkYTY4NGEx
Ni4uOGM2MGZiZWEyNDllNzNjNzNlNThjNjZlMTNjZjM4OTZiY2RiODQzYSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FyZ0xpc3QuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIDogbV9zaXplKDApCiAgICAgICAgICwgbV9jYXBhY2l0eShpbmxpbmVDYXBhY2l0eSkK
ICAgICAgICAgLCBtX2J1ZmZlcihtX2lubGluZUJ1ZmZlcikKLSAgICAgICAgLCBtX21hcmtTZXQo
MCkKKyAgICAgICAgLCBtX21hcmtTZXQobnVsbHB0cikKICAgICB7CiAgICAgfQogCkBAIC0xNjIs
NyArMTYyLDcgQEAgcHJpdmF0ZToKICAgICBFbmNvZGVkSlNWYWx1ZSogbWFsbG9jQmFzZSgpCiAg
ICAgewogICAgICAgICBpZiAobV9idWZmZXIgPT0gbV9pbmxpbmVCdWZmZXIpCi0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
JnNsb3RGb3IoMCk7CiAgICAgfQogCkBAIC0xODgsNyArMTg4LDcgQEAgY2xhc3MgQXJnTGlzdCB7
CiAgICAgZnJpZW5kIGNsYXNzIEpJVDsKIHB1YmxpYzoKICAgICBBcmdMaXN0KCkKLSAgICAgICAg
OiBtX2FyZ3MoMCkKKyAgICAgICAgOiBtX2FyZ3MobnVsbHB0cikKICAgICAgICAgLCBtX2FyZ0Nv
dW50KDApCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcAppbmRleCBlMWQ1MGI0NzdhZWEzZTI5NjNkMTA2MzA3MGY5Y2Jm
MzgzOWUwZjhmLi41MDIxYjkwNzdkMmM2NGIzZTM0YmJhMjVjNDlkM2ExYTA2NzNlNWJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCkBA
IC03Niw3ICs3Niw3IEBAIEFycmF5UHJvdG90eXBlKiBBcnJheVByb3RvdHlwZTo6Y3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyCiAKIC8vIEVDTUEgMTUuNC40
CiBBcnJheVByb3RvdHlwZTo6QXJyYXlQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSkKLSAgICA6IEpTQXJyYXkodm0sIHN0cnVjdHVyZSwgMCkKKyAgICA6IEpTQXJyYXkodm0s
IHN0cnVjdHVyZSwgbnVsbHB0cikKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKaW5kZXggODk2ZWQ4MTE3M2ZiYjc3Nzg2MWIz
Yjk1NjExOWY0YWRhMmExZTVjYy4uNDM2MTc0ZjcyZGU1ZmJkNzVlNGE1YTAyODBiZjA0ZWQ0NmYx
YjE0NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJn
dW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1
bWVudHMuY3BwCkBAIC00Niw3ICs0Niw3IEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1l
bnRzOjpjcmVhdGVFbXB0eSgKIHsKICAgICB1bnNpZ25lZCB2ZWN0b3JMZW5ndGggPSBsZW5ndGg7
CiAgICAgaWYgKHZlY3Rvckxlbmd0aCA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgpCi0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIEJ1dHRlcmZseSog
YnV0dGVyZmx5OwogICAgIGlmIChVTkxJS0VMWShzdHJ1Y3R1cmUtPm1heUludGVyY2VwdEluZGV4
ZWRBY2Nlc3NlcygpIHx8IHN0cnVjdHVyZS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCktPm5lZWRz
U2xvd1B1dEluZGV4aW5nKHZtKSkpIHsKQEAgLTU2LDkgKzU2LDkgQEAgQ2xvbmVkQXJndW1lbnRz
KiBDbG9uZWRBcmd1bWVudHM6OmNyZWF0ZUVtcHR5KAogICAgICAgICBJbmRleGluZ0hlYWRlciBp
bmRleGluZ0hlYWRlcjsKICAgICAgICAgaW5kZXhpbmdIZWFkZXIuc2V0VmVjdG9yTGVuZ3RoKHZl
Y3Rvckxlbmd0aCk7CiAgICAgICAgIGluZGV4aW5nSGVhZGVyLnNldFB1YmxpY0xlbmd0aChsZW5n
dGgpOwotICAgICAgICBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2bSwgMCwgMCwg
c3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBpbmRleGluZ0hlYWRlciwgdmVj
dG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CisgICAgICAgIGJ1dHRlcmZseSA9
IEJ1dHRlcmZseTo6dHJ5Q3JlYXRlKHZtLCBudWxscHRyLCAwLCBzdHJ1Y3R1cmUtPm91dE9mTGlu
ZUNhcGFjaXR5KCksIHRydWUsIGluZGV4aW5nSGVhZGVyLCB2ZWN0b3JMZW5ndGggKiBzaXplb2Yo
RW5jb2RlZEpTVmFsdWUpKTsKICAgICAgICAgaWYgKCFidXR0ZXJmbHkpCi0gICAgICAgICAgICBy
ZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IGxlbmd0aDsgaSA8IHZlY3Rvckxlbmd0aDsgKytpKQogICAgICAgICAgICAgYnV0
dGVyZmx5LT5jb250aWd1b3VzKCkuYXRVbnNhZmUoaSkuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IGI3YjgwMjBh
MjAwNGRiYjI2YWQ3ZjA1NzliN2Q3YTI5YjEzMDdkMTcuLjRhOTlhNzE2ODg5NDI5OWU2Mjc0NjNh
ODJjNGQ3Y2NmYWQzMWZmN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMTgzLDcgKzE4Myw3IEBAIFNMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9jYWxsX2FyaXR5Q2hlY2spCiAgICAgICAgIHRocm93QXJpdHlDaGVja1N0YWNr
T3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwogICAgICAgICBSRVRVUk5f
VFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PigxKSksIGNhbGxG
cmFtZSk7CiAgICAgfQotICAgIFJFVFVSTl9UV08oMCwgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0
aWNfY2FzdDx1aW50cHRyX3Q+KHNsb3RzVG9BZGQpKSk7CisgICAgUkVUVVJOX1RXTyhudWxscHRy
LCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oc2xvdHNUb0FkZCkp
KTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NvbnN0cnVjdF9hcml0eUNoZWNrKQpA
QCAtMTk4LDcgKzE5OCw3IEBAIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9jb25zdHJ1Y3RfYXJp
dHlDaGVjaykKICAgICAgICAgdGhyb3dBcml0eUNoZWNrU3RhY2tPdmVyZmxvd0Vycm9yKGdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSk7CiAgICAgICAgIFJFVFVSTl9UV08oYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpKSwgY2FsbEZyYW1lKTsKICAgICB9Ci0gICAg
UkVUVVJOX1RXTygwLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
c2xvdHNUb0FkZCkpKTsKKyAgICBSRVRVUk5fVFdPKG51bGxwdHIsIGJpdHdpc2VfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihzbG90c1RvQWRkKSkpOwogfQogCiBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY3JlYXRlX2RpcmVjdF9hcmd1bWVudHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21wbGV0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21wbGV0aW9uLmgKaW5kZXggNzVmNTIxZGE4OWYyNjgwMTExMzY0Nzgw
OGMyOTJiMzFkMWI5MWFmOS4uNTY5OGE4NTc5N2Q4YzE5YzhhY2I3MDgxNmEzZGExM2VjMDU5ZGM0
ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaApAQCAtNDEs
NyArNDEsNyBAQCBjbGFzcyBWTTsKIGNsYXNzIEpTSW50ZXJuYWxQcm9taXNlOwogCiBKU19FWFBP
UlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KFZNJiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNl
ckVycm9yJik7Ci1KU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrU3ludGF4KEpTR2xvYmFsT2Jq
ZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIEpTVmFsdWUqIGV4Y2VwdGlvbiA9IDApOworSlNfRVhQ
T1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJj
ZUNvZGUmLCBKU1ZhbHVlKiBleGNlcHRpb24gPSBudWxscHRyKTsKIEpTX0VYUE9SVF9QUklWQVRF
IGJvb2wgY2hlY2tNb2R1bGVTeW50YXgoSlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2Rl
JiwgUGFyc2VyRXJyb3ImKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgUmVmUHRyPENhY2hlZEJ5dGVj
b2RlPiBnZW5lcmF0ZVByb2dyYW1CeXRlY29kZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQsIEJ5dGVjb2RlQ2FjaGVFcnJvciYpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKaW5kZXggNGQxNmE1YjU2YjFjMzlk
ZjQ1MGEyZTBhNjFiNWI0NGE0ZWJiOGMzYi4uYmQyOGU3MWRjNDZlMjk5MDQ1YmIxMTdjY2JiN2Ux
NzQ0ZDMwODkyMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0
YVZpZXcuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRhVmlldy5oCkBA
IC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBKU0FycmF5QnVmZmVyVmlldyogd3JhcChKU0ds
b2JhbE9iamVjdCosIEpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGU7CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBUIGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5k
aWFuLCBib29sKiBzdGF0dXMgPSAwKQorICAgIFQgZ2V0KHVuc2lnbmVkIG9mZnNldCwgYm9vbCBs
aXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAo
c3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0
aCgpKSB7CkBAIC02Miw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgVD4KLSAgICBUIHJlYWQodW5zaWduZWQmIG9mZnNldCwgYm9vbCBsaXR0bGVF
bmRpYW4sIGJvb2wqIHN0YXR1cyA9IDApCisgICAgVCByZWFkKHVuc2lnbmVkJiBvZmZzZXQsIGJv
b2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAg
VCByZXN1bHQgPSB0aGlzLT50ZW1wbGF0ZSBnZXQ8VD4ob2Zmc2V0LCBsaXR0bGVFbmRpYW4sIHN0
YXR1cyk7CiAgICAgICAgIGlmICghc3RhdHVzIHx8ICpzdGF0dXMpCkBAIC03MSw3ICs3MSw3IEBA
IHB1YmxpYzoKICAgICB9CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICB2b2lk
IHNldCh1bnNpZ25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBz
dGF0dXMgPSAwKQorICAgIHZvaWQgc2V0KHVuc2lnbmVkIG9mZnNldCwgVCB2YWx1ZSwgYm9vbCBs
aXR0bGVFbmRpYW4sIGJvb2wqIHN0YXR1cyA9IG51bGxwdHIpCiAgICAgewogICAgICAgICBpZiAo
c3RhdHVzKSB7CiAgICAgICAgICAgICBpZiAob2Zmc2V0ICsgc2l6ZW9mKFQpID4gYnl0ZUxlbmd0
aCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUu
Y3BwCmluZGV4IDcwOTAzYzU0YjJiMGIwMGZlYmY3MzZhNWI1ODAyMTA4YWFhMzYzN2UuLjU5N2Uy
OTk4Y2Q0MGEyYjFiMzQ0N2I0Y2QwZGViMTllZGM3NTI3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwCkBAIC0xODMsMTMgKzE4MywxMyBA
QCBzdGF0aWMgSlNDZWxsKiBmb3JtYXRMb2NhbGVEYXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSosIERhdGVJbgogICAgIFVEYXRlRm9ybWF0U3R5bGUgZGF0ZVN0eWxl
ID0gKGZvcm1hdCAhPSBMb2NhbGVUaW1lID8gVURBVF9MT05HIDogVURBVF9OT05FKTsKIAogICAg
IFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwotICAgIFVEYXRlRm9ybWF0KiBkZiA9
IHVkYXRfb3Blbih0aW1lU3R5bGUsIGRhdGVTdHlsZSwgMCwgMCwgLTEsIDAsIDAsICZzdGF0dXMp
OworICAgIFVEYXRlRm9ybWF0KiBkZiA9IHVkYXRfb3Blbih0aW1lU3R5bGUsIGRhdGVTdHlsZSwg
bnVsbHB0ciwgbnVsbHB0ciwgLTEsIG51bGxwdHIsIDAsICZzdGF0dXMpOwogICAgIGlmICghZGYp
CiAgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKHZtKTsKIAogICAgIFVDaGFyIGJ1ZmZlclsx
MjhdOwogICAgIGludDMyX3QgbGVuZ3RoOwotICAgIGxlbmd0aCA9IHVkYXRfZm9ybWF0KGRmLCB0
aW1lSW5NaWxsaXNlY29uZHMsIGJ1ZmZlciwgMTI4LCAwLCAmc3RhdHVzKTsKKyAgICBsZW5ndGgg
PSB1ZGF0X2Zvcm1hdChkZiwgdGltZUluTWlsbGlzZWNvbmRzLCBidWZmZXIsIDEyOCwgbnVsbHB0
ciwgJnN0YXR1cyk7CiAgICAgdWRhdF9jbG9zZShkZik7CiAgICAgaWYgKHN0YXR1cyAhPSBVX1pF
Uk9fRVJST1IpCiAgICAgICAgIHJldHVybiBqc0VtcHR5U3RyaW5nKHZtKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcApp
bmRleCA3YzE5Yjc1YzYyYzgwNDEzNjJkZDllYjEyZWRhNTk3OTI1MTE1ZGY1Li4wZjNjMGM5Njcx
MjcyNjEyZDQzMGI0YzE2NzE1YjI4MzU1N2M1MDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC00Miw3ICs0
Miw3IEBAIERpcmVjdEV2YWxFeGVjdXRhYmxlKiBEaXJlY3RFdmFsRXhlY3V0YWJsZTo6Y3JlYXRl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+
ZXZhbEVuYWJsZWQoKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFdmFsRXJyb3IoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmV2YWxEaXNh
YmxlZEVycm9yTWVzc2FnZSgpKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBh
bGxvY2F0ZUNlbGw8RGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZtLmhlYXApKSBEaXJlY3RFdmFsRXhl
Y3V0YWJsZShnbG9iYWxPYmplY3QsIHNvdXJjZSwgZWNtYU1vZGUuaXNTdHJpY3QoKSwgZGVyaXZl
ZENvbnRleHRUeXBlLCBuZWVkc0NsYXNzRmllbGRJbml0aWFsaXplciwgaXNBcnJvd0Z1bmN0aW9u
Q29udGV4dCwgaXNJbnNpZGVPcmRpbmFyeUZ1bmN0aW9uLCBldmFsQ29udGV4dFR5cGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRHVtcENvbnRleHQuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRHVtcENvbnRleHQuY3BwCmluZGV4IGYwN2My
YjI1ZDU4YzRmNDdkZWVhNjhiNzY1NWFiY2FmOWU0ZjkwNjQuLjYxNTlmNDhmZTI5MTJmNjE0Mjc5
NDdhNDY2MjkwM2VmYTRkOWUxMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0R1bXBDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EdW1wQ29udGV4dC5jcHAKQEAgLTI5LDcgKzI5LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBE
dW1wQ29udGV4dDo6RHVtcENvbnRleHQoKQotICAgIDogZ3JhcGgoMCkKKyAgICA6IGdyYXBoKG51
bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9G
dW5jdGlvbkV4ZWN1dGFibGUuY3BwCmluZGV4IDZhMDNhNWZmNDkxYjFhODcwNmU0OGI0MjM0MzVj
ODUzN2YzN2E3YTMuLjViOWYyNjU1ODU2MGY0NGQ5ZGI3YzQzMGUyYzIyNDFjZDMyMmU4ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcApAQCAtNzEsNyArNzEsNyBAQCBGdW5jdGlvbkNvZGVCbG9jayogRnVuY3Rpb25FeGVj
dXRhYmxlOjpiYXNlbGluZUNvZGVCbG9ja0ZvcihDb2RlU3BlY2lhbGl6YXRpb25LaQogICAgICAg
ICBlZGdlID0gbV9jb2RlQmxvY2tGb3JDb25zdHJ1Y3QuZ2V0KCk7CiAgICAgfQogICAgIGlmICgh
ZWRnZSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxGdW5jdGlvbkNvZGVCbG9jayo+KGVkZ2UtPmNvZGVCbG9jaygpLT5i
YXNlbGluZUFsdGVybmF0aXZlKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCmluZGV4IDE0ZjdmYWI1
YzNkNGVhYTg3OTQyYmNmMzMyYTQ1ZjFjNTA2ZGFlN2YuLmMwNjBlNzI4MGExOThiYTU3NTdhYTA0
MzY2NTYwYTAwM2U0MGU2NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwCkBAIC00Miw3ICs0Miw3IEBAIElu
ZGlyZWN0RXZhbEV4ZWN1dGFibGUqIEluZGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBpZiAoIWdsb2JhbE9iamVjdC0+ZXZhbEVuYWJs
ZWQoKSkgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVFdmFsRXJyb3IoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmV2YWxEaXNhYmxlZEVycm9y
TWVzc2FnZSgpKSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKICAgICBhdXRvKiBleGVjdXRhYmxlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8SW5kaXJlY3RFdmFsRXhlY3V0YWJsZT4odm0uaGVhcCkpIEluZGlyZWN0RXZhbEV4ZWN1dGFi
bGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2UsIGRlcml2ZWRDb250ZXh0VHlwZSwgaXNBcnJvd0Z1bmN0
aW9uQ29udGV4dCwgZXZhbENvbnRleHRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNBcnJheS5jcHAKaW5kZXggYmNlMzY1NWEzMTkyZWEyOTBmZTdmMDQwODI0YTM4ODZmNmIw
NDgzNC4uYTg5NmRlMzllYWE2ZTE0ZmM4NDFlOTc2Y2I3MGZiOTVmNzAwN2Q4NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAgLTExNzcsNyArMTE3Nyw3IEBA
IHZvaWQgSlNBcnJheTo6ZmlsbEFyZ0xpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
TWFya2VkQXJndW1lbnRCdWZmZXImIGFyCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
Y2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6IHsKLSAgICAgICAgdmVjdG9yID0gMDsKKyAgICAgICAg
dmVjdG9yID0gbnVsbHB0cjsKICAgICAgICAgdmVjdG9yRW5kID0gMDsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMTE5MCw3ICsxMTkwLDcgQEAgdm9pZCBKU0FycmF5OjpmaWxsQXJnTGlzdChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXIKICAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOiB7Ci0gICAgICAgIHZlY3Rv
ciA9IDA7CisgICAgICAgIHZlY3RvciA9IG51bGxwdHI7CiAgICAgICAgIHZlY3RvckVuZCA9IDA7
CiAgICAgICAgIGZvciAoOyBpIDwgYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsgKytpKSB7CiAg
ICAgICAgICAgICBkb3VibGUgdiA9IGJ1dHRlcmZseS0+Y29udGlndW91c0RvdWJsZSgpLmF0KHRo
aXMsIGkpOwpAQCAtMTI0OSw3ICsxMjQ5LDcgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVu
dHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSogZmlyc3RFbGVtZW4KICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIEFycmF5V2l0aFVuZGVjaWRlZDogewot
ICAgICAgICB2ZWN0b3IgPSAwOworICAgICAgICB2ZWN0b3IgPSBudWxscHRyOwogICAgICAgICB2
ZWN0b3JFbmQgPSAwOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMjYyLDcgKzEyNjIsNyBA
QCB2b2lkIEpTQXJyYXk6OmNvcHlUb0FyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlKiBmaXJzdEVsZW1lbgogICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBBcnJh
eVdpdGhEb3VibGU6IHsKLSAgICAgICAgdmVjdG9yID0gMDsKKyAgICAgICAgdmVjdG9yID0gbnVs
bHB0cjsKICAgICAgICAgdmVjdG9yRW5kID0gMDsKICAgICAgICAgZm9yICg7IGkgPCBidXR0ZXJm
bHktPnB1YmxpY0xlbmd0aCgpOyArK2kpIHsKICAgICAgICAgICAgIEFTU0VSVChpIDwgYnV0dGVy
Zmx5LT52ZWN0b3JMZW5ndGgoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggYmIwOWM4ZGE3NDFkYzViZDc5ZTI3YTEx
NDQyZGE1ZGM3MzJkMGU2ZC4uZjY5MjQ3OWNlZTkzM2JhNWJlZjVkZTk0NDUzOTkyMTFiNDk3YWY2
OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZm
ZXJWaWV3LmNwcApAQCAtNTcsOSArNTcsOSBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0
aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25z
dHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUsIHVpbnQzMl90IGxlbmd0aCwgdWludDMyX3QgZWxlbWVudFNpemUsCiAg
ICAgSW5pdGlhbGl6YXRpb25Nb2RlIG1vZGUpCi0gICAgOiBtX3N0cnVjdHVyZSgwKQorICAgIDog
bV9zdHJ1Y3R1cmUobnVsbHB0cikKICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKLSAgICAsIG1fYnV0
dGVyZmx5KDApCisgICAgLCBtX2J1dHRlcmZseShudWxscHRyKQogewogICAgIGlmIChsZW5ndGgg
PD0gZmFzdFNpemVMaW1pdCkgewogICAgICAgICAvLyBBdHRlbXB0IEdDIGFsbG9jYXRpb24uCkBA
IC0xMTAsNyArMTEwLDcgQEAgSlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6
OkNvbnN0cnVjdGlvbkNvbnRleHQoCiAgICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihhcnJheUJ1ZmZlci0+ZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGxlbmd0aCk7
CiAgICAgSW5kZXhpbmdIZWFkZXIgaW5kZXhpbmdIZWFkZXI7CiAgICAgaW5kZXhpbmdIZWFkZXIu
c2V0QXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIuZ2V0KCkpOwotICAgIG1fYnV0dGVyZmx5ID0gQnV0
dGVyZmx5OjpjcmVhdGUodm0sIDAsIDAsIDAsIHRydWUsIGluZGV4aW5nSGVhZGVyLCAwKTsKKyAg
ICBtX2J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKHZtLCBudWxscHRyLCAwLCAwLCB0cnVl
LCBpbmRleGluZ0hlYWRlciwgMCk7CiB9CiAKIEpTQXJyYXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rp
b25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KApAQCAtMTE5LDcgKzExOSw3IEBAIEpTQXJy
YXlCdWZmZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAog
ICAgIDogbV9zdHJ1Y3R1cmUoc3RydWN0dXJlKQogICAgICwgbV9sZW5ndGgobGVuZ3RoKQogICAg
ICwgbV9tb2RlKERhdGFWaWV3TW9kZSkKLSAgICAsIG1fYnV0dGVyZmx5KDApCisgICAgLCBtX2J1
dHRlcmZseShudWxscHRyKQogewogICAgIEFTU0VSVChhcnJheUJ1ZmZlci0+ZGF0YSgpID09IHJl
bW92ZUFycmF5UHRyVGFnKGFycmF5QnVmZmVyLT5kYXRhKCkpKTsKICAgICBtX3ZlY3RvciA9IFZl
Y3RvclR5cGUoc3RhdGljX2Nhc3Q8dWludDhfdCo+KGFycmF5QnVmZmVyLT5kYXRhKCkpICsgYnl0
ZU9mZnNldCwgbGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNW
YWx1ZS5jcHAKaW5kZXggZTg5YTIyY2YwNmM4NGIwOWE2YWNjOTAxMDUwNDI1ODM5NjIzZmQ4ZC4u
ZWE2ZjQ2YjQ1ODc5OWQzMWYxMDdhZGNhM2FkYzIzZjIzM2ViMGNkZSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTI1OCw3ICsyNTgsNyBAQCBi
b29sIEpTVmFsdWU6OnB1dFRvUHJpbWl0aXZlQnlJbmRleChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCB1bnNpZ25lZCBwcm9wZQogCiB2b2lkIEpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0m
IG91dCkgY29uc3QKIHsKLSAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgZHVtcEluQ29u
dGV4dChvdXQsIG51bGxwdHIpOwogfQogCiB2b2lkIEpTVmFsdWU6OmR1bXBJbkNvbnRleHQoUHJp
bnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAppbmRleCBhMGViMDEz
MDVjMjMyMzc1MzgyYWEwYWM5YjQ3ZTQ4YTlmMWY1MGE0Li5kZGMxZjI0NzUxOGI0ZDNkZWZmZjY3
YjBiNjgxMTA0ZjY0NmU1MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTcwMCw3ICs3MDAsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQmFzZT4gU3RyaW5nIEhhbmRsZUNvbnZlcnRlcjxCYXNlLCBVbmtub3duPjo6Z2V0U3Ry
aW5nKEpTR2xvYgogCiBpbmxpbmUgSlNPYmplY3QqIEpTVmFsdWU6OmdldE9iamVjdCgpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCktPmdldE9iamVjdCgpIDogMDsKKyAg
ICByZXR1cm4gaXNDZWxsKCkgPyBhc0NlbGwoKS0+Z2V0T2JqZWN0KCkgOiBudWxscHRyOwogfQog
CiBBTFdBWVNfSU5MSU5FIGJvb2wgSlNWYWx1ZTo6Z2V0VUludDMyKHVpbnQzMl90JiB2KSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKaW5kZXggN2QzYTJkNWQ3
Mzk2YTEwNjk1MzE5NGI3ZmY3NjJiNDZlN2Q1ZTg1Yi4uZTZiMmZiNmYxZjZmMTU2ODdmZTQwNmQz
MzYwMzA4MjQxNTMxZmEyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNDZWxsLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwu
Y3BwCkBAIC04NywxMiArODcsMTIgQEAgU3RyaW5nIEpTQ2VsbDo6Z2V0U3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAKIEpTT2JqZWN0KiBKU0NlbGw6OmdldE9iamVj
dCgpCiB7Ci0gICAgcmV0dXJuIGlzT2JqZWN0KCkgPyBhc09iamVjdCh0aGlzKSA6IDA7CisgICAg
cmV0dXJuIGlzT2JqZWN0KCkgPyBhc09iamVjdCh0aGlzKSA6IG51bGxwdHI7CiB9CiAKIGNvbnN0
IEpTT2JqZWN0KiBKU0NlbGw6OmdldE9iamVjdCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGlzT2Jq
ZWN0KCkgPyBzdGF0aWNfY2FzdDxjb25zdCBKU09iamVjdCo+KHRoaXMpIDogMDsKKyAgICByZXR1
cm4gaXNPYmplY3QoKSA/IHN0YXRpY19jYXN0PGNvbnN0IEpTT2JqZWN0Kj4odGhpcykgOiBudWxs
cHRyOwogfQogCiBDYWxsRGF0YSBKU0NlbGw6OmdldENhbGxEYXRhKEpTQ2VsbCopCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IDFiMjU1MjNjOThm
YmIwOWUzN2Y4YTQ3NDMxOWJmNzZjMzJkOGE4YjguLjNhNjZmMjVlMzg2NDRkZGYzYTNkYTU1NzMx
Mjk2MjIwNjMyZTYxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXcuY3BwCkBAIC03MSwxMyArNzEsMTMgQEAgSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3Jl
YXRlKAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlVW5pbml0aWFsaXplZChKU0dsb2Jh
bE9iamVjdCosIFN0cnVjdHVyZSosIHVuc2lnbmVkKQogewogICAgIFVOUkVBQ0hBQkxFX0ZPUl9Q
TEFURk9STSgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBKU0Rh
dGFWaWV3KiBKU0RhdGFWaWV3OjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1
bnNpZ25lZCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICByZXR1cm4g
MDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogYm9vbCBKU0RhdGFWaWV3OjpzZXQoSlNHbG9i
YWxPYmplY3QqLCB1bnNpZ25lZCwgSlNPYmplY3QqLCB1bnNpZ25lZCwgdW5zaWduZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3Qu
aAppbmRleCBlNDViNTJhZWY2ZDc1MWYwM2Y4YjhhMjRlYjMwNmE5MjIwODAzYzZlLi4wYzgwMmMz
YjExYTAxNTQwMjM3ZWM1ZWNkZmIxZWI2YmE2ZGFhMTg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3RydWN0aWJsZU9iamVjdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKQEAgLTQwLDcgKzQw
LDcgQEAgcHVibGljOgogICAgIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QgeyBy
ZXR1cm4gbV9jbGFzc0luZm87IH0KIAogcHJvdGVjdGVkOgotICAgIEpTRGVzdHJ1Y3RpYmxlT2Jq
ZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0g
MCkKKyAgICBKU0Rlc3RydWN0aWJsZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG51bGxwdHIpCiAgICAgICAgIDogSlNOb25GaW5hbE9i
amVjdCh2bSwgc3RydWN0dXJlLCBidXR0ZXJmbHkpCiAgICAgICAgICwgbV9jbGFzc0luZm8oc3Ry
dWN0dXJlLT5jbGFzc0luZm8oKSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRnVuY3Rpb24uY3BwCmluZGV4IDllMzQ5MWY5ZDdhMTM5MzU2ZDk3ZjQwYmE0YzVmOGQz
YTFhYTUzYjMuLjFjNmVmMGQwNmM5ZmI5NmEwZjFmYzM0MDU1NGYzNWMzOWM1MzIwZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC0yNjEsNyAr
MjYxLDcgQEAgY29uc3QgU3RyaW5nIEpTRnVuY3Rpb246OmNhbGN1bGF0ZWREaXNwbGF5TmFtZShW
TSYgdm0pCiBjb25zdCBTb3VyY2VDb2RlKiBKU0Z1bmN0aW9uOjpzb3VyY2VDb2RlKCkgY29uc3QK
IHsKICAgICBpZiAoaXNIb3N0T3JCdWlsdGluRnVuY3Rpb24oKSkKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiAmanNFeGVjdXRhYmxlKCktPnNv
dXJjZSgpOwogfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IDY2NTFhMDJmNzJkMjM0YzkyYjc3MTg0OTIwN2Y0MzFmZDAw
MjdiMjMuLjZlNjg0OTQ5OWYwYjczNmRmN2U0ODhhYTFkOThmNGQ3ZDc4OGM5ZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTQy
OCw3ICs0MjgsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBlbnF1ZXVl
Sm9iKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogfQogCiBKU0dsb2JhbE9iamVj
dDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUqIGdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKQotICAgIDogQmFz
ZSh2bSwgc3RydWN0dXJlLCAwKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBudWxscHRyKQog
ICAgICwgbV92bSgmdm0pCiAgICAgLCBtX2xpbmtUaW1lQ29uc3RhbnRzKG51bWJlck9mTGlua1Rp
bWVDb25zdGFudHMpCiAgICAgLCBtX21hc3F1ZXJhZGVzQXNVbmRlZmluZWRXYXRjaHBvaW50KGFk
b3B0UmVmKG5ldyBXYXRjaHBvaW50U2V0KElzV2F0Y2hlZCkpKQpAQCAtNTIzLDcgKzUyMyw3IEBA
IHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogCiAgICAgQmFzZTo6c2V0U3RydWN0
dXJlKHZtLCBTdHJ1Y3R1cmU6OnRvQ2FjaGVhYmxlRGljdGlvbmFyeVRyYW5zaXRpb24odm0sIHN0
cnVjdHVyZSh2bSkpKTsKIAotICAgIG1fZGVidWdnZXIgPSAwOworICAgIG1fZGVidWdnZXIgPSBu
dWxscHRyOwogCiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgbV9pbnNwZWN0b3JD
b250cm9sbGVyID0gbWFrZVVuaXF1ZTxJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9y
Q29udHJvbGxlcj4oKnRoaXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKaW5kZXggNjZhM2NiZWU2Mzk1OGE0ZThlZWQwMzhiNTIyMTE5YWFlNjJi
YWYxMS4uZDIxMjE1ZGUxMjg4ZTNkMTdmMzgzMzFjNzFkMDI2MWM3ZWM3Mzg4YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC05ODEsNyAr
OTgxLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAgICBTdHJ1Y3R1cmUqIHJl
c3VsdCA9IFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCAwLCBwcm90b3R5cGUsIFR5cGVJbmZvKEdsb2Jh
bE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKKyAgICAgICAgU3RydWN0dXJl
KiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgbnVsbHB0ciwgcHJvdG90eXBlLCBUeXBl
SW5mbyhHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAg
IHJlc3VsdC0+c2V0VHJhbnNpdGlvbldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZCh0cnVlKTsK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDJkYzkzZWViYzg1NTg3NjJhNDZmZWM0MDZlMzk5
OGM5NDRlNmUzYTAuLmY2YTUzNDQyZTJhZDVmYWRlOWJkOTYyOTAzN2QwMjgwOGFhNTRmNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgaW5saW5lIFByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbDo6UHJvcGVydHlO
YW1lRm9yRnVuY3Rpb25DYWxsKGNvbnN0IElkZW50aWZpZXIKIH0KIAogaW5saW5lIFByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbDo6UHJvcGVydHlOYW1lRm9yRnVuY3Rpb25DYWxsKHVuc2lnbmVk
IG51bWJlcikKLSAgICA6IG1faWRlbnRpZmllcigwKQorICAgIDogbV9pZGVudGlmaWVyKG51bGxw
dHIpCiAgICAgLCBtX251bWJlcihudW1iZXIpCiB7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggM2I4MWU2YWM4ZWYzYWFlODBmODMzNTVhNDFlYWVk
NDEzZDExMDIyZC4uMDYyZTNiMjZmZTk0NWYzZDVmMTZiNjg1Y2I2YzEzOWFlNTVhZGQwYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcApAQCAtMTcwNCw3ICsx
NzA0LDcgQEAgQXJyYXlTdG9yYWdlKiBKU09iamVjdDo6ZW5zdXJlQXJyYXlTdG9yYWdlU2xvdyhW
TSYgdm0pCiAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiB9CiAKQEAgLTE3MzcsNyArMTczNyw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmplY3Q6
OmVuc3VyZUFycmF5U3RvcmFnZUV4aXN0c0FuZEVudGVyRGljdGlvbmFyeUluZGV4aW5nTW9kZShW
CiAgICAgICAgIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIENSQVNIKCk7Ci0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IDRjNmY5OTU1YmU5ZTIyZmUwM2M5MmI2YzQw
YzU3N2IxMjRlZDc3ZmMuLmVmMTc3ZTliNmNmYzcxY2MxNDY2ODIzNzFjZDU2YzEzODY1N2UzZGYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtOTk1LDcgKzk5
NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgICAgIHJldHVybiBtX2J1dHRlcmZseS0+YXJyYXlT
dG9yYWdlKCk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAg
fQogICAgICAgICAKQEAgLTExNTEsNyArMTE1MSw3IEBAIHB1YmxpYzoKICAgICB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBleHBsaWNpdCBKU05vbkZpbmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVyZmx5ID0gMCkKKyAgICBleHBsaWNpdCBKU05vbkZp
bmFsT2JqZWN0KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIEJ1dHRlcmZseSogYnV0dGVy
Zmx5ID0gbnVsbHB0cikKICAgICAgICAgOiBKU09iamVjdCh2bSwgc3RydWN0dXJlLCBidXR0ZXJm
bHkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTU2NvcGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5j
cHAKaW5kZXggYjNjMjcyMDIyODA2YjgxMTQzNTdkODFkZTlmM2I1ZmMxMDM1NGQ5YS4uN2M4NDc1
MWY2ZjM3ZjRlNGNlYzkxN2VlNzgyZGY3YjAyYmQ5YTAxOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNTY29wZS5jcHAKQEAgLTY3LDExICs2NywxMSBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29w
ZSogc2NvcGUsCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAg
ICAgICAgICAgICAgaWYgKGVudHJ5LmlzUmVhZE9ubHkoKSAmJiBnZXRPclB1dCA9PSBQdXQpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgcHJvcGVydHkgd2lsbCBiZSBhdCB0
aGlzIGxleGljYWwgZW52aXJvbm1lbnQgc2NvcGUsIGJ1dCB3ZSBkb24ndCBrbm93IGhvdyB0byBj
YWNoZSBpdC4KLSAgICAgICAgICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AoRHluYW1pYywgMCwg
MCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKER5bmFtaWMs
IDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBvcCA9IFJl
c29sdmVPcChtYWtlVHlwZShDbG9zdXJlVmFyLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIGRl
cHRoLCAwLCBsZXhpY2FsRW52aXJvbm1lbnQsIGVudHJ5LndhdGNocG9pbnRTZXQoKSwgZW50cnku
c2NvcGVPZmZzZXQoKS5vZmZzZXQoKSk7CisgICAgICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3Ao
bWFrZVR5cGUoQ2xvc3VyZVZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwgbnVs
bHB0ciwgbGV4aWNhbEVudmlyb25tZW50LCBlbnRyeS53YXRjaHBvaW50U2V0KCksIGVudHJ5LnNj
b3BlT2Zmc2V0KCkub2Zmc2V0KCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CkBAIC05MCw3ICs5MCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9v
bCBhYnN0cmFjdEFjY2VzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBz
Y29wZSwKICAgICAgICAgICAgICAgICBBU1NFUlQoaXRlciAhPSBzeW1ib2xUYWJsZS0+ZW5kKGxv
Y2tlcikpOwogICAgICAgICAgICAgICAgIFN5bWJvbFRhYmxlRW50cnkmIGVudHJ5ID0gaXRlci0+
dmFsdWU7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7Ci0gICAgICAg
ICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFrZVR5cGUoTW9kdWxlVmFyLCBuZWVkc1ZhckluamVj
dGlvbkNoZWNrcyksIGRlcHRoLCAwLCBpbXBvcnRlZEVudmlyb25tZW50LCBlbnRyeS53YXRjaHBv
aW50U2V0KCksIGVudHJ5LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCksIHJlc29sdXRpb24ubG9jYWxO
YW1lLmltcGwoKSk7CisgICAgICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFrZVR5cGUoTW9k
dWxlVmFyLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRoLCBudWxscHRyLCBpbXBvcnRl
ZEVudmlyb25tZW50LCBlbnRyeS53YXRjaHBvaW50U2V0KCksIGVudHJ5LnNjb3BlT2Zmc2V0KCku
b2Zmc2V0KCksIHJlc29sdXRpb24ubG9jYWxOYW1lLmltcGwoKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTExMCw3ICsxMTAsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTY29wZSogc2NvcGUsCiAgICAgICAgICAgICBBU1NFUlQoIWVudHJ5LmlzTnVs
bCgpKTsKICAgICAgICAgICAgIGlmIChnZXRPclB1dCA9PSBQdXQgJiYgZW50cnkuaXNSZWFkT25s
eSgpICYmICFpc0luaXRpYWxpemF0aW9uKGluaXRpYWxpemF0aW9uTW9kZSkpIHsKICAgICAgICAg
ICAgICAgICAvLyBXZSBrbm93IHRoZSBwcm9wZXJ0eSB3aWxsIGJlIGF0IGdsb2JhbCBsZXhpY2Fs
IGVudmlyb25tZW50LCBidXQgd2UgZG9uJ3Qga25vdyBob3cgdG8gY2FjaGUgaXQuCi0gICAgICAg
ICAgICAgICAgb3AgPSBSZXNvbHZlT3AoRHluYW1pYywgMCwgMCwgMCwgMCwgMCk7CisgICAgICAg
ICAgICAgICAgb3AgPSBSZXNvbHZlT3AoRHluYW1pYywgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgMCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CiAK
QEAgLTEyNCw3ICsxMjQsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsCiAgICAgICAgICAgICAv
LyBXZSBzdGlsbCBuZWVkIHRvIG1ha2UgdGhlIHNsb3cgcGF0aCBjb3JyZWN0IGZvciB3aGVuIHdl
IG5lZWQgdG8gZmlyZSBhIHdhdGNocG9pbnQuCiAgICAgICAgICAgICBSZXNvbHZlVHlwZSByZXNv
bHZlVHlwZSA9IGluaXRpYWxpemF0aW9uTW9kZSA9PSBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0
SW5pdGlhbGl6YXRpb24gPyBHbG9iYWxMZXhpY2FsVmFyIDogbWFrZVR5cGUoR2xvYmFsTGV4aWNh
bFZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpOwogICAgICAgICAgICAgb3AgPSBSZXNvbHZl
T3AoCi0gICAgICAgICAgICAgICAgcmVzb2x2ZVR5cGUsIGRlcHRoLCAwLCAwLCBlbnRyeS53YXRj
aHBvaW50U2V0KCksCisgICAgICAgICAgICAgICAgcmVzb2x2ZVR5cGUsIGRlcHRoLCBudWxscHRy
LCBudWxscHRyLCBlbnRyeS53YXRjaHBvaW50U2V0KCksCiAgICAgICAgICAgICAgICAgcmVpbnRl
cnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbExleGljYWxFbnZpcm9ubWVudC0+dmFyaWFibGVB
dChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgICB9CkBAIC0xNDMsMTIgKzE0MywxMiBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWJz
dHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUs
CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKGdldE9yUHV0ID09IFB1dCAmJiBlbnRyeS5pc1JlYWRPbmx5KCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgcHJvcGVydHkgd2lsbCBiZSBhdCBnbG9iYWwgc2Nv
cGUsIGJ1dCB3ZSBkb24ndCBrbm93IGhvdyB0byBjYWNoZSBpdC4KLSAgICAgICAgICAgICAgICAg
ICAgb3AgPSBSZXNvbHZlT3AoRHluYW1pYywgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICAg
ICAgICAgIG9wID0gUmVzb2x2ZU9wKER5bmFtaWMsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIDApOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB9CiAKICAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcCgKLSAgICAgICAgICAgICAgICAg
ICAgbWFrZVR5cGUoR2xvYmFsVmFyLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRoLCAw
LCAwLCBlbnRyeS53YXRjaHBvaW50U2V0KCksCisgICAgICAgICAgICAgICAgICAgIG1ha2VUeXBl
KEdsb2JhbFZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwgbnVsbHB0ciwgbnVs
bHB0ciwgZW50cnkud2F0Y2hwb2ludFNldCgpLAogICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PHVpbnRwdHJfdD4oZ2xvYmFsT2JqZWN0LT52YXJpYWJsZUF0KGVudHJ5LnNjb3Bl
T2Zmc2V0KCkpLnNsb3QoKSkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgfQpAQCAtMTU3LDcgKzE1Nyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFj
Y2VzcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSwKICAgICAg
ICAgUHJvcGVydHlTbG90IHNsb3QoZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eVNsb3Q6OkludGVybmFs
TWV0aG9kVHlwZTo6Vk1JbnF1aXJ5KTsKICAgICAgICAgYm9vbCBoYXNPd25Qcm9wZXJ0eSA9IGds
b2JhbE9iamVjdC0+Z2V0T3duUHJvcGVydHlTbG90KGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LCBpZGVudCwgc2xvdCk7CiAgICAgICAgIGlmICghaGFzT3duUHJvcGVydHkpIHsKLSAgICAgICAg
ICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKFVucmVzb2x2ZWRQcm9wZXJ0eSwgbmVlZHNWYXJJ
bmplY3Rpb25DaGVja3MpLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIG9wID0gUmVzb2x2
ZU9wKG1ha2VUeXBlKFVucmVzb2x2ZWRQcm9wZXJ0eSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3Mp
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsKICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICB9CiAKQEAgLTE2Nyw3ICsxNjcsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wg
YWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2Nv
cGUsCiAgICAgICAgICAgICB8fCAoc3RydWN0dXJlLT5oYXNSZWFkT25seU9yR2V0dGVyU2V0dGVy
UHJvcGVydGllc0V4Y2x1ZGluZ1Byb3RvKCkgJiYgZ2V0T3JQdXQgPT0gUHV0KSkgewogICAgICAg
ICAgICAgLy8gV2Uga25vdyB0aGUgcHJvcGVydHkgd2lsbCBiZSBhdCBnbG9iYWwgc2NvcGUsIGJ1
dCB3ZSBkb24ndCBrbm93IGhvdyB0byBjYWNoZSBpdC4KICAgICAgICAgICAgIEFTU0VSVCghc2Nv
cGUtPm5leHQoKSk7Ci0gICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShHbG9iYWxQ
cm9wZXJ0eSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCAwLCAwLCAwLCAwLCAwKTsKKyAgICAg
ICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKEdsb2JhbFByb3BlcnR5LCBuZWVkc1Zhcklu
amVjdGlvbkNoZWNrcyksIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDApOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTgxLDEzICsxODEsMTMgQEAgc3Rh
dGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTU2NvcGUqIHNjb3BlLAogICAgICAgICAgICAgLy8gMikgSGF2ZSB0aGUgaW52YWxpZGF0
aW9uIGhhcHBlbiBhdCBydW4tdGltZS4gQWxsIHdlIGhhdmUgdG8gZG8gaXMgbGVhdmUgdGhlIGNv
ZGUKICAgICAgICAgICAgIC8vICAgIHVuY2FjaGVkLiBUaGUgb25seSBkb3duc2lkZSBpcyBzbGln
aHRseSBtb3JlIHdvcmsgd2hlbiB0aGlzIGRvZXMgZXhlY3V0ZS4KICAgICAgICAgICAgIC8vIFdl
IGdvIHdpdGggb3B0aW9uICgyKSBoZXJlIGJlY2F1c2UgaXQgc2VlbXMgbGVzcyBldmlsLgotICAg
ICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFrZVR5cGUoR2xvYmFsUHJvcGVydHksIG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgb3AgPSBS
ZXNvbHZlT3AobWFrZVR5cGUoR2xvYmFsUHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
KSwgZGVwdGgsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDApOwogICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKEdsb2JhbFByb3BlcnR5LCBuZWVk
c1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRoLCBzdHJ1Y3R1cmUsIDAsIDAsIHNsb3QuY2FjaGVk
T2Zmc2V0KCkpOworICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFrZVR5cGUoR2xvYmFsUHJv
cGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIHN0cnVjdHVyZSwgbnVsbHB0
ciwgbnVsbHB0ciwgc2xvdC5jYWNoZWRPZmZzZXQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIAotICAgIG9wID0gUmVzb2x2ZU9wKER5bmFtaWMsIDAsIDAsIDAsIDAsIDApOworICAg
IG9wID0gUmVzb2x2ZU9wKER5bmFtaWMsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDAp
OwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDUsNyArMzA1LDcgQEAgUmVzb2x2ZU9wIEpT
U2NvcGU6OmFic3RyYWN0UmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBzaXpl
X3QgZGVwdGhPZmYKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBSZXNvbHZlT3Agb3Ao
RHluYW1pYywgMCwgMCwgMCwgMCwgMCk7CisgICAgUmVzb2x2ZU9wIG9wKER5bmFtaWMsIDAsIG51
bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDApOwogICAgIGlmICh1bmxpbmtlZFR5cGUgPT0gRHlu
YW1pYykKICAgICAgICAgcmV0dXJuIG9wOwogCkBAIC0zMTMsNyArMzEzLDcgQEAgUmVzb2x2ZU9w
IEpTU2NvcGU6OmFic3RyYWN0UmVzb2x2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBz
aXplX3QgZGVwdGhPZmYKICAgICBzaXplX3QgZGVwdGggPSBkZXB0aE9mZnNldDsKICAgICBmb3Ig
KDsgc2NvcGU7IHNjb3BlID0gc2NvcGUtPm5leHQoKSkgewogICAgICAgICBib29sIHN1Y2Nlc3Mg
PSBhYnN0cmFjdEFjY2VzcyhnbG9iYWxPYmplY3QsIHNjb3BlLCBpZGVudCwgZ2V0T3JQdXQsIGRl
cHRoLCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcywgb3AsIGluaXRpYWxpemF0aW9uTW9kZSk7Ci0g
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgUmVzb2x2ZU9wKER5bmFtaWMs
IDAsIDAsIDAsIDAsIDApKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3Bl
LCBSZXNvbHZlT3AoRHluYW1pYywgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgMCkpOwog
ICAgICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICArK2RlcHRo
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCmluZGV4IGFjODZjMmZhNDBk
MWU5ZmZlNjlhMDZhMDA1NTU1NGQ5Mzc5MjdiOWUuLjgyNmFkODdlODVkYzU5MzBhMDc1ZWRiYzli
OWE5MzU5ZDI2MDIxYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgK
QEAgLTEyNyw3ICsxMjcsNyBAQCBpbmxpbmUgU2NvcGVDaGFpbkl0ZXJhdG9yIEpTU2NvcGU6OmJl
Z2luKCkKIAogaW5saW5lIFNjb3BlQ2hhaW5JdGVyYXRvciBKU1Njb3BlOjplbmQoKQogeyAKLSAg
ICByZXR1cm4gU2NvcGVDaGFpbkl0ZXJhdG9yKDApOyAKKyAgICByZXR1cm4gU2NvcGVDaGFpbkl0
ZXJhdG9yKG51bGxwdHIpOyAKIH0KIAogaW5saW5lIEpTU2NvcGUqIEpTU2NvcGU6Om5leHQoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAppbmRl
eCA1MzUyMzcxOGRjOWI5ZDIyMTJiOGI4MjExNzYzNjhmNDg0MjE4MmE0Li5kZDgxNzIzM2Q4YjMx
MjE0NDZiMDFiMWI1OGFlMzNmZjg3MDQwZmMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtODMyLDcgKzgzMiw3IEBAIEpTVmFsdWUg
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkK
ICAgICAgICAgc3dpdGNoKHN0YXRlKSB7CiAgICAgICAgICAgICBzdGFydFBhcnNlQXJyYXk6CiAg
ICAgICAgICAgICBjYXNlIFN0YXJ0UGFyc2VBcnJheTogewotICAgICAgICAgICAgICAgIEpTQXJy
YXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShtX2dsb2JhbE9iamVjdCwgMCk7CisgICAg
ICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KG1fZ2xvYmFs
T2JqZWN0LCBudWxscHRyKTsKICAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICAgICAgICAgIG9iamVjdFN0YWNrLmFwcGVuZFdpdGhD
cmFzaE9uT3ZlcmZsb3coYXJyYXkpOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKaW5kZXggZjlhOGJkNTU3NGMxNWI0YjZhODFlYzBi
ZGNmMjFhMTBjNjAzNmFiNS4uMjZiNjAwODE3ZTMxN2RhOWNmZWRiYTIzMDhmYWQ2ZDQwZTlmZjkz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCkBAIC01
NzQsNyArNTc0LDcgQEAgcHVibGljOgogICAgICAgICBSRUxFQVNFX0FTU0VSVCghdmFsdWUpOwog
CiAgICAgICAgIG1fc3RhdGUgPSBVbmluaXRpYWxpemVkOwotICAgICAgICBtX3JhbmdlU3RyaW5n
ID0gMDsKKyAgICAgICAgbV9yYW5nZVN0cmluZyA9IG51bGxwdHI7CiAgICAgICAgIG1fbG93TGlt
aXQgPSAwOwogICAgICAgICBtX2hpZ2hMaW1pdCA9IDA7CiAgICAgICAgIHJldHVybiAqdGhpczsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3Jp
cHRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0
b3IuY3BwCmluZGV4IDQ0MDZlODBiY2MwMDkwYWU2OThhNzljZmM0MjdmMDg3YTczNmRmNzEuLmU4
NDYzY2JlM2EzN2ZmMjQ4MjVjZWJiY2FmNGY5NDViYWMyM2NhOWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5RGVzY3JpcHRvci5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcApAQCAtOTUs
MTMgKzk1LDEzIEBAIEpTVmFsdWUgUHJvcGVydHlEZXNjcmlwdG9yOjpzZXR0ZXIoKSBjb25zdAog
SlNPYmplY3QqIFByb3BlcnR5RGVzY3JpcHRvcjo6Z2V0dGVyT2JqZWN0KCkgY29uc3QKIHsKICAg
ICBBU1NFUlQoaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSAmJiBnZXR0ZXJQcmVzZW50KCkpOwotICAg
IHJldHVybiBtX2dldHRlci5pc09iamVjdCgpID8gYXNPYmplY3QobV9nZXR0ZXIpIDogMDsKKyAg
ICByZXR1cm4gbV9nZXR0ZXIuaXNPYmplY3QoKSA/IGFzT2JqZWN0KG1fZ2V0dGVyKSA6IG51bGxw
dHI7CiB9CiAKIEpTT2JqZWN0KiBQcm9wZXJ0eURlc2NyaXB0b3I6OnNldHRlck9iamVjdCgpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgc2V0dGVyUHJlc2Vu
dCgpKTsKLSAgICByZXR1cm4gbV9zZXR0ZXIuaXNPYmplY3QoKSA/IGFzT2JqZWN0KG1fc2V0dGVy
KSA6IDA7CisgICAgcmV0dXJuIG1fc2V0dGVyLmlzT2JqZWN0KCkgPyBhc09iamVjdChtX3NldHRl
cikgOiBudWxscHRyOwogfQogCiB2b2lkIFByb3BlcnR5RGVzY3JpcHRvcjo6c2V0RGVzY3JpcHRv
cihKU1ZhbHVlIHZhbHVlLCB1bnNpZ25lZCBhdHRyaWJ1dGVzKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgKaW5kZXggMDk3YjVl
OWI4ODI0YTc5Mjg0ZDE0MGZiNjIwY2QyMjU3NzhlZDJmYS4uNGRiZmFlMmE1MWEwZDc0MjNhNzAy
YjA5ODczN2YxYWI4OTk5NTc2MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm9wZXJ0eU1hcEhhc2hUYWJsZS5oCkBAIC0yOTksNyArMjk5LDcgQEAgaW5saW5l
IFByb3BlcnR5VGFibGU6OmZpbmRfaXRlcmF0b3IgUHJvcGVydHlUYWJsZTo6ZmluZChjb25zdCBL
ZXlUeXBlJiBrZXkpCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgdW5zaWduZWQgZW50cnlJ
bmRleCA9IG1faW5kZXhbaGFzaCAmIG1faW5kZXhNYXNrXTsKICAgICAgICAgaWYgKGVudHJ5SW5k
ZXggPT0gRW1wdHlFbnRyeUluZGV4KQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWly
KChWYWx1ZVR5cGUqKTAsIGhhc2ggJiBtX2luZGV4TWFzayk7CisgICAgICAgICAgICByZXR1cm4g
c3RkOjptYWtlX3BhaXIoKFZhbHVlVHlwZSopbnVsbHB0ciwgaGFzaCAmIG1faW5kZXhNYXNrKTsK
ICAgICAgICAgaWYgKGtleSA9PSB0YWJsZSgpW2VudHJ5SW5kZXggLSAxXS5rZXkpCiAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoJnRhYmxlKClbZW50cnlJbmRleCAtIDFdLCBoYXNo
ICYgbV9pbmRleE1hc2spOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm9wZXJ0eVNsb3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5U2xvdC5oCmluZGV4IDY1OTc5ODUyZDJmMWEzNDU2NTE1ZWRkOTE3M2NkMWUyZWRhMTFmNDku
LjhkOWUxMzIyOTE1NmEzZTBjZDY1NzdhMzg0YTE2OTJiYzcxNTNmMWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5U2xvdC5oCkBAIC0yMzgsNyArMjM4LDcgQEAg
cHVibGljOgogICAgICAgICBtX2RhdGEudmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUodmFsdWUpOwog
ICAgICAgICBtX2F0dHJpYnV0ZXMgPSBhdHRyaWJ1dGVzOwogCi0gICAgICAgIG1fc2xvdEJhc2Ug
PSAwOworICAgICAgICBtX3Nsb3RCYXNlID0gbnVsbHB0cjsKICAgICAgICAgbV9wcm9wZXJ0eVR5
cGUgPSBUeXBlVmFsdWU7CiAKICAgICAgICAgQVNTRVJUKG1fY2FjaGVhYmlsaXR5ID09IENhY2hp
bmdEaXNhbGxvd2VkKTsKQEAgLTM2MSw3ICszNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZGF0
YS52YWx1ZSA9IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgbV9hdHRy
aWJ1dGVzID0gUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW07CiAKLSAgICAgICAgbV9z
bG90QmFzZSA9IDA7CisgICAgICAgIG1fc2xvdEJhc2UgPSBudWxscHRyOwogICAgICAgICBtX3By
b3BlcnR5VHlwZSA9IFR5cGVWYWx1ZTsKICAgICB9CiAKQEAgLTQwMSw3ICs0MDEsNyBAQCBwcml2
YXRlOgogICAgIHVuaW9uIHsKICAgICAgICAgRE9NQXR0cmlidXRlQW5ub3RhdGlvbiBkb21BdHRy
aWJ1dGU7CiAgICAgICAgIE1vZHVsZU5hbWVzcGFjZVNsb3QgbW9kdWxlTmFtZXNwYWNlU2xvdDsK
LSAgICB9IG1fYWRkaXRpb25hbERhdGEgeyB7IDAsIDAgfSB9OworICAgIH0gbV9hZGRpdGlvbmFs
RGF0YSB7IHsgbnVsbHB0ciwgbnVsbHB0ciB9IH07CiB9OwogCiBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgUHJvcGVydHlTbG90OjpnZXRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9QdXRQcm9wZXJ0eVNsb3QuaAppbmRleCBmZmZjODVhZDBmMjhlYWNlZTIwOGI5
N2I2Y2MyN2ViZTE4ZGY0MjZlLi4xZTg2MmI2OGY5ZTJlNTVkNWJjM2Y4NjY3MjI1YzNkODQ4Y2M5
ZTM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0
eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9QdXRQcm9wZXJ0eVNs
b3QuaApAQCAtNDEsNyArNDEsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBib29sICgqUHV0VmFs
dWVGdW5jKShKU0dsb2JhbE9iamVjdCosIEVuY29kZWRKU1ZhbHVlIHRoaXNPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHZhbHVlKTsKIAogICAgIFB1dFByb3BlcnR5U2xvdChKU1ZhbHVlIHRoaXNWYWx1
ZSwgYm9vbCBpc1N0cmljdE1vZGUgPSBmYWxzZSwgQ29udGV4dCBjb250ZXh0ID0gVW5rbm93bkNv
bnRleHQsIGJvb2wgaXNJbml0aWFsaXphdGlvbiA9IGZhbHNlKQotICAgICAgICA6IG1fYmFzZSgw
KQorICAgICAgICA6IG1fYmFzZShudWxscHRyKQogICAgICAgICAsIG1fdGhpc1ZhbHVlKHRoaXNW
YWx1ZSkKICAgICAgICAgLCBtX29mZnNldChpbnZhbGlkT2Zmc2V0KQogICAgICAgICAsIG1faXNT
dHJpY3RNb2RlKGlzU3RyaWN0TW9kZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVnRXhwTWF0Y2hlc0FycmF5LmgKaW5kZXggYjRlY2RiNzRhMjEzMGQxMThkYjI1N2Mz
NmNlMGQ4ODY2ZWJmNjYwZS4uNjM2OTRiMjNiMTRkMzMyYmZkMDdjOWRhODkwN2QwMGU2MmNiOWQw
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwTWF0Y2hl
c0FycmF5LmgKQEAgLTM5LDcgKzM5LDcgQEAgQUxXQVlTX0lOTElORSBKU0FycmF5KiB0cnlDcmVh
dGVVbmluaXRpYWxpemVkUmVnRXhwTWF0Y2hlc0FycmF5KE9iamVjdEluaXRpYWxpemEKICAgICBW
TSYgdm0gPSBzY29wZS52bSgpOwogICAgIHVuc2lnbmVkIHZlY3Rvckxlbmd0aCA9IGluaXRpYWxM
ZW5ndGg7CiAgICAgaWYgKHZlY3Rvckxlbmd0aCA+IE1BWF9TVE9SQUdFX1ZFQ1RPUl9MRU5HVEgp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGNvbnN0
IGJvb2wgaGFzSW5kZXhpbmdIZWFkZXIgPSB0cnVlOwogICAgIEJ1dHRlcmZseSogYnV0dGVyZmx5
ID0gQnV0dGVyZmx5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHZtLCBudWxscHRyLCAwLCBzdHJ1
Y3R1cmUtPm91dE9mTGluZUNhcGFjaXR5KCksIGhhc0luZGV4aW5nSGVhZGVyLCB2ZWN0b3JMZW5n
dGggKiBzaXplb2YoRW5jb2RlZEpTVmFsdWUpLCBkZWZlcnJhbENvbnRleHQpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKaW5kZXggYWE5
NmI5NzBiY2E0Njg5NDRiMjAzZDMyMjAwYzFlNWNmNjE5NmQzZS4uNzMzM2UxY2ZjOTljNjZmYThk
NmYwN2NjZTEwMjE0OWNlNTYxZDM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC02MTgsNyArNjE4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNTcGxpdEZhc3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamUKIAogICAgIC8vIDExLiBMZXQgQSBiZSBBcnJheUNyZWF0ZSgwKS4KICAg
ICAvLyAxMi4gTGV0IGxlbmd0aEEgYmUgMC4KLSAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgMCk7CisgICAgSlNBcnJheSogcmVzdWx0ID0gY29u
c3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHVuc2lnbmVkIHJlc3VsdExl
bmd0aCA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQ
cm90b3R5cGUuY3BwCmluZGV4IDg0ODcxNGQ5NDUzOTQ2NmY1ZGEwMzMzYzZlZjAzMjRmOTNiZmEx
NjYuLmY5M2ZlM2ViMmQwOThjNGJiYzc2ZjdkNzk4NDRiNGVlMDgzZWIzMGYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTI1
Miw3ICsxMjUyLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1
bmNTcGxpdEZhc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKIAogICAgIC8vIDQuIExldCBB
IGJlIGEgbmV3IGFycmF5IGNyZWF0ZWQgYXMgaWYgYnkgdGhlIGV4cHJlc3Npb24gbmV3IEFycmF5
KCkKICAgICAvLyAgICB3aGVyZSBBcnJheSBpcyB0aGUgc3RhbmRhcmQgYnVpbHQtaW4gY29uc3Ry
dWN0b3Igd2l0aCB0aGF0IG5hbWUuCi0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1w
dHlBcnJheShnbG9iYWxPYmplY3QsIDApOworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIAogICAgIC8vIDUuIExldCBsZW5ndGhBIGJl
IDAuCkBAIC0xMzgyLDcgKzEzODIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0
cmluZ1Byb3RvRnVuY1N1YnN0cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlm
ICghY2hlY2tPYmplY3RDb2VyY2libGUodGhpc1ZhbHVlKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAgICAgdW5zaWduZWQgbGVuOwotICAg
IEpTU3RyaW5nKiBqc1N0cmluZyA9IDA7CisgICAgSlNTdHJpbmcqIGpzU3RyaW5nID0gbnVsbHB0
cjsKICAgICBTdHJpbmcgdVN0cmluZzsKICAgICBpZiAodGhpc1ZhbHVlLmlzU3RyaW5nKCkpIHsK
ICAgICAgICAganNTdHJpbmcgPSBhc1N0cmluZyh0aGlzVmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKaW5kZXggOWMyY2U3YWZhZTZlMzhlN2E2MDgw
MjZmNTE3NzExMGUzYzg1NTYyZS4uMDlkNzUyNTRjNmIxMzI5ZmE3OThkNmY3N2Y1ZDYwYzVkYTQx
YTFlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3BwCkBA
IC0xMDAsNyArMTAwLDcgQEAgaW5saW5lIFN0cnVjdHVyZSogU3RydWN0dXJlVHJhbnNpdGlvblRh
YmxlOjpnZXQoVW5pcXVlZFN0cmluZ0ltcGwqIHJlcCwgdW5zaWduZWQKIHsKICAgICBpZiAoaXNV
c2luZ1NpbmdsZVNsb3QoKSkgewogICAgICAgICBTdHJ1Y3R1cmUqIHRyYW5zaXRpb24gPSBzaW5n
bGVUcmFuc2l0aW9uKCk7Ci0gICAgICAgIHJldHVybiAodHJhbnNpdGlvbiAmJiB0cmFuc2l0aW9u
LT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgPT0gcmVwICYmIHRyYW5zaXRpb24tPnRyYW5zaXRp
b25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSA9PSBhdHRyaWJ1dGVzICYmIHRyYW5zaXRpb24tPmlzUHJv
cGVydHlEZWxldGlvblRyYW5zaXRpb24oKSA9PSAhaXNBZGRpdGlvbikgPyB0cmFuc2l0aW9uIDog
MDsKKyAgICAgICAgcmV0dXJuICh0cmFuc2l0aW9uICYmIHRyYW5zaXRpb24tPm1fdHJhbnNpdGlv
blByb3BlcnR5TmFtZSA9PSByZXAgJiYgdHJhbnNpdGlvbi0+dHJhbnNpdGlvblByb3BlcnR5QXR0
cmlidXRlcygpID09IGF0dHJpYnV0ZXMgJiYgdHJhbnNpdGlvbi0+aXNQcm9wZXJ0eURlbGV0aW9u
VHJhbnNpdGlvbigpID09ICFpc0FkZGl0aW9uKSA/IHRyYW5zaXRpb24gOiBudWxscHRyOwogICAg
IH0KICAgICByZXR1cm4gbWFwKCktPmdldChTdHJ1Y3R1cmVUcmFuc2l0aW9uVGFibGU6Okhhc2g6
OktleShyZXAsIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24pKTsKIH0KQEAgLTMzMiw3ICszMzIsNyBA
QCBib29sIFN0cnVjdHVyZTo6aXNWYWxpZFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSkKIHZv
aWQgU3RydWN0dXJlOjpmaW5kU3RydWN0dXJlc0FuZE1hcEZvck1hdGVyaWFsaXphdGlvbihWZWN0
b3I8U3RydWN0dXJlKiwgOD4mIHN0cnVjdHVyZXMsIFN0cnVjdHVyZSomIHN0cnVjdHVyZSwgUHJv
cGVydHlUYWJsZSomIHRhYmxlKQogewogICAgIEFTU0VSVChzdHJ1Y3R1cmVzLmlzRW1wdHkoKSk7
Ci0gICAgdGFibGUgPSAwOworICAgIHRhYmxlID0gbnVsbHB0cjsKIAogICAgIGZvciAoc3RydWN0
dXJlID0gdGhpczsgc3RydWN0dXJlOyBzdHJ1Y3R1cmUgPSBzdHJ1Y3R1cmUtPnByZXZpb3VzSUQo
KSkgewogICAgICAgICBzdHJ1Y3R1cmUtPm1fbG9jay5sb2NrKCk7CkBAIC00MjUsNyArNDI1LDcg
QEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdT
dHJ1Y3R1cmVJbXBsKFN0cnVjdHVyZSogc3QKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNp
dGlvbjsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAog
U3RydWN0dXJlKiBTdHJ1Y3R1cmU6OmFkZFByb3BlcnR5VHJhbnNpdGlvblRvRXhpc3RpbmdTdHJ1
Y3R1cmUoU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIHVu
c2lnbmVkIGF0dHJpYnV0ZXMsIFByb3BlcnR5T2Zmc2V0JiBvZmZzZXQpCkBAIC03MzcsNyArNzM3
LDcgQEAgU3RydWN0dXJlKiBTdHJ1Y3R1cmU6Om5vblByb3BlcnR5VHJhbnNpdGlvblNsb3coVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgTm8KICAgICAKICAgICBTdHJ1Y3R1cmUqIGV4aXN0
aW5nVHJhbnNpdGlvbjsKICAgICBjb25zdGV4cHIgYm9vbCBpc0FkZGl0aW9uID0gdHJ1ZTsKLSAg
ICBpZiAoIXN0cnVjdHVyZS0+aXNEaWN0aW9uYXJ5KCkgJiYgKGV4aXN0aW5nVHJhbnNpdGlvbiA9
IHN0cnVjdHVyZS0+bV90cmFuc2l0aW9uVGFibGUuZ2V0KDAsIGF0dHJpYnV0ZXMsIGlzQWRkaXRp
b24pKSkgeworICAgIGlmICghc3RydWN0dXJlLT5pc0RpY3Rpb25hcnkoKSAmJiAoZXhpc3RpbmdU
cmFuc2l0aW9uID0gc3RydWN0dXJlLT5tX3RyYW5zaXRpb25UYWJsZS5nZXQobnVsbHB0ciwgYXR0
cmlidXRlcywgaXNBZGRpdGlvbikpKSB7CiAgICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRp
b24tPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSA9PSBhdHRyaWJ1dGVzKTsKICAgICAg
ICAgQVNTRVJUKGV4aXN0aW5nVHJhbnNpdGlvbi0+aW5kZXhpbmdNb2RlSW5jbHVkaW5nSGlzdG9y
eSgpID09IGluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkpOwogICAgICAgICByZXR1cm4gZXhp
c3RpbmdUcmFuc2l0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RydWN0dXJlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUu
aAppbmRleCA1YmEzZDk3MjQzNGQxMWMwYTA5MmJlYmZhOWE3NTI4MGEwMjA2ZGU0Li5mNjk2NDgw
YTc5OTI0MjA5YzRiNWQxYzcyOWNmOWIyZDJjMjBjZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TdHJ1Y3R1cmUuaApAQCAtNTMwLDcgKzUzMCw3IEBAIHB1YmxpYzoKICAgICBK
U1N0cmluZyogb2JqZWN0VG9TdHJpbmdWYWx1ZSgpCiAgICAgewogICAgICAgICBpZiAoIWhhc1Jh
cmVEYXRhKCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICByZXR1cm4gcmFyZURhdGEoKS0+b2JqZWN0VG9TdHJpbmdWYWx1ZSgpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1
bm5lclV0aWxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJV
dGlscy5jcHAKaW5kZXggNWIxYmNiY2RhYzA5NzUyZThjMzcyMjJmNTk5MTJmN2ZlY2Y3MGMwNC4u
NWNjNThjYTQxMTc1NWVhMGE0M2NhNDY5OGM4NjI3ZGE1MDI4NTc0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCkBAIC01Miw3ICs1
Miw3IEBAIENvZGVCbG9jayogZ2V0U29tZUJhc2VsaW5lQ29kZUJsb2NrRm9yRnVuY3Rpb24oSlNW
YWx1ZSB0aGVGdW5jdGlvblZhbHVlKQogewogICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSA9IGdldEV4ZWN1dGFibGVGb3JGdW5jdGlvbih0aGVGdW5jdGlvblZhbHVlKTsKICAgICBp
ZiAoIWV4ZWN1dGFibGUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAKICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZXhlY3V0YWJsZS0+
YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZUZvckNhbGwpOwogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuY3BwCmluZGV4IDBjYzNjOGQxNmM2
ZWE1YjQ1ODU1NjczYzA0MzBlMzIwYzkyYmRmMjEuLjgwMmQ0OGEyYTA0M2IxZDlmNGI2YzY3OTg4
ZDUxZTU2YzQ3ZTY3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVkQXJyYXlUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
eXBlZEFycmF5VHlwZS5jcHAKQEAgLTM2LDcgKzM2LDcgQEAgY29uc3QgQ2xhc3NJbmZvKiBjb25z
dHJ1Y3RvckNsYXNzSW5mb0ZvclR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKIHsKICAgICBzd2l0
Y2ggKHR5cGUpIHsKICAgICBjYXNlIE5vdFR5cGVkQXJyYXk6Ci0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBjYXNlIFR5cGVJbnQ4OgogICAgICAgICByZXR1
cm4gSlNJbnQ4QXJyYXlDb25zdHJ1Y3Rvcjo6aW5mbygpOwogICAgIGNhc2UgVHlwZVVpbnQ4OgpA
QCAtNTksNyArNTksNyBAQCBjb25zdCBDbGFzc0luZm8qIGNvbnN0cnVjdG9yQ2xhc3NJbmZvRm9y
VHlwZShUeXBlZEFycmF5VHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gSlNEYXRhVmlld0NvbnN0
cnVjdG9yOjppbmZvKCk7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDYwZTFiODc3MjYwM2Zi
NGZmZjRhODA2MzBmMmU5NmUzMmVlZTkxZmQuLjk4MGI3ODE4MGIzMWI5MWI4YThhOTM1Yjc2ZDMz
YTA1MjVjYzA3MmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTM5OCw3
ICszOTgsNyBAQCBWTTo6Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAg
LCBwcm9ncmFtRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0
aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFByb2dyYW1FeGVjdXRhYmxlKSAvLyBIYXNoOjB4
NTI3Yzc3ZTcKICAgICAsIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3BhY2UgSVNPX1NVQlNQ
QUNFX0lOSVQoaGVhcCwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGUpIC8vIEhhc2g6MHhmNmI4MjhkOQogICAgICwgdm1UeXBlKHZt
VHlwZSkKLSAgICAsIGNsaWVudERhdGEoMCkKKyAgICAsIGNsaWVudERhdGEobnVsbHB0cikKICAg
ICAsIHRvcEVudHJ5RnJhbWUobnVsbHB0cikKICAgICAsIHRvcENhbGxGcmFtZShDYWxsRnJhbWU6
Om5vQ2FsbGVyKCkpCiAgICAgLCBwcm9taXNlVGltZXIoUHJvbWlzZVRpbWVyOjpjcmVhdGUoKnRo
aXMpKQpAQCAtNDEwLDggKzQxMCw4IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBo
ZWFwVHlwZSkKICAgICAsIHN0cmluZ0NhY2hlKCp0aGlzKQogICAgICwgc3ltYm9sSW1wbFRvU3lt
Ym9sTWFwKCp0aGlzKQogICAgICwgc3RydWN0dXJlQ2FjaGUoKnRoaXMpCi0gICAgLCBpbnRlcnBy
ZXRlcigwKQotICAgICwgZW50cnlTY29wZSgwKQorICAgICwgaW50ZXJwcmV0ZXIobnVsbHB0cikK
KyAgICAsIGVudHJ5U2NvcGUobnVsbHB0cikKICAgICAsIG1fcmVnRXhwQ2FjaGUobmV3IFJlZ0V4
cENhY2hlKHRoaXMpKQogICAgICwgbV9jb21wYWN0VmFyaWFibGVNYXAoYWRvcHRSZWYoKihuZXcg
Q29tcGFjdFZhcmlhYmxlTWFwKSkpCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQpAQCAtNDIw
LDcgKzQyMCw3IEBAIFZNOjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICNp
ZiBFTkFCTEUoR0NfVkFMSURBVElPTikKICAgICAsIG1faW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3Mo
MCkKICNlbmRpZgotICAgICwgbV9zdGFja1BvaW50ZXJBdFZNRW50cnkoMCkKKyAgICAsIG1fc3Rh
Y2tQb2ludGVyQXRWTUVudHJ5KG51bGxwdHIpCiAgICAgLCBtX2NvZGVDYWNoZShtYWtlVW5pcXVl
PENvZGVDYWNoZT4oKSkKICAgICAsIG1fYnVpbHRpbkV4ZWN1dGFibGVzKG1ha2VVbmlxdWU8QnVp
bHRpbkV4ZWN1dGFibGVzPigqdGhpcykpCiAgICAgLCBtX3R5cGVQcm9maWxlckVuYWJsZWRDb3Vu
dCgwKQpAQCAtNDQxLDU2ICs0NDEsNTYgQEAgVk06OlZNKFZNVHlwZSB2bVR5cGUsIEhlYXBUeXBl
IGhlYXBUeXBlKQogICAgIEpTTG9ja0hvbGRlciBsb2NrKHRoaXMpOwogICAgIEF0b21TdHJpbmdU
YWJsZSogZXhpc3RpbmdFbnRyeUF0b21TdHJpbmdUYWJsZSA9IFRocmVhZDo6Y3VycmVudCgpLnNl
dEN1cnJlbnRBdG9tU3RyaW5nVGFibGUobV9hdG9tU3RyaW5nVGFibGUpOwogICAgIHN0cnVjdHVy
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzKSk7
Ci0gICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1cmVSYXJl
RGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHN0cmluZ1N0
cnVjdHVyZS5zZXQoKnRoaXMsIEpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpz
TnVsbCgpKSk7CisgICAgc3RydWN0dXJlUmFyZURhdGFTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1
Y3R1cmVSYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkp
OworICAgIHN0cmluZ1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU3RyaW5nOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CiAKICAgICBzbWFsbFN0cmluZ3MuaW5pdGlh
bGl6ZUNvbW1vblN0cmluZ3MoKnRoaXMpOwogCiAgICAgcHJvcGVydHlOYW1lcyA9IG5ldyBDb21t
b25JZGVudGlmaWVycygqdGhpcyk7Ci0gICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0
dXJlLnNldCgqdGhpcywgVGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgcHJvcGVydHlOYW1lRW51bWVyYXRvclN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMs
IEdldHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAg
IGN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEN1c3RvbUdldHRlclNldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGRvbUF0dHJpYnV0
ZUdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIERPTUF0dHJpYnV0ZUdldHRlclNldHRl
cjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHNjb3BlZEFyZ3Vt
ZW50c1RhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgU2NvcGVkQXJndW1lbnRzVGFibGU6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBhcGlXcmFwcGVyU3RydWN0dXJl
LnNldCgqdGhpcywgSlNBUElWYWx1ZVdyYXBwZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKLSAgICBuYXRpdmVFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgTmF0
aXZlRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAg
IGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRXZhbEV4ZWN1dGFibGU6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBwcm9ncmFtRXhlY3V0YWJsZVN0
cnVjdHVyZS5zZXQoKnRoaXMsIFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7CisgICAgdGVybWluYXRlZEV4ZWN1dGlvbkVycm9yU3RydWN0dXJlLnNldCgqdGhpcywg
VGVybWluYXRlZEV4ZWN1dGlvbkVycm9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIs
IGpzTnVsbCgpKSk7CisgICAgcHJvcGVydHlOYW1lRW51bWVyYXRvclN0cnVjdHVyZS5zZXQoKnRo
aXMsIEpTUHJvcGVydHlOYW1lRW51bWVyYXRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxs
cHRyLCBqc051bGwoKSkpOworICAgIGdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEdl
dHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwor
ICAgIGN1c3RvbUdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEN1c3RvbUdldHRlclNl
dHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIGRv
bUF0dHJpYnV0ZUdldHRlclNldHRlclN0cnVjdHVyZS5zZXQoKnRoaXMsIERPTUF0dHJpYnV0ZUdl
dHRlclNldHRlcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwor
ICAgIHNjb3BlZEFyZ3VtZW50c1RhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgU2NvcGVkQXJndW1l
bnRzVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAg
ICBhcGlXcmFwcGVyU3RydWN0dXJlLnNldCgqdGhpcywgSlNBUElWYWx1ZVdyYXBwZXI6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBuYXRpdmVFeGVjdXRh
YmxlU3RydWN0dXJlLnNldCgqdGhpcywgTmF0aXZlRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0dXJl
LnNldCgqdGhpcywgRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0
ciwganNOdWxsKCkpKTsKKyAgICBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IFByb2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVs
bCgpKSk7CisgICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rp
b25FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7
CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0
dXJlLnNldCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOworICAgIHdlYkFzc2VtYmx5Q29kZUJsb2NrU3RydWN0dXJlLnNl
dCgqdGhpcywgSlNXZWJBc3NlbWJseUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBu
dWxscHRyLCBqc051bGwoKSkpOwogI2VuZGlmCi0gICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRoaXMs
IFJlZ0V4cDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHN5bWJv
bFN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBq
c051bGwoKSkpOwotICAgIHN5bWJvbFRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgU3ltYm9sVGFi
bGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLQotICAgIGltbXV0YWJs
ZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3Jp
dGVBcnJheVdpdGhJbnQzMikgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5zZXQoKnRoaXMsIEpT
SW1tdXRhYmxlQnV0dGVyZmx5OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpLCBD
b3B5T25Xcml0ZUFycmF5V2l0aEludDMyKSk7Ci0gICAgaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0
dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlwZShDb3B5T25Xcml0ZUFycmF5V2l0aERvdWJs
ZSkgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5zZXQoKnRoaXMsIEpTSW1tdXRhYmxlQnV0dGVy
Zmx5OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpLCBDb3B5T25Xcml0ZUFycmF5
V2l0aERvdWJsZSkpOwotICAgIGltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRl
eEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJl
ck9mSW5kZXhpbmdTaGFwZXNdLnNldCgqdGhpcywgSlNJbW11dGFibGVCdXR0ZXJmbHk6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCksIENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGln
dW91cykpOwotCi0gICAgc291cmNlQ29kZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU291cmNlQ29k
ZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHNjcmlwdEZldGNo
ZXJTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBzY3JpcHRGZXRjaFBhcmFtZXRlcnNTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBKU1NjcmlwdEZldGNoUGFyYW1ldGVyczo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwotICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLnNldCgqdGhpcywg
U3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAg
ICBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlLnNldCgqdGhpcywgU3BhcnNlQXJyYXlWYWx1
ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHRlbXBsYXRl
T2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTVGVtcGxhdGVPYmplY3REZXNj
cmlwdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgdW5saW5r
ZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9u
RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHVu
bGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkUHJvZ3Jh
bUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHVu
bGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVC
bG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHVubGlua2Vk
RnVuY3Rpb25Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uQ29k
ZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgdW5saW5r
ZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRNb2R1
bGVQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7
Ci0gICAgcHJvcGVydHlUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb3BlcnR5VGFibGU6OmNy
ZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBmdW5jdGlvblJhcmVEYXRh
U3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMsIEV4
Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHByb2dy
YW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVT
dHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgbW9kdWxlUHJvZ3JhbUNvZGVCbG9j
a1N0cnVjdHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBldmFsQ29kZUJsb2NrU3RydWN0dXJlLnNl
dCgqdGhpcywgRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwotICAgIGZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25D
b2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBoYXNo
TWFwQnVja2V0U2V0U3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVj
a2V0RGF0YUtleT46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBo
YXNoTWFwQnVja2V0TWFwU3RydWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFw
QnVja2V0RGF0YUtleVZhbHVlPjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwotICAgIGJpZ0ludFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CisgICAgbW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGVTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIHJlZ0V4cFN0cnVjdHVyZS5zZXQoKnRo
aXMsIFJlZ0V4cDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwor
ICAgIHN5bWJvbFN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbDo6Y3JlYXRlU3RydWN0dXJlKCp0
aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIHN5bWJvbFRhYmxlU3RydWN0dXJlLnNldCgq
dGhpcywgU3ltYm9sVGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxs
KCkpKTsKKworICAgIGltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21J
bmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhJbnQzMikgLSBOdW1iZXJPZkluZGV4aW5n
U2hhcGVzXS5zZXQoKnRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpLCBDb3B5T25Xcml0ZUFycmF5V2l0aEludDMyKSk7Cisg
ICAgaW1tdXRhYmxlQnV0dGVyZmx5U3RydWN0dXJlc1thcnJheUluZGV4RnJvbUluZGV4aW5nVHlw
ZShDb3B5T25Xcml0ZUFycmF5V2l0aERvdWJsZSkgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5z
ZXQoKnRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51
bGxwdHIsIGpzTnVsbCgpLCBDb3B5T25Xcml0ZUFycmF5V2l0aERvdWJsZSkpOworICAgIGltbXV0
YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9u
V3JpdGVBcnJheVdpdGhDb250aWd1b3VzKSAtIE51bWJlck9mSW5kZXhpbmdTaGFwZXNdLnNldCgq
dGhpcywgSlNJbW11dGFibGVCdXR0ZXJmbHk6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0
ciwganNOdWxsKCksIENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykpOworCisgICAgc291
cmNlQ29kZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTU291cmNlQ29kZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIHNjcmlwdEZldGNoZXJTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBKU1NjcmlwdEZldGNoZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0
ciwganNOdWxsKCkpKTsKKyAgICBzY3JpcHRGZXRjaFBhcmFtZXRlcnNTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU1NjcmlwdEZldGNoUGFyYW1ldGVyczo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxs
cHRyLCBqc051bGwoKSkpOworICAgIHN0cnVjdHVyZUNoYWluU3RydWN0dXJlLnNldCgqdGhpcywg
U3RydWN0dXJlQ2hhaW46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkp
KTsKKyAgICBzcGFyc2VBcnJheVZhbHVlTWFwU3RydWN0dXJlLnNldCgqdGhpcywgU3BhcnNlQXJy
YXlWYWx1ZU1hcDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwor
ICAgIHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTVGVtcGxh
dGVPYmplY3REZXNjcmlwdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVs
bCgpKSk7CisgICAgdW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxs
cHRyLCBqc051bGwoKSkpOworICAgIHVubGlua2VkUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5z
ZXQoKnRoaXMsIFVubGlua2VkUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCBudWxscHRyLCBqc051bGwoKSkpOworICAgIHVubGlua2VkRXZhbENvZGVCbG9ja1N0cnVjdHVy
ZS5zZXQoKnRoaXMsIFVubGlua2VkRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCBudWxscHRyLCBqc051bGwoKSkpOworICAgIHVubGlua2VkRnVuY3Rpb25Db2RlQmxvY2tTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisgICAgdW5saW5rZWRNb2R1bGVQcm9ncmFt
Q29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJs
b2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisgICAgcHJv
cGVydHlUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFByb3BlcnR5VGFibGU6OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBmdW5jdGlvblJhcmVEYXRhU3Ry
dWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25SYXJlRGF0YTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCBudWxscHRyLCBqc051bGwoKSkpOworICAgIGV4Y2VwdGlvblN0cnVjdHVyZS5zZXQoKnRoaXMs
IEV4Y2VwdGlvbjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwor
ICAgIHByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9ncmFtQ29kZUJsb2Nr
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisgICAgbW9kdWxl
UHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIE1vZHVsZVByb2dyYW1Db2RlQmxv
Y2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBldmFs
Q29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgRXZhbENvZGVCbG9jazo6Y3JlYXRlU3RydWN0
dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIGZ1bmN0aW9uQ29kZUJsb2NrU3Ry
dWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBoYXNoTWFwQnVja2V0U2V0U3RydWN0dXJlLnNl
dCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleT46OmNyZWF0ZVN0cnVj
dHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBoYXNoTWFwQnVja2V0TWFwU3Ry
dWN0dXJlLnNldCgqdGhpcywgSGFzaE1hcEJ1Y2tldDxIYXNoTWFwQnVja2V0RGF0YUtleVZhbHVl
Pjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIGJpZ0lu
dFN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQmlnSW50OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51
bGxwdHIsIGpzTnVsbCgpKSk7CiAgICAgZXhlY3V0YWJsZVRvQ29kZUJsb2NrRWRnZVN0cnVjdHVy
ZS5zZXQoKnRoaXMsIEV4ZWN1dGFibGVUb0NvZGVCbG9ja0VkZ2U6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKIAogICAgIC8vIEVhZ2VybHkgaW5pdGlhbGl6ZSBj
b25zdGFudCBjZWxscyBzaW5jZSB0aGUgY29uY3VycmVudCBjb21waWxlciBjYW4gYWNjZXNzIHRo
ZW0uCkBAIC04MjMsNyArODIzLDcgQEAgTmF0aXZlRXhlY3V0YWJsZSogVk06OmdldEhvc3RGdW5j
dGlvbihOYXRpdmVGdW5jdGlvbiBmdW5jdGlvbiwgSW50cmluc2ljIGludHJpbnMKICAgICBpZiAo
Y2FuVXNlSklUKCkpIHsKICAgICAgICAgcmV0dXJuIGppdFN0dWJzLT5ob3N0RnVuY3Rpb25TdHVi
KAogICAgICAgICAgICAgKnRoaXMsIGZ1bmN0aW9uLCBjb25zdHJ1Y3RvciwKLSAgICAgICAgICAg
IGludHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGlu
dHJpbnNpYykgOiAwLAorICAgICAgICAgICAgaW50cmluc2ljICE9IE5vSW50cmluc2ljID8gdGh1
bmtHZW5lcmF0b3JGb3JJbnRyaW5zaWMoaW50cmluc2ljKSA6IG51bGxwdHIsCiAgICAgICAgICAg
ICBpbnRyaW5zaWMsIHNpZ25hdHVyZSwgbmFtZSk7CiAgICAgfQogI2VuZGlmIC8vIEVOQUJMRShK
SVQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAKaW5kZXggOTk3
MWVhMTA5NTg2MTE3MTE0OTM1NzAwZDAzZTU4MjQ5ODAxODc4Yi4uNGYyZGU2ODA3NTIxYjNlZWEx
ODlmYjljNzMzYTE3NjM2MzgxMDdkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2F0Y2hkb2cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dhdGNoZG9nLmNwcApAQCAtMzcsOSArMzcsOSBAQCBXYXRjaGRvZzo6V2F0Y2hkb2coVk0qIHZt
KQogICAgICwgbV90aW1lTGltaXQobm9UaW1lTGltaXQpCiAgICAgLCBtX2NwdURlYWRsaW5lKG5v
VGltZUxpbWl0KQogICAgICwgbV9kZWFkbGluZShNb25vdG9uaWNUaW1lOjppbmZpbml0eSgpKQot
ICAgICwgbV9jYWxsYmFjaygwKQotICAgICwgbV9jYWxsYmFja0RhdGExKDApCi0gICAgLCBtX2Nh
bGxiYWNrRGF0YTIoMCkKKyAgICAsIG1fY2FsbGJhY2sobnVsbHB0cikKKyAgICAsIG1fY2FsbGJh
Y2tEYXRhMShudWxscHRyKQorICAgICwgbV9jYWxsYmFja0RhdGEyKG51bGxwdHIpCiAgICAgLCBt
X3RpbWVyUXVldWUoV29ya1F1ZXVlOjpjcmVhdGUoImpzYy53YXRjaGRvZy5xdWV1ZSIsIFdvcmtR
dWV1ZTo6VHlwZTo6U2VyaWFsLCBXb3JrUXVldWU6OlFPUzo6VXRpbGl0eSkpCiB7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaAppbmRleCBhMzFlNGVlYzUyMjQzZTEw
MzQwNzgxYzdkNWRmMGQ4NTE2MTc1OTI4Li42MTVkNzYxMGIwMmY1YWQ1NzQwMjAyNDAwYmM1ODJj
YjE1MTkxYzc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRj
aGRvZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmgKQEAg
LTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERlc3Ryb3lWTShWTSopOwogCiAg
ICAgdHlwZWRlZiBib29sICgqU2hvdWxkVGVybWluYXRlQ2FsbGJhY2spKEpTR2xvYmFsT2JqZWN0
Kiwgdm9pZCogZGF0YTEsIHZvaWQqIGRhdGEyKTsKLSAgICB2b2lkIHNldFRpbWVMaW1pdChTZWNv
bmRzIGxpbWl0LCBTaG91bGRUZXJtaW5hdGVDYWxsYmFjayA9IDAsIHZvaWQqIGRhdGExID0gMCwg
dm9pZCogZGF0YTIgPSAwKTsKKyAgICB2b2lkIHNldFRpbWVMaW1pdChTZWNvbmRzIGxpbWl0LCBT
aG91bGRUZXJtaW5hdGVDYWxsYmFjayA9IG51bGxwdHIsIHZvaWQqIGRhdGExID0gbnVsbHB0ciwg
dm9pZCogZGF0YTIgPSBudWxscHRyKTsKIAogICAgIGJvb2wgc2hvdWxkVGVybWluYXRlKEpTR2xv
YmFsT2JqZWN0Kik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1dyaXRlQmFycmllci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJy
aWVyLmgKaW5kZXggNzA3ZTIwYjZlNWFjM2Y2YmJiYzk3Yzk1NWRkMWUwMTdmNjBkMjIwMi4uM2Ri
YmViMGFlZTc0MTRhNjlmZjU4ZDkyODk4ZmFhODYyNTljZWNkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV3JpdGVCYXJyaWVyLmgKQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFz
cyBXcml0ZUJhcnJpZXIgOiBwdWJsaWMgV3JpdGVCYXJyaWVyQmFzZTxULCBUcmFpdHM+IHsKIHB1
YmxpYzoKICAgICBXcml0ZUJhcnJpZXIoKQogICAgIHsKLSAgICAgICAgdGhpcy0+c2V0V2l0aG91
dFdyaXRlQmFycmllcigwKTsKKyAgICAgICAgdGhpcy0+c2V0V2l0aG91dFdyaXRlQmFycmllcihu
dWxscHRyKTsKICAgICB9CiAKICAgICBXcml0ZUJhcnJpZXIoVk0mIHZtLCBjb25zdCBKU0NlbGwq
IG93bmVyLCBUKiB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0
UmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcAppbmRleCBi
MmRiNjZkODE0NzM4YzJkN2U0NWVlNjg2MWZjNGI5ZmU5MDM2YzU2Li5hOTdmN2VjZjNjZjhkZGQ1
OTY4ODNmNGJkNjA2YzE3YjFiMWViM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvdGVzdFJlZ0V4cC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAu
Y3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xv
YmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIG51bGxwdHIsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xvYmFs
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogcHJpdmF0ZToK
QEAgLTMyMCwxMiArMzIwLDEyIEBAIHN0YXRpYyBSZWdFeHAqIHBhcnNlUmVnRXhwTGluZShWTSYg
dm0sIGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3RoLCBjb25zdCBjaGFyKioKICAgICBTdHJpbmdC
dWlsZGVyIHBhdHRlcm47CiAKICAgICBpZiAobGluZVswXSAhPSAnLycpCi0gICAgICAgIHJldHVy
biAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGludCBpID0gc2NhblN0cmluZyhs
aW5lICsgMSwgbGluZUxlbmd0aCAtIDEsIHBhdHRlcm4sICcvJykgKyAxOwogCiAgICAgaWYgKChp
ID49IGxpbmVMZW5ndGgpIHx8IChsaW5lW2ldICE9ICcvJykpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICsraTsKIApAQCAtMzQ5LDE5ICszNDksMTkg
QEAgc3RhdGljIFJlZ0V4cFRlc3QqIHBhcnNlVGVzdExpbmUoY2hhciogbGluZSwgaW50IGxpbmVM
ZW5ndGgpCiAgICAgU3RyaW5nQnVpbGRlciBzdWJqZWN0U3RyaW5nOwogICAgIAogICAgIGlmICgo
bGluZVswXSAhPSAnICcpIHx8IChsaW5lWzFdICE9ICciJykpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGludCBpID0gc2NhblN0cmluZyhsaW5lICsg
MiwgbGluZUxlbmd0aCAtIDIsIHN1YmplY3RTdHJpbmcsICciJykgKyAyOwogCiAgICAgaWYgKChp
ID49IChsaW5lTGVuZ3RoIC0gMikpIHx8IChsaW5lW2ldICE9ICciJykgfHwgKGxpbmVbaSsxXSAh
PSAnLCcpIHx8IChsaW5lW2krMl0gIT0gJyAnKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgaSArPSAzOwogICAgIAogICAgIGludCBvZmZzZXQ7CiAg
ICAgCiAgICAgaWYgKHNzY2FuZihsaW5lICsgaSwgIiVkLCAiLCAmb2Zmc2V0KSAhPSAxKQotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICB3aGlsZSAobGlu
ZVtpXSAmJiBsaW5lW2ldICE9ICcgJykKICAgICAgICAgKytpOwpAQCAtMzcxLDcgKzM3MSw3IEBA
IHN0YXRpYyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxpbmUsIGludCBsaW5lTGVu
Z3RoKQogICAgIGludCBtYXRjaFJlc3VsdDsKICAgICAKICAgICBpZiAoc3NjYW5mKGxpbmUgKyBp
LCAiJWQsICIsICZtYXRjaFJlc3VsdCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIAogICAgIHdoaWxlIChsaW5lW2ldICYmIGxpbmVbaV0gIT0g
JyAnKQogICAgICAgICArK2k7CkBAIC0zNzksNyArMzc5LDcgQEAgc3RhdGljIFJlZ0V4cFRlc3Qq
IHBhcnNlVGVzdExpbmUoY2hhciogbGluZSwgaW50IGxpbmVMZW5ndGgpCiAgICAgKytpOwogICAg
IAogICAgIGlmIChsaW5lW2krK10gIT0gJygnKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBpbnQgc3RhcnQsIGVuZDsKICAgICAKQEAgLTM5Miw3ICsz
OTIsNyBAQCBzdGF0aWMgUmVnRXhwVGVzdCogcGFyc2VUZXN0TGluZShjaGFyKiBsaW5lLCBpbnQg
bGluZUxlbmd0aCkKICAgICB3aGlsZSAobGluZVtpXSAmJiBsaW5lW2ldICE9ICcpJykgewogICAg
ICAgICBpZiAoc3NjYW5mKGxpbmUgKyBpLCAiJWQsICVkIiwgJnN0YXJ0LCAmZW5kKSAhPSAyKSB7
CiAgICAgICAgICAgICBkZWxldGUgcmVzdWx0OwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIHJlc3VsdC0+ZXhw
ZWN0VmVjdG9yLmFwcGVuZChzdGFydCk7CkBAIC00MDgsNyArNDA4LDcgQEAgc3RhdGljIFJlZ0V4
cFRlc3QqIHBhcnNlVGVzdExpbmUoY2hhciogbGluZSwgaW50IGxpbmVMZW5ndGgpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgaWYgKCFsaW5lW2ldIHx8IChsaW5lW2ldICE9ICcsJykpIHsK
ICAgICAgICAgICAgIGRlbGV0ZSByZXN1bHQ7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgICAgIGkrKzsKICAgICB9CkBA
IC00MzYsOSArNDM2LDkgQEAgc3RhdGljIGJvb2wgcnVuRnJvbUZpbGVzKEdsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgZmlsZXMKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgUmVnRXhwKiByZWdleHAg
PSAwOworICAgICAgICBSZWdFeHAqIHJlZ2V4cCA9IG51bGxwdHI7CiAgICAgICAgIHNpemVfdCBs
aW5lTGVuZ3RoID0gMDsKLSAgICAgICAgY2hhciogbGluZVB0ciA9IDA7CisgICAgICAgIGNoYXIq
IGxpbmVQdHIgPSBudWxscHRyOwogICAgICAgICB1bnNpZ25lZCBpbnQgbGluZU51bWJlciA9IDA7
CiAgICAgICAgIGNvbnN0IGNoYXIqIHJlZ2V4cEVycm9yID0gbnVsbHB0cjsKIApAQCAtNDc0LDcg
KzQ3NCw3IEBAIHN0YXRpYyBib29sIHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgVmVjdG9yPFN0cmluZz4mIGZpbGVzCiAgICAgICAgICAgICAgICAgICAgIGRl
bGV0ZSByZWdFeHBUZXN0OwogICAgICAgICAgICAgfSBlbHNlIGlmIChsaW5lUHRyWzBdID09ICct
JykgewogICAgICAgICAgICAgICAgIHRlc3RzKys7Ci0gICAgICAgICAgICAgICAgcmVnZXhwID0g
MDsgLy8gUmVzZXQgdGhlIGxpdmUgcmVnZXhwIHRvIGF2b2lkIGNvbmZ1c2luZyBvdGhlciBzdWJz
ZXF1ZW50IHRlc3RzCisgICAgICAgICAgICAgICAgcmVnZXhwID0gbnVsbHB0cjsgLy8gUmVzZXQg
dGhlIGxpdmUgcmVnZXhwIHRvIGF2b2lkIGNvbmZ1c2luZyBvdGhlciBzdWJzZXF1ZW50IHRlc3Rz
CiAgICAgICAgICAgICAgICAgYm9vbCBzdWNjZXNzZnVsbHlQYXJzZWQgPSBwYXJzZVJlZ0V4cExp
bmUodm0sIGxpbmVQdHIgKyAxLCBsaW5lTGVuZ3RoIC0gMSwgJnJlZ2V4cEVycm9yKTsKICAgICAg
ICAgICAgICAgICBpZiAoc3VjY2Vzc2Z1bGx5UGFyc2VkKSB7CiAgICAgICAgICAgICAgICAgICAg
IGZhaWx1cmVzKys7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
aW5kZXggZjliMzI3MTk1OGI1ZWUxMTIwNTU0ODJjMGZjZjZmOTVjODE0NTMyNS4uYWRkOWIxNmRk
YzY4ZmZmZjhkYTkzYmU3MjIwZWQ0MzdiZjk2YTU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtNjM0LDcgKzYzNCw3IEBAIHByb3RlY3RlZDoKIAog
cHJpdmF0ZToKICAgICBSdW50aW1lQXJyYXkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgICAgIDogSlNBcnJheShnbG9iYWxPYmplY3QtPnZt
KCksIHN0cnVjdHVyZSwgMCkKKyAgICAgICAgOiBKU0FycmF5KGdsb2JhbE9iamVjdC0+dm0oKSwg
c3RydWN0dXJlLCBudWxscHRyKQogICAgIHsKICAgICAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBh
c3NlcnRTY29wZTsKICAgICB9CkBAIC0xNDMwLDcgKzE0MzAsNyBAQCBjb25zdCBDbGFzc0luZm8g
T2JqZWN0RG9pbmdTaWRlRWZmZWN0UHV0V2l0aG91dENvcnJlY3RTbG90U3RhdHVzOjpzX2luZm8g
PSB7ICJPYgogRWxlbWVudEhhbmRsZU93bmVyKiBFbGVtZW50OjpoYW5kbGVPd25lcigpCiB7CiAg
ICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29wZTsKLSAgICBzdGF0aWMgRWxlbWVudEhh
bmRsZU93bmVyKiBvd25lciA9IDA7CisgICAgc3RhdGljIEVsZW1lbnRIYW5kbGVPd25lciogb3du
ZXIgPSBudWxscHRyOwogICAgIGlmICghb3duZXIpCiAgICAgICAgIG93bmVyID0gbmV3IEVsZW1l
bnRIYW5kbGVPd25lcigpOwogICAgIHJldHVybiBvd25lcjsKQEAgLTI1NjAsNyArMjU2MCw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2hhZG93Q2hpY2tl
bkZ1bmN0aW9uc09uU3RhY2soSlNHbG9iCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
c2hhZG93Q2hpY2tlbi0+ZnVuY3Rpb25zT25TdGFjayhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZSkp
OwogICAgIH0KIAotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xv
YmFsT2JqZWN0LCAwKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5
KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICBTdGFja1Zpc2l0b3I6OnZpc2l0KGNhbGxGcmFtZSwgdm0sIFsmXSAoU3RhY2tW
aXNpdG9yJiB2aXNpdG9yKSAtPiBTdGFja1Zpc2l0b3I6OlN0YXR1cyB7CiAgICAgICAgIERvbGxh
clZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21TbG93UGF0aHMuY3BwCmluZGV4IDcxNDI1NDdmYzY4ZDYyNDhkYjMxYWQ2NjQ5MWYzZjcx
NTBhMjA3ZjUuLjJmZTU4Mjc4N2Q3NWE4ODI1ZGYxNjg3YjFhYzE2NjZhMzkyODAzNmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21TbG93UGF0aHMuY3BwCkBAIC0xNjgsNyAr
MTY4LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChwcm9sb2d1ZV9vc3IpCiAgICAgaWYgKCFqaXRD
b21waWxlQW5kU2V0SGV1cmlzdGljcyhjYWxsZWUsIGNvZGVCbG9jaywgaW5zdGFuY2UpKQogICAg
ICAgICBXQVNNX1JFVFVSTl9UV08obnVsbHB0ciwgbnVsbHB0cik7CiAKLSAgICBXQVNNX1JFVFVS
Tl9UV08oY2FsbGVlLT5yZXBsYWNlbWVudCgpLT5lbnRyeXBvaW50KCkuZXhlY3V0YWJsZUFkZHJl
c3MoKSwgMCk7CisgICAgV0FTTV9SRVRVUk5fVFdPKGNhbGxlZS0+cmVwbGFjZW1lbnQoKS0+ZW50
cnlwb2ludCgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIG51bGxwdHIpOwogfQogCiBXQVNNX1NMT1df
UEFUSF9ERUNMKGxvb3Bfb3NyKQpAQCAtMTc5LDcgKzE3OSw3IEBAIFdBU01fU0xPV19QQVRIX0RF
Q0wobG9vcF9vc3IpCiAKICAgICBpZiAoIU9wdGlvbnM6OnVzZVdlYkFzc2VtYmx5T1NSKCkgfHwg
IU9wdGlvbnM6OnVzZVdhc21MTEludExvb3BPU1IoKSB8fCAhc2hvdWxkSklUKGNvZGVCbG9jaywg
UmVxdWlyZWRXYXNtSklUOjpPTUcpKSB7CiAgICAgICAgIHNsb3dfcGF0aF93YXNtX3Byb2xvZ3Vl
X29zcihjYWxsRnJhbWUsIHBjLCBpbnN0YW5jZSk7Ci0gICAgICAgIFdBU01fUkVUVVJOX1RXTygw
LCAwKTsKKyAgICAgICAgV0FTTV9SRVRVUk5fVFdPKG51bGxwdHIsIG51bGxwdHIpOwogICAgIH0K
IAogICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgKmNhbGxlZSwgIjogRW50
ZXJlZCBsb29wX29zciB3aXRoIHRpZXJVcENvdW50ZXIgPSAiLCBjb2RlQmxvY2stPnRpZXJVcENv
dW50ZXIoKSk7CkBAIC0xODksMTkgKzE4OSwxOSBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKGxvb3Bf
b3NyKQogCiAgICAgaWYgKCF0aWVyVXBDb3VudGVyLmNoZWNrSWZPcHRpbWl6YXRpb25UaHJlc2hv
bGRSZWFjaGVkKCkpIHsKICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigp
LCAiICAgIEpJVCB0aHJlc2hvbGQgc2hvdWxkIGJlIGxpZnRlZC4iKTsKLSAgICAgICAgV0FTTV9S
RVRVUk5fVFdPKDAsIDApOworICAgICAgICBXQVNNX1JFVFVSTl9UV08obnVsbHB0ciwgbnVsbHB0
cik7CiAgICAgfQogCiAgICAgY29uc3QgYXV0byBkb09TUkVudHJ5ID0gWyZdIHsKICAgICAgICAg
V2FzbTo6T01HRm9yT1NSRW50cnlDYWxsZWUqIG9zckVudHJ5Q2FsbGVlID0gY2FsbGVlLT5vc3JF
bnRyeUNhbGxlZSgpOwogICAgICAgICBpZiAob3NyRW50cnlDYWxsZWUtPmxvb3BJbmRleCgpICE9
IG9zckVudHJ5RGF0YS5sb29wSW5kZXgpCi0gICAgICAgICAgICBXQVNNX1JFVFVSTl9UV08oMCwg
MCk7CisgICAgICAgICAgICBXQVNNX1JFVFVSTl9UV08obnVsbHB0ciwgbnVsbHB0cik7CiAKICAg
ICAgICAgc2l6ZV90IG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUgPSBvc3JFbnRyeUNhbGxlZS0+
b3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSgpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChvc3JF
bnRyeVNjcmF0Y2hCdWZmZXJTaXplID09IG9zckVudHJ5RGF0YS52YWx1ZXMuc2l6ZSgpKTsKICAg
ICAgICAgdWludDY0X3QqIGJ1ZmZlciA9IGluc3RhbmNlLT5jb250ZXh0KCktPnNjcmF0Y2hCdWZm
ZXJGb3JTaXplKG9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUpOwogICAgICAgICBpZiAoIWJ1ZmZl
cikKLSAgICAgICAgICAgIFdBU01fUkVUVVJOX1RXTygwLCAwKTsKKyAgICAgICAgICAgIFdBU01f
UkVUVVJOX1RXTyhudWxscHRyLCBudWxscHRyKTsKIAogICAgICAgICB1aW50MzJfdCBpbmRleCA9
IDA7CiAgICAgICAgIGZvciAoVmlydHVhbFJlZ2lzdGVyIHJlZyA6IG9zckVudHJ5RGF0YS52YWx1
ZXMpCkBAIC0yNDEsNyArMjQxLDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChsb29wX29zcikKICAg
ICBpZiAoY2FsbGVlLT5vc3JFbnRyeUNhbGxlZSgpKQogICAgICAgICByZXR1cm4gZG9PU1JFbnRy
eSgpOwogCi0gICAgV0FTTV9SRVRVUk5fVFdPKDAsIDApOworICAgIFdBU01fUkVUVVJOX1RXTyhu
dWxscHRyLCBudWxscHRyKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChlcGlsb2d1ZV9vc3Ip
CkBAIC00NDgsNyArNDQ4LDcgQEAgV0FTTV9TTE9XX1BBVEhfREVDTChzZXRfZ2xvYmFsX3JlZl9w
b3J0YWJsZV9iaW5kaW5nKQogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5cGUgc2xvd19wYXRo
X3dhc21fdGhyb3dfZXhjZXB0aW9uKENhbGxGcmFtZSogY2FsbEZyYW1lLCBjb25zdCBJbnN0cnVj
dGlvbiogcGMsIFdhc206Okluc3RhbmNlKiBpbnN0YW5jZSwgV2FzbTo6RXhjZXB0aW9uVHlwZSBl
eGNlcHRpb25UeXBlKQogewogICAgIFVOVVNFRF9QQVJBTShwYyk7Ci0gICAgV0FTTV9SRVRVUk5f
VFdPKG9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKGNhbGxGcmFtZSwgZXhjZXB0aW9uVHlwZSwg
aW5zdGFuY2UpLCAwKTsKKyAgICBXQVNNX1JFVFVSTl9UV08ob3BlcmF0aW9uV2FzbVRvSlNFeGNl
cHRpb24oY2FsbEZyYW1lLCBleGNlcHRpb25UeXBlLCBpbnN0YW5jZSksIG51bGxwdHIpOwogfQog
CiBleHRlcm4gIkMiIFNsb3dQYXRoUmV0dXJuVHlwZSBzbG93X3BhdGhfd2FzbV9wb3Bjb3VudChj
b25zdCBJbnN0cnVjdGlvbiogcGMsIHVpbnQzMl90IHgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uaAppbmRleCA3NDczYmFhOGM1MTBiNjAxZWU0MmJi
MzZiZmFhNjRjY2ZjMDQxZDI0Li45MGJiYWZiMTkzZjQxZDRmZmZmNTA1MTlmNDRkMTRjZWQ3MTNk
ZDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9SZWd1bGFyRXhwcmVz
c2lvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9u
LmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGljOgogICAgIFJlZ3VsYXJFeHByZXNzaW9uKGNvbnN0
IFJlZ3VsYXJFeHByZXNzaW9uJik7CiAgICAgUmVndWxhckV4cHJlc3Npb24mIG9wZXJhdG9yPShj
b25zdCBSZWd1bGFyRXhwcmVzc2lvbiYpOwogCi0gICAgaW50IG1hdGNoKGNvbnN0IFN0cmluZyYs
IGludCBzdGFydEZyb20gPSAwLCBpbnQqIG1hdGNoTGVuZ3RoID0gMCkgY29uc3Q7CisgICAgaW50
IG1hdGNoKGNvbnN0IFN0cmluZyYsIGludCBzdGFydEZyb20gPSAwLCBpbnQqIG1hdGNoTGVuZ3Ro
ID0gbnVsbHB0cikgY29uc3Q7CiAgICAgaW50IHNlYXJjaFJldihjb25zdCBTdHJpbmcmKSBjb25z
dDsKIAogICAgIGludCBtYXRjaGVkTGVuZ3RoKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAppbmRleCA5OTRhNjIzMDM3NGQ5NDc4NjI0
OTVlMGE1OTFjOTI2Njg1NjBmNzM1Li4yMzE1ZGUwZDA0ZDQzOTRlYmE0NzdhMjA2MWFhNzY1ZWI1
NjJjZWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySW50ZXJw
cmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRl
ci5jcHAKQEAgLTEwMTcsNyArMTAxNyw3IEBAIHB1YmxpYzoKICAgICAgICAgQnl0ZURpc2p1bmN0
aW9uKiBkaXNqdW5jdGlvbkJvZHkgPSB0ZXJtLmF0b20ucGFyZW50aGVzZXNEaXNqdW5jdGlvbjsK
IAogICAgICAgICBiYWNrVHJhY2stPm1hdGNoQW1vdW50ID0gMDsKLSAgICAgICAgYmFja1RyYWNr
LT5sYXN0Q29udGV4dCA9IDA7CisgICAgICAgIGJhY2tUcmFjay0+bGFzdENvbnRleHQgPSBudWxs
cHRyOwogCiAgICAgICAgIEFTU0VSVCh0ZXJtLmF0b20ucXVhbnRpdHlUeXBlICE9IFF1YW50aWZp
ZXJGaXhlZENvdW50IHx8IHRlcm0uYXRvbS5xdWFudGl0eU1pbkNvdW50ID09IHRlcm0uYXRvbS5x
dWFudGl0eU1heENvdW50KTsKIApAQCAtMTEwOSw3ICsxMTA5LDcgQEAgcHVibGljOgogICAgICAg
ICBjYXNlIFF1YW50aWZpZXJGaXhlZENvdW50OiB7CiAgICAgICAgICAgICBBU1NFUlQoYmFja1Ry
YWNrLT5tYXRjaEFtb3VudCA9PSB0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCk7CiAKLSAgICAg
ICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gMDsKKyAgICAg
ICAgICAgIFBhcmVudGhlc2VzRGlzanVuY3Rpb25Db250ZXh0KiBjb250ZXh0ID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIEpTUmVnRXhwUmVzdWx0IHJlc3VsdCA9IHBhcmVudGhlc2VzRG9CYWNrdHJh
Y2sodGVybSwgYmFja1RyYWNrKTsKIAogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBKU1JlZ0V4
cE1hdGNoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNwcAppbmRleCA4YjJhMjUz
ZTY5MDJiNzk2MTExZjhiYWIyNjhiZTFlMTJkZTcyMWNjLi42ZWI4YTE2ZjliN2RiZGIwZmIyN2Rj
Y2E4MzQ0Nzk2Zjk5MTQ5NzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFy
ci9ZYXJySklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmNw
cApAQCAtMzUxMCw3ICszNTEwLDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJy
SklUSW5mbywgcHJpdmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAgICAgICAgIFlhcnJPcCYgbGFzdE9w
ID0gbV9vcHMubGFzdCgpOwogICAgICAgICBBU1NFUlQobGFzdE9wLm1fb3AgPT0gYWx0ZXJuYXRp
dmVOZXh0T3BDb2RlKTsKICAgICAgICAgbGFzdE9wLm1fb3AgPSBhbHRlcm5hdGl2ZUVuZE9wQ29k
ZTsKLSAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUgPSAwOworICAgICAgICBsYXN0T3AubV9h
bHRlcm5hdGl2ZSA9IG51bGxwdHI7CiAgICAgICAgIGxhc3RPcC5tX25leHRPcCA9IG5vdEZvdW5k
OwogCiAgICAgICAgIHNpemVfdCBwYXJlbkVuZCA9IG1fb3BzLnNpemUoKTsKQEAgLTM1NjYsNyAr
MzU2Niw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZh
dGUgTWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzLmxhc3Qo
KTsKICAgICAgICAgQVNTRVJUKGxhc3RPcC5tX29wID09IE9wU2ltcGxlTmVzdGVkQWx0ZXJuYXRp
dmVOZXh0KTsKICAgICAgICAgbGFzdE9wLm1fb3AgPSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZl
RW5kOwotICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IDA7CisgICAgICAgIGxhc3RPcC5t
X2FsdGVybmF0aXZlID0gbnVsbHB0cjsKICAgICAgICAgbGFzdE9wLm1fbmV4dE9wID0gbm90Rm91
bmQ7CiAKICAgICAgICAgc2l6ZV90IHBhcmVuRW5kID0gbV9vcHMuc2l6ZSgpOwpAQCAtMzY1NCw3
ICszNjU0LDcgQEAgY2xhc3MgWWFyckdlbmVyYXRvciA6IHB1YmxpYyBZYXJySklUSW5mbywgcHJp
dmF0ZSBNYWNyb0Fzc2VtYmxlciB7CiAKICAgICAgICAgICAgIEFTU0VSVChsYXN0T3AubV9vcCA9
PSBPcEJvZHlBbHRlcm5hdGl2ZU5leHQpOwogICAgICAgICAgICAgbGFzdE9wLm1fb3AgPSBPcEJv
ZHlBbHRlcm5hdGl2ZUVuZDsKLSAgICAgICAgICAgIGxhc3RPcC5tX2FsdGVybmF0aXZlID0gMDsK
KyAgICAgICAgICAgIGxhc3RPcC5tX2FsdGVybmF0aXZlID0gbnVsbHB0cjsKICAgICAgICAgICAg
IGxhc3RPcC5tX25leHRPcCA9IG5vdEZvdW5kOwogICAgICAgICB9CiAKQEAgLTM2ODgsNyArMzY4
OCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUg
TWFjcm9Bc3NlbWJsZXIgewogICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzLmxhc3QoKTsK
ICAgICAgICAgQVNTRVJUKGxhc3RPcC5tX29wID09IE9wQm9keUFsdGVybmF0aXZlTmV4dCk7CiAg
ICAgICAgIGxhc3RPcC5tX29wID0gT3BCb2R5QWx0ZXJuYXRpdmVFbmQ7Ci0gICAgICAgIGxhc3RP
cC5tX2FsdGVybmF0aXZlID0gMDsKKyAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUgPSBudWxs
cHRyOwogICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSByZXBlYXRMb29wOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5oCmluZGV4IDA5NmQ0MGVmZDhiZjg4MDczY2Q1YWNi
ZjI3M2RhOWQzNzM3ODA3YjkuLjY2NDI4ZTA2NjNmMzMyMDkxNzc4MWRiYjlkMGM3MzBkMmI2ZDY4
NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJySklULmgKQEAgLTEyMSwxMyArMTIxLDEz
IEBAIHB1YmxpYzoKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IExDaGFyKiBpbnB1dCwg
dW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBt
YXRjaGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzOEJpdENvZGVNYXRjaE9u
bHkoKSk7Ci0gICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJy
SklUQ29kZU1hdGNoT25seTgsIFlhcnJNYXRjaE9ubHk4Qml0UHRyVGFnPihtX21hdGNoT25seTgu
Y29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCAwLCBtYXRj
aGluZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9u
UHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5OCwgWWFyck1hdGNoT25seThCaXRQdHJUYWc+KG1fbWF0
Y2hPbmx5OC5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgs
IG51bGxwdHIsIG1hdGNoaW5nQ29udGV4dCkpOwogICAgIH0KIAogICAgIE1hdGNoUmVzdWx0IGV4
ZWN1dGUoY29uc3QgVUNoYXIqIGlucHV0LCB1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro
LCBNYXRjaGluZ0NvbnRleHRIb2xkZXImIG1hdGNoaW5nQ29udGV4dCkKICAgICB7CiAgICAgICAg
IEFTU0VSVChoYXMxNkJpdENvZGVNYXRjaE9ubHkoKSk7Ci0gICAgICAgIHJldHVybiBNYXRjaFJl
c3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZU1hdGNoT25seTE2LCBZYXJyTWF0Y2hP
bmx5MTZCaXRQdHJUYWc+KG1fbWF0Y2hPbmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
KGlucHV0LCBzdGFydCwgbGVuZ3RoLCAwLCBtYXRjaGluZ0NvbnRleHQpKTsKKyAgICAgICAgcmV0
dXJuIE1hdGNoUmVzdWx0KHVudGFnQ0Z1bmN0aW9uUHRyPFlhcnJKSVRDb2RlTWF0Y2hPbmx5MTYs
IFlhcnJNYXRjaE9ubHkxNkJpdFB0clRhZz4obV9tYXRjaE9ubHkxNi5jb2RlKCkuZXhlY3V0YWJs
ZUFkZHJlc3MoKSkoaW5wdXQsIHN0YXJ0LCBsZW5ndGgsIG51bGxwdHIsIG1hdGNoaW5nQ29udGV4
dCkpOwogICAgIH0KIAogI2lmIEVOQUJMRShSRUdFWFBfVFJBQ0lORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmNwcAppbmRleCBkMGFjMzk4NTM5NjUxMDA3ZWZjZGI3
MGRkNTg5ZGYwMGVlYzlhZTBhLi5kNDFmYTEzZGFmZDI5YjEyNzNjNjAzYjVjMzA1Mzg2YmQxYjYw
MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCkBAIC02
ODYsNyArNjg2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYgKFVOTElLRUxZKCFpc1Nh
ZmVUb1JlY3Vyc2UoKSkpIHsKICAgICAgICAgICAgIG1fZXJyb3IgPSBFcnJvckNvZGU6OlBhdHRl
cm5Ub29MYXJnZTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgICAgIH0KIAogICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8UGF0dGVybkRpc2p1
bmN0aW9uPiBuZXdEaXNqdW5jdGlvbjsKQEAgLTcwNSwxMiArNzA1LDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGhhc0Vycm9yKGVycm9yKCkpKSB7Ci0gICAg
ICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IDA7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAg
ICAgICAgIG5ld0Rpc2p1bmN0aW9uID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFuZXdEaXNqdW5jdGlvbikKLSAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgUGF0
dGVybkRpc2p1bmN0aW9uKiBjb3BpZWREaXNqdW5jdGlvbiA9IG5ld0Rpc2p1bmN0aW9uLmdldCgp
OwogICAgICAgICBtX3BhdHRlcm4ubV9kaXNqdW5jdGlvbnMuYXBwZW5kKFdURk1vdmUobmV3RGlz
anVuY3Rpb24pKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQ
YXR0ZXJuLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCmluZGV4
IGVjMTRhZjI0YmU2OGViZGVkNzQ4MGUwOWYzZTY2M2Y4MTNhYWIzNzguLmVhNTcyYjczODg4ZWI1
ZTUwZjBlNjI1YzgzODUyYjQ2ODYzOTE1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyclBhdHRlcm4uaApAQCAtODIsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgLy8gdGhleSBtYXkg
aGF2ZSBhbiBvcHRpb25hbCBtX3RhYmxlIGZvciBmYXN0ZXIgbG9va3VwcyAod2hpY2ggbXVzdCBt
YXRjaCB0aGUKICAgICAvLyBzcGVjaWZpZWQgbWF0Y2hlcyBhbmQgcmFuZ2VzKQogICAgIENoYXJh
Y3RlckNsYXNzKCkKLSAgICAgICAgOiBtX3RhYmxlKDApCisgICAgICAgIDogbV90YWJsZShudWxs
cHRyKQogICAgICAgICAsIG1fY2hhcmFjdGVyV2lkdGhzKENoYXJhY3RlckNsYXNzV2lkdGhzOjpV
bmtub3duKQogICAgICAgICAsIG1fYW55Q2hhcmFjdGVyKGZhbHNlKQogICAgIHsKQEAgLTk5LDcg
Kzk5LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fcmFuZ2VzKHJhbmdlcykKICAgICAgICAgLCBt
X21hdGNoZXNVbmljb2RlKG1hdGNoZXNVbmljb2RlKQogICAgICAgICAsIG1fcmFuZ2VzVW5pY29k
ZShyYW5nZXNVbmljb2RlKQotICAgICAgICAsIG1fdGFibGUoMCkKKyAgICAgICAgLCBtX3RhYmxl
KG51bGxwdHIpCiAgICAgICAgICwgbV9jaGFyYWN0ZXJXaWR0aHMod2lkdGhzKQogICAgICAgICAs
IG1fdGFibGVJbnZlcnRlZChmYWxzZSkKICAgICAgICAgLCBtX2FueUNoYXJhY3RlcihmYWxzZSkK
QEAgLTMzOCw3ICszMzgsNyBAQCBwdWJsaWM6CiBzdHJ1Y3QgUGF0dGVybkRpc2p1bmN0aW9uIHsK
ICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBQYXR0ZXJuRGlzanVu
Y3Rpb24oUGF0dGVybkFsdGVybmF0aXZlKiBwYXJlbnQgPSAwKQorICAgIFBhdHRlcm5EaXNqdW5j
dGlvbihQYXR0ZXJuQWx0ZXJuYXRpdmUqIHBhcmVudCA9IG51bGxwdHIpCiAgICAgICAgIDogbV9w
YXJlbnQocGFyZW50KQogICAgICAgICAsIG1faGFzRml4ZWRTaXplKGZhbHNlKQogICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398991</attachid>
            <date>2020-05-10 18:53:29 -0700</date>
            <delta_ts>2020-05-10 19:36:12 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-211706-20200510185328.patch</filename>
            <type>text/plain</type>
            <size>326122</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxNDYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
MTI5MjRhZTgzNDkzMTEyYTBjOGUxZGQ1Yzk5MjQ5Mzc3NWE3YTAzLi42OWNjODYyZWZhNDUyN2Vk
ZjA0ZTM4MDRiYjIxODhjZDU4NTM2OTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNzYgQEAKKzIwMjAtMDUtMTAgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNv
bnkuY29tPgorCisgICAgICAgIFtjbGFuZy10aWR5XSBSdW4gbW9kZXJuaXplLXVzZS1udWxscHRy
IG92ZXIgSlNDCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMTE3MDYKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAgICAq
IEFQSS9BUElDYWxsYmFja0Z1bmN0aW9uLmg6CisgICAgICAgICogQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0Lmg6CisgICAgICAgICogQVBJL0pTQmFzZS5jcHA6CisgICAgICAgICogQVBJL0pTQ2FsbGJh
Y2tPYmplY3RGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBBUEkvSlNDbGFzc1JlZi5jcHA6CisgICAg
ICAgICogQVBJL0pTQ29udGV4dFJlZi5jcHA6CisgICAgICAgICogQVBJL0pTT2JqZWN0UmVmLmNw
cDoKKyAgICAgICAgKiBBUEkvSlNTY3JpcHRSZWYuY3BwOgorICAgICAgICAqIEFQSS9KU1ZhbHVl
UmVmLmNwcDoKKyAgICAgICAgKiBBUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHA6Cisg
ICAgICAgICogQVBJL3Rlc3RzL0V4ZWN1dGlvblRpbWVMaW1pdFRlc3QuY3BwOgorICAgICAgICAq
IEFQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcDoKKyAgICAgICAgKiBhc3Nl
bWJsZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oOgorICAgICAgICAqIGFzc2VtYmxlci9DUFUu
Y3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgICogYnl0ZWNv
ZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0dldEJ5SWRWYXJp
YW50LmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcDoKKyAgICAgICAg
KiBieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGJ5dGVjb2RlL0xhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmNwcDoKKyAgICAgICAgKiBieXRlY29kZS9QdXRCeUlkVmFyaWFu
dC5jcHA6CisgICAgICAgICogYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmg6CisgICAgICAgICogYnl0
ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHA6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmg6CisgICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6Cisg
ICAgICAgICogZGVidWdnZXIvRGVidWdnZXJTY29wZS5oOgorICAgICAgICAqIGRmZy9ERkdBYnN0
cmFjdFZhbHVlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQWRqYWNlbmN5TGlzdC5oOgorICAgICAg
ICAqIGRmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmg6CisgICAgICAgICogZGZnL0RGR0FycmF5aWZ5
U2xvd1BhdGhHZW5lcmF0b3IuaDoKKyAgICAgICAgKiBkZmcvREZHQXZhaWxhYmlsaXR5Lmg6Cisg
ICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAgKiBkZmcvREZHQ0ZH
U2ltcGxpZmljYXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0NQU1JldGhyZWFkaW5n
UGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdDb21waWxhdGlvbktleS5oOgorICAgICAgICAq
IGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0Rpc2Fz
c2VtYmxlci5jcHA6CisgICAgICAgICogZGZnL0RGR0RvdWJsZUZvcm1hdFN0YXRlLmg6CisgICAg
ICAgICogZGZnL0RGR0VkZ2UuaDoKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6Cisg
ICAgICAgICogZGZnL0RGR0Zyb3plblZhbHVlLmNwcDoKKyAgICAgICAgKiBkZmcvREZHR2VuZXJh
dGlvbkluZm8uaDoKKyAgICAgICAgKiBkZmcvREZHR3JhcGguaDoKKyAgICAgICAgKiBkZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwOgorICAgICAgICAqIGRmZy9ERkdJbnRlZ2VyQ2hlY2tD
b21iaW5pbmdQaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR0xhenlKU1ZhbHVlLmNwcDoKKyAg
ICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAgICAqIGRmZy9ERkdPU1JFbnRyeXBvaW50Q3Jl
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR09TUkV4aXQuY3BwOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKiBkZmcvREZHU2lsZW50UmVnaXN0ZXJT
YXZlUGxhbi5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHA6CisgICAgICAg
ICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmg6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZl
SklUNjQuY3BwOgorICAgICAgICAqIGRmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHVHJhbnNpdGlvbi5jcHA6CisgICAgICAgICogZGZnL0RGR1R5cGVD
aGVja0hvaXN0aW5nUGhhc2UuY3BwOgorICAgICAgICAqIGRmZy9ERkdXb3JrbGlzdC5jcHA6Cisg
ICAgICAgICogZnRsL0ZUTEFic3RyYWN0SGVhcFJlcG9zaXRvcnkuaDoKKyAgICAgICAgKiBmdGwv
RlRMQXZhaWxhYmxlUmVjb3ZlcnkuaDoKKyAgICAgICAgKiBmdGwvRlRMRXhpdFZhbHVlLmNwcDoK
KyAgICAgICAgKiBmdGwvRlRMRm9ybWF0dGVkVmFsdWUuaDoKKyAgICAgICAgKiBmdGwvRlRMSklU
Q29kZS5jcHA6CisgICAgICAgICogZnRsL0ZUTExpbmsuY3BwOgorICAgICAgICAqIGZ0bC9GVExM
b3dlckRGR1RvQjMuY3BwOgorICAgICAgICAqIGZ0bC9GVExMb3dlcmVkTm9kZVZhbHVlLmg6Cisg
ICAgICAgICogZnRsL0ZUTE9TUkVudHJ5LmNwcDoKKyAgICAgICAgKiBmdGwvRlRMT1NSRXhpdENv
bXBpbGVyLmNwcDoKKyAgICAgICAgKiBmdGwvRlRMVHlwZWRQb2ludGVyLmg6CisgICAgICAgICog
ZnRsL0ZUTFZhbHVlRnJvbUJsb2NrLmg6CisgICAgICAgICogZnRsL0ZUTFZhbHVlUmFuZ2UuaDoK
KyAgICAgICAgKiBoZWFwL0dDU2VnbWVudGVkQXJyYXkuaDoKKyAgICAgICAgKiBoZWFwL0hhbmRs
ZS5oOgorICAgICAgICAqIGhlYXAvSGFuZGxlU2V0Lmg6CisgICAgICAgICogaGVhcC9IYW5kbGVU
eXBlcy5oOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHA6CisgICAgICAg
ICogaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaDoKKyAgICAgICAgKiBoZWFwL1N0cm9uZy5oOgor
ICAgICAgICAqIGhlYXAvV2Vha0ltcGwuaDoKKyAgICAgICAgKiBoZWFwL1dlYWtJbmxpbmVzLmg6
CisgICAgICAgICogaGVhcC9XZWFrU2V0LmNwcDoKKyAgICAgICAgKiBoZWFwL1dlYWtTZXQuaDoK
KyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwOgorICAgICAgICAqIGludGVycHJl
dGVyL0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoK
KyAgICAgICAgKiBpbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oOgorICAgICAgICAqIGludGVy
cHJldGVyL1N0YWNrVmlzaXRvci5jcHA6CisgICAgICAgICogaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmg6CisgICAgICAgICogaml0L0Fzc2VtYmx5SGVscGVycy5oOgorICAgICAgICAqIGppdC9D
Q2FsbEhlbHBlcnMuaDoKKyAgICAgICAgKiBqaXQvSklUQ29kZS5jcHA6CisgICAgICAgICogaml0
L0pJVE9wZXJhdGlvbnMuY3BwOgorICAgICAgICAqIGppdC9SZXBhdGNoLmNwcDoKKyAgICAgICAg
KiBqaXQvVGh1bmtHZW5lcmF0b3JzLmNwcDoKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAq
IGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvQVNUQnVpbGRlci5o
OgorICAgICAgICAqIHBhcnNlci9MZXhlci5jcHA6CisgICAgICAgICogcGFyc2VyL0xleGVyLmg6
CisgICAgICAgICogcGFyc2VyL05vZGVzLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMuaDoK
KyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6
CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKyAgICAgICAgKiBwYXJzZXIvUGFy
c2VyQXJlbmEuaDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmg6CisgICAg
ICAgICogcGFyc2VyL1N5bnRheENoZWNrZXIuaDoKKyAgICAgICAgKiBwYXJzZXIvVW5saW5rZWRT
b3VyY2VDb2RlLmg6CisgICAgICAgICogcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNl
LmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlckNvbXBpbGF0aW9uLmNwcDoKKyAgICAg
ICAgKiBwcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Q
cm9maWxlck9TUkV4aXRTaXRlLmNwcDoKKyAgICAgICAgKiBwcm9maWxlci9Qcm9maWxlck9yaWdp
blN0YWNrLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0FyZ0xpc3QuaDoKKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5jcHA6CisgICAgICAgICogcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwOgorICAgICAgICAq
IHJ1bnRpbWUvQ29tcGxldGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvRGF0YVZpZXcuaDoKKyAg
ICAgICAgKiBydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRGly
ZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvRHVtcENvbnRleHQuY3Bw
OgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKiBy
dW50aW1lL0luZGlyZWN0RXZhbEV4ZWN1dGFibGUuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheS5jcHA6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHA6CisgICAg
ICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFs
dWVJbmxpbmVzLmg6CisgICAgICAgICogcnVudGltZS9KU0NlbGwuY3BwOgorICAgICAgICAqIHJ1
bnRpbWUvSlNEYXRhVmlldy5jcHA6CisgICAgICAgICogcnVudGltZS9KU0Rlc3RydWN0aWJsZU9i
amVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNGdW5jdGlvbi5jcHA6CisgICAgICAgICogcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgICogcnVudGlt
ZS9KU09iamVjdC5jcHA6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvSlNTY29wZS5jcHA6CisgICAgICAgICogcnVudGltZS9KU1Njb3BlLmg6CisgICAg
ICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKiBydW50aW1lL09wdGlv
bnNMaXN0Lmg6CisgICAgICAgICogcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwOgorICAg
ICAgICAqIHJ1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUuaDoKKyAgICAgICAgKiBydW50aW1l
L1Byb3BlcnR5U2xvdC5oOgorICAgICAgICAqIHJ1bnRpbWUvUHV0UHJvcGVydHlTbG90Lmg6Cisg
ICAgICAgICogcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXkuaDoKKyAgICAgICAgKiBydW50aW1l
L1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUu
Y3BwOgorICAgICAgICAqIHJ1bnRpbWUvU3RydWN0dXJlLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1N0cnVjdHVyZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcDoKKyAg
ICAgICAgKiBydW50aW1lL1R5cGVkQXJyYXlUeXBlLmNwcDoKKyAgICAgICAgKiBydW50aW1lL1ZN
LmNwcDoKKyAgICAgICAgKiBydW50aW1lL1dhdGNoZG9nLmNwcDoKKyAgICAgICAgKiBydW50aW1l
L1dhdGNoZG9nLmg6CisgICAgICAgICogcnVudGltZS9Xcml0ZUJhcnJpZXIuaDoKKyAgICAgICAg
KiB0ZXN0UmVnRXhwLmNwcDoKKyAgICAgICAgKiB0b29scy9KU0RvbGxhclZNLmNwcDoKKyAgICAg
ICAgKiB3YXNtL1dhc21TbG93UGF0aHMuY3BwOgorICAgICAgICAqIHlhcnIvUmVndWxhckV4cHJl
c3Npb24uaDoKKyAgICAgICAgKiB5YXJyL1lhcnJJbnRlcnByZXRlci5jcHA6CisgICAgICAgICog
eWFyci9ZYXJySklULmNwcDoKKyAgICAgICAgKiB5YXJyL1lhcnJKSVQuaDoKKyAgICAgICAgKiB5
YXJyL1lhcnJQYXR0ZXJuLmNwcDoKKyAgICAgICAgKiB5YXJyL1lhcnJQYXR0ZXJuLmg6CisKIDIw
MjAtMDUtMDkgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAg
ICAgIEZpeCBidWlsZCBlcnJvcnMgYW5kIHdhcm5pbmdzIGZvciBub24tdW5pZmllZCBKU0NPbmx5
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rp
b24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCmlu
ZGV4IDQxZThmM2FlNGRkYjc3MDFmNjdjN2FiNzllNjgzODRlMDJhNTVmZmUuLjhjYzNjZWI0YzM4
ODMxN2NmMTNlY2FkMWFjN2EwOWY2ZTIyMDNkNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvQVBJQ2FsbGJhY2tGdW5jdGlvbi5oCkBAIC01Niw3ICs1Niw3IEBAIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y2FsbChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyBp
KyspCiAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7CiAKLSAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwogICAgIEpT
VmFsdWVSZWYgcmVzdWx0OwogICAgIHsKICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJv
cEFsbExvY2tzKGdsb2JhbE9iamVjdCk7CkBAIC05MSw3ICs5MSw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgQVBJQ2FsbGJhY2tGdW5jdGlvbjo6Y29uc3RydWN0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsg
KytpKQogICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKIAotICAgICAgICBKU1Zh
bHVlUmVmIGV4Y2VwdGlvbiA9IDA7CisgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVs
bHB0cjsKICAgICAgICAgSlNPYmplY3RSZWYgcmVzdWx0OwogICAgICAgICB7CiAgICAgICAgICAg
ICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVu
Y3Rpb246OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRvSlMocmVzdWx0KSk7CiAgICAgfQogICAgIAotICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUyhKU09iamVjdE1ha2UoY3R4LCBqc0Nhc3Q8SlNDYWxsYmFja0NvbnN0
cnVjdG9yKj4oY29uc3RydWN0b3IpLT5jbGFzc1JlZigpLCAwKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodG9KUyhKU09iamVjdE1ha2UoY3R4LCBqc0Nhc3Q8SlNDYWxsYmFja0NvbnN0
cnVjdG9yKj4oY29uc3RydWN0b3IpLT5jbGFzc1JlZigpLCBudWxscHRyKSkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNB
UElHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNBUElHbG9iYWxP
YmplY3QuaAppbmRleCBhYWVlMWMxYzQ0MjY5N2NiZTEyZTU1NDEzZmIzYTI3NTI3ZjlhNmJlLi43
Mzk3YzZiNGE2MGM2MmMzOGY0MGM2ODEwNzYxYzg1YzhmYzNjYzc0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5oCkBAIC01NCw3ICs1NCw3IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpT
VmFsdWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgYXV0byogcmVzdWx0ID0gU3RydWN0dXJl
OjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3Ry
dWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICBhdXRvKiByZXN1bHQgPSBTdHJ1Y3R1cmU6
OmNyZWF0ZSh2bSwgbnVsbHB0ciwgcHJvdG90eXBlLCBUeXBlSW5mbyhHbG9iYWxPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiAgICAgICAgIHJlc3VsdC0+c2V0VHJhbnNpdGlv
bldhdGNocG9pbnRJc0xpa2VseVRvQmVGaXJlZCh0cnVlKTsKICAgICAgICAgcmV0dXJuIHJlc3Vs
dDsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQmFzZS5jcHAKaW5kZXggMDgzYTdkM2I4
YzdjYmJjMTQxMTdhMDBkNGUyMzg2N2NiYzQ2MWQ4Zi4uNGRmYmJjMWYwNTkwZTBlZmIzYTY0N2Uy
YmNiYWI3NmM0ZmU0NTM4OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNCYXNlLmNwcApAQCAt
MTkzLDcgKzE5Myw3IEBAIEpTT2JqZWN0UmVmIEpTR2V0TWVtb3J5VXNhZ2VTdGF0aXN0aWNzKEpT
Q29udGV4dFJlZiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpIHsKICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiAKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rp
b25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaAppbmRleCBkOTkzNGM5MzgzN2YyMGZkYjA0ODA4ZDY2ZGQ4NGVkZTExM2QxMmExLi5hZDJk
MzllMmE3Y2E3NTc1MDU0MDdlOTM3MjQ4MzI0NWVmODZlZDYyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMuaApAQCAtMTc1
LDcgKzE3NSw3IEBAIGJvb2wgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRPd25Qcm9wZXJ0
eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxPYmplCiAgICAgICAgICAgICB9IGVsc2Ug
aWYgKEpTT2JqZWN0R2V0UHJvcGVydHlDYWxsYmFjayBnZXRQcm9wZXJ0eSA9IGpzQ2xhc3MtPmdl
dFByb3BlcnR5KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwcm9wZXJ0eU5hbWVSZWYpCiAgICAg
ICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVh
dGUobmFtZSk7Ci0gICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAg
ICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAg
ICAgICBKU1ZhbHVlUmVmIHZhbHVlOwogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKGdsb2JhbE9iamVjdCk7CkBA
IC0yMzQsNyArMjM0LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmRlZmF1
bHRWYWx1ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE8KIAogICAgIGZvciAoSlND
bGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYoKTsganNDbGFzczsganNDbGFz
cyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlmIChKU09iamVjdENvbnZlcnRU
b1R5cGVDYWxsYmFjayBjb252ZXJ0VG9UeXBlID0ganNDbGFzcy0+Y29udmVydFRvVHlwZSkgewot
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgICAgICAgICAgSlNWYWx1
ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiByZXN1bHQg
PSBjb252ZXJ0VG9UeXBlKGN0eCwgdGhpc1JlZiwganNIaW50LCAmZXhjZXB0aW9uKTsKICAgICAg
ICAgICAgIGlmIChleGNlcHRpb24pIHsKICAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCB0b0pTKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKSk7CkBAIC0y
NjUsNyArMjY1LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnB1dChKU0NlbGwq
IGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFAKICAgICAgICAgICAgIGlmIChK
U09iamVjdFNldFByb3BlcnR5Q2FsbGJhY2sgc2V0UHJvcGVydHkgPSBqc0NsYXNzLT5zZXRQcm9w
ZXJ0eSkgewogICAgICAgICAgICAgICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQogICAgICAgICAg
ICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG5h
bWUpOwotICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAgICAg
ICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAg
Ym9vbCByZXN1bHQ7CiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBKU0xv
Y2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTI4Miw3ICsy
ODIsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0KEpTQ2VsbCogY2VsbCwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUAogICAgICAgICAgICAgICAgICAgICBpZiAo
ZW50cnktPmF0dHJpYnV0ZXMgJiBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5KQogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICBpZiAo
SlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5ID0gZW50cnktPnNldFByb3Bl
cnR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7
CisgICAgICAgICAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IG51bGxwdHI7
CiAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgICAgICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2Nr
cyBkcm9wQWxsTG9ja3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTMyOSw3ICszMjksNyBAQCBib29sIEpT
Q2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNr
IHNldFByb3BlcnR5ID0ganNDbGFzcy0+c2V0UHJvcGVydHkpIHsKICAgICAgICAgICAgIGlmICgh
cHJvcGVydHlOYW1lUmVmKQogICAgICAgICAgICAgICAgIHByb3BlcnR5TmFtZVJlZiA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUocHJvcGVydHlOYW1lLmltcGwoKSk7Ci0gICAgICAgICAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CisgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IG51bGxwdHI7CiAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgICAgIHsKICAg
ICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoZ2xvYmFsT2Jq
ZWN0KTsKQEAgLTM0Niw3ICszNDYsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6
cHV0QnlJbmRleChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAg
ICAgICAgICAgIGlmIChlbnRyeS0+YXR0cmlidXRlcyAmIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgICAg
ICBpZiAoSlNPYmplY3RTZXRQcm9wZXJ0eUNhbGxiYWNrIHNldFByb3BlcnR5ID0gZW50cnktPnNl
dFByb3BlcnR5KSB7Ci0gICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0g
MDsKKyAgICAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwog
ICAgICAgICAgICAgICAgICAgICBib29sIHJlc3VsdDsKICAgICAgICAgICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tz
KGdsb2JhbE9iamVjdCk7CkBAIC0zODgsNyArMzg4LDcgQEAgYm9vbCBKU0NhbGxiYWNrT2JqZWN0
PFBhcmVudD46OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGds
b2IKICAgICAgICAgICAgIGlmIChKU09iamVjdERlbGV0ZVByb3BlcnR5Q2FsbGJhY2sgZGVsZXRl
UHJvcGVydHkgPSBqc0NsYXNzLT5kZWxldGVQcm9wZXJ0eSkgewogICAgICAgICAgICAgICAgIGlm
ICghcHJvcGVydHlOYW1lUmVmKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5hbWVSZWYg
PSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG5hbWUpOwotICAgICAgICAgICAgICAgIEpTVmFs
dWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlv
biA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgYm9vbCByZXN1bHQ7CiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTQ2MSw3ICs0NjEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nh
bGxiYWNrT2JqZWN0PFBhcmVudD46OmNvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LAogICAgICAgICAgICAgYXJndW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYXJndW1l
bnRDb3VudCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291
bnQ7ICsraSkKICAgICAgICAgICAgICAgICBhcmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVm
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOwotICAgICAg
ICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgICAgICAgICAgSlNWYWx1ZVJlZiBl
eGNlcHRpb24gPSBudWxscHRyOwogICAgICAgICAgICAgSlNPYmplY3QqIHJlc3VsdDsKICAgICAg
ICAgICAgIHsKICAgICAgICAgICAgICAgICBKU0xvY2s6OkRyb3BBbGxMb2NrcyBkcm9wQWxsTG9j
a3MoZ2xvYmFsT2JqZWN0KTsKQEAgLTQ5Miw3ICs0OTIsNyBAQCBib29sIEpTQ2FsbGJhY2tPYmpl
Y3Q8UGFyZW50Pjo6Y3VzdG9tSGFzSW5zdGFuY2UoSlNPYmplY3QqIG9iamVjdCwgSlNHbG9iYWxP
YmplYwogICAgIGZvciAoSlNDbGFzc1JlZiBqc0NsYXNzID0gdGhpc09iamVjdC0+Y2xhc3NSZWYo
KTsganNDbGFzczsganNDbGFzcyA9IGpzQ2xhc3MtPnBhcmVudENsYXNzKSB7CiAgICAgICAgIGlm
IChKU09iamVjdEhhc0luc3RhbmNlQ2FsbGJhY2sgaGFzSW5zdGFuY2UgPSBqc0NsYXNzLT5oYXNJ
bnN0YW5jZSkgewogICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZVJlZiA9IHRvUmVmKGdsb2Jh
bE9iamVjdCwgdmFsdWUpOwotICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwor
ICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSBudWxscHRyOwogICAgICAgICAgICAg
Ym9vbCByZXN1bHQ7CiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9w
QWxsTG9ja3MgZHJvcEFsbExvY2tzKGdsb2JhbE9iamVjdCk7CkBAIC01MzgsNyArNTM4LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAgICAgICAgIGFyZ3VtZW50cy5yZXNlcnZlSW5p
dGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCiAgICAgICAgICAgICAgICAgYXJndW1lbnRzLnVu
Y2hlY2tlZEFwcGVuZCh0b1JlZihnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJn
dW1lbnQoaSkpKTsKLSAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAg
ICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAgICAgICAgICAgIEpTVmFs
dWUgcmVzdWx0OwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFs
bExvY2tzIGRyb3BBbGxMb2NrcyhnbG9iYWxPYmplY3QpOwpAQCAtNjM1LDcgKzYzNSw3IEBAIEpT
VmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpnZXRTdGF0aWNWYWx1ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQCiAgICAgICAgICAgICBpZiAoT3BhcXVlSlNDbGFzc1N0YXRp
Y1ZhbHVlc1RhYmxlKiBzdGF0aWNWYWx1ZXMgPSBqc0NsYXNzLT5zdGF0aWNWYWx1ZXMoZ2xvYmFs
T2JqZWN0KSkgewogICAgICAgICAgICAgICAgIGlmIChTdGF0aWNWYWx1ZUVudHJ5KiBlbnRyeSA9
IHN0YXRpY1ZhbHVlcy0+Z2V0KG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChKU09i
amVjdEdldFByb3BlcnR5Q2FsbGJhY2sgZ2V0UHJvcGVydHkgPSBlbnRyeS0+Z2V0UHJvcGVydHkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gbnVsbHB0cjsKICAg
ICAgICAgICAgICAgICAgICAgICAgIEpTVmFsdWVSZWYgdmFsdWU7CiAgICAgICAgICAgICAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSlNMb2NrOjpEcm9wQWxsTG9j
a3MgZHJvcEFsbExvY2tzKGdsb2JhbE9iamVjdCk7CkBAIC03MDIsNyArNzAyLDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpjYWxsYmFja0dldHRlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2IKICAgICAgICAgICAgIGlmIChKU09iamVjdEdldFByb3BlcnR5Q2Fs
bGJhY2sgZ2V0UHJvcGVydHkgPSBqc0NsYXNzLT5nZXRQcm9wZXJ0eSkgewogICAgICAgICAgICAg
ICAgIGlmICghcHJvcGVydHlOYW1lUmVmKQogICAgICAgICAgICAgICAgICAgICBwcm9wZXJ0eU5h
bWVSZWYgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKG5hbWUpOwotICAgICAgICAgICAgICAg
IEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IG51bGxwdHI7CiAgICAgICAgICAgICAgICAgSlNWYWx1ZVJlZiB2YWx1ZTsKICAg
ICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIEpTTG9jazo6RHJvcEFsbExvY2tz
IGRyb3BBbGxMb2NrcyhnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlND
bGFzc1JlZi5jcHAKaW5kZXggOTJkZjYzOGUxNWVlNzcyZjliZGMxMjZjMTBmNDc4MDFjYmY2Y2Rh
Mi4uNTBmNTNlMDMzNTdhZDk4Mjc4NDBkMGFhMGNmZDc1MTMxYzJhYjJjOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NsYXNzUmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ2xhc3NSZWYuY3BwCkBAIC0zOCwxMSArMzgsMTEgQEAKIAogdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAotY29uc3QgSlNDbGFzc0RlZmluaXRpb24ga0pTQ2xhc3NEZWZp
bml0aW9uRW1wdHkgPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAgfTsKK2NvbnN0IEpTQ2xhc3NEZWZpbml0aW9uIGtKU0NsYXNzRGVmaW5pdGlvbkVt
cHR5ID0geyAwLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07CiAKIE9wYXF1ZUpTQ2xhc3M6Ok9w
YXF1ZUpTQ2xhc3MoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24sIE9wYXF1ZUpT
Q2xhc3MqIHByb3RvQ2xhc3MpIAogICAgIDogcGFyZW50Q2xhc3MoZGVmaW5pdGlvbi0+cGFyZW50
Q2xhc3MpCi0gICAgLCBwcm90b3R5cGVDbGFzcygwKQorICAgICwgcHJvdG90eXBlQ2xhc3MobnVs
bHB0cikKICAgICAsIGluaXRpYWxpemUoZGVmaW5pdGlvbi0+aW5pdGlhbGl6ZSkKICAgICAsIGZp
bmFsaXplKGRlZmluaXRpb24tPmZpbmFsaXplKQogICAgICwgaGFzUHJvcGVydHkoZGVmaW5pdGlv
bi0+aGFzUHJvcGVydHkpCkBAIC0xMDcsNyArMTA3LDcgQEAgT3BhcXVlSlNDbGFzczo6fk9wYXF1
ZUpTQ2xhc3MoKQogCiBSZWY8T3BhcXVlSlNDbGFzcz4gT3BhcXVlSlNDbGFzczo6Y3JlYXRlTm9B
dXRvbWF0aWNQcm90b3R5cGUoY29uc3QgSlNDbGFzc0RlZmluaXRpb24qIGRlZmluaXRpb24pCiB7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNDbGFzcyhkZWZpbml0aW9uLCAwKSk7
CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgT3BhcXVlSlNDbGFzcyhkZWZpbml0aW9uLCBudWxs
cHRyKSk7CiB9CiAKIFJlZjxPcGFxdWVKU0NsYXNzPiBPcGFxdWVKU0NsYXNzOjpjcmVhdGUoY29u
c3QgSlNDbGFzc0RlZmluaXRpb24qIGNsaWVudERlZmluaXRpb24pCkBAIC0xMTUsMTIgKzExNSwx
MiBAQCBSZWY8T3BhcXVlSlNDbGFzcz4gT3BhcXVlSlNDbGFzczo6Y3JlYXRlKGNvbnN0IEpTQ2xh
c3NEZWZpbml0aW9uKiBjbGllbnREZWZpbml0aQogICAgIEpTQ2xhc3NEZWZpbml0aW9uIGRlZmlu
aXRpb24gPSAqY2xpZW50RGVmaW5pdGlvbjsgLy8gQXZvaWQgbW9kaWZ5aW5nIGNsaWVudCBjb3B5
LgogCiAgICAgSlNDbGFzc0RlZmluaXRpb24gcHJvdG9EZWZpbml0aW9uID0ga0pTQ2xhc3NEZWZp
bml0aW9uRW1wdHk7Ci0gICAgcHJvdG9EZWZpbml0aW9uLmZpbmFsaXplID0gMDsKKyAgICBwcm90
b0RlZmluaXRpb24uZmluYWxpemUgPSBudWxscHRyOwogICAgIHN0ZDo6c3dhcChkZWZpbml0aW9u
LnN0YXRpY0Z1bmN0aW9ucywgcHJvdG9EZWZpbml0aW9uLnN0YXRpY0Z1bmN0aW9ucyk7IC8vIE1v
dmUgc3RhdGljIGZ1bmN0aW9ucyB0byB0aGUgcHJvdG90eXBlLgogICAgIAogICAgIC8vIFdlIGFy
ZSBzdXBwb3NlZCB0byB1c2UgSlNDbGFzc1JldGFpbi9SZWxlYXNlIGJ1dCBzaW5jZSB3ZSBrbm93
IHRoYXQgd2UgY3VycmVudGx5IGhhdmUKICAgICAvLyB0aGUgb25seSByZWZlcmVuY2UgdG8gdGhp
cyBjbGFzcyBvYmplY3Qgd2UgY2hlYXQgYW5kIHVzZSBhIFJlZlB0ciBpbnN0ZWFkLgotICAgIFJl
ZlB0cjxPcGFxdWVKU0NsYXNzPiBwcm90b0NsYXNzID0gYWRvcHRSZWYobmV3IE9wYXF1ZUpTQ2xh
c3MoJnByb3RvRGVmaW5pdGlvbiwgMCkpOworICAgIFJlZlB0cjxPcGFxdWVKU0NsYXNzPiBwcm90
b0NsYXNzID0gYWRvcHRSZWYobmV3IE9wYXF1ZUpTQ2xhc3MoJnByb3RvRGVmaW5pdGlvbiwgbnVs
bHB0cikpOwogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IE9wYXF1ZUpTQ2xhc3MoJmRlZmluaXRp
b24sIHByb3RvQ2xhc3MuZ2V0KCkpKTsKIH0KIApAQCAtMTgyLDcgKzE4Miw3IEBAIEpTT2JqZWN0
KiBPcGFxdWVKU0NsYXNzOjpwcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICAgKi8KIAogICAgIGlmICghcHJvdG90eXBlQ2xhc3MpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIE9wYXF1ZUpTQ2xhc3NDb250ZXh0RGF0YSYg
anNDbGFzc0RhdGEgPSBjb250ZXh0RGF0YShnbG9iYWxPYmplY3QpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTQ29udGV4dFJlZi5jcHAKaW5kZXggZDY5YzMzMmMzMTUxYWQ4ZjBlZDRj
YmRjMjAwMjBiZTUyODc2NzdlMS4uYTVkYzFiNGU1YTFhNWU2NjM0MDA5ZTE4YmFiOWJjODlmMWJi
ZDBiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NvbnRleHRSZWYu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDb250ZXh0UmVmLmNwcApAQCAt
MTI4LDcgKzEyOCw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0dsb2JhbENvbnRleHRDcmVhdGUo
SlNDbGFzc1JlZiBnbG9iYWxPYmplY3RDbGFzcykKICAgICB9CiAjZW5kaWYgLy8gT1MoREFSV0lO
KQogCi0gICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoMCwgZ2xvYmFsT2Jq
ZWN0Q2xhc3MpOworICAgIHJldHVybiBKU0dsb2JhbENvbnRleHRDcmVhdGVJbkdyb3VwKG51bGxw
dHIsIGdsb2JhbE9iamVjdENsYXNzKTsKIH0KIAogSlNHbG9iYWxDb250ZXh0UmVmIEpTR2xvYmFs
Q29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpTQ2xhc3NSZWYg
Z2xvYmFsT2JqZWN0Q2xhc3MpCkBAIC0xNDgsNyArMTQ4LDcgQEAgSlNHbG9iYWxDb250ZXh0UmVm
IEpTR2xvYmFsQ29udGV4dENyZWF0ZUluR3JvdXAoSlNDb250ZXh0R3JvdXBSZWYgZ3JvdXAsIEpT
Q2xhc3MKICAgICAgICAgcmV0dXJuIEpTR2xvYmFsQ29udGV4dFJldGFpbih0b0dsb2JhbFJlZihn
bG9iYWxPYmplY3QpKTsKICAgICB9CiAKLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gSlNDYWxsYmFja09iamVjdDxKU0dsb2JhbE9iamVjdD46OmNyZWF0ZSh2bS5nZXQoKSwgZ2xv
YmFsT2JqZWN0Q2xhc3MsIEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGVT
dHJ1Y3R1cmUodm0uZ2V0KCksIDAsIGpzTnVsbCgpKSk7CisgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IEpTQ2FsbGJhY2tPYmplY3Q8SlNHbG9iYWxPYmplY3Q+OjpjcmVhdGUodm0u
Z2V0KCksIGdsb2JhbE9iamVjdENsYXNzLCBKU0NhbGxiYWNrT2JqZWN0PEpTR2xvYmFsT2JqZWN0
Pjo6Y3JlYXRlU3RydWN0dXJlKHZtLmdldCgpLCBudWxscHRyLCBqc051bGwoKSkpOwogICAgIEpT
VmFsdWUgcHJvdG90eXBlID0gZ2xvYmFsT2JqZWN0Q2xhc3MtPnByb3RvdHlwZShnbG9iYWxPYmpl
Y3QpOwogICAgIGlmICghcHJvdG90eXBlKQogICAgICAgICBwcm90b3R5cGUgPSBqc051bGwoKTsK
QEAgLTE4Nyw3ICsxODcsNyBAQCBKU09iamVjdFJlZiBKU0NvbnRleHRHZXRHbG9iYWxPYmplY3Qo
SlNDb250ZXh0UmVmIGN0eCkKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTIwMCw3ICsyMDAsNyBAQCBKU0NvbnRl
eHRHcm91cFJlZiBKU0NvbnRleHRHZXRHcm91cChKU0NvbnRleHRSZWYgY3R4KQogewogICAgIGlm
ICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgcmV0dXJuIHRvUmVmKCZnbG9iYWxPYmplY3Qt
PnZtKCkpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBKU0NvbnRleHRH
ZXRHbG9iYWxDb250ZXh0KEpTQ29udGV4dFJlZiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpIHsKICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9
IHRvSlMoY3R4KTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbE9iamVjdCk7CkBAIC0y
MjIsNyArMjIyLDcgQEAgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNHbG9i
YWxDb250ZXh0UmVmIGN0eCkKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CkBA
IC0yMzEsNyArMjMxLDcgQEAgSlNTdHJpbmdSZWYgSlNHbG9iYWxDb250ZXh0Q29weU5hbWUoSlNH
bG9iYWxDb250ZXh0UmVmIGN0eCkKIAogICAgIFN0cmluZyBuYW1lID0gZ2xvYmFsT2JqZWN0LT5u
YW1lKCk7CiAgICAgaWYgKG5hbWUuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHJldHVybiBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRl
KG5hbWUpLmxlYWtSZWYoKTsKIH0KQEAgLTMyNCw3ICszMjQsNyBAQCBKU1N0cmluZ1JlZiBKU0Nv
bnRleHRDcmVhdGVCYWNrdHJhY2UoSlNDb250ZXh0UmVmIGN0eCwgdW5zaWduZWQgbWF4U3RhY2tT
aXplKQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U09iamVjdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNw
cAppbmRleCBmNzJiMGFhNzMwYjM2MTg2ZWMzYThiNzdiYjE1OTE3M2YwMmQ3NGJlLi5mYWExODhk
OTNjMDJiZWFiY2ZmNzJkYWUyZTJlM2ZlMjFiNGJkNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTT2JqZWN0UmVmLmNwcApAQCAtODcsNyArODcsNyBAQCBKU09iamVjdFJlZiBKU09i
amVjdE1ha2UoSlNDb250ZXh0UmVmIGN0eCwgSlNDbGFzc1JlZiBqc0NsYXNzLCB2b2lkKiBkYXRh
KQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZUZ1bmN0aW9uV2l0aENhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUs
CiB7CiAgICAgaWYgKCFjdHgpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAg
ICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY3R4KTsKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CkBAIC0xMTksMTMgKzExOSwxMyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1h
a2VDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2Jq
ZQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIodm0pOwogCi0gICAgSlNWYWx1
ZSBqc1Byb3RvdHlwZSA9IGpzQ2xhc3MgPyBqc0NsYXNzLT5wcm90b3R5cGUoZ2xvYmFsT2JqZWN0
KSA6IDA7CisgICAgSlNWYWx1ZSBqc1Byb3RvdHlwZSA9IGpzQ2xhc3MgPyBqc0NsYXNzLT5wcm90
b3R5cGUoZ2xvYmFsT2JqZWN0KSA6IG51bGxwdHI7CiAgICAgaWYgKCFqc1Byb3RvdHlwZSkKICAg
ICAgICAganNQcm90b3R5cGUgPSBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpOwogCkBA
IC0xMzgsNyArMTM4LDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRnVuY3Rpb24oSlNDb250
ZXh0UmVmIGN0eCwgSlNTdHJpbmdSZWYgbmFtZSwgdW5zaWduZWQgcGEKIHsKICAgICBpZiAoIWN0
eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAg
LTE1NiwxMyArMTU2LDEzIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uKEpTQ29u
dGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsIHVuc2lnbmVkIHBhCiAgICAgICAgIGF1dG8g
dGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKICAgICAgICAgaGFuZGxlRXhj
ZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8gc291cmNlVVJMU3Ry
aW5nID0gc291cmNlVVJMID8gc291cmNlVVJMLT5zdHJpbmcoKSA6IFN0cmluZygpOwogICAgIEpT
T2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RGdW5jdGlvbihnbG9iYWxPYmplY3QsIGFyZ3MsIG5h
bWVJRCwgU291cmNlT3JpZ2luIHsgc291cmNlVVJMU3RyaW5nIH0sIHNvdXJjZVVSTFN0cmluZywg
VGV4dFBvc2l0aW9uKE9yZGluYWxOdW1iZXI6OmZyb21PbmVCYXNlZEludChzdGFydGluZ0xpbmVO
dW1iZXIpLCBPcmRpbmFsTnVtYmVyKCkpKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQot
ICAgICAgICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVy
biB0b1JlZihyZXN1bHQpOwogfQogCkBAIC0xNzAsNyArMTcwLDcgQEAgSlNPYmplY3RSZWYgSlNP
YmplY3RNYWtlQXJyYXkoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNv
bnN0IEpTVmEKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTE4NiwxNSArMTg2LDE1IEBAIEpTT2JqZWN0UmVmIEpT
T2JqZWN0TWFrZUFycmF5KEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBj
b25zdCBKU1ZhCiAgICAgICAgICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKICAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUpOwogICAgICAgICAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUs
IGN0eCwgZXhjZXB0aW9uKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIAotICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RBcnJh
eShnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PEFycmF5QWxsb2NhdGlvblByb2ZpbGUqPigwKSwg
YXJnTGlzdCk7CisgICAgICAgIHJlc3VsdCA9IGNvbnN0cnVjdEFycmF5KGdsb2JhbE9iamVjdCwg
c3RhdGljX2Nhc3Q8QXJyYXlBbGxvY2F0aW9uUHJvZmlsZSo+KG51bGxwdHIpLCBhcmdMaXN0KTsK
ICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxP
YmplY3QsIDApOworICAgICAgICByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9i
amVjdCwgbnVsbHB0cik7CiAKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUs
IGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAgICBy
ZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogCiAgICAgcmV0dXJuIHRvUmVm
KHJlc3VsdCk7CiB9CkBAIC0yMDMsNyArMjAzLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtl
RGF0ZShKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWwK
IHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKQEAgLTIxNywxMiArMjE3LDEyIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFr
ZURhdGUoSlNDb250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
CiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsKICAg
ICAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIEpT
T2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3REYXRlKGdsb2JhbE9iamVjdCwgSlNWYWx1ZSgpLCBh
cmdMaXN0KTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhj
ZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAgICByZXN1bHQgPSAw
OworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogCiAgICAgcmV0dXJuIHRvUmVmKHJlc3VsdCk7
CiB9CkBAIC0yMzEsNyArMjMxLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlRXJyb3IoSlND
b250ZXh0UmVmIGN0eCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmEKIHsKICAgICBp
ZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKQEAgLTI0Myw3ICsyNDMsNyBAQCBKU09iamVjdFJlZiBKU09iamVjdE1ha2VFcnJvcihKU0Nv
bnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYQogICAgIEpTT2Jq
ZWN0KiByZXN1bHQgPSBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCBlcnJvclN0
cnVjdHVyZSwgbWVzc2FnZSk7CiAKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2Nv
cGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAg
ICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogCiAgICAgcmV0dXJuIHRv
UmVmKHJlc3VsdCk7CiB9CkBAIC0yNTIsNyArMjUyLDcgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RN
YWtlUmVnRXhwKEpTQ29udGV4dFJlZiBjdHgsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1YKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKQEAgLTI2NiwxMiArMjY2LDEyIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0
TWFrZVJlZ0V4cChKU0NvbnRleHRSZWYgY3R4LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3Qg
SlNWCiAgICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlKTsK
ICAgICAgICAgaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAg
IEpTT2JqZWN0KiByZXN1bHQgPSBjb25zdHJ1Y3RSZWdFeHAoZ2xvYmFsT2JqZWN0LCBhcmdMaXN0
KTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9u
KSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAgICByZXN1bHQgPSAwOworICAg
ICAgICByZXN1bHQgPSBudWxscHRyOwogICAgIAogICAgIHJldHVybiB0b1JlZihyZXN1bHQpOwog
fQpAQCAtMzAzLDcgKzMwMyw3IEBAIEpTVmFsdWVSZWYgSlNPYmplY3RHZXRQcm90b3R5cGUoSlND
b250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAgIGlmICghY3R4KSB7CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmplY3QpOwpAQCAt
NTgwLDcgKzU4MCw3IEBAIHZvaWQqIEpTT2JqZWN0R2V0UHJpdmF0ZShKU09iamVjdFJlZiBvYmpl
Y3QpCiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0NhbGxiYWNrT2JqZWN0PEpTQVBJV3Jh
cHBlck9iamVjdD4qPihqc09iamVjdCktPmdldFByaXZhdGUoKTsKICNlbmRpZgogICAgIAotICAg
IHJldHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBib29sIEpTT2JqZWN0U2V0UHJp
dmF0ZShKU09iamVjdFJlZiBvYmplY3QsIHZvaWQqIGRhdGEpCkBAIC03MTcsNyArNzE3LDcgQEAg
SlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdCwgSlNPYmplY3QKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRSh2bSk7CiAKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAg
IHJldHVybiBudWxscHRyOwogCiAgICAgSlNPYmplY3QqIGpzT2JqZWN0ID0gdG9KUyhvYmplY3Qp
OwogICAgIEpTT2JqZWN0KiBqc1RoaXNPYmplY3QgPSB0b0pTKHRoaXNPYmplY3QpOwpAQCAtNzMy
LDE2ICs3MzIsMTYgQEAgSlNWYWx1ZVJlZiBKU09iamVjdENhbGxBc0Z1bmN0aW9uKEpTQ29udGV4
dFJlZiBjdHgsIEpTT2JqZWN0UmVmIG9iamVjdCwgSlNPYmplY3QKICAgICAgICAgYXV0byB0aHJv
d1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwogICAgICAgICBoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENh
bGxEYXRhKHZtLCBqc09iamVjdCk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEpTVmFsdWVSZWYgcmVzdWx0ID0gdG9SZWYoZ2xvYmFsT2JqZWN0LCBwcm9maWxlZENh
bGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246OkFQSSwganNPYmplY3QsIGNhbGxEYXRh
LCBqc1RoaXNPYmplY3QsIGFyZ0xpc3QpKTsKICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVk
ZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQot
ICAgICAgICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxscHRyOwogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKQEAgLTc2MywxMyArNzYzLDEzIEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0
Q2FsbEFzQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0LCBz
aXplCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hfU0NPUEUodm0pOwogCiAgICAgaWYg
KCFvYmplY3QpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIEpTT2JqZWN0KiBqc09iamVjdCA9IHRvSlMob2JqZWN0KTsKIAogICAgIGF1dG8gY29uc3Ry
dWN0RGF0YSA9IGdldENvbnN0cnVjdERhdGEodm0sIGpzT2JqZWN0KTsKICAgICBpZiAoY29uc3Ry
dWN0RGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdM
aXN0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQpAQCAt
Nzc4LDEyICs3NzgsMTIgQEAgSlNPYmplY3RSZWYgSlNPYmplY3RDYWxsQXNDb25zdHJ1Y3RvcihK
U0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3QsIHNpemUKICAgICAgICAgYXV0byB0
aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwogICAgICAgICBoYW5kbGVFeGNl
cHRpb25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgSlNPYmplY3RSZWYgcmVzdWx0
ID0gdG9SZWYocHJvZmlsZWRDb25zdHJ1Y3QoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246
OkFQSSwganNPYmplY3QsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3QpKTsKICAgICBpZiAoaGFuZGxl
RXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9PSBFeGNlcHRpb25TdGF0
dXM6OkRpZFRocm93KQotICAgICAgICByZXN1bHQgPSAwOworICAgICAgICByZXN1bHQgPSBudWxs
cHRyOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTgwNiw3ICs4MDYsNyBAQCBKU1Byb3Bl
cnR5TmFtZUFycmF5UmVmIEpTT2JqZWN0Q29weVByb3BlcnR5TmFtZXMoSlNDb250ZXh0UmVmIGN0
eCwgSlNPYmplY3RSZWYgbwogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAg
SlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdFJlZi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL0pTU2NyaXB0UmVmLmNwcAppbmRleCBiOWMwYzA4N2VmNTUzMTNhZTIwMmExODMwOTY1OTM3
YjYxZWRkNmVlLi5iYjk2ZWJjY2U2MmNkNGVlZDAwNmQ0NDI3ZTc2MGEyZWQxOWFjMWZmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTU2NyaXB0UmVmLmNwcApAQCAtODgsNyArODgsNyBA
QCBKU1NjcmlwdFJlZiBKU1NjcmlwdENyZWF0ZVJlZmVyZW5jaW5nSW1tb3J0YWxBU0NJSVRleHQo
SlNDb250ZXh0R3JvdXBSZWYgY29udGV4dAogICAgIEpTTG9ja0hvbGRlciBsb2NrZXIoJnZtKTsK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGlmICgh
aXNBU0NJSShzb3VyY2VbaV0pKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBzdGFydGluZ0xpbmVOdW1iZXIgPSBzdGQ6Om1h
eCgxLCBzdGFydGluZ0xpbmVOdW1iZXIpOwpAQCAtMTQ5LDcgKzE0OSw3IEBAIEpTVmFsdWVSZWYg
SlNTY3JpcHRFdmFsdWF0ZShKU0NvbnRleHRSZWYgY29udGV4dCwgSlNTY3JpcHRSZWYgc2NyaXB0
LCBKU1ZhbHVlUmVmCiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7CiAgICAgaWYgKCZzY3Jp
cHQtPnZtKCkgIT0gJnZtKSB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
TmFrZWRQdHI8RXhjZXB0aW9uPiBpbnRlcm5hbEV4Y2VwdGlvbjsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IHRoaXNWYWx1ZVJlZiA/IHRvSlMoZ2xvYmFsT2JqZWN0LCB0aGlzVmFsdWVSZWYpIDog
anNVbmRlZmluZWQoKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBKU1ZhbHVlUmVmIEpTU2NyaXB0RXZh
bHVhdGUoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTU2NyaXB0UmVmIHNjcmlwdCwgSlNWYWx1ZVJl
ZgogICAgIGlmIChpbnRlcm5hbEV4Y2VwdGlvbikgewogICAgICAgICBpZiAoZXhjZXB0aW9uKQog
ICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGdsb2JhbE9iamVjdCwgaW50ZXJuYWxFeGNl
cHRpb24tPnZhbHVlKCkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgfQogICAgIEFTU0VSVChyZXN1bHQpOwogICAgIHJldHVybiB0b1JlZihnbG9iYWxP
YmplY3QsIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
VmFsdWVSZWYuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlUmVmLmNwcApp
bmRleCA1M2I5NzhjY2Y4OGUyNjUzNGIzYjFiMjMwMDdmNTZjNGNkZjEzYjZjLi4yZGYwNTFhMTY2
OTVkMmNlYWE3NzMyY2E2ODBlNTA3MDcxMWQ2YmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL0pTVmFsdWVSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9B
UEkvSlNWYWx1ZVJlZi5jcHAKQEAgLTI4Miw3ICsyODIsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlVW5kZWZpbmVkKEpTQ29udGV4dFJlZiBjdHgpCiB7CiAgICAgaWYgKCFjdHgpIHsKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRv
SlMoY3R4KTsKICAgICBKU0xvY2tIb2xkZXIgbG9ja2VyKGdsb2JhbE9iamVjdCk7CkBAIC0yOTQs
NyArMjk0LDcgQEAgSlNWYWx1ZVJlZiBKU1ZhbHVlTWFrZU51bGwoSlNDb250ZXh0UmVmIGN0eCkK
IHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIEpTTG9ja0hvbGRlciBsb2Nr
ZXIoZ2xvYmFsT2JqZWN0KTsKQEAgLTMwNiw3ICszMDYsNyBAQCBKU1ZhbHVlUmVmIEpTVmFsdWVN
YWtlQm9vbGVhbihKU0NvbnRleHRSZWYgY3R4LCBib29sIHZhbHVlKQogewogICAgIGlmICghY3R4
KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmplY3Qp
OwpAQCAtMzE4LDcgKzMxOCw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VOdW1iZXIoSlNDb250
ZXh0UmVmIGN0eCwgZG91YmxlIHZhbHVlKQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0
eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmplY3QpOwpAQCAtMzQ1LDcgKzM0
NSw3IEBAIEpTVmFsdWVSZWYgSlNWYWx1ZU1ha2VTdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNT
dHJpbmdSZWYgc3RyaW5nKQogewogICAgIGlmICghY3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtMzU4LDcgKzM1OCw3IEBAIEpTVmFsdWVS
ZWYgSlNWYWx1ZU1ha2VGcm9tSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1N0cmluZ1Jl
ZiBzdHJpbmcpCiB7CiAgICAgaWYgKCFjdHgpIHsKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY3R4KTsKICAgICBKU0xvY2tI
b2xkZXIgbG9ja2VyKGdsb2JhbE9iamVjdCk7CkBAIC0zNzYsNyArMzc2LDcgQEAgSlNTdHJpbmdS
ZWYgSlNWYWx1ZUNyZWF0ZUpTT05TdHJpbmcoSlNDb250ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiBh
cGlWYWx1ZSwgdW5zaWcKIHsKICAgICBpZiAoIWN0eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTM4Niw5ICszODYsOSBAQCBKU1N0cmluZ1Jl
ZiBKU1ZhbHVlQ3JlYXRlSlNPTlN0cmluZyhKU0NvbnRleHRSZWYgY3R4LCBKU1ZhbHVlUmVmIGFw
aVZhbHVlLCB1bnNpZwogICAgIEpTVmFsdWUgdmFsdWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgYXBp
VmFsdWUpOwogICAgIFN0cmluZyByZXN1bHQgPSBKU09OU3RyaW5naWZ5KGdsb2JhbE9iamVjdCwg
dmFsdWUsIGluZGVudCk7CiAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgKmV4Y2VwdGlvbiA9
IDA7CisgICAgICAgICpleGNlcHRpb24gPSBudWxscHRyOwogICAgIGlmIChoYW5kbGVFeGNlcHRp
b25JZk5lZWRlZChzY29wZSwgY3R4LCBleGNlcHRpb24pID09IEV4Y2VwdGlvblN0YXR1czo6RGlk
VGhyb3cpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBy
ZXR1cm4gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShyZXN1bHQpLmxlYWtSZWYoKTsKIH0KIApA
QCAtNDI4LDcgKzQyOCw3IEBAIEpTU3RyaW5nUmVmIEpTVmFsdWVUb1N0cmluZ0NvcHkoSlNDb250
ZXh0UmVmIGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZioKIHsKICAgICBpZiAoIWN0
eCkgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIDA7Cisg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gdG9KUyhjdHgpOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAg
LTQ0Nyw3ICs0NDcsNyBAQCBKU09iamVjdFJlZiBKU1ZhbHVlVG9PYmplY3QoSlNDb250ZXh0UmVm
IGN0eCwgSlNWYWx1ZVJlZiB2YWx1ZSwgSlNWYWx1ZVJlZiogZXhjZQogewogICAgIGlmICghY3R4
KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSB0b0pTKGN0eCk7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAt
NDU4LDcgKzQ1OCw3IEBAIEpTT2JqZWN0UmVmIEpTVmFsdWVUb09iamVjdChKU0NvbnRleHRSZWYg
Y3R4LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBleGNlCiAgICAgCiAgICAgSlNPYmpl
Y3RSZWYgb2JqZWN0UmVmID0gdG9SZWYoanNWYWx1ZS50b09iamVjdChnbG9iYWxPYmplY3QpKTsK
ICAgICBpZiAoaGFuZGxlRXhjZXB0aW9uSWZOZWVkZWQoc2NvcGUsIGN0eCwgZXhjZXB0aW9uKSA9
PSBFeGNlcHRpb25TdGF0dXM6OkRpZFRocm93KQotICAgICAgICBvYmplY3RSZWYgPSAwOworICAg
ICAgICBvYmplY3RSZWYgPSBudWxscHRyOwogICAgIHJldHVybiBvYmplY3RSZWY7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJp
dmF0ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTV2Vha09iamVjdE1hcFJlZlBy
aXZhdGUuY3BwCmluZGV4IDIzZTI1MWY2ODQ0MmMwZTFlODIzNWRjYjIzOWJmNzE0NTRjNDdlOWYu
LmUwODQzOGM2YjEwYmMyNWNjNTAzMGY4YjRmMjM3ODE0ZWIyN2U3ZTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNXZWFrT2JqZWN0TWFwUmVmUHJpdmF0ZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1dlYWtPYmplY3RNYXBSZWZQcml2YXRlLmNw
cApAQCAtNzIsNyArNzIsNyBAQCBKU09iamVjdFJlZiBKU1dlYWtPYmplY3RNYXBHZXQoSlNDb250
ZXh0UmVmIGN0eCwgSlNXZWFrT2JqZWN0TWFwUmVmIG1hcCwgdm9pZCogawogewogICAgIGlmICgh
Y3R4KSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QgPSB0b0pTKGN0eCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcihnbG9iYWxPYmpl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRp
b25UaW1lTGltaXRUZXN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvdGVzdHMvRXhl
Y3V0aW9uVGltZUxpbWl0VGVzdC5jcHAKaW5kZXggNmU1YjgyZjhhZDQ3YjZhMDlmNWRkOWJmMWQz
NDc3ODI5NGM4YzZjNi4uZmIzZTU2NTYxMDgxZDE0ODRiNjdkMjEyYWRkN2ZhYjExZTAyOWY4NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9FeGVjdXRpb25UaW1l
TGltaXRUZXN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL3Rlc3RzL0V4ZWN1
dGlvblRpbWVMaW1pdFRlc3QuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHN0YXRpYyBib29sIGV4dGVu
ZFRlcm1pbmF0ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIHZvaWQqKQogICAgIGV4dGVuZFRl
cm1pbmF0ZUNhbGxiYWNrQ2FsbGVkKys7CiAgICAgaWYgKGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNr
Q2FsbGVkID09IDEpIHsKICAgICAgICAgSlNDb250ZXh0R3JvdXBSZWYgY29udGV4dEdyb3VwID0g
SlNDb250ZXh0R2V0R3JvdXAoY3R4KTsKLSAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRp
b25UaW1lTGltaXQoY29udGV4dEdyb3VwLCAuMjAwZiwgZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ss
IDApOworICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0
R3JvdXAsIC4yMDBmLCBleHRlbmRUZXJtaW5hdGVDYWxsYmFjaywgbnVsbHB0cik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC0xNTYsNyArMTU2LDcg
QEAgaW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogCiAgICAgICAgIC8qIFRlc3Qgc2NyaXB0
IG9uIGFub3RoZXIgdGhyZWFkOiAqLwogICAgICAgICB0aW1lTGltaXQgPSAxMDBfbXMgKyB0aWVy
QWRqdXN0bWVudDsKLSAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQo
Y29udGV4dEdyb3VwLCB0aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFj
aywgMCk7CisgICAgICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRl
eHRHcm91cCwgdGltZUxpbWl0LnNlY29uZHMoKSwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ssIG51
bGxwdHIpOwogICAgICAgICB7CiAjaWYgT1MoTElOVVgpICYmIChDUFUoTUlQUykgfHwgQ1BVKEFS
TV9USFVNQjIpKQogICAgICAgICAgICAgU2Vjb25kcyB0aW1lQWZ0ZXJXYXRjaGRvZ1Nob3VsZEhh
dmVGaXJlZCA9IDUwMF9tcyArIHRpZXJBZGp1c3RtZW50OwpAQCAtMTk0LDcgKzE5NCw3IEBAIGlu
dCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKIAogICAgICAgICAvKiBUZXN0IHNjcmlwdCB0aW1l
b3V0OiAqLwogICAgICAgICB0aW1lTGltaXQgPSAxMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKLSAg
ICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCB0
aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAgICAg
IEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxp
bWl0LnNlY29uZHMoKSwgc2hvdWxkVGVybWluYXRlQ2FsbGJhY2ssIG51bGxwdHIpOwogICAgICAg
ICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVk
ID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7CiAKQEAgLTIzNyw3ICsyMzcsNyBAQCBpbnQgdGVz
dEV4ZWN1dGlvblRpbWVMaW1pdCgpCiAKICAgICAgICAgLyogVGVzdCBzY3JpcHQgdGltZW91dCB3
aXRoIHRhaWwgY2FsbHM6ICovCiAgICAgICAgIHRpbWVMaW1pdCA9IDEwMF9tcyArIHRpZXJBZGp1
c3RtZW50OwotICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250
ZXh0R3JvdXAsIHRpbWVMaW1pdC5zZWNvbmRzKCksIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAw
KTsKKyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdy
b3VwLCB0aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgbnVsbHB0
cik7CiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dTaG91
bGRIYXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKIApAQCAtMjgwLDcgKzI4MCw3
IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKIAogICAgICAgICAvKiBUZXN0IHRoZSBz
Y3JpcHQgdGltZW91dCdzIFRlcm1pbmF0ZWRFeGVjdXRpb25FeGNlcHRpb24gc2hvdWxkIE5PVCBi
ZSBjYXRjaGFibGU6ICovCiAgICAgICAgIHRpbWVMaW1pdCA9IDEwMF9tcyArIHRpZXJBZGp1c3Rt
ZW50OwotICAgICAgICBKU0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0
R3JvdXAsIHRpbWVMaW1pdC5zZWNvbmRzKCksIHNob3VsZFRlcm1pbmF0ZUNhbGxiYWNrLCAwKTsK
KyAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVjdXRpb25UaW1lTGltaXQoY29udGV4dEdyb3Vw
LCB0aW1lTGltaXQuc2Vjb25kcygpLCBzaG91bGRUZXJtaW5hdGVDYWxsYmFjaywgbnVsbHB0cik7
CiAgICAgICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRI
YXZlRmlyZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIApAQCAtMzI3
LDcgKzMyNyw3IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgCiAgICAg
ICAgIC8qIFRlc3Qgc2NyaXB0IHRpbWVvdXQgd2l0aCBubyBjYWxsYmFjazogKi8KICAgICAgICAg
dGltZUxpbWl0ID0gMTAwX21zICsgdGllckFkanVzdG1lbnQ7Ci0gICAgICAgIEpTQ29udGV4dEdy
b3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxpbWl0LnNlY29uZHMo
KSwgMCwgMCk7CisgICAgICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNv
bnRleHRHcm91cCwgdGltZUxpbWl0LnNlY29uZHMoKSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAg
ICAgIHsKICAgICAgICAgICAgIFNlY29uZHMgdGltZUFmdGVyV2F0Y2hkb2dTaG91bGRIYXZlRmly
ZWQgPSAzMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKICAgICAgICAgICAgIApAQCAtMzcyLDcgKzM3
Miw3IEBAIGludCB0ZXN0RXhlY3V0aW9uVGltZUxpbWl0KCkKICAgICAgICAgCiAgICAgICAgIC8q
IFRlc3Qgc2NyaXB0IHRpbWVvdXQgY2FuY2VsbGF0aW9uOiAqLwogICAgICAgICB0aW1lTGltaXQg
PSAxMDBfbXMgKyB0aWVyQWRqdXN0bWVudDsKLSAgICAgICAgSlNDb250ZXh0R3JvdXBTZXRFeGVj
dXRpb25UaW1lTGltaXQoY29udGV4dEdyb3VwLCB0aW1lTGltaXQuc2Vjb25kcygpLCBjYW5jZWxU
ZXJtaW5hdGVDYWxsYmFjaywgMCk7CisgICAgICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9u
VGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGltZUxpbWl0LnNlY29uZHMoKSwgY2FuY2VsVGVybWlu
YXRlQ2FsbGJhY2ssIG51bGxwdHIpOwogICAgICAgICB7CiAgICAgICAgICAgICBTZWNvbmRzIHRp
bWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAwX21zICsgdGllckFkanVzdG1lbnQ7
CiAgICAgICAgICAgICAKQEAgLTQxNSw3ICs0MTUsNyBAQCBpbnQgdGVzdEV4ZWN1dGlvblRpbWVM
aW1pdCgpCiAgICAgICAgIAogICAgICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IGV4dGVuc2lv
bjogKi8KICAgICAgICAgdGltZUxpbWl0ID0gMTAwX21zICsgdGllckFkanVzdG1lbnQ7Ci0gICAg
ICAgIEpTQ29udGV4dEdyb3VwU2V0RXhlY3V0aW9uVGltZUxpbWl0KGNvbnRleHRHcm91cCwgdGlt
ZUxpbWl0LnNlY29uZHMoKSwgZXh0ZW5kVGVybWluYXRlQ2FsbGJhY2ssIDApOworICAgICAgICBK
U0NvbnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1p
dC5zZWNvbmRzKCksIGV4dGVuZFRlcm1pbmF0ZUNhbGxiYWNrLCBudWxscHRyKTsKICAgICAgICAg
ewogICAgICAgICAgICAgU2Vjb25kcyB0aW1lQmVmb3JlRXh0ZW5kZWREZWFkbGluZSA9IDI1MF9t
cyArIHRpZXJBZGp1c3RtZW50OwogICAgICAgICAgICAgU2Vjb25kcyB0aW1lQWZ0ZXJFeHRlbmRl
ZERlYWRsaW5lID0gNjAwX21zICsgdGllckFkanVzdG1lbnQ7CkBAIC00NjYsNyArNDY2LDcgQEAg
aW50IHRlc3RFeGVjdXRpb25UaW1lTGltaXQoKQogI2lmIEhBVkUoTUFDSF9FWENFUFRJT05TKQog
ICAgICAgICAvKiBUZXN0IHNjcmlwdCB0aW1lb3V0IGZyb20gZGlzcGF0Y2ggcXVldWU6ICovCiAg
ICAgICAgIHRpbWVMaW1pdCA9IDEwMF9tcyArIHRpZXJBZGp1c3RtZW50OwotICAgICAgICBKU0Nv
bnRleHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdC5z
ZWNvbmRzKCksIGRpc3BhdGNoVGVybWl0YXRlQ2FsbGJhY2ssIDApOworICAgICAgICBKU0NvbnRl
eHRHcm91cFNldEV4ZWN1dGlvblRpbWVMaW1pdChjb250ZXh0R3JvdXAsIHRpbWVMaW1pdC5zZWNv
bmRzKCksIGRpc3BhdGNoVGVybWl0YXRlQ2FsbGJhY2ssIG51bGxwdHIpOwogICAgICAgICB7CiAg
ICAgICAgICAgICBTZWNvbmRzIHRpbWVBZnRlcldhdGNoZG9nU2hvdWxkSGF2ZUZpcmVkID0gMzAw
X21zICsgdGllckFkanVzdG1lbnQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL3Rlc3RzL1BpbmdQb25nU3RhY2tPdmVyZmxvd1Rlc3QuY3BwCmluZGV4IGZi
ZTQ2ODcyMDMyYjg2MTA5MDMzNDVmNjQ3ZWFkZGEzNGMwZDg5OTEuLmRhZmJiY2NmMzc2YmEzMjI2
MmU0Yjk1ODJiYmUzZjc2MWIyNGRlZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvdGVzdHMvUGluZ1BvbmdTdGFja092ZXJmbG93VGVzdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS90ZXN0cy9QaW5nUG9uZ1N0YWNrT3ZlcmZsb3dUZXN0LmNwcApAQCAt
NTAsNyArNTAsNyBAQCBzdGF0aWMgYm9vbCBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3RfaGFz
SW5zdGFuY2UoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZQogCiAgICAgaW50IGNvdW50QXRF
bnRyeSA9IG5hdGl2ZVJlY3Vyc2lvbkNvdW50Kys7CiAKLSAgICBKU1ZhbHVlUmVmIHJlc3VsdCA9
IDA7CisgICAgSlNWYWx1ZVJlZiByZXN1bHQgPSBudWxscHRyOwogICAgIGlmIChuYXRpdmVSZWN1
cnNpb25Db3VudCA8IDEwMCkgewogICAgICAgICBKU09iamVjdFJlZiBmdW5jdGlvbiA9IEpTVmFs
dWVUb09iamVjdChjb250ZXh0LCBoYXNJbnN0YW5jZSwgZXhjZXB0aW9uKTsKICAgICAgICAgcmVz
dWx0ID0gSlNPYmplY3RDYWxsQXNGdW5jdGlvbihjb250ZXh0LCBmdW5jdGlvbiwgY29uc3RydWN0
b3IsIDEsICZwb3NzaWJsZVZhbHVlLCBleGNlcHRpb24pOwpAQCAtNjUsNyArNjUsNyBAQCBzdGF0
aWMgYm9vbCBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3RfaGFzSW5zdGFuY2UoSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZQogICAgICAgICBidWlsZGVyLmFwcGVuZExpdGVyYWwoIik7Iik7
CiAKICAgICAgICAgSlNTdHJpbmdSZWYgc2NyaXB0ID0gSlNTdHJpbmdDcmVhdGVXaXRoVVRGOENT
dHJpbmcoYnVpbGRlci50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXN1bHQg
PSBKU0V2YWx1YXRlU2NyaXB0KGNvbnRleHQsIHNjcmlwdCwgTlVMTCwgTlVMTCwgMSwgZXhjZXB0
aW9uKTsKKyAgICAgICAgcmVzdWx0ID0gSlNFdmFsdWF0ZVNjcmlwdChjb250ZXh0LCBzY3JpcHQs
IG51bGxwdHIsIG51bGxwdHIsIDEsIGV4Y2VwdGlvbik7CiAgICAgICAgIEpTU3RyaW5nUmVsZWFz
ZShzY3JpcHQpOwogICAgIH0KIApAQCAtODEsMjIgKzgxLDIyIEBAIEpTQ2xhc3NEZWZpbml0aW9u
IFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdF9kZWZpbml0aW9uID0gewogICAgIGtKU0NsYXNz
QXR0cmlidXRlTm9uZSwKICAgICAKICAgICAiUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0IiwK
LSAgICBOVUxMLAorICAgIG51bGxwdHIsCiAgICAgCi0gICAgTlVMTCwKLSAgICBOVUxMLAorICAg
IG51bGxwdHIsCisgICAgbnVsbHB0ciwKICAgICAKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAg
TlVMTCwKLSAgICBOVUxMLAotICAgIE5VTEwsCi0gICAgTlVMTCwKLSAgICBOVUxMLAotICAgIE5V
TEwsCi0gICAgTlVMTCwKKyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwK
KyAgICBudWxscHRyLAorICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKKyAgICBudWxscHRyLAor
ICAgIG51bGxwdHIsCisgICAgbnVsbHB0ciwKICAgICBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmpl
Y3RfaGFzSW5zdGFuY2UsCi0gICAgTlVMTCwKKyAgICBudWxscHRyLAogfTsKIAogc3RhdGljIEpT
Q2xhc3NSZWYgUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0X2NsYXNzKEpTQ29udGV4dFJlZiBj
b250ZXh0KQpAQCAtMTUxLDkgKzE1MSw5IEBAIGludCB0ZXN0UGluZ1BvbmdTdGFja092ZXJmbG93
KCkKICAgICBKU09iamVjdFJlZiBnbG9iYWxPYmplY3QgPSBKU0NvbnRleHRHZXRHbG9iYWxPYmpl
Y3QoY29udGV4dCk7CiAgICAgQVNTRVJUKEpTVmFsdWVJc09iamVjdChjb250ZXh0LCBnbG9iYWxP
YmplY3QpKTsKIAotICAgIEpTT2JqZWN0UmVmIFBpbmdQb25nU3RhY2tPdmVyZmxvd09iamVjdCA9
IEpTT2JqZWN0TWFrZShjb250ZXh0LCBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3RfY2xhc3Mo
Y29udGV4dCksIE5VTEwpOworICAgIEpTT2JqZWN0UmVmIFBpbmdQb25nU3RhY2tPdmVyZmxvd09i
amVjdCA9IEpTT2JqZWN0TWFrZShjb250ZXh0LCBQaW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3Rf
Y2xhc3MoY29udGV4dCksIG51bGxwdHIpOwogICAgIEpTU3RyaW5nUmVmIFBpbmdQb25nU3RhY2tP
dmVyZmxvd09iamVjdFN0cmluZyA9IEpTU3RyaW5nQ3JlYXRlV2l0aFVURjhDU3RyaW5nKCJQaW5n
UG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3QiKTsKLSAgICBKU09iamVjdFNldFByb3BlcnR5KGNvbnRl
eHQsIGdsb2JhbE9iamVjdCwgUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0U3RyaW5nLCBQaW5n
UG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3QsIGtKU1Byb3BlcnR5QXR0cmlidXRlTm9uZSwgTlVMTCk7
CisgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShjb250ZXh0LCBnbG9iYWxPYmplY3QsIFBpbmdQb25n
U3RhY2tPdmVyZmxvd09iamVjdFN0cmluZywgUGluZ1BvbmdTdGFja092ZXJmbG93T2JqZWN0LCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZU5vbmUsIG51bGxwdHIpOwogICAgIEpTU3RyaW5nUmVsZWFzZShQ
aW5nUG9uZ1N0YWNrT3ZlcmZsb3dPYmplY3RTdHJpbmcpOwogCiAgICAgdW5zaWduZWQgc3RhY2tT
aXplID0gMzIgKiBLQjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQWJzdHJhY3RNYWNyb0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9BYnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKaW5kZXggMDY3N2NmNzRiOWFiMWE1NDlmN2M1
MzJiYjI1NTkwMzdkYmRlYzgzOC4uYTcxZDA4ODNlNjJmYzhhNTIyNDZkZWIxNzJlMmQwODU3YjYz
Njg5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BYnN0cmFj
dE1hY3JvQXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9B
YnN0cmFjdE1hY3JvQXNzZW1ibGVyLmgKQEAgLTI5NSw3ICsyOTUsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICByZXR1cm4gY29uc3RfY2FzdDx2b2lkKj4obV92YWx1ZSk7CiAgICAgICAgIH0KIAot
ICAgICAgICBjb25zdCB2b2lkKiBtX3ZhbHVlIHsgMCB9OworICAgICAgICBjb25zdCB2b2lkKiBt
X3ZhbHVlIHsgbnVsbHB0ciB9OwogICAgIH07CiAKICAgICBzdHJ1Y3QgSW1tUHRyIDogcHJpdmF0
ZSBUcnVzdGVkSW1tUHRyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0NQVS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0NQVS5jcHAKaW5k
ZXggZDIyMjZlOTFjZTE5NGQ1NjNjNWQwZGY2MjIzMzQzMzNjMjYwZTJkMy4uZGJkOTRkZTBjNDZk
MmMzYjY1NGY2NGZmMjAwNGZlN2YwZmNiZWY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Fzc2VtYmxlci9DUFUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvQ1BVLmNwcApAQCAtNDEsNyArNDEsNyBAQCBib29sIGlzS2VyblRDU01BdmFpbGFibGUo
KQogCiAgICAgdWludDMyX3QgdmFsID0gMDsKICAgICBzaXplX3QgdmFsU2l6ZSA9IHNpemVvZih2
YWwpOwotICAgIGludCByYyA9IHN5c2N0bGJ5bmFtZSgia2Vybi50Y3NtX2F2YWlsYWJsZSIsICZ2
YWwsICZ2YWxTaXplLCBOVUxMLCAwKTsKKyAgICBpbnQgcmMgPSBzeXNjdGxieW5hbWUoImtlcm4u
dGNzbV9hdmFpbGFibGUiLCAmdmFsLCAmdmFsU2l6ZSwgbnVsbHB0ciwgMCk7CiAgICAgaWYgKHJj
IDwgMCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiAhIXZhbDsKQEAgLTUwLDcg
KzUwLDcgQEAgYm9vbCBpc0tlcm5UQ1NNQXZhaWxhYmxlKCkKIGJvb2wgZW5hYmxlS2VyblRDU00o
KQogewogICAgIHVpbnQzMl90IHZhbCA9IDE7Ci0gICAgaW50IHJjID0gc3lzY3RsYnluYW1lKCJr
ZXJuLnRjc21fZW5hYmxlIiwgTlVMTCwgMCwgJnZhbCwgc2l6ZW9mKHZhbCkpOworICAgIGludCBy
YyA9IHN5c2N0bGJ5bmFtZSgia2Vybi50Y3NtX2VuYWJsZSIsIG51bGxwdHIsIG51bGxwdHIsICZ2
YWwsIHNpemVvZih2YWwpKTsKICAgICBpZiAocmMgPCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2Rl
QmxvY2suY3BwCmluZGV4IDY5NzRhZGI5NWMxZjVhMzI3M2JlOTZmYjEzM2JmMmRmNTUwZTYzNDMu
LjgzNDA4MmQ4MjdhZWNmYmU0NzZmMWViMDU3YjE4NTllZTlhYjQyYmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC05NzMsNyArOTczLDcgQEAg
Q29kZUJsb2NrKiBDb2RlQmxvY2s6OnNwZWNpYWxPU1JFbnRyeUJsb2NrT3JOdWxsKCkKIHsKICNp
ZiBFTkFCTEUoRlRMX0pJVCkKICAgICBpZiAoaml0VHlwZSgpICE9IEpJVFR5cGU6OkRGR0pJVCkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIERGRzo6SklU
Q29kZSogaml0Q29kZSA9IG1faml0Q29kZS0+ZGZnKCk7CiAgICAgcmV0dXJuIGppdENvZGUtPm9z
ckVudHJ5QmxvY2soKTsKICNlbHNlIC8vIEVOQUJMRShGVExfSklUKQpAQCAtMTg3MCw3ICsxODcw
LDcgQEAgSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlSW5kZXgoQnl0
ZWNvZGVJbmRleCBieXRlY29kZUluZGV4LCBSZXEKIEhhbmRsZXJJbmZvKiBDb2RlQmxvY2s6Omhh
bmRsZXJGb3JJbmRleCh1bnNpZ25lZCBpbmRleCwgUmVxdWlyZWRIYW5kbGVyIHJlcXVpcmVkSGFu
ZGxlcikKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCi0gICAgICAgIHJldHVybiAwOworICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gSGFuZGxlckluZm86OmhhbmRsZXJGb3JJbmRl
eDxIYW5kbGVySW5mbz4obV9yYXJlRGF0YS0+bV9leGNlcHRpb25IYW5kbGVycywgaW5kZXgsIHJl
cXVpcmVkSGFuZGxlcik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9EZWxldGVCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvRGVsZXRlQnlJZFZhcmlhbnQuY3BwCmluZGV4IGRhZDQyYmU5OWNkMDAwMmFiNTVhNDVm
YzI4NjkyMDAyZTg3YzY2YjUuLmQ5NDFiM2ExOTkyMzAzZTRmMGQyMDIyOGYyMDI1Njc4ZDllZjcy
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9EZWxldGVCeUlk
VmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0RlbGV0ZUJ5
SWRWYXJpYW50LmNwcApAQCAtMTA1LDcgKzEwNSw3IEBAIHZvaWQgRGVsZXRlQnlJZFZhcmlhbnQ6
Om1hcmtJZkNoZWFwKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogCiB2b2lkIERlbGV0ZUJ5SWRWYXJp
YW50OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4dChv
dXQsIDApOworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAogYm9vbCBEZWxl
dGVCeUlkVmFyaWFudDo6ZmluYWxpemUoVk0mIHZtKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5SWRWYXJpYW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29kZS9HZXRCeUlkVmFyaWFudC5jcHAKaW5kZXggMjYzMzM2MjQ0YzhmYjQxOTZj
ZTRjNjI5MmY1NmRkNTk5NGE3YzAxZS4uMGUxNjU2MTc5ZjA5MDA0M2ZmNTQwZmFhMzVjYWVhYTAx
ZmIzMzJjNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0dldEJ5
SWRWYXJpYW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvR2V0QnlJ
ZFZhcmlhbnQuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgYm9vbCBHZXRCeUlkVmFyaWFudDo6Zmlu
YWxpemUoVk0mIHZtKQogCiB2b2lkIEdldEJ5SWRWYXJpYW50OjpkdW1wKFByaW50U3RyZWFtJiBv
dXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRl
eHQob3V0LCBudWxscHRyKTsKIH0KIAogdm9pZCBHZXRCeUlkVmFyaWFudDo6ZHVtcEluQ29udGV4
dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbkJ5SWRWYXJpYW50LmNwcAppbmRleCAwYjM3
ZjUzNzY4NTk4NTQ0ZGEzOGVlNjZhYzk3OWQxNTNkYjkyNjUzLi5jYTE1MDU3NThiN2VlNmZhMmZk
NWZmYmUyMjA0YjY0ZjdhNmFjNTQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvSW5CeUlkVmFyaWFudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0luQnlJZFZhcmlhbnQuY3BwCkBAIC04Myw3ICs4Myw3IEBAIGJvb2wgSW5CeUlkVmFy
aWFudDo6ZmluYWxpemUoVk0mIHZtKQogCiB2b2lkIEluQnlJZFZhcmlhbnQ6OmR1bXAoUHJpbnRT
dHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgZHVt
cEluQ29udGV4dChvdXQsIG51bGxwdHIpOwogfQogCiB2b2lkIEluQnlJZFZhcmlhbnQ6OmR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvSW5saW5lQ2FsbEZyYW1l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3Bw
CmluZGV4IDc5OTFhYzJhOGU2N2M4ODBlYjM4ZTc2NDVmNDRiMjlkZDM3YWNhZjUuLjgzM2I5YTE4
MzFiYmI3Y2Y2YmVjNTZlZWU0NzlmMTg3NDhmYmU4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29kZS9JbmxpbmVDYWxsRnJhbWUuY3BwCkBAIC04Miw3ICs4Miw3IEBA
IHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1
bXBDb250ZXh0KiBjb250ZXh0KSBjb25zCiAKIHZvaWQgSW5saW5lQ2FsbEZyYW1lOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4dChvdXQsIDApOworICAg
IGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1
ZVByb2ZpbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0xhenlPcGVyYW5k
VmFsdWVQcm9maWxlLmNwcAppbmRleCA2ZWViMTQ1YjMzNzk2NjJhZjFjMTUwMDE5MDc2NzI3YTM5
ZWUyYmRhLi40YTE4NmQwMjRjYzFhMzAxMmJjYzE3ZDIyM2VmY2U0MGZlZTY0M2NlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvTGF6eU9wZXJhbmRWYWx1ZVByb2Zp
bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9MYXp5T3BlcmFuZFZh
bHVlUHJvZmlsZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgTGF6eU9wZXJhbmRWYWx1ZVByb2ZpbGUq
IExhenlPcGVyYW5kVmFsdWVQcm9maWxlUGFyc2VyOjpnZXRJZlByZXNlbnQoCiAgICAgICAgIG1f
bWFwLmZpbmQoa2V5KTsKICAgICAKICAgICBpZiAoaXRlciA9PSBtX21hcC5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIAogICAgIHJldHVybiBp
dGVyLT52YWx1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29k
ZS9QdXRCeUlkVmFyaWFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvUHV0
QnlJZFZhcmlhbnQuY3BwCmluZGV4IDcyYzZjYWM4NGZiMjdiY2Y1ZTQxN2M0OTZlNjM2MmY3MmU2
YzBhMjguLjYzMGM5ZDNkNjliZWI0OGRhNzQwYTlhZjgxNWRiMDU2YjE1OGFjMDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9QdXRCeUlkVmFyaWFudC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1B1dEJ5SWRWYXJpYW50LmNwcApAQCAt
Mjg1LDcgKzI4NSw3IEBAIGJvb2wgUHV0QnlJZFZhcmlhbnQ6OmZpbmFsaXplKFZNJiB2bSkKIAog
dm9pZCBQdXRCeUlkVmFyaWFudDo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAogewotICAg
IGR1bXBJbkNvbnRleHQob3V0LCAwKTsKKyAgICBkdW1wSW5Db250ZXh0KG91dCwgbnVsbHB0cik7
CiB9CiAKIHZvaWQgUHV0QnlJZFZhcmlhbnQ6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91
dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvVmFsdWVQcm9maWxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvVmFsdWVQcm9maWxlLmgKaW5kZXggOTg2ZmY3NzIxNTk0YWMyYTgwYzdlM2YzOWVm
NjIxZDUxNzE5NDAzMS4uMjhhNzI3M2Y5NmIxMmUxZjhiNjgxMzE2MmM1ZjI2YzliM2Y0ZjBhMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUHJvZmlsZS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9WYWx1ZVByb2ZpbGUuaApAQCAt
NjAsMTAgKzYwLDEwIEBAIHN0cnVjdCBWYWx1ZVByb2ZpbGVCYXNlIHsKICAgICAgICAgSlNWYWx1
ZSB2YWx1ZSA9IEpTVmFsdWU6OmRlY29kZShtX2J1Y2tldHNbYnVja2V0XSk7CiAgICAgICAgIGlm
ICghIXZhbHVlKSB7CiAgICAgICAgICAgICBpZiAoIXZhbHVlLmlzQ2VsbCgpKQotICAgICAgICAg
ICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlLmFzQ2VsbCgpLT5zdHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCk7CiAg
ICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICAKICAgICB1bnNpZ25lZCBudW1iZXJPZlNhbXBsZXMoKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL1ZhbHVlUmVjb3ZlcnkuY3BwCmluZGV4IGIxMzk0
N2YwZTE4ZGYwNjNhODhiM2YyMjdjZGNkYmZlZmZlZGMzMDguLmM1M2Q2YTM2NDdjMDNjNmVjNzY3
ZmFjNTIzNDRlZWFiOTc2YTgwNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9WYWx1ZVJlY292ZXJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvZGUvVmFsdWVSZWNvdmVyeS5jcHAKQEAgLTEzMyw3ICsxMzMsNyBAQCB2b2lkIFZhbHVlUmVj
b3Zlcnk6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRl
eHQpIGNvbnN0CiAKIHZvaWQgVmFsdWVSZWNvdmVyeTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBj
b25zdAogewotICAgIGR1bXBJbkNvbnRleHQob3V0LCAwKTsKKyAgICBkdW1wSW5Db250ZXh0KG91
dCwgbnVsbHB0cik7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4
IDM5N2RkZGM3ZTViOGYxMDBlOWE5N2Q3YzM0YTY5Njg2NDYxZTZkZDkuLjRiYzc2MGNmNDJlNzdj
NGZmNjk0OGE1ZGQ2NjQ4YzUyZTUzYjY3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTQ3MSw3ICs0NzEs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIC8vIFJldHVybnMgdGhl
IHBsYWNlIHRvIHdyaXRlIHRoZSBmaW5hbCBvdXRwdXQgb2YgYW4gb3BlcmF0aW9uLgotICAgICAg
ICBSZWdpc3RlcklEKiBmaW5hbERlc3RpbmF0aW9uKFJlZ2lzdGVySUQqIG9yaWdpbmFsRHN0LCBS
ZWdpc3RlcklEKiB0ZW1wRHN0ID0gMCkKKyAgICAgICAgUmVnaXN0ZXJJRCogZmluYWxEZXN0aW5h
dGlvbihSZWdpc3RlcklEKiBvcmlnaW5hbERzdCwgUmVnaXN0ZXJJRCogdGVtcERzdCA9IG51bGxw
dHIpCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmIChvcmlnaW5hbERzdCAmJiBvcmlnaW5hbERz
dCAhPSBpZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsRHN0
OwpAQCAtNDg1LDcgKzQ4NSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoZHN0ICYmIGRzdCAhPSBpZ25vcmVkUmVzdWx0KCkpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIGRzdC0+aXNUZW1wb3JhcnkoKSA/IGRzdCA6IG5ld1RlbXBvcmFyeSgpOwotICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIE1vdmVzIHNyYyB0byBkc3QgaWYgZHN0IGlzIG5vdCBudWxsIGFuZCBpcyBk
aWZmZXJlbnQgZnJvbSBzcmMsIG90aGVyd2lzZSBqdXN0IHJldHVybnMgc3JjLgpAQCAtNDk0LDcg
KzQ5NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgcmV0dXJuIGRzdCA9PSBpZ25v
cmVkUmVzdWx0KCkgPyBudWxscHRyIDogKGRzdCAmJiBkc3QgIT0gc3JjKSA/IGVtaXRNb3ZlKGRz
dCwgc3JjKSA6IHNyYzsKICAgICAgICAgfQogCi0gICAgICAgIFJlZjxMYWJlbFNjb3BlPiBuZXdM
YWJlbFNjb3BlKExhYmVsU2NvcGU6OlR5cGUsIGNvbnN0IElkZW50aWZpZXIqID0gMCk7CisgICAg
ICAgIFJlZjxMYWJlbFNjb3BlPiBuZXdMYWJlbFNjb3BlKExhYmVsU2NvcGU6OlR5cGUsIGNvbnN0
IElkZW50aWZpZXIqID0gbnVsbHB0cik7CiAKICAgICAgICAgdm9pZCBlbWl0Tm9kZShSZWdpc3Rl
cklEKiBkc3QsIFN0YXRlbWVudE5vZGUqIG4pCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCAzMTI0OTJh
Y2FiODUxZDI5YTVhYTM0NDFiOGM0OWY1YmU4NmNkZmE0Li40YWVjZjBiYWQ2MWMzODNlZjM4ZmQz
YTIyNGRhNGQxNzY3YzBhOTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBDb25z
dGFudE5vZGU6OmVtaXRCeXRlY29kZUluQ29uZGl0aW9uQ29udGV4dChCeXRlY29kZUdlbmVyYXRv
ciYgZ2VuZXJhdG9yLAogUmVnaXN0ZXJJRCogQ29uc3RhbnROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmIChk
c3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIEpTVmFsdWUgY29uc3RhbnQgPSBqc1ZhbHVlKGdlbmVy
YXRvcik7CiAgICAgaWYgKFVOTElLRUxZKCFjb25zdGFudCkpIHsKICAgICAgICAgLy8gVGhpcyBj
YW4gaGFwcGVuIGlmIHdlIHRyeSB0byBwYXJzZSBhIHN0cmluZyBvciBCaWdJbnQgc28gZW5vcm1v
dXMgdGhhdCB3ZSBPT00uCkBAIC0xNzMsNyArMTczLDcgQEAgUmVnaXN0ZXJJRCogVGhpc05vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QKIHsKICAgICBnZW5lcmF0b3IuZW5zdXJlVGhpcygpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJh
dG9yLmlnbm9yZWRSZXN1bHQoKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgUmVnaXN0ZXJJRCogcmVzdWx0ID0gZ2VuZXJhdG9yLm1vdmUoZHN0LCBn
ZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpOwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB0aGlz
TGVuZ3RoID0gc3RybGVuKCJ0aGlzIik7CkBAIC00NjQsNyArNDY0LDcgQEAgUmVnaXN0ZXJJRCog
QXJyYXlOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHMKICAgICB9CiAKICAgICBpZiAobV9lbGlzaW9uKSB7Ci0gICAgICAgIFJlZ2lz
dGVySUQqIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzTnVtYmVyKG1fZWxpc2lvbiAr
IGxlbmd0aCkpOworICAgICAgICBSZWdpc3RlcklEKiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0TG9h
ZChudWxscHRyLCBqc051bWJlcihtX2VsaXNpb24gKyBsZW5ndGgpKTsKICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRQdXRCeUlkKGFycmF5LmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmxl
bmd0aCwgdmFsdWUpOwogICAgIH0KIApAQCAtNDc5LDcgKzQ3OSw3IEBAIGhhbmRsZVNwcmVhZDoK
ICAgICB9KTsKICAgICBmb3IgKDsgbjsgbiA9IG4tPm5leHQoKSkgewogICAgICAgICBpZiAobi0+
ZWxpc2lvbigpKQotICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRCaW5hcnlPcDxPcEFkZD4oaW5k
ZXguZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNOdW1iZXIobi0+
ZWxpc2lvbigpKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigp
LCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdEJpbmFyeU9wPE9wQWRkPihpbmRleC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcihuLT5lbGlzaW9uKCkpKSwgT3BlcmFuZFR5cGVz
KFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCksIFJlc3VsdFR5cGU6Om51bWJlclR5cGVJ
c0ludDMyKCkpKTsKICAgICAgICAgaWYgKG4tPnZhbHVlKCktPmlzU3ByZWFkRXhwcmVzc2lvbigp
KSB7CiAgICAgICAgICAgICBTcHJlYWRFeHByZXNzaW9uTm9kZSogc3ByZWFkID0gc3RhdGljX2Nh
c3Q8U3ByZWFkRXhwcmVzc2lvbk5vZGUqPihuLT52YWx1ZSgpKTsKICAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0RW51bWVyYXRpb24oc3ByZWFkLCBzcHJlYWQtPmV4cHJlc3Npb24oKSwgc3ByZWFk
ZXIpOwpAQCAtNDkwLDcgKzQ5MCw3IEBAIGhhbmRsZVNwcmVhZDoKICAgICB9CiAgICAgCiAgICAg
aWYgKG1fZWxpc2lvbikgewotICAgICAgICBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9wQWRkPihp
bmRleC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc051bWJlciht
X2VsaXNpb24pKSwgT3BlcmFuZFR5cGVzKFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCks
IFJlc3VsdFR5cGU6Om51bWJlclR5cGVJc0ludDMyKCkpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRCaW5hcnlPcDxPcEFkZD4oaW5kZXguZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1p
dExvYWQobnVsbHB0ciwganNOdW1iZXIobV9lbGlzaW9uKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRU
eXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigp
KSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChhcnJheS5nZXQoKSwgZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5sZW5ndGgsIGluZGV4LmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJu
IGdlbmVyYXRvci5tb3ZlKGRzdCwgYXJyYXkuZ2V0KCkpOwpAQCAtNTE0LDcgKzUxNCw3IEBAIEFy
Z3VtZW50TGlzdE5vZGUqIEFycmF5Tm9kZTo6dG9Bcmd1bWVudExpc3QoUGFyc2VyQXJlbmEmIHBh
cnNlckFyZW5hLCBpbnQgbGluZU51CiAgICAgQVNTRVJUKCFtX2VsaXNpb24gJiYgIW1fb3B0aW9u
YWwpOwogICAgIEVsZW1lbnROb2RlKiBwdHIgPSBtX2VsZW1lbnQ7CiAgICAgaWYgKCFwdHIpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb247CiAgICAgbG9jYXRpb24ubGluZSA9IGxpbmVOdW1iZXI7CiAgICAgbG9j
YXRpb24uc3RhcnRPZmZzZXQgPSBzdGFydFBvc2l0aW9uOwpAQCAtNTM0LDcgKzUzNCw3IEBAIFJl
Z2lzdGVySUQqIE9iamVjdExpdGVyYWxOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0CiB7CiAgICAgaWYgKCFtX2xpc3QpIHsKICAgICAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0TmV3T2JqZWN0KGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCkpOwogICAgIH0KICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gbmV3T2JqID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3QoZ2Vu
ZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpKTsKQEAgLTE4MDAsNyArMTgwMCw3IEBAIFJlZ2lz
dGVySUQqIENhbGxGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBhcmd1bWVu
dHNSZWdpc3RlcjsKICAgICAgICAgICAgIGFyZ3VtZW50c1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVt
aXROb2RlKHN1YmplY3QpOwogICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5m
byhzcHJlYWQtPmRpdm90KCksIHNwcmVhZC0+ZGl2b3RTdGFydCgpLCBzcHJlYWQtPmRpdm90RW5k
KCkpOwotICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHRoaXNSZWdpc3RlciA9IGdlbmVy
YXRvci5lbWl0R2V0QnlWYWwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBhcmd1bWVudHNSZWdp
c3Rlci5nZXQoKSwgZ2VuZXJhdG9yLmVtaXRMb2FkKDAsIGpzTnVtYmVyKDApKSk7CisgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdGhpc1JlZ2lzdGVyID0gZ2VuZXJhdG9yLmVtaXRHZXRC
eVZhbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGFyZ3VtZW50c1JlZ2lzdGVyLmdldCgpLCBn
ZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1iZXIoMCkpKTsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbFZhcmFyZ3NJblRhaWxQb3NpdGlvbihyZXR1cm5WYWx1ZS5nZXQoKSwg
YmFzZS5nZXQoKSwgdGhpc1JlZ2lzdGVyLmdldCgpLCBhcmd1bWVudHNSZWdpc3Rlci5nZXQoKSwg
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCAxLCBkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90
RW5kKCksIERlYnVnZ2FibGVDYWxsOjpZZXMpOwogICAgICAgICB9IGVsc2UgaWYgKG1fYXJncy0+
bV9saXN0Tm9kZSAmJiBtX2FyZ3MtPm1fbGlzdE5vZGUtPm1fZXhwcikgewogICAgICAgICAgICAg
QXJndW1lbnRMaXN0Tm9kZSogb2xkTGlzdCA9IG1fYXJncy0+bV9saXN0Tm9kZTsKQEAgLTE4OTYs
MTMgKzE4OTYsMTMgQEAgUmVnaXN0ZXJJRCogQXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlOjplbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwKICAgICAgICAgICAgICAgICAg
ICAgUmVmPExhYmVsPiBoYXZlVGhpcyA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAgICAg
ICAgICAgICAgICBSZWY8TGFiZWw+IGVuZCA9IGdlbmVyYXRvci5uZXdMYWJlbCgpOwogICAgICAg
ICAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gY29tcGFyZVJlc3VsdCA9IGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGluZGV4WmVyb0NvbXBhcmVSZXN1bHQgPSBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9wRXE+KGNv
bXBhcmVSZXN1bHQuZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNO
dW1iZXIoMCkpLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSwg
UmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOworICAgICAgICAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gaW5kZXhaZXJvQ29tcGFyZVJlc3VsdCA9IGdlbmVyYXRvci5lbWl0
QmluYXJ5T3A8T3BFcT4oY29tcGFyZVJlc3VsdC5nZXQoKSwgaW5kZXguZ2V0KCksIGdlbmVyYXRv
ci5lbWl0TG9hZChudWxscHRyLCBqc051bWJlcigwKSksIE9wZXJhbmRUeXBlcyhSZXN1bHRUeXBl
OjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpKSk7
CiAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmRmFsc2UoaW5kZXhaZXJv
Q29tcGFyZVJlc3VsdC5nZXQoKSwgaGF2ZVRoaXMuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAg
ICBnZW5lcmF0b3IubW92ZSh0aGlzUmVnaXN0ZXIuZ2V0KCksIHZhbHVlKTsKICAgICAgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2FkKGluZGV4LmdldCgpLCBqc051bWJlcigxKSk7CiAg
ICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcChlbmQuZ2V0KCkpOwogICAgICAg
ICAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKGhhdmVUaGlzLmdldCgpKTsKLSAgICAg
ICAgICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGluZGV4T25lQ29tcGFyZVJlc3VsdCA9
IGdlbmVyYXRvci5lbWl0QmluYXJ5T3A8T3BFcT4oY29tcGFyZVJlc3VsdC5nZXQoKSwgaW5kZXgu
Z2V0KCksIGdlbmVyYXRvci5lbWl0TG9hZCgwLCBqc051bWJlcigxKSksIE9wZXJhbmRUeXBlcyhS
ZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJbnQzMigpLCBSZXN1bHRUeXBlOjpudW1iZXJUeXBlSXNJ
bnQzMigpKSk7CisgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBpbmRleE9u
ZUNvbXBhcmVSZXN1bHQgPSBnZW5lcmF0b3IuZW1pdEJpbmFyeU9wPE9wRXE+KGNvbXBhcmVSZXN1
bHQuZ2V0KCksIGluZGV4LmdldCgpLCBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNOdW1i
ZXIoMSkpLCBPcGVyYW5kVHlwZXMoUmVzdWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSwgUmVz
dWx0VHlwZTo6bnVtYmVyVHlwZUlzSW50MzIoKSkpOwogICAgICAgICAgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdEp1bXBJZkZhbHNlKGluZGV4T25lQ29tcGFyZVJlc3VsdC5nZXQoKSwgZW5kLmdl
dCgpKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJndW1lbnRzUmVnaXN0
ZXIuZ2V0KCksIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMb2Fk
KGluZGV4LmdldCgpLCBqc051bWJlcigyKSk7CkBAIC0yMTYyLDcgKzIxNjIsNyBAQCBSZWdpc3Rl
cklEKiBWb2lkTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdAogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSwgbV9leHByKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcjAgPSBnZW5lcmF0b3IuZW1pdE5vZGUo
bV9leHByKTsKICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRMb2FkKGRzdCwganNVbmRlZmluZWQo
KSk7CkBAIC0yMTc2LDcgKzIxNzYsNyBAQCBSZWdpc3RlcklEKiBUeXBlT2ZSZXNvbHZlTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdAogICAgIGlm
IChSZWdpc3RlcklEKiBsb2NhbCA9IHZhci5sb2NhbCgpKSB7CiAgICAgICAgIGdlbmVyYXRvci5l
bWl0VERaQ2hlY2tJZk5lY2Vzc2FyeSh2YXIsIGxvY2FsLCBudWxscHRyKTsKICAgICAgICAgaWYg
KGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7
CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0VHlwZU9mKGdlbmVyYXRvci5maW5hbERlc3RpbmF0aW9uKGRzdCksIGxvY2FsKTsKICAgICB9
CiAKQEAgLTIxODQsNyArMjE4NCw3IEBAIFJlZ2lzdGVySUQqIFR5cGVPZlJlc29sdmVOb2RlOjpl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0CiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBEb05vdFRocm93SWZOb3RGb3Vu
ZCk7CiAgICAgZ2VuZXJhdG9yLmVtaXRURFpDaGVja0lmTmVjZXNzYXJ5KHZhciwgdmFsdWUuZ2V0
KCksIG51bGxwdHIpOwogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1bHQoKSkK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiBn
ZW5lcmF0b3IuZW1pdFR5cGVPZihnZW5lcmF0b3IuZmluYWxEZXN0aW5hdGlvbihkc3QsIHNjb3Bl
LmdldCgpKSwgdmFsdWUuZ2V0KCkpOwogfQogCkBAIC0yMTk0LDcgKzIxOTQsNyBAQCBSZWdpc3Rl
cklEKiBUeXBlT2ZWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlcgogewogICAgIGlmIChkc3QgPT0gZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSkgewogICAgICAgICBnZW5lcmF0b3IuZW1pdE5vZGUoZ2VuZXJhdG9yLmlnbm9yZWRSZXN1
bHQoKSwgbV9leHByKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc3JjID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KG1fZXhwcik7CiAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0VHlwZU9mKGdlbmVyYXRvci5maW5h
bERlc3RpbmF0aW9uKGRzdCksIHNyYy5nZXQoKSk7CkBAIC0yNDM1LDcgKzI0MzUsNyBAQCBSZWdp
c3RlcklEKiBCaW5hcnlPcE5vZGU6OmVtaXRTdHJjYXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZAogICAgIC8vIGltbWVkaWF0ZSB3ZSBjYW4gdHJpdmlhbGx5IGRl
dGVybWluZSB0aGF0IG5vIGNvbnZlcnNpb24gd2lsbCBiZSByZXF1aXJlZC4KICAgICAvLyBJZiB0
aGlzIGlzIHRoZSBjYXNlCiAgICAgaWYgKGxlZnRNb3N0QWRkQ2hpbGQtPmlzU3RyaW5nKCkpCi0g
ICAgICAgIGxlZnRNb3N0QWRkQ2hpbGRUZW1wUmVnaXN0ZXIgPSAwOworICAgICAgICBsZWZ0TW9z
dEFkZENoaWxkVGVtcFJlZ2lzdGVyID0gbnVsbHB0cjsKIAogICAgIHdoaWxlIChyZXZlcnNlRXhw
cmVzc2lvbkxpc3Quc2l6ZSgpKSB7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBub2RlID0gcmV2
ZXJzZUV4cHJlc3Npb25MaXN0Lmxhc3QoKTsKQEAgLTI0NDksNyArMjQ0OSw3IEBAIFJlZ2lzdGVy
SUQqIEJpbmFyeU9wTm9kZTo6ZW1pdFN0cmNhdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9y
LCBSZWdpc3RlcklEKiBkCiAgICAgICAgIC8vIGdlbmVyYXRlZCB0aGUgc2Vjb25kIG5vZGUsIHdo
aWNoIG1lYW5zIGl0IGlzIHRpbWUgdG8gY29udmVydCB0aGUgbGVmdG1vc3Qgb3BlcmFuZC4KICAg
ICAgICAgaWYgKGxlZnRNb3N0QWRkQ2hpbGRUZW1wUmVnaXN0ZXIpIHsKICAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0VG9QcmltaXRpdmUobGVmdE1vc3RBZGRDaGlsZFRlbXBSZWdpc3RlciwgbGVm
dE1vc3RBZGRDaGlsZFRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBsZWZ0TW9zdEFkZENoaWxk
VGVtcFJlZ2lzdGVyID0gMDsgLy8gT25seSBkbyB0aGlzIG9uY2UuCisgICAgICAgICAgICBsZWZ0
TW9zdEFkZENoaWxkVGVtcFJlZ2lzdGVyID0gbnVsbHB0cjsgLy8gT25seSBkbyB0aGlzIG9uY2Uu
CiAgICAgICAgIH0KICAgICAgICAgLy8gUGxhbnQgYSBjb252ZXJzaW9uIGZvciB0aGlzIG5vZGUs
IGlmIG5lY2Vzc2FyeS4KICAgICAgICAgaWYgKCFub2RlLT5pc1N0cmluZygpKQpAQCAtMjUwNSw5
ICsyNTA1LDkgQEAgc3RhdGljIGlubGluZSBib29sIGNhbkZvbGRUb0JyYW5jaChPcGNvZGVJRCBv
cGNvZGVJRCwgRXhwcmVzc2lvbk5vZGUqIGJyYW5jaEV4cHIKIHZvaWQgQmluYXJ5T3BOb2RlOjp0
cnlGb2xkVG9CcmFuY2goQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgVHJpU3RhdGUmIGJy
YW5jaENvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqJiBicmFuY2hFeHByZXNzaW9uKQogewogICAg
IGJyYW5jaENvbmRpdGlvbiA9IFRyaVN0YXRlOjpJbmRldGVybWluYXRlOwotICAgIGJyYW5jaEV4
cHJlc3Npb24gPSAwOworICAgIGJyYW5jaEV4cHJlc3Npb24gPSBudWxscHRyOwogCi0gICAgQ29u
c3RhbnROb2RlKiBjb25zdGFudCA9IDA7CisgICAgQ29uc3RhbnROb2RlKiBjb25zdGFudCA9IG51
bGxwdHI7CiAgICAgaWYgKG1fZXhwcjEtPmlzQ29uc3RhbnQoKSkgewogICAgICAgICBjb25zdGFu
dCA9IHN0YXRpY19jYXN0PENvbnN0YW50Tm9kZSo+KG1fZXhwcjEpOwogICAgICAgICBicmFuY2hF
eHByZXNzaW9uID0gbV9leHByMjsKQEAgLTMxMDAsNyArMzEwMCw3IEBAIFJlZ2lzdGVySUQqIEFz
c2lnblJlc29sdmVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0CiAgICAgaWYgKG1fYXNzaWdubWVudENvbnRleHQgPT0gQXNzaWdubWVudENvbnRl
eHQ6OkFzc2lnbm1lbnRFeHByZXNzaW9uKQogICAgICAgICBnZW5lcmF0b3IuZW1pdFREWkNoZWNr
SWZOZWNlc3NhcnkodmFyLCBudWxscHRyLCBzY29wZS5nZXQoKSk7CiAgICAgaWYgKGRzdCA9PSBn
ZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKQotICAgICAgICBkc3QgPSAwOworICAgICAgICBkc3Qg
PSBudWxscHRyOwogICAgIFJlZlB0cjxSZWdpc3RlcklEPiByZXN1bHQgPSBnZW5lcmF0b3IuZW1p
dE5vZGUoZHN0LCBtX3JpZ2h0KTsgLy8gRXhlY3V0ZSBzaWRlIGVmZmVjdHMgZmlyc3QuCiAgICAg
aWYgKGlzUmVhZE9ubHkpIHsKICAgICAgICAgYm9vbCB0aHJld0V4Y2VwdGlvbiA9IGdlbmVyYXRv
ci5lbWl0UmVhZE9ubHlFeGNlcHRpb25JZk5lZWRlZCh2YXIpOwpAQCAtMzk4MCw3ICszOTgwLDcg
QEAgdm9pZCBSZXR1cm5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogICAgIEFTU0VSVChnZW5lcmF0b3IuY29kZVR5cGUoKSA9
PSBGdW5jdGlvbkNvZGUpOwogCiAgICAgaWYgKGRzdCA9PSBnZW5lcmF0b3IuaWdub3JlZFJlc3Vs
dCgpKQotICAgICAgICBkc3QgPSAwOworICAgICAgICBkc3QgPSBudWxscHRyOwogCiAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHJldHVyblJlZ2lzdGVyID0gbV92YWx1ZSA/IGdlbmVyYXRvci5lbWl0
Tm9kZUluVGFpbFBvc2l0aW9uKGRzdCwgbV92YWx1ZSkgOiBnZW5lcmF0b3IuZW1pdExvYWQoZHN0
LCBqc1VuZGVmaW5lZCgpKTsKIApAQCAtNDIxMyw3ICs0MjEzLDcgQEAgdm9pZCBMYWJlbE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3QpCiB2b2lkIFRocm93Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHsKICAgICBpZiAoZHN0ID09IGdlbmVyYXRvci5pZ25v
cmVkUmVzdWx0KCkpCi0gICAgICAgIGRzdCA9IDA7CisgICAgICAgIGRzdCA9IG51bGxwdHI7CiAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGV4cHIgPSBnZW5lcmF0b3IuZW1pdE5vZGUobV9leHByKTsK
ICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQoKSwg
ZGl2b3RFbmQoKSk7CiAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvdyhleHByLmdldCgpKTsKQEAgLTQ1
MDgsNyArNDUwOCw3IEBAIHZvaWQgRnVuY3Rpb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCopCiAgICAgICAgIGVtaXRTdGF0ZW1lbnRz
Qnl0ZWNvZGUoZ2VuZXJhdG9yLCBnZW5lcmF0b3IuaWdub3JlZFJlc3VsdCgpKTsKIAogICAgICAg
ICBTdGF0ZW1lbnROb2RlKiBzaW5nbGVTdGF0ZW1lbnQgPSB0aGlzLT5zaW5nbGVTdGF0ZW1lbnQo
KTsKLSAgICAgICAgUmV0dXJuTm9kZSogcmV0dXJuTm9kZSA9IDA7CisgICAgICAgIFJldHVybk5v
ZGUqIHJldHVybk5vZGUgPSBudWxscHRyOwogCiAgICAgICAgIC8vIENoZWNrIGZvciBhIHJldHVy
biBzdGF0ZW1lbnQgYXQgdGhlIGVuZCBvZiBhIGZ1bmN0aW9uIGNvbXBvc2VkIG9mIGEgc2luZ2xl
IGJsb2NrLgogICAgICAgICBpZiAoc2luZ2xlU3RhdGVtZW50ICYmIHNpbmdsZVN0YXRlbWVudC0+
aXNCbG9jaygpKSB7CkBAIC00NTI2LDcgKzQ1MjYsNyBAQCB2b2lkIEZ1bmN0aW9uTm9kZTo6ZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqKQogICAg
ICAgICAgICAgaWYgKGdlbmVyYXRvci5pc0NvbnN0cnVjdG9yKCkgJiYgZ2VuZXJhdG9yLmNvbnN0
cnVjdG9yS2luZCgpICE9IENvbnN0cnVjdG9yS2luZDo6TmFrZWQpCiAgICAgICAgICAgICAgICAg
cjAgPSBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgcjAgPSBnZW5lcmF0b3IuZW1pdExvYWQoMCwganNVbmRlZmluZWQoKSk7CisgICAg
ICAgICAgICAgICAgcjAgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwganNVbmRlZmluZWQo
KSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHIwLCBQcm9maWxlVHlw
ZUJ5dGVjb2RlRnVuY3Rpb25SZXR1cm5TdGF0ZW1lbnQpOyAvLyBEbyBub3QgZW1pdCBleHByZXNz
aW9uIGluZm8gZm9yIHRoaXMgcHJvZmlsZSBiZWNhdXNlIGl0J3Mgbm90IGluIHRoZSB1c2VyJ3Mg
c291cmNlIGNvZGUuCiAgICAgICAgICAgICBBU1NFUlQoc3RhcnRPZmZzZXQoKSA+PSBsaW5lU3Rh
cnRPZmZzZXQoKSk7CiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFdpbGxMZWF2ZUNhbGxGcmFt
ZURlYnVnSG9vaygpOwpAQCAtNTIxMCw3ICs1MjEwLDcgQEAgdm9pZCBSZXN0UGFyYW1ldGVyTm9k
ZTo6ZW1pdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yKQogUmVnaXN0ZXJJRCogU3ByZWFk
RXhwcmVzc2lvbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZ2lzdGVySUQqIE9iamVjdFNwcmVhZEV4cHJl
c3Npb25Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVn
aXN0ZXJJRCogZHN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0RlYnVnZ2VyU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
clNjb3BlLmgKaW5kZXggNDMyN2MxZjAyYzY5Mjc4NDUwOGUwYTlhMWEyMTQ5Nzc1ZWRkODAyZS4u
OWNmZmRiYWVmOTNjZDcwMDZjZGJlZjdhODViODU3MjE3NTE0ZTY1NSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyU2NvcGUuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJTY29wZS5oCkBAIC0xMTgsNyArMTE4LDcg
QEAgaW5saW5lIERlYnVnZ2VyU2NvcGU6Oml0ZXJhdG9yIERlYnVnZ2VyU2NvcGU6OmJlZ2luKCkK
IAogaW5saW5lIERlYnVnZ2VyU2NvcGU6Oml0ZXJhdG9yIERlYnVnZ2VyU2NvcGU6OmVuZCgpCiB7
IAotICAgIHJldHVybiBpdGVyYXRvcigwKTsgCisgICAgcmV0dXJuIGl0ZXJhdG9yKG51bGxwdHIp
OyAKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBYnN0cmFjdFZhbHVlLmNwcAppbmRleCA4YzcxYTQ3YzhjYTk3NmIwOTIwMzY3YzI5MTg2
MDE5MGYxM2Y0NTE0Li5jZGVlYmM0MGNmY2EwOTlmN2ExMWQ4MzFhYTk1ZDRlY2RlZTQwNDBhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0VmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RWYWx1ZS5jcHAKQEAg
LTQ4Niw3ICs0ODYsNyBAQCBSZXN1bHRUeXBlIEFic3RyYWN0VmFsdWU6OnJlc3VsdFR5cGUoKSBj
b25zdAogCiB2b2lkIEFic3RyYWN0VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QK
IHsKLSAgICBkdW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51
bGxwdHIpOwogfQogCiB2b2lkIEFic3RyYWN0VmFsdWU6OmR1bXBJbkNvbnRleHQoUHJpbnRTdHJl
YW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0FkamFjZW5jeUxpc3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCmluZGV4IGQ2ZjJkZGRlZGYyOGU1OGQ4MzRkYWQ2
NGY5NzdmMTMwM2QxYzNmMzEuLjViZmQ2Mjg2NGRlZWQ0OWYzZDE1NzUzYTI0NDUyZDRmMDZiMmNk
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlz
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWRqYWNlbmN5TGlzdC5oCkBA
IC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICBjaGlsZCgyKSA9IGNoaWxkMzsKICAg
ICB9CiAgICAgCi0gICAgdm9pZCBpbml0aWFsaXplKE5vZGUqIGNoaWxkMSA9IDAsIE5vZGUqIGNo
aWxkMiA9IDAsIE5vZGUqIGNoaWxkMyA9IDApCisgICAgdm9pZCBpbml0aWFsaXplKE5vZGUqIGNo
aWxkMSA9IG51bGxwdHIsIE5vZGUqIGNoaWxkMiA9IG51bGxwdHIsIE5vZGUqIGNoaWxkMyA9IG51
bGxwdHIpCiAgICAgewogICAgICAgICBpbml0aWFsaXplKEVkZ2UoY2hpbGQxKSwgRWRnZShjaGls
ZDIpLCBFZGdlKGNoaWxkMykpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdBcmd1bWVudFBvc2l0aW9uLmgKaW5kZXggODljMDhmYTA4MGNlYTMyZmQ5YzU5MWYzMGYx
ZTdkZDQ2ZjFkMTI1ZS4uYmQ4YjBlMGQ0ZWEzZjI1YWQ4NDVhMTQxZDJhZDM4NGEwZDg2MGNmNiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0aW9u
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmgK
QEAgLTUzLDcgKzUzLDcgQEAgcHVibGljOgogICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogc29tZVZh
cmlhYmxlKCkgY29uc3QKICAgICB7CiAgICAgICAgIGlmIChtX3ZhcmlhYmxlcy5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
ICAgICByZXR1cm4gbV92YXJpYWJsZXNbMF0tPmZpbmQoKTsKICAgICB9CiAgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FycmF5aWZ5U2xvd1BhdGhHZW5lcmF0
b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVy
YXRvci5oCmluZGV4IDE4NzQxYmVlNGY4YjU4OGM4OWE1MTEwMmUwZDM2ZTc3MjI2OWQxMjAuLjU1
YTk4OWRlMWJmMmE2YjkwZDlmNTJmMmU2MDk3NWYzYjA3YjExODUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5o
CkBAIC01OSwxMyArNTksMTMgQEAgcHVibGljOgogICAgICAgICAgICAgY2FzZSBBcnJheTo6SW50
MzI6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICBjYXNlIEFy
cmF5OjpDb250aWd1b3VzOgotICAgICAgICAgICAgICAgIG1fYmFkUHJvcGVydHlKdW1wID0gaml0
LT5zcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAg
ICAgICAgICAgICBtX2JhZFByb3BlcnR5SnVtcCA9IGppdC0+c3BlY3VsYXRpb25DaGVjayhVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgfQogICAgICAgICB9Ci0gICAgICAgIG1fYmFkSW5kZXhpbmdUeXBlSnVtcCA9IGppdC0+c3Bl
Y3VsYXRpb25DaGVjayhCYWRJbmRleGluZ1R5cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxs
KG1fYmFzZUdQUiksIDApOworICAgICAgICBtX2JhZEluZGV4aW5nVHlwZUp1bXAgPSBqaXQtPnNw
ZWN1bGF0aW9uQ2hlY2soQmFkSW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2Vs
bChtX2Jhc2VHUFIpLCBudWxscHRyKTsKICAgICB9CiAgICAgCiBwcm90ZWN0ZWQ6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2YWlsYWJpbGl0eS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBdmFpbGFiaWxpdHkuaAppbmRleCA2ZDE1N2Y1NDc0NjQ1
NDAzNDNiNDJlZWI3MTZlZWU5MmU1MDdiYjNlLi42YWJmNGNkZTgyMjQxNDg0ZWQ2M2Q1NTUyYzVl
NzY0ZDFhOWYxZDdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0F2
YWlsYWJpbGl0eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXZhaWxhYmls
aXR5LmgKQEAgLTM3LDcgKzM3LDcgQEAgc3RydWN0IE5vZGU7CiBjbGFzcyBBdmFpbGFiaWxpdHkg
ewogcHVibGljOgogICAgIEF2YWlsYWJpbGl0eSgpCi0gICAgICAgIDogbV9ub2RlKDApCisgICAg
ICAgIDogbV9ub2RlKG51bGxwdHIpCiAgICAgICAgICwgbV9mbHVzaGVkQXQoRGVhZEZsdXNoKQog
ICAgIHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDRlYzE1ZWNjMDdiMDM5ODZmMjMwNjhiM2ZkYzIyYmYwMWIyMjU2MTEu
LjEzMGY2YWU2ZTNjY2UzZTI5OTdkMjFmMTkzMjE1MzYyMWI1ZGI5ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC0xMTAsNyArMTEw
LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fY29kZUJsb2NrKGdyYXBoLm1fY29kZUJsb2NrKQog
ICAgICAgICAsIG1fcHJvZmlsZWRCbG9jayhncmFwaC5tX3Byb2ZpbGVkQmxvY2spCiAgICAgICAg
ICwgbV9ncmFwaChncmFwaCkKLSAgICAgICAgLCBtX2N1cnJlbnRCbG9jaygwKQorICAgICAgICAs
IG1fY3VycmVudEJsb2NrKG51bGxwdHIpCiAgICAgICAgICwgbV9jdXJyZW50SW5kZXgoMCkKICAg
ICAgICAgLCBtX2NvbnN0YW50VW5kZWZpbmVkKGdyYXBoLmZyZWV6ZShqc1VuZGVmaW5lZCgpKSkK
ICAgICAgICAgLCBtX2NvbnN0YW50TnVsbChncmFwaC5mcmVlemUoanNOdWxsKCkpKQpAQCAtMTIx
LDggKzEyMSw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX251bVRtcHMobV9jb2RlQmxvY2stPm51
bVRtcHMoKSkKICAgICAgICAgLCBtX3BhcmFtZXRlclNsb3RzKDApCiAgICAgICAgICwgbV9udW1Q
YXNzZWRWYXJBcmdzKDApCi0gICAgICAgICwgbV9pbmxpbmVTdGFja1RvcCgwKQotICAgICAgICAs
IG1fY3VycmVudEluc3RydWN0aW9uKDApCisgICAgICAgICwgbV9pbmxpbmVTdGFja1RvcChudWxs
cHRyKQorICAgICAgICAsIG1fY3VycmVudEluc3RydWN0aW9uKG51bGxwdHIpCiAgICAgICAgICwg
bV9oYXNEZWJ1Z2dlckVuYWJsZWQoZ3JhcGguaGFzRGVidWdnZXJFbmFibGVkKCkpCiAgICAgewog
ICAgICAgICBBU1NFUlQobV9wcm9maWxlZEJsb2NrKTsKQEAgLTc3NCw3ICs3NzQsNyBAQCBwcml2
YXRlOgogICAgICAgICByZXR1cm4gbm9kZTsKICAgICB9CiAgICAgCi0gICAgTm9kZSogYWRkVG9H
cmFwaChOb2RlVHlwZSBvcCwgTm9kZSogY2hpbGQxID0gMCwgTm9kZSogY2hpbGQyID0gMCwgTm9k
ZSogY2hpbGQzID0gMCkKKyAgICBOb2RlKiBhZGRUb0dyYXBoKE5vZGVUeXBlIG9wLCBOb2RlKiBj
aGlsZDEgPSBudWxscHRyLCBOb2RlKiBjaGlsZDIgPSBudWxscHRyLCBOb2RlKiBjaGlsZDMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAog
ICAgICAgICAgICAgb3AsIGN1cnJlbnROb2RlT3JpZ2luKCksIEVkZ2UoY2hpbGQxKSwgRWRnZShj
aGlsZDIpLApAQCAtNzg3LDcgKzc4Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBvcCwgY3Vy
cmVudE5vZGVPcmlnaW4oKSwgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJldHVy
biBhZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQotICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5
cGUgb3AsIE9wSW5mbyBpbmZvLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBjaGlsZDIgPSAwLCBO
b2RlKiBjaGlsZDMgPSAwKQorICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUgb3AsIE9wSW5m
byBpbmZvLCBOb2RlKiBjaGlsZDEgPSBudWxscHRyLCBOb2RlKiBjaGlsZDIgPSBudWxscHRyLCBO
b2RlKiBjaGlsZDMgPSBudWxscHRyKQogICAgIHsKICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9n
cmFwaC5hZGROb2RlKAogICAgICAgICAgICAgb3AsIGN1cnJlbnROb2RlT3JpZ2luKCksIGluZm8s
IEVkZ2UoY2hpbGQxKSwgRWRnZShjaGlsZDIpLApAQCAtNzk5LDcgKzc5OSw3IEBAIHByaXZhdGU6
CiAgICAgICAgIE5vZGUqIHJlc3VsdCA9IG1fZ3JhcGguYWRkTm9kZShvcCwgY3VycmVudE5vZGVP
cmlnaW4oKSwgaW5mbywgY2hpbGQxLCBjaGlsZDIsIGNoaWxkMyk7CiAgICAgICAgIHJldHVybiBh
ZGRUb0dyYXBoKHJlc3VsdCk7CiAgICAgfQotICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5cGUg
b3AsIE9wSW5mbyBpbmZvMSwgT3BJbmZvIGluZm8yLCBOb2RlKiBjaGlsZDEgPSAwLCBOb2RlKiBj
aGlsZDIgPSAwLCBOb2RlKiBjaGlsZDMgPSAwKQorICAgIE5vZGUqIGFkZFRvR3JhcGgoTm9kZVR5
cGUgb3AsIE9wSW5mbyBpbmZvMSwgT3BJbmZvIGluZm8yLCBOb2RlKiBjaGlsZDEgPSBudWxscHRy
LCBOb2RlKiBjaGlsZDIgPSBudWxscHRyLCBOb2RlKiBjaGlsZDMgPSBudWxscHRyKQogICAgIHsK
ICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAogICAgICAgICAgICAgb3As
IGN1cnJlbnROb2RlT3JpZ2luKCksIGluZm8xLCBpbmZvMiwKQEAgLTE4MTEsNyArMTgxMSw3IEBA
IHZvaWQgQnl0ZUNvZGVQYXJzZXI6OmlubGluZUNhbGwoTm9kZSogY2FsbFRhcmdldE5vZGUsIE9w
ZXJhbmQgcmVzdWx0LCBDYWxsVmFyaWFuCiAgICAgSW5saW5lVmFyaWFibGVEYXRhIGlubGluZVZh
cmlhYmxlRGF0YTsKICAgICBpbmxpbmVWYXJpYWJsZURhdGEuaW5saW5lQ2FsbEZyYW1lID0gbV9p
bmxpbmVTdGFja1RvcC0+bV9pbmxpbmVDYWxsRnJhbWU7CiAgICAgaW5saW5lVmFyaWFibGVEYXRh
LmFyZ3VtZW50UG9zaXRpb25TdGFydCA9IGFyZ3VtZW50UG9zaXRpb25TdGFydDsKLSAgICBpbmxp
bmVWYXJpYWJsZURhdGEuY2FsbGVlVmFyaWFibGUgPSAwOworICAgIGlubGluZVZhcmlhYmxlRGF0
YS5jYWxsZWVWYXJpYWJsZSA9IG51bGxwdHI7CiAgICAgCiAgICAgUkVMRUFTRV9BU1NFUlQoCiAg
ICAgICAgIG1faW5saW5lU3RhY2tUb3AtPm1faW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1cmVDYWxs
CkBAIC01ODE4LDEyICs1ODE4LDEyIEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2so
dW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICBOb2RlKiBvcGVyYW5kc1tBZGphY2VuY3lMaXN0
OjpTaXplXTsKICAgICAgICAgICAgIHVuc2lnbmVkIGluZGV4SW5PcGVyYW5kcyA9IDA7CiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgQWRqYWNlbmN5TGlzdDo6U2l6ZTsgKytp
KQotICAgICAgICAgICAgICAgIG9wZXJhbmRzW2ldID0gMDsKKyAgICAgICAgICAgICAgICBvcGVy
YW5kc1tpXSA9IG51bGxwdHI7CiAgICAgICAgICAgICBmb3IgKGludCBvcGVyYW5kSWR4ID0gMDsg
b3BlcmFuZElkeCA8IG51bU9wZXJhbmRzOyArK29wZXJhbmRJZHgpIHsKICAgICAgICAgICAgICAg
ICBpZiAoaW5kZXhJbk9wZXJhbmRzID09IG1heEFyZ3VtZW50cykgewogICAgICAgICAgICAgICAg
ICAgICBvcGVyYW5kc1swXSA9IGFkZFRvR3JhcGgoU3RyQ2F0LCBvcGVyYW5kc1swXSwgb3BlcmFu
ZHNbMV0sIG9wZXJhbmRzWzJdKTsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBp
ID0gMTsgaSA8IEFkamFjZW5jeUxpc3Q6OlNpemU7ICsraSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG9wZXJhbmRzW2ldID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wZXJhbmRzW2ld
ID0gbnVsbHB0cjsKICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbk9wZXJhbmRzID0gMTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCkBAIC01OTc4LDcgKzU5NzgsNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAg
ICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODQxOTIK
ICAgICAgICAgICAgICAgICBhZGRWYXJBcmdDaGlsZChiYXNlKTsKICAgICAgICAgICAgICAgICBh
ZGRWYXJBcmdDaGlsZChwcm9wZXJ0eSk7Ci0gICAgICAgICAgICAgICAgYWRkVmFyQXJnQ2hpbGQo
MCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCisgICAgICAgICAgICAgICAg
YWRkVmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3Jh
Z2UuCiAgICAgICAgICAgICAgICAgTm9kZSogZ2V0QnlWYWwgPSBhZGRUb0dyYXBoKE5vZGU6OlZh
ckFyZywgR2V0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8ocHJlZGlj
dGlvbikpOwogICAgICAgICAgICAgICAgIG1fZXhpdE9LID0gZmFsc2U7IC8vIEdldEJ5VmFsIG11
c3QgYmUgdHJlYXRlZCBhcyBpZiBpdCBjbG9iYmVycyBleGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBo
YXNlIG1heSBtYWtlIGl0IGdlbmVyaWMuCiAgICAgICAgICAgICAgICAgc2V0KGJ5dGVjb2RlLm1f
ZHN0LCBnZXRCeVZhbCk7CkBAIC02OTQ3LDcgKzY5NDcsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogICAgICAgICAgICAgICAgICAgICAvLyBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg0MTkyCiAgICAgICAgICAgICAg
ICAgICAgIGFkZFZhckFyZ0NoaWxkKGdldChieXRlY29kZS5tX2l0ZXJhYmxlKSk7CiAgICAgICAg
ICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKGluZGV4KTsKLSAgICAgICAgICAgICAgICAgICAg
YWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2UuCisg
ICAgICAgICAgICAgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29t
IGZvciBwcm9wZXJ0eSBzdG9yYWdlLgogICAgICAgICAgICAgICAgICAgICBOb2RlKiBnZXRCeVZh
bCA9IGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBHZXRCeVZhbCwgT3BJbmZvKGFycmF5TW9kZS5h
c1dvcmQoKSksIE9wSW5mbyhwcmVkaWN0aW9uKSk7CiAgICAgICAgICAgICAgICAgICAgIHNldChi
eXRlY29kZS5tX3ZhbHVlLCBnZXRCeVZhbCk7CiAgICAgICAgICAgICAgICAgICAgIHNldChieXRl
Y29kZS5tX2RvbmUsIGZhbHNlTm9kZSk7CkBAIC03MjQ0LDggKzcyNDQsOCBAQCB2b2lkIEJ5dGVD
b2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQogCiAgICAgICAgICAgICBSZXNv
bHZlVHlwZSByZXNvbHZlVHlwZTsKICAgICAgICAgICAgIEdldFB1dEluZm8gZ2V0UHV0SW5mbygw
KTsKLSAgICAgICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gMDsKLSAgICAgICAgICAgIFdh
dGNocG9pbnRTZXQqIHdhdGNocG9pbnRzID0gMDsKKyAgICAgICAgICAgIFN0cnVjdHVyZSogc3Ry
dWN0dXJlID0gbnVsbHB0cjsKKyAgICAgICAgICAgIFdhdGNocG9pbnRTZXQqIHdhdGNocG9pbnRz
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIHVpbnRwdHJfdCBvcGVyYW5kOwogICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgIENvbmN1cnJlbnRKU0xvY2tlciBsb2NrZXIobV9pbmxpbmVTdGFj
a1RvcC0+bV9wcm9maWxlZEJsb2NrLT5tX2xvY2spOwpAQCAtODA0OCw3ICs4MDQ4LDcgQEAgQnl0
ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNrRW50cnkoCiAgICAgICAg
IEFTU0VSVCghcmV0dXJuVmFsdWUuaXNWYWxpZCgpKTsKICAgICAgICAgQVNTRVJUKCFpbmxpbmVD
YWxsRnJhbWVTdGFydC5pc1ZhbGlkKCkpOwogCi0gICAgICAgIG1faW5saW5lQ2FsbEZyYW1lID0g
MDsKKyAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUgPSBudWxscHRyOwogCiAgICAgICAgIG1faWRl
bnRpZmllclJlbWFwLnJlc2l6ZShjb2RlQmxvY2stPm51bWJlck9mSWRlbnRpZmllcnMoKSk7CiAg
ICAgICAgIG1fc3dpdGNoUmVtYXAucmVzaXplKGNvZGVCbG9jay0+bnVtYmVyT2ZTd2l0Y2hKdW1w
VGFibGVzKCkpOwpAQCAtODIxOSw4ICs4MjE5LDggQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6aGFu
ZGxlUHV0QnlWYWwoQnl0ZWNvZGUgYnl0ZWNvZGUsIEJ5dGVjb2RlSW5kZXggb3NyRXhpdEluZGUK
ICAgICAgICAgYWRkVmFyQXJnQ2hpbGQoYmFzZSk7CiAgICAgICAgIGFkZFZhckFyZ0NoaWxkKHBy
b3BlcnR5KTsKICAgICAgICAgYWRkVmFyQXJnQ2hpbGQodmFsdWUpOwotICAgICAgICBhZGRWYXJB
cmdDaGlsZCgwKTsgLy8gTGVhdmUgcm9vbSBmb3IgcHJvcGVydHkgc3RvcmFnZS4KLSAgICAgICAg
YWRkVmFyQXJnQ2hpbGQoMCk7IC8vIExlYXZlIHJvb20gZm9yIGxlbmd0aC4KKyAgICAgICAgYWRk
VmFyQXJnQ2hpbGQobnVsbHB0cik7IC8vIExlYXZlIHJvb20gZm9yIHByb3BlcnR5IHN0b3JhZ2Uu
CisgICAgICAgIGFkZFZhckFyZ0NoaWxkKG51bGxwdHIpOyAvLyBMZWF2ZSByb29tIGZvciBsZW5n
dGguCiAgICAgICAgIGFkZFRvR3JhcGgoTm9kZTo6VmFyQXJnLCBpc0RpcmVjdCA/IFB1dEJ5VmFs
RGlyZWN0IDogUHV0QnlWYWwsIE9wSW5mbyhhcnJheU1vZGUuYXNXb3JkKCkpLCBPcEluZm8oYnl0
ZWNvZGUubV9lY21hTW9kZSkpOwogICAgICAgICBtX2V4aXRPSyA9IGZhbHNlOyAvLyBQdXRCeVZh
bCBhbmQgUHV0QnlWYWxEaXJlY3QgbXVzdCBiZSB0cmVhdGVkIGFzIGlmIHRoZXkgY2xvYmJlciBl
eGl0IHN0YXRlLCBzaW5jZSBGaXh1cFBoYXNlIG1heSBtYWtlIHRoZW0gZ2VuZXJpYy4KICAgICB9
CkBAIC04MzMxLDcgKzgzMzEsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZSgpCiAgICAg
VkVSQk9TRV9MT0coIlBhcnNpbmcgIiwgKm1fY29kZUJsb2NrLCAiXG4iKTsKICAgICAKICAgICBJ
bmxpbmVTdGFja0VudHJ5IGlubGluZVN0YWNrRW50cnkoCi0gICAgICAgIHRoaXMsIG1fY29kZUJs
b2NrLCBtX3Byb2ZpbGVkQmxvY2ssIDAsIFZpcnR1YWxSZWdpc3RlcigpLCBWaXJ0dWFsUmVnaXN0
ZXIoKSwKKyAgICAgICAgdGhpcywgbV9jb2RlQmxvY2ssIG1fcHJvZmlsZWRCbG9jaywgbnVsbHB0
ciwgVmlydHVhbFJlZ2lzdGVyKCksIFZpcnR1YWxSZWdpc3RlcigpLAogICAgICAgICBtX2NvZGVC
bG9jay0+bnVtUGFyYW1ldGVycygpLCBJbmxpbmVDYWxsRnJhbWU6OkNhbGwsIG51bGxwdHIpOwog
ICAgIAogICAgIHBhcnNlQ29kZUJsb2NrKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDRkdTaW1wbGlmaWNhdGlvblBoYXNlLmNwcAppbmRleCA0NTc5MGJmODAz
OTE2NGExNGI3YzEyNWRhYTYxMWU2MDg5NzYzZDJlLi5iZWY2ODhmODJhMGVjYmJiZDQ0NDU3Zjcz
NmMxMmU5ZDQ3NzI2NzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0NGR1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ0ZHU2ltcGxpZmljYXRpb25QaGFzZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgIGlmICh0ZXJtaW5hbC0+Y2hpbGQxKCktPmhhc0NvbnN0
YW50KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIEZyb3plblZhbHVlKiB2YWx1ZSA9IHRl
cm1pbmFsLT5jaGlsZDEoKS0+Y29uc3RhbnQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIFRy
aVN0YXRlIGZvdW5kID0gVHJpU3RhdGU6OkZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAg
QmFzaWNCbG9jayogdGFyZ2V0QmxvY2sgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgQmFz
aWNCbG9jayogdGFyZ2V0QmxvY2sgPSBudWxscHRyOwogICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gZGF0YS0+Y2FzZXMuc2l6ZSgpOyBmb3VuZCA9PSBUcmlTdGF0ZTo6
RmFsc2UgJiYgaS0tOykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kID0gZGF0
YS0+Y2FzZXNbaV0udmFsdWUuc3RyaWN0RXF1YWwodmFsdWUpOwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChmb3VuZCA9PSBUcmlTdGF0ZTo6VHJ1ZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0NQU1JldGhyZWFkaW5nUGhhc2UuY3BwCmluZGV4IDg3M2Zh
MDQzMDU4YTBmZDE4ZTRkZjEyMzNkZTZmOTY3NmEyYmRlMDAuLjg1YjE1ODNiYmYzNTU0YWY4YTBk
MjgyZjg3OWEyYmUxZjRmMDYyZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHQ1BTUmV0aHJlYWRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDUFNSZXRocmVhZGluZ1BoYXNlLmNwcApAQCAtNDE0LDcgKzQxNCw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFZlY3RvcjxQaGlTdGFja0VudHJ5LCAxMjg+JiBwaGlTdGFjayA9IHBoaVN0
YWNrRm9yPG9wZXJhbmRLaW5kPigpOwogICAgICAgICAKICAgICAgICAgLy8gRW5zdXJlIHRoYXQg
YXR0ZW1wdHMgdG8gdXNlIHRoaXMgZmFpbCBpbnN0YW50bHkuCi0gICAgICAgIG1fYmxvY2sgPSAw
OworICAgICAgICBtX2Jsb2NrID0gbnVsbHB0cjsKICAgICAgICAgCiAgICAgICAgIHdoaWxlICgh
cGhpU3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBQaGlTdGFja0VudHJ5IGVudHJ5ID0g
cGhpU3RhY2subGFzdCgpOwpAQCAtNDY4LDcgKzQ2OCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgTm9kZSogbmV3UGhpID0gYWRkUGhpU2lsZW50bHkoYmxv
Y2ssIGN1cnJlbnRQaGktPm9yaWdpbiwgdmFyaWFibGUpOwogICAgICAgICAgICAgICAgIG5ld1Bo
aS0+Y2hpbGRyZW4gPSBjdXJyZW50UGhpLT5jaGlsZHJlbjsKLSAgICAgICAgICAgICAgICBjdXJy
ZW50UGhpLT5jaGlsZHJlbi5pbml0aWFsaXplKG5ld1BoaSwgdmFyaWFibGVJblByZXZpb3VzLCAw
KTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UGhpLT5jaGlsZHJlbi5pbml0aWFsaXplKG5ld1Bo
aSwgdmFyaWFibGVJblByZXZpb3VzLCBudWxscHRyKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGls
YXRpb25LZXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tcGlsYXRpb25LZXku
aAppbmRleCBmZDQwODViMjlkYTYyZGUwNThhOGMxODU2MTMwODIwNGQwMWQwMDFiLi41ODMyZjZj
NjM3NWJmODJmMWQzN2ViZWEzZWRhNDY4NWFkYzEwNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NvbXBpbGF0aW9uS2V5LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb21waWxhdGlvbktleS5oCkBAIC0zOCwxMyArMzgsMTMgQEAgbmFtZXNw
YWNlIERGRyB7CiBjbGFzcyBDb21waWxhdGlvbktleSB7CiBwdWJsaWM6CiAgICAgQ29tcGlsYXRp
b25LZXkoKQotICAgICAgICA6IG1fcHJvZmlsZWRCbG9jaygwKQorICAgICAgICA6IG1fcHJvZmls
ZWRCbG9jayhudWxscHRyKQogICAgICAgICAsIG1fbW9kZShJbnZhbGlkQ29tcGlsYXRpb25Nb2Rl
KQogICAgIHsKICAgICB9CiAgICAgCiAgICAgQ29tcGlsYXRpb25LZXkoV1RGOjpIYXNoVGFibGVE
ZWxldGVkVmFsdWVUeXBlKQotICAgICAgICA6IG1fcHJvZmlsZWRCbG9jaygwKQorICAgICAgICA6
IG1fcHJvZmlsZWRCbG9jayhudWxscHRyKQogICAgICAgICAsIG1fbW9kZShERkdNb2RlKQogICAg
IHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0
YW50Rm9sZGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3Rh
bnRGb2xkaW5nUGhhc2UuY3BwCmluZGV4IDkwYTMzNjczODhlNGU2ODIxOTAzODFiNjM5NTk2ZDQ5
YjIwODliNmUuLjJkY2VlYmExMTA4OWRhMmU3MGQzN2NiZmU2YTUzYzlmNWY3MjNmMTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhh
c2UuY3BwCkBAIC0xMjgxLDcgKzEyODEsNyBAQCBwcml2YXRlOgogICAgICAgICBub2RlLT5jaGls
ZDEoKS5zZXRVc2VLaW5kKEtub3duQ2VsbFVzZSk7CiAgICAgICAgIGNoaWxkRWRnZS5zZXRVc2VL
aW5kKEtub3duQ2VsbFVzZSk7CiAKLSAgICAgICAgVHJhbnNpdGlvbiogdHJhbnNpdGlvbiA9IDA7
CisgICAgICAgIFRyYW5zaXRpb24qIHRyYW5zaXRpb24gPSBudWxscHRyOwogICAgICAgICBpZiAo
dmFyaWFudC5raW5kKCkgPT0gUHV0QnlJZFZhcmlhbnQ6OlRyYW5zaXRpb24pIHsKICAgICAgICAg
ICAgIHRyYW5zaXRpb24gPSBtX2dyYXBoLm1fdHJhbnNpdGlvbnMuYWRkKAogICAgICAgICAgICAg
ICAgIG1fZ3JhcGgucmVnaXN0ZXJTdHJ1Y3R1cmUodmFyaWFudC5vbGRTdHJ1Y3R1cmVGb3JUcmFu
c2l0aW9uKCkpLCBtX2dyYXBoLnJlZ2lzdGVyU3RydWN0dXJlKHZhcmlhbnQubmV3U3RydWN0dXJl
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1i
bGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRGlzYXNzZW1ibGVyLmNwcApp
bmRleCA3MjdlYjQ4YWYxYjY4ZTk3MGRiNzA3N2ViZWEyZDBhZGZjYjNhMWU2Li40ODRmZGM0MWIx
NjY1NDlhMWNjMjExZjhiYjc1MTBiZTk0YWI1MTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Rpc2Fzc2VtYmxlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEaXNhc3NlbWJsZXIuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgVmVjdG9yPERp
c2Fzc2VtYmxlcjo6RHVtcGVkT3A+IERpc2Fzc2VtYmxlcjo6Y3JlYXRlRHVtcExpc3QoTGlua0J1
ZmZlciYgbGlua0J1ZmYKICAgICBjb25zdCBjaGFyKiBwcmVmaXggPSAiICAgICI7CiAgICAgY29u
c3QgY2hhciogZGlzYXNzZW1ibHlQcmVmaXggPSAiICAgICAgICAiOwogICAgIAotICAgIE5vZGUq
IGxhc3ROb2RlID0gMDsKKyAgICBOb2RlKiBsYXN0Tm9kZSA9IG51bGxwdHI7CiAgICAgTWFjcm9B
c3NlbWJsZXI6OkxhYmVsIHByZXZpb3VzTGFiZWwgPSBtX3N0YXJ0T2ZDb2RlOwogICAgIGZvciAo
c2l6ZV90IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5udW1CbG9ja3MoKTsg
KytibG9ja0luZGV4KSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIGJsb2NrID0gbV9ncmFwaC5ibG9j
ayhibG9ja0luZGV4KTsKQEAgLTE0Myw3ICsxNDMsNyBAQCBWZWN0b3I8RGlzYXNzZW1ibGVyOjpE
dW1wZWRPcD4gRGlzYXNzZW1ibGVyOjpjcmVhdGVEdW1wTGlzdChMaW5rQnVmZmVyJiBsaW5rQnVm
ZgogICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwogICAgIG91dC5wcmlu
dChwcmVmaXgsICIoRW5kIE9mIE1haW4gUGF0aClcbiIpOwogICAgIGFwcGVuZChyZXN1bHQsIG91
dCwgcHJldmlvdXNPcmlnaW4pOwotICAgIGR1bXBEaXNhc3NlbWJseShvdXQsIGRpc2Fzc2VtYmx5
UHJlZml4LCBsaW5rQnVmZmVyLCBwcmV2aW91c0xhYmVsLCBtX2VuZE9mQ29kZSwgMCk7CisgICAg
ZHVtcERpc2Fzc2VtYmx5KG91dCwgZGlzYXNzZW1ibHlQcmVmaXgsIGxpbmtCdWZmZXIsIHByZXZp
b3VzTGFiZWwsIG1fZW5kT2ZDb2RlLCBudWxscHRyKTsKICAgICBhcHBlbmQocmVzdWx0LCBvdXQs
IHByZXZpb3VzT3JpZ2luKTsKICAgICBtX2R1bXBDb250ZXh0LmR1bXAob3V0LCBwcmVmaXgpOwog
ICAgIGFwcGVuZChyZXN1bHQsIG91dCwgcHJldmlvdXNPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb3VibGVGb3JtYXRTdGF0ZS5oCmluZGV4IGRjYjJiOGMyN2Ni
MzBkY2QwNzIzNzI1NzhkNGNkYTUyMTBlZGQwMjguLjg3NWFmYjUzZjcyYjVlZTQ2OTY0MTA0NzQ2
YzM2YjdlYzQ0MTdlOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG91YmxlRm9ybWF0U3RhdGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
dWJsZUZvcm1hdFN0YXRlLmgKQEAgLTg4LDcgKzg4LDcgQEAgaW5saW5lIGNvbnN0IGNoYXIqIGRv
dWJsZUZvcm1hdFN0YXRlVG9TdHJpbmcoRG91YmxlRm9ybWF0U3RhdGUgc3RhdGUpCiAgICAgICAg
IHJldHVybiAiRm9yY2VWYWx1ZSI7CiAgICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gfSAvLyBu
YW1lc3BhY2UgSlNDOjpERkcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRWRnZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgKaW5kZXggYjc4
ZTE4YmJiNTkzZGU5M2FjYmUyODY2N2M1Yzk1MTNlNDgyYmE2NS4uNGEyNTViMDYwODYxNzI3ZmZj
MjNiOTIzYWNlMDI0OTExMjAyNzMyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdFZGdlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdFZGdlLmgK
QEAgLTM2LDcgKzM2LDcgQEAgY2xhc3MgQWRqYWNlbmN5TGlzdDsKIAogY2xhc3MgRWRnZSB7CiBw
dWJsaWM6Ci0gICAgZXhwbGljaXQgRWRnZShOb2RlKiBub2RlID0gMCwgVXNlS2luZCB1c2VLaW5k
ID0gVW50eXBlZFVzZSwgUHJvb2ZTdGF0dXMgcHJvb2ZTdGF0dXMgPSBOZWVkc0NoZWNrLCBLaWxs
U3RhdHVzIGtpbGxTdGF0dXMgPSBEb2VzTm90S2lsbCkKKyAgICBleHBsaWNpdCBFZGdlKE5vZGUq
IG5vZGUgPSBudWxscHRyLCBVc2VLaW5kIHVzZUtpbmQgPSBVbnR5cGVkVXNlLCBQcm9vZlN0YXR1
cyBwcm9vZlN0YXR1cyA9IE5lZWRzQ2hlY2ssIEtpbGxTdGF0dXMga2lsbFN0YXR1cyA9IERvZXNO
b3RLaWxsKQogI2lmIFVTRShKU1ZBTFVFNjQpCiAgICAgICAgIDogbV9lbmNvZGVkV29yZChtYWtl
V29yZChub2RlLCB1c2VLaW5kLCBwcm9vZlN0YXR1cywga2lsbFN0YXR1cykpCiAjZWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggODRkMzllMjkw
ZWY1YTdmMzY2ZDg5ZTcwNGI1ODFmMDE2NDQyNTJiOS4uMGYwYWE0NGQ2ZDQ5OWQ4ZjRiM2QwNzQy
NTQ3ZmE4NjRkNmRlNGM0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0zODU3LDcgKzM4NTcsNyBAQCBwcml2YXRlOgogICAgICAgICBmaXhFZGdl
PEtub3duQ2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBub2RlLT5zZXRBcnJheU1v
ZGUoYXJyYXlNb2RlKTsKICAgICAgICAgICAgIAotICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hl
Y2tBcnJheShhcnJheU1vZGUsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCAw
LCBsZW5ndGhOZWVkc1N0b3JhZ2UpOworICAgICAgICBOb2RlKiBzdG9yYWdlID0gY2hlY2tBcnJh
eShhcnJheU1vZGUsIG5vZGUtPm9yaWdpbiwgbm9kZS0+Y2hpbGQxKCkubm9kZSgpLCBudWxscHRy
LCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwogICAgICAgICBpZiAoIXN0b3JhZ2UpCiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAKQEAgLTM4NjYsNyArMzg2Niw3IEBAIHByaXZhdGU6CiAg
ICAgCiAgICAgTm9kZSogcHJlcGVuZEdldEFycmF5TGVuZ3RoKE5vZGVPcmlnaW4gb3JpZ2luLCBO
b2RlKiBjaGlsZCwgQXJyYXlNb2RlIGFycmF5TW9kZSkKICAgICB7Ci0gICAgICAgIE5vZGUqIHN0
b3JhZ2UgPSBjaGVja0FycmF5KGFycmF5TW9kZSwgb3JpZ2luLCBjaGlsZCwgMCwgbGVuZ3RoTmVl
ZHNTdG9yYWdlKTsKKyAgICAgICAgTm9kZSogc3RvcmFnZSA9IGNoZWNrQXJyYXkoYXJyYXlNb2Rl
LCBvcmlnaW4sIGNoaWxkLCBudWxscHRyLCBsZW5ndGhOZWVkc1N0b3JhZ2UpOwogICAgICAgICBy
ZXR1cm4gbV9pbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZSgKICAgICAgICAgICAgIG1faW5kZXhJbkJs
b2NrLCBTcGVjSW50MzJPbmx5LCBHZXRBcnJheUxlbmd0aCwgb3JpZ2luLAogICAgICAgICAgICAg
T3BJbmZvKGFycmF5TW9kZS5hc1dvcmQoKSksIEVkZ2UoY2hpbGQsIEtub3duQ2VsbFVzZSksIEVk
Z2Uoc3RvcmFnZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdG
cm96ZW5WYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zyb3plblZhbHVl
LmNwcAppbmRleCAzOWMwOWFkYTU2MmU0YTZlMWVhZWVlODJhZGYzZWJkOTRlNmVmYmQ1Li4zNjI1
NTRhZDEyNjQzMTE4NTFiN2Y4MzkwYzA1Y2ViZjgyMGEwZGVlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Zyb3plblZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Zyb3plblZhbHVlLmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEZy
b3plblZhbHVlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBj
b250ZXh0KSBjb25zdAogCiB2b2lkIEZyb3plblZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQp
IGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRleHQo
b3V0LCBudWxscHRyKTsKIH0KIAogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHZW5lcmF0aW9uSW5mby5oCmluZGV4IGFkZjJiZGFlNTM3
MTQ2MTMzYWVjODI5ODM5ZTRjZTgzYzUyNWJmNWYuLjRmYWY5NDlhNzg2MGQyODQ4YmIxYWJhMjM3
MWE1NDljZjc4NWU1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R2VuZXJhdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dlbmVy
YXRpb25JbmZvLmgKQEAgLTQ2LDcgKzQ2LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBE
RkcgewogY2xhc3MgR2VuZXJhdGlvbkluZm8gewogcHVibGljOgogICAgIEdlbmVyYXRpb25JbmZv
KCkKLSAgICAgICAgOiBtX25vZGUoMCkKKyAgICAgICAgOiBtX25vZGUobnVsbHB0cikKICAgICAg
ICAgLCBtX3VzZUNvdW50KDApCiAgICAgICAgICwgbV9yZWdpc3RlckZvcm1hdChEYXRhRm9ybWF0
Tm9uZSkKICAgICAgICAgLCBtX3NwaWxsRm9ybWF0KERhdGFGb3JtYXROb25lKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCmluZGV4IGVjMGYzYjRiNGI2NTAzZDMxMjE2YjZlMGVkM2Q4
ZWJjNjk3MTg3ZDIuLjU0ZmU1NTI5ZDU5OTA4MjY3ZDhmNjZhZWY1MTU1ZWViMDkzYWFkNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKQEAgLTI2NywxNCArMjY3LDE0IEBAIHB1
YmxpYzoKICAgICB2b2lkIGFzc2VydElzUmVnaXN0ZXJlZChTdHJ1Y3R1cmUqIHN0cnVjdHVyZSk7
CiAgICAgCiAgICAgLy8gQ29kZUJsb2NrIGlzIG9wdGlvbmFsLCBidXQgbWF5IGFsbG93IGFkZGl0
aW9uYWwgaW5mb3JtYXRpb24gdG8gYmUgZHVtcGVkIChlLmcuIElkZW50aWZpZXIgbmFtZXMpLgot
ICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCksIER1bXBDb250ZXh0
KiA9IDApOworICAgIHZvaWQgZHVtcChQcmludFN0cmVhbSYgPSBXVEY6OmRhdGFGaWxlKCksIER1
bXBDb250ZXh0KiA9IG51bGxwdHIpOwogCiAgICAgYm9vbCB0ZXJtaW5hbHNBcmVWYWxpZCgpOwog
ICAgIAogICAgIGVudW0gUGhpTm9kZUR1bXBNb2RlIHsgRHVtcExpdmVQaGlzT25seSwgRHVtcEFs
bFBoaXMgfTsKICAgICB2b2lkIGR1bXBCbG9ja0hlYWRlcihQcmludFN0cmVhbSYsIGNvbnN0IGNo
YXIqIHByZWZpeCwgQmFzaWNCbG9jayosIFBoaU5vZGVEdW1wTW9kZSwgRHVtcENvbnRleHQqKTsK
ICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBFZGdlKTsKLSAgICB2b2lkIGR1bXAoUHJpbnRT
dHJlYW0mLCBjb25zdCBjaGFyKiBwcmVmaXgsIE5vZGUqLCBEdW1wQ29udGV4dCogPSAwKTsKKyAg
ICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mLCBjb25zdCBjaGFyKiBwcmVmaXgsIE5vZGUqLCBEdW1w
Q29udGV4dCogPSBudWxscHRyKTsKICAgICBzdGF0aWMgaW50IGFtb3VudE9mTm9kZVdoaXRlU3Bh
Y2UoTm9kZSopOwogICAgIHN0YXRpYyB2b2lkIHByaW50Tm9kZVdoaXRlU3BhY2UoUHJpbnRTdHJl
YW0mLCBOb2RlKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
SW5QbGFjZUFic3RyYWN0U3RhdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJ
blBsYWNlQWJzdHJhY3RTdGF0ZS5jcHAKaW5kZXggN2NjMzRhZTJkMGQ0ZTVmODQ4ZTY5NTczMDI0
OTJjMTIxZDcxZmVkOC4uNWI0NDliZWZlMThiMTA3MDZhZTdhNzFkOGFkZThmMjk2Mjk4MzlhYiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJhY3RT
dGF0ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJblBsYWNlQWJzdHJh
Y3RTdGF0ZS5jcHAKQEAgLTMyNiw3ICszMjYsNyBAQCBib29sIEluUGxhY2VBYnN0cmFjdFN0YXRl
OjplbmRCYXNpY0Jsb2NrKCkKIAogdm9pZCBJblBsYWNlQWJzdHJhY3RTdGF0ZTo6cmVzZXQoKQog
ewotICAgIG1fYmxvY2sgPSAwOworICAgIG1fYmxvY2sgPSBudWxscHRyOwogICAgIG1faXNWYWxp
ZCA9IGZhbHNlOwogICAgIG1fYnJhbmNoRGlyZWN0aW9uID0gSW52YWxpZEJyYW5jaERpcmVjdGlv
bjsKICAgICBtX3N0cnVjdHVyZUNsb2JiZXJTdGF0ZSA9IFN0cnVjdHVyZXNBcmVXYXRjaGVkOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdJbnRlZ2VyQ2hlY2tDb21i
aW5pbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVj
a0NvbWJpbmluZ1BoYXNlLmNwcAppbmRleCA5MDE4ZmE5NGQzYmNkZjU1ODRjMDUyMzI3MDcyODg2
NjI3N2RjMmJkLi4xY2E5YzUxNmVlOGE1OGVjOTNhMjAwMmE0ZTkyODVkNjYyNzQ3NWYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVja0NvbWJpbmlu
Z1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ludGVnZXJDaGVj
a0NvbWJpbmluZ1BoYXNlLmNwcApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICBSYW5nZUtleSByZXN1bHQ7CiAgICAgICAgICAgICByZXN1bHQubV9raW5kID0gQWRkaXRpb247
CiAgICAgICAgICAgICByZXN1bHQubV9zb3VyY2UgPSBlZGdlLnNhbml0aXplZCgpOwotICAgICAg
ICAgICAgcmVzdWx0Lm1fa2V5ID0gMDsKKyAgICAgICAgICAgIHJlc3VsdC5tX2tleSA9IG51bGxw
dHI7CiAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICAgIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMYXp5SlNWYWx1ZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xhenlKU1ZhbHVlLmNwcAppbmRleCAwMWY0MmY4
YjRjNTRiYjg5YThiYTU1MzZkMTgyMmNkZDRlYzQyNTgzLi4yYzRjNjExZDhhOTQ5NDYyZWM1M2I0
NmMwNjA0YzhjYTk0ZjNhOGFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0xhenlKU1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xh
enlKU1ZhbHVlLmNwcApAQCAtMjg2LDcgKzI4Niw3IEBAIHZvaWQgTGF6eUpTVmFsdWU6OmR1bXBJ
bkNvbnRleHQoUHJpbnRTdHJlYW0mIG91dCwgRHVtcENvbnRleHQqIGNvbnRleHQpIGNvbnN0CiAK
IHZvaWQgTGF6eUpTVmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBk
dW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIpOwog
fQogCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCmluZGV4IGZmMzhjZWQ1ZWI1MDk3ZmRhYjYwYjZkNWJhNGIyMzdjN2U1MjQ3ODguLmQwYWNh
MDFkM2RlMDc2OTJlMmVjMjY5OTRiNmQxODU1ZmQxYzYwMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljX2Fzc2VydChzaXplb2YoRGF0
YVZpZXdEYXRhKSA9PSBzaXplb2YodWludDY0X3QpLCAiIik7CiAKIHN0cnVjdCBCcmFuY2hUYXJn
ZXQgewogICAgIEJyYW5jaFRhcmdldCgpCi0gICAgICAgIDogYmxvY2soMCkKKyAgICAgICAgOiBi
bG9jayhudWxscHRyKQogICAgICAgICAsIGNvdW50KFBOYU4pCiAgICAgewogICAgIH0KQEAgLTk5
NCw3ICs5OTQsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEq
IHJlc3VsdCA9IG1fb3BJbmZvLmFzPFZhcmlhYmxlQWNjZXNzRGF0YSo+KCk7CiAgICAgICAgIGlm
ICghcmVzdWx0KQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+ZmluZCgpOwogICAgIH0KICAgICAKQEAgLTMz
MDYsNyArMzMwNiw3IEBAIENTdHJpbmcgbm9kZUxpc3REdW1wKGNvbnN0IFQmIG5vZGVMaXN0KQog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotQ1N0cmluZyBub2RlTWFwRHVtcChjb25zdCBUJiBu
b2RlTWFwLCBEdW1wQ29udGV4dCogY29udGV4dCA9IDApCitDU3RyaW5nIG5vZGVNYXBEdW1wKGNv
bnN0IFQmIG5vZGVNYXAsIER1bXBDb250ZXh0KiBjb250ZXh0ID0gbnVsbHB0cikKIHsKICAgICBW
ZWN0b3I8dHlwZW5hbWUgVDo6S2V5VHlwZT4ga2V5czsKICAgICBmb3IgKApAQCAtMzMyMiw3ICsz
MzIyLDcgQEAgQ1N0cmluZyBub2RlTWFwRHVtcChjb25zdCBUJiBub2RlTWFwLCBEdW1wQ29udGV4
dCogY29udGV4dCA9IDApCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1DU3RyaW5nIG5vZGVW
YWx1ZVBhaXJMaXN0RHVtcChjb25zdCBUJiBub2RlVmFsdWVQYWlyTGlzdCwgRHVtcENvbnRleHQq
IGNvbnRleHQgPSAwKQorQ1N0cmluZyBub2RlVmFsdWVQYWlyTGlzdER1bXAoY29uc3QgVCYgbm9k
ZVZhbHVlUGFpckxpc3QsIER1bXBDb250ZXh0KiBjb250ZXh0ID0gbnVsbHB0cikKIHsKICAgICB1
c2luZyBWID0gdHlwZW5hbWUgVDo6VmFsdWVUeXBlOwogICAgIFQgc29ydGVkTGlzdCA9IG5vZGVW
YWx1ZVBhaXJMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
U1JFbnRyeXBvaW50Q3JlYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAppbmRleCA2MDk2ODY2M2I2NGMyYjY4
NTRlNDYxNjFmOTQ5OTQ2NTdlMWFlZmQ1Li43ZGQ2YzUxZDAyMTI5OTdkOWZiYzdhOWE4NWQ2NjVh
YzkxMjlkOGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR09TUkVudHJ5cG9pbnRDcmVhdGlvblBoYXNlLmNwcApAQCAtNTksNyArNTksNyBAQCBwdWJs
aWM6CiAgICAgICAgIAogICAgICAgICBDb2RlQmxvY2sqIGJhc2VsaW5lID0gbV9ncmFwaC5tX3By
b2ZpbGVkQmxvY2s7CiAgICAgICAgIAotICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXQgPSAwOwor
ICAgICAgICBCYXNpY0Jsb2NrKiB0YXJnZXQgPSBudWxscHRyOwogICAgICAgICBmb3IgKHVuc2ln
bmVkIGJsb2NrSW5kZXggPSBtX2dyYXBoLm51bUJsb2NrcygpOyBibG9ja0luZGV4LS07KSB7CiAg
ICAgICAgICAgICBCYXNpY0Jsb2NrKiBibG9jayA9IG1fZ3JhcGguYmxvY2soYmxvY2tJbmRleCk7
CiAgICAgICAgICAgICBpZiAoIWJsb2NrKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPU1JFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NS
RXhpdC5jcHAKaW5kZXggMzI1ZjE3NDkxYjlmZDRkN2Q3OWMzN2NhNzA4M2RmYjU3YTgzMWRmMC4u
NmRmMzU2MjQ4NjY5NzZjZDcwNzQ2OTc5ZDQ1YmI5MGQ0MzE0MjFiNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXQuY3BwCkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBKSVRf
T1BFUkFUSU9OIG9wZXJhdGlvbkNvbXBpbGVPU1JFeGl0KENhbGxGcmFtZSogY2FsbEZyYW1lKQog
ICAgIE9wZXJhbmRzPFZhbHVlUmVjb3Zlcnk+IG9wZXJhbmRzOwogICAgIGNvZGVCbG9jay0+aml0
Q29kZSgpLT5kZmcoKS0+dmFyaWFibGVFdmVudFN0cmVhbS5yZWNvbnN0cnVjdChjb2RlQmxvY2ss
IGV4aXQubV9jb2RlT3JpZ2luLCBjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPm1pbmlmaWVk
REZHLCBleGl0Lm1fc3RyZWFtSW5kZXgsIG9wZXJhbmRzKTsKIAotICAgIFNwZWN1bGF0aW9uUmVj
b3ZlcnkqIHJlY292ZXJ5ID0gMDsKKyAgICBTcGVjdWxhdGlvblJlY292ZXJ5KiByZWNvdmVyeSA9
IG51bGxwdHI7CiAgICAgaWYgKGV4aXQubV9yZWNvdmVyeUluZGV4ICE9IFVJTlRfTUFYKQogICAg
ICAgICByZWNvdmVyeSA9ICZjb2RlQmxvY2stPmppdENvZGUoKS0+ZGZnKCktPnNwZWN1bGF0aW9u
UmVjb3ZlcnlbZXhpdC5tX3JlY292ZXJ5SW5kZXhdOwogCkBAIC00NTcsNyArNDU3LDcgQEAgdm9p
ZCBPU1JFeGl0Ojpjb21waWxlRXhpdChDQ2FsbEhlbHBlcnMmIGppdCwgVk0mIHZtLCBjb25zdCBP
U1JFeGl0JiBleGl0LCBjb25zdAogICAgIC8vIFNhdmUgYWxsIHN0YXRlIGZyb20gR1BScyBpbnRv
IHRoZSBzY3JhdGNoIGJ1ZmZlci4KIAogICAgIFNjcmF0Y2hCdWZmZXIqIHNjcmF0Y2hCdWZmZXIg
PSB2bS5zY3JhdGNoQnVmZmVyRm9yU2l6ZShzaXplb2YoRW5jb2RlZEpTVmFsdWUpICogb3BlcmFu
ZHMuc2l6ZSgpKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSogc2NyYXRjaCA9IHNjcmF0Y2hCdWZmZXIg
PyBzdGF0aWNfY2FzdDxFbmNvZGVkSlNWYWx1ZSo+KHNjcmF0Y2hCdWZmZXItPmRhdGFCdWZmZXIo
KSkgOiAwOworICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0
YXRpY19jYXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6
IG51bGxwdHI7CiAKICAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgb3BlcmFuZHMu
c2l6ZSgpOyArK2luZGV4KSB7CiAgICAgICAgIGNvbnN0IFZhbHVlUmVjb3ZlcnkmIHJlY292ZXJ5
ID0gb3BlcmFuZHNbaW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0
aW9ucy5jcHAKaW5kZXggN2IzZTE5NzIyNmU1YWE3ZDZiZjZjOGY0ZTdkNWQ2YWRjMDQ4Nzg5ZC4u
YzE2ZjFmYzM2MzAwYTFjMjQ0M2MyMjBhNjM1ZTI5MWIyMzQyZTMzNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgY2hh
ciogbmV3VHlwZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZN
JiB2bSwgU3RydWN0dXJlKiBzdHIKIAogICAgIGlmIChzaXplIDwgMCkgewogICAgICAgICB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiX3MpKTsKLSAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKICAgICBpZiAodmVjdG9y
KQpAQCAtMjE4NSw3ICsyMTg1LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxv
Y2F0ZVNpbXBsZVByb3BlcnR5U3RvcmFnZVdpdGhJbml0aWFsQ2FwYWNpdHkoVk0KICAgICBKSVRP
cGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAK
ICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oCi0gICAgICAgIEJ1dHRlcmZseTo6
Y3JlYXRlVW5pbml0aWFsaXplZCh2bSwgMCwgMCwgaW5pdGlhbE91dE9mTGluZUNhcGFjaXR5LCBm
YWxzZSwgMCkpOworICAgICAgICBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIG51
bGxwdHIsIDAsIGluaXRpYWxPdXRPZkxpbmVDYXBhY2l0eSwgZmFsc2UsIDApKTsKIH0KIAogY2hh
ciogSklUX09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZVNpbXBsZVByb3BlcnR5U3RvcmFnZShW
TSogdm1Qb2ludGVyLCBzaXplX3QgbmV3U2l6ZSkKQEAgLTIxOTUsNyArMjE5NSw3IEBAIGNoYXIq
IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQWxsb2NhdGVTaW1wbGVQcm9wZXJ0eVN0b3JhZ2UoVk0q
IHZtUG9pbnRlciwgc2l6ZV90CiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFj
ZXIgdHJhY2VyKHZtLCBjYWxsRnJhbWUpOwogCiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8
Y2hhcio+KAotICAgICAgICBCdXR0ZXJmbHk6OmNyZWF0ZVVuaW5pdGlhbGl6ZWQodm0sIDAsIDAs
IG5ld1NpemUsIGZhbHNlLCAwKSk7CisgICAgICAgIEJ1dHRlcmZseTo6Y3JlYXRlVW5pbml0aWFs
aXplZCh2bSwgbnVsbHB0ciwgMCwgbmV3U2l6ZSwgZmFsc2UsIDApKTsKIH0KIAogY2hhciogSklU
X09QRVJBVElPTiBvcGVyYXRpb25BbGxvY2F0ZUNvbXBsZXhQcm9wZXJ0eVN0b3JhZ2VXaXRoSW5p
dGlhbENhcGFjaXR5KFZNKiB2bVBvaW50ZXIsIEpTT2JqZWN0KiBvYmplY3QpCkBAIC0yMjI2LDcg
KzIyMjYsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZUludDMyKFZNKiB2
bVBvaW50ZXIsIEpTQ2VsbCogY2VsbCkKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFt
ZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7CiAgICAgCiAgICAgaWYgKCFjZWxsLT5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBhdXRvKiByZXN1bHQgPSByZWludGVycHJldF9jYXN0PGNoYXIqPihhc09iamVjdChjZWxsKS0+
dHJ5TWFrZVdyaXRhYmxlSW50MzIodm0pLmRhdGEoKSk7CiAgICAgQVNTRVJUKCghaXNDb3B5T25X
cml0ZShhc09iamVjdChjZWxsKS0+aW5kZXhpbmdNb2RlKCkpICYmIGhhc0ludDMyKGNlbGwtPmlu
ZGV4aW5nTW9kZSgpKSkgfHwgIXJlc3VsdCk7CkBAIC0yMjQwLDcgKzIyNDAsNyBAQCBjaGFyKiBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvbkVuc3VyZURvdWJsZShWTSogdm1Qb2ludGVyLCBKU0NlbGwq
IGNlbGwpCiAgICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZt
LCBjYWxsRnJhbWUpOwogICAgIAogICAgIGlmICghY2VsbC0+aXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgYXV0byogcmVzdWx0ID0g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oYXNPYmplY3QoY2VsbCktPnRyeU1ha2VXcml0YWJsZURv
dWJsZSh2bSkuZGF0YSgpKTsKICAgICBBU1NFUlQoKCFpc0NvcHlPbldyaXRlKGFzT2JqZWN0KGNl
bGwpLT5pbmRleGluZ01vZGUoKSkgJiYgaGFzRG91YmxlKGNlbGwtPmluZGV4aW5nTW9kZSgpKSkg
fHwgIXJlc3VsdCk7CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCBjaGFyKiBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkVuc3VyZUNvbnRpZ3VvdXMoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQogICAg
IEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1l
KTsKICAgICAKICAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAwOwor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICBhdXRvKiByZXN1bHQgPSByZWludGVy
cHJldF9jYXN0PGNoYXIqPihhc09iamVjdChjZWxsKS0+dHJ5TWFrZVdyaXRhYmxlQ29udGlndW91
cyh2bSkuZGF0YSgpKTsKICAgICBBU1NFUlQoKCFpc0NvcHlPbldyaXRlKGFzT2JqZWN0KGNlbGwp
LT5pbmRleGluZ01vZGUoKSkgJiYgaGFzQ29udGlndW91cyhjZWxsLT5pbmRleGluZ01vZGUoKSkp
IHx8ICFyZXN1bHQpOwpAQCAtMjI2OCw3ICsyMjY4LDcgQEAgY2hhciogSklUX09QRVJBVElPTiBv
cGVyYXRpb25FbnN1cmVBcnJheVN0b3JhZ2UoVk0qIHZtUG9pbnRlciwgSlNDZWxsKiBjZWxsKQog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKICAgICAKICAgICBpZiAoIWNlbGwtPmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiAw
OworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGF1dG8qIHJlc3VsdCA9IHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KGFzT2JqZWN0KGNlbGwpLT5lbnN1cmVBcnJheVN0b3JhZ2Uodm0pKTsK
ICAgICBBU1NFUlQoKCFpc0NvcHlPbldyaXRlKGFzT2JqZWN0KGNlbGwpLT5pbmRleGluZ01vZGUo
KSkgJiYgaGFzQW55QXJyYXlTdG9yYWdlKGNlbGwtPmluZGV4aW5nTW9kZSgpKSkgfHwgIXJlc3Vs
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NpbGVudFJlZ2lz
dGVyU2F2ZVBsYW4uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0
ZXJTYXZlUGxhbi5oCmluZGV4IDgwMGI1NzMyNDlmNGFkYTJlYTUwNmZlNDA3MDI3NWFkYjcwYWQ0
OTMuLmZhYjBmODdlYzFkOWI1ZGEwNTg3NGJiMTE0MWQ5MzE0ZGU1YTBhNWUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2lsZW50UmVnaXN0ZXJTYXZlUGxhbi5o
CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgOiBtX3NwaWxsQWN0aW9uKERvTm90
aGluZ0ZvclNwaWxsKQogICAgICAgICAsIG1fZmlsbEFjdGlvbihEb05vdGhpbmdGb3JGaWxsKQog
ICAgICAgICAsIG1fcmVnaXN0ZXIoLTEpCi0gICAgICAgICwgbV9ub2RlKDApCisgICAgICAgICwg
bV9ub2RlKG51bGxwdHIpCiAgICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggZmEyOGYzOTMwZDRkODJlZTY4
Y2QwMjg3MGZjMTY4N2QwMmMyNTkyYy4uODFjZWVmY2Q1MGJiMWNiMDRjMmY3NDMwOTA4MmUyZTNi
YWFjZDAwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKQEAgLTgwLDcgKzgwLDcgQEAgREVGSU5FX0FMTE9DQVRPUl9XSVRIX0hFQVBfSURF
TlRJRklFUihTcGVjdWxhdGl2ZUpJVCk7CiBTcGVjdWxhdGl2ZUpJVDo6U3BlY3VsYXRpdmVKSVQo
SklUQ29tcGlsZXImIGppdCkKICAgICA6IG1faml0KGppdCkKICAgICAsIG1fZ3JhcGgobV9qaXQu
Z3JhcGgoKSkKLSAgICAsIG1fY3VycmVudE5vZGUoMCkKKyAgICAsIG1fY3VycmVudE5vZGUobnVs
bHB0cikKICAgICAsIG1fbGFzdEdlbmVyYXRlZE5vZGUoTGFzdE5vZGVUeXBlKQogICAgICwgbV9p
bmRleEluQmxvY2soMCkKICAgICAsIG1fZ2VuZXJhdGlvbkluZm8obV9qaXQuZ3JhcGgoKS5mcmFt
ZVJlZ2lzdGVyQ291bnQoKSkKQEAgLTg4NCw3ICs4ODQsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
OjpjaGVja0FycmF5KE5vZGUqIG5vZGUpCiAgICAgY2FzZSBBcnJheTo6U2xvd1B1dEFycmF5U3Rv
cmFnZTogewogICAgICAgICBtX2ppdC5sb2FkOChNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNl
UmVnLCBKU0NlbGw6OmluZGV4aW5nVHlwZUFuZE1pc2NPZmZzZXQoKSksIHRlbXBHUFIudmFsdWUo
KSk7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBCYWRJbmRleGluZ1R5
cGUsIEpTVmFsdWVTb3VyY2U6OnVuYm94ZWRDZWxsKGJhc2VSZWcpLCAwLAorICAgICAgICAgICAg
QmFkSW5kZXhpbmdUeXBlLCBKU1ZhbHVlU291cmNlOjp1bmJveGVkQ2VsbChiYXNlUmVnKSwgbnVs
bHB0ciwKICAgICAgICAgICAgIGp1bXBTbG93Rm9yVW53YW50ZWRBcnJheU1vZGUodGVtcEdQUi52
YWx1ZSgpLCBub2RlLT5hcnJheU1vZGUoKSkpOwogICAgICAgICBicmVhazsKICAgICB9CkBAIC0x
MjYzLDcgKzEyNjMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpkdW1wKGNvbnN0IGNoYXIqIGxh
YmVsKQogfQogCiBHUFJUZW1wb3Jhcnk6OkdQUlRlbXBvcmFyeSgpCi0gICAgOiBtX2ppdCgwKQor
ICAgIDogbV9qaXQobnVsbHB0cikKICAgICAsIG1fZ3ByKEludmFsaWRHUFJSZWcpCiB7CiB9CkBA
IC0xMzY5LDcgKzEzNjksNyBAQCB2b2lkIEdQUlRlbXBvcmFyeTo6YWRvcHQoR1BSVGVtcG9yYXJ5
JiBvdGhlcikKICAgICBBU1NFUlQob3RoZXIubV9ncHIgIT0gSW52YWxpZEdQUlJlZyk7CiAgICAg
bV9qaXQgPSBvdGhlci5tX2ppdDsKICAgICBtX2dwciA9IG90aGVyLm1fZ3ByOwotICAgIG90aGVy
Lm1faml0ID0gMDsKKyAgICBvdGhlci5tX2ppdCA9IG51bGxwdHI7CiAgICAgb3RoZXIubV9ncHIg
PSBJbnZhbGlkR1BSUmVnOwogfQogCkBAIC0yMTQzLDcgKzIxNDMsNyBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlRG91YmxlUHV0QnlWYWwoTm9kZSogbm9kZSwgU3BlY3VsYXRlQ2VsbE9w
ZXJhbmQmIGJhcwogICAgIAogICAgIGlmIChhcnJheU1vZGUuaXNJbkJvdW5kcygpKSB7CiAgICAg
ICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBPdXRPZkJvdW5kcywgSlNWYWx1ZVJl
Z3MoKSwgMCwKKyAgICAgICAgICAgIE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRy
LAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVh
bCwgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRl
cmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpKTsKICAgICB9IGVsc2UgewogICAgICAgICBN
YWNyb0Fzc2VtYmxlcjo6SnVtcCBpbkJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1i
bGVyOjpCZWxvdywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VS
ZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQdWJsaWNMZW5ndGgoKSkpOwpAQCAtMjE1MSw3ICsyMTUx
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZURvdWJsZVB1dEJ5VmFsKE5vZGUqIG5v
ZGUsIFNwZWN1bGF0ZUNlbGxPcGVyYW5kJiBiYXMKICAgICAgICAgc2xvd0Nhc2UgPSBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlZlY3Rvckxl
bmd0aCgpKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoIWFycmF5TW9kZS5pc091dE9mQm91bmRz
KCkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVn
cygpLCAwLCBzbG93Q2FzZSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91
bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBzbG93Q2FzZSk7CiAgICAgICAgIAogICAgICAg
ICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHByb3BlcnR5UmVnLCB0ZW1wb3JhcnlSZWcp
OwogICAgICAgICBtX2ppdC5zdG9yZTMyKHRlbXBvcmFyeVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFk
ZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBA
IC0yMTk3LDcgKzIxOTcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0Q2hhckNv
ZGVBdChOb2RlKiBub2RlKQogICAgIG1faml0LmxvYWRQdHIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3Moc3RyaW5nUmVnLCBKU1N0cmluZzo6b2Zmc2V0T2ZWYWx1ZSgpKSwgc2NyYXRjaFJlZyk7CiAg
ICAgCiAgICAgLy8gdW5zaWduZWQgY29tcGFyaXNvbiBzbyB3ZSBjYW4gZmlsdGVyIG91dCBuZWdh
dGl2ZSBpbmRpY2VzIGFuZCBpbmRpY2VzIHRoYXQgYXJlIHRvbyBsYXJnZQotICAgIHNwZWN1bGF0
aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaDMyKE1h
Y3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIGluZGV4UmVnLCBDQ2FsbEhlbHBlcnM6OkFkZHJl
c3Moc2NyYXRjaFJlZywgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpKSk7CisgICAg
c3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9q
aXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkFib3ZlT3JFcXVhbCwgaW5kZXhSZWcsIENDYWxs
SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJpbmdJbXBsOjpsZW5ndGhNZW1vcnlPZmZz
ZXQoKSkpKTsKIAogICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlciBpbnRvIHNjcmF0Y2hSZWcKICAg
ICBKSVRDb21waWxlcjo6SnVtcCBpczE2Qml0ID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNz
ZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzY3JhdGNoUmVnLCBTdHJpbmdJ
bXBsOjpmbGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQo
KSkpOwpAQCAtMjI0Myw3ICsyMjQzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdl
dEJ5VmFsT25TdHJpbmcoTm9kZSogbm9kZSkKICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFib3Zl
T3JFcXVhbCwgcHJvcGVydHlSZWcsCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHNj
cmF0Y2hSZWcsIFN0cmluZ0ltcGw6Omxlbmd0aE1lbW9yeU9mZnNldCgpKSk7CiAgICAgaWYgKG5v
ZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhP
dXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwgb3V0T2ZCb3VuZHMpOworICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBvdXRPZkJv
dW5kcyk7CiAKICAgICAvLyBMb2FkIHRoZSBjaGFyYWN0ZXIgaW50byBzY3JhdGNoUmVnCiAgICAg
SklUQ29tcGlsZXI6Okp1bXAgaXMxNkJpdCA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2Vt
Ymxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc2NyYXRjaFJlZywgU3RyaW5nSW1w
bDo6ZmxhZ3NPZmZzZXQoKSksIFRydXN0ZWRJbW0zMihTdHJpbmdJbXBsOjpmbGFnSXM4Qml0KCkp
KTsKQEAgLTIzNjUsNyArMjM2NSw3IEBAIEdlbmVyYXRlZE9wZXJhbmRUeXBlIFNwZWN1bGF0aXZl
SklUOjpjaGVja0dlbmVyYXRlZFR5cGVGb3JUb0ludDMyKE5vZGUqIG5vZGUpCiAKICAgICBjYXNl
IERhdGFGb3JtYXRCb29sZWFuOgogICAgIGNhc2UgRGF0YUZvcm1hdENlbGw6Ci0gICAgICAgIHRl
cm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAw
KTsKKyAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpT
VmFsdWVSZWdzKCksIG51bGxwdHIpOwogICAgICAgICByZXR1cm4gR2VuZXJhdGVkT3BlcmFuZFR5
cGVVbmtub3duOwogCiAgICAgY2FzZSBEYXRhRm9ybWF0Tm9uZToKQEAgLTI1OTQsNyArMjU5NCw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVVSW50MzJUb051bWJlcihOb2RlKiBub2Rl
KQogCiAgICAgbV9qaXQubW92ZShvcDEuZ3ByKCksIHJlc3VsdC5ncHIoKSk7CiAKLSAgICBzcGVj
dWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihN
YWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKDApKSk7
CisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwg
bV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZXN1bHQuZ3ByKCksIFRy
dXN0ZWRJbW0zMigwKSkpOwogCiAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0LmdwcigpLCBu
b2RlLCBvcDEuZm9ybWF0KCkpOwogfQpAQCAtMjYxNCw3ICsyNjE0LDcgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZURvdWJsZUFzSW50MzIoTm9kZSogbm9kZSkKICAgICBtX2ppdC5icmFu
Y2hDb252ZXJ0RG91YmxlVG9JbnQzMigKICAgICAgICAgdmFsdWVGUFIsIHJlc3VsdEdQUiwgZmFp
bHVyZUNhc2VzLCBzY3JhdGNoRlBSLAogICAgICAgICBzaG91bGRDaGVja05lZ2F0aXZlWmVybyhu
b2RlLT5hcml0aE1vZGUoKSkpOwotICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFs
dWVSZWdzKCksIDAsIGZhaWx1cmVDYXNlcyk7CisgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxv
dywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgZmFpbHVyZUNhc2VzKTsKIAogICAgIHN0cmljdElu
dDMyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSk7CiB9CkBAIC0yOTA3LDcgKzI5MDcsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjplbWl0VHlwZWRBcnJheUJvdW5kc0NoZWNrKE5vZGUqIG5vZGUsIEdQ
UlJlZyBiYXNlR1BSLCBHUFJSZQogICAgIEpJVENvbXBpbGVyOjpKdW1wIGp1bXAgPSBqdW1wRm9y
VHlwZWRBcnJheU91dE9mQm91bmRzKG5vZGUsIGJhc2VHUFIsIGluZGV4R1BSKTsKICAgICBpZiAo
IWp1bXAuaXNTZXQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0
T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIDAsIGp1bXApOworICAgIHNwZWN1bGF0aW9uQ2hlY2so
T3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIGp1bXApOwogfQogCiBKSVRDb21w
aWxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlJc05ldXRlcmVkSWZP
dXRPZkJvdW5kcyhOb2RlKiBub2RlLCBHUFJSZWcgYmFzZSwgSklUQ29tcGlsZXI6Okp1bXAgb3V0
T2ZCb3VuZHMpCkBAIC0yOTE2LDcgKzI5MTYsNyBAQCBKSVRDb21waWxlcjo6SnVtcCBTcGVjdWxh
dGl2ZUpJVDo6anVtcEZvclR5cGVkQXJyYXlJc05ldXRlcmVkSWZPdXRPZkJvdW5kcyhOb2RlKgog
ICAgIGlmIChvdXRPZkJvdW5kcy5pc1NldCgpKSB7CiAgICAgICAgIGRvbmUgPSBtX2ppdC5qdW1w
KCk7CiAgICAgICAgIGlmIChub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkpCi0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlU291cmNlKCksIDAsIG91
dE9mQm91bmRzKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpT
VmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwgb3V0T2ZCb3VuZHMpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIG91dE9mQm91bmRzLmxpbmsoJm1faml0KTsKIApAQCAtMjk3OSw3ICsyOTc5LDcg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6c2V0SW50VHlwZWRBcnJheUxvYWRSZXN1bHQoTm9kZSog
bm9kZSwgR1BSUmVnIHJlc3VsdFJlZywgVHkKICAgICAKICAgICBBU1NFUlQoZWxlbWVudFNpemUo
dHlwZSkgPT0gNCAmJiAhaXNTaWduZWQodHlwZSkpOwogICAgIGlmIChub2RlLT5zaG91bGRTcGVj
dWxhdGVJbnQzMigpICYmIGNhblNwZWN1bGF0ZSkgewotICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxl
cjo6TGVzc1RoYW4sIHJlc3VsdFJlZywgVHJ1c3RlZEltbTMyKDApKSk7CisgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgcmVzdWx0UmVnLCBUcnVzdGVkSW1tMzIoMCkp
KTsKICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQocmVzdWx0UmVnLCBub2RlKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KQEAgLTMwNDIsNyArMzA0Miw3IEBAIGJvb2wgU3BlY3VsYXRpdmVKSVQ6
OmdldEludFR5cGVkQXJyYXlTdG9yZU9wZXJhbmQoCiAgICAgaWYgKGlzQXBwcm9wcmlhdGVDb25z
dGFudCkgewogICAgICAgICBKU1ZhbHVlIGpzVmFsdWUgPSB2YWx1ZVVzZS0+YXNKU1ZhbHVlKCk7
CiAgICAgICAgIGlmICghanNWYWx1ZS5pc051bWJlcigpKSB7Ci0gICAgICAgICAgICB0ZXJtaW5h
dGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7Cisg
ICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICAgICAgZG91YmxlIGQgPSBqc1ZhbHVlLmFzTnVtYmVyKCk7CkBAIC0zNDA3LDcgKzM0
MDcsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKE5v
ZGUqIG5vZGUpCiAgICAgLy8gRklYTUU6IFRoaXMgb25seSB3b3JrcyBmb3IgY2hlY2tpbmcgaWYg
YSBzaW5nbGUgYml0IGlzIHNldC4gSWYgd2Ugd2FudCB0byBjaGVjayBtb3JlCiAgICAgLy8gdGhh
biBvbmUgYml0IGF0IG9uY2UsIHdlJ2xsIG5lZWQgdG8gZml4IHRoaXM6CiAgICAgLy8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTcwNQotICAgIHNwZWN1bGF0aW9u
Q2hlY2soQmFkVHlwZUluZm9GbGFncywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVz
dDgoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VHUFIs
IEpTQ2VsbDo6dHlwZUluZm9GbGFnc09mZnNldCgpKSwgTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihub2RlLT50eXBlSW5mb09wZXJhbmQoKSkpKTsKKyAgICBzcGVjdWxhdGlvbkNoZWNrKEJh
ZFR5cGVJbmZvRmxhZ3MsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFRlc3Q4
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlR1BSLCBK
U0NlbGw6OnR5cGVJbmZvRmxhZ3NPZmZzZXQoKSksIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIobm9kZS0+dHlwZUluZm9PcGVyYW5kKCkpKSk7CiAKICAgICBub1Jlc3VsdChub2RlKTsKIH0K
QEAgLTQwODgsNyArNDA4OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVWYWx1ZUFk
ZChOb2RlKiBub2RlKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9q
aXQuYnJhbmNoQWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCByZXN1bHRHUFIsIHRlbXBH
UFIsIHJlc3VsdEdQUik7CiAKLSAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCaWdJbnQzMk92ZXJm
bG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2so
QmlnSW50MzJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgY2hlY2spOwogCiAgICAg
ICAgIG1faml0LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CiAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0R1BSLCBub2RlKTsKQEAgLTQxOTUsNyArNDE5NSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVK
SVQ6OmNvbXBpbGVWYWx1ZVN1YihOb2RlKiBub2RlKQogCiAgICAgICAgIE1hY3JvQXNzZW1ibGVy
OjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoU3ViMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93
LCByZXN1bHRHUFIsIHRlbXBHUFIsIHJlc3VsdEdQUik7CiAKLSAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhCaWdJbnQzMk92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjayk7CisgICAgICAg
IHNwZWN1bGF0aW9uQ2hlY2soQmlnSW50MzJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0
ciwgY2hlY2spOwogCiAgICAgICAgIG1faml0LmJveEJpZ0ludDMyKHJlc3VsdEdQUik7CiAgICAg
ICAgIGpzVmFsdWVSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsKQEAgLTQ1NTQsMTAgKzQ1NTQsMTAg
QEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoQWRkKE5vZGUqIG5vZGUpCiAKICAg
ICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNoQWRkMzIo
TWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBncHIxLCBJbW0zMihpbW0yKSwgZ3ByUmVzdWx0KTsK
ICAgICAgICAgICAgIGlmIChncHIxID09IGdwclJlc3VsdCkgewotICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrLAorICAgICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxw
dHIsIGNoZWNrLAogICAgICAgICAgICAgICAgICAgICBTcGVjdWxhdGlvblJlY292ZXJ5KFNwZWN1
bGF0aXZlQWRkSW1tZWRpYXRlLCBncHIxLCBpbW0yKSk7CiAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAw
LCBjaGVjayk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNW
YWx1ZVJlZ3MoKSwgbnVsbHB0ciwgY2hlY2spOwogCiAgICAgICAgICAgICBzdHJpY3RJbnQzMlJl
c3VsdChncHJSZXN1bHQsIG5vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNDU3NywxMyAr
NDU3NywxMyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhBZGQoTm9kZSogbm9k
ZSkKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIGNoZWNrID0gbV9qaXQuYnJhbmNo
QWRkMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBncHIxLCBncHIyLCBncHJSZXN1bHQpOwog
ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGdwcjEgPT0gZ3ByUmVzdWx0ICYmIGdw
cjIgPT0gZ3ByUmVzdWx0KQotICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZs
b3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrLCBTcGVjdWxhdGlvblJlY292ZXJ5KFNwZWN1bGF0
aXZlQWRkU2VsZiwgZ3ByUmVzdWx0LCBncHIyKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgY2hlY2ssIFNwZWN1bGF0
aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGRTZWxmLCBncHJSZXN1bHQsIGdwcjIpKTsKICAgICAg
ICAgICAgIGVsc2UgaWYgKGdwcjEgPT0gZ3ByUmVzdWx0KQotICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrLCBTcGVjdWxhdGlv
blJlY292ZXJ5KFNwZWN1bGF0aXZlQWRkLCBncHJSZXN1bHQsIGdwcjIpKTsKKyAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBj
aGVjaywgU3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVzdWx0LCBncHIy
KSk7CiAgICAgICAgICAgICBlbHNlIGlmIChncHIyID09IGdwclJlc3VsdCkKLSAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBjaGVjaywg
U3BlY3VsYXRpb25SZWNvdmVyeShTcGVjdWxhdGl2ZUFkZCwgZ3ByUmVzdWx0LCBncHIxKSk7Cisg
ICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwg
bnVsbHB0ciwgY2hlY2ssIFNwZWN1bGF0aW9uUmVjb3ZlcnkoU3BlY3VsYXRpdmVBZGQsIGdwclJl
c3VsdCwgZ3ByMSkpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNwZWN1bGF0
aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIGNoZWNrKTsKKyAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBj
aGVjayk7CiAgICAgICAgIH0KIAogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChncHJSZXN1bHQs
IG5vZGUpOwpAQCAtNDYxMiw3ICs0NjEyLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGls
ZUFyaXRoQWRkKE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7
CiAgICAgICAgIG1faml0Lm1vdmUob3AxLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgSW50NTJPdmVyZmxvdywgSlNWYWx1ZVJlZ3Mo
KSwgMCwKKyAgICAgICAgICAgIEludDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIs
CiAgICAgICAgICAgICBtX2ppdC5icmFuY2hBZGQ2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3cs
IG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CiAgICAgICAgIGludDUyUmVzdWx0KHJlc3VsdC5n
cHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ2NTEsNyArNDY1MSw3IEBAIHZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aEFicyhOb2RlKiBub2RlKQogICAgICAgICBtX2pp
dC5hZGQzMihzY3JhdGNoLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBtX2ppdC54b3Iz
MihzY3JhdGNoLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tP
dmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNr
KE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3Nl
bWJsZXI6OlNpZ25lZCwgcmVzdWx0LmdwcigpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIo
TWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwgcmVzdWx0LmdwcigpKSk7CiAgICAgICAgIHN0cmljdElu
dDMyUmVzdWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAg
LTQ3NDAsNyArNDc0MCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihO
b2RlKiBub2RlKQogICAgICAgICAgICAgICAgIG1faml0LnN1YjMyKEltbTMyKGltbTIpLCByZXN1
bHQuZ3ByKCkpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBHUFJUZW1w
b3Jhcnkgc2NyYXRjaCh0aGlzKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92
ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxl
cjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgSW1tMzIoaW1tMiksIHJlc3VsdC5ncHIoKSwgc2NyYXRj
aC5ncHIoKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpP
dmVyZmxvdywgb3AxLmdwcigpLCBJbW0zMihpbW0yKSwgcmVzdWx0LmdwcigpLCBzY3JhdGNoLmdw
cigpKSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHN0cmljdEludDMyUmVzdWx0KHJl
c3VsdC5ncHIoKSwgbm9kZSk7CkBAIC00NzU2LDcgKzQ3NTYsNyBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlQXJpdGhTdWIoTm9kZSogbm9kZSkKICAgICAgICAgICAgIGlmICghc2hvdWxk
Q2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCiAgICAgICAgICAgICAgICAgbV9qaXQu
c3ViMzIob3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpOwogICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIG1f
aml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AyLmdwcigpLCByZXN1
bHQuZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBK
U1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fzc2VtYmxlcjo6
T3ZlcmZsb3csIG9wMi5ncHIoKSwgcmVzdWx0LmdwcigpKSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtNDc3MCw3ICs0NzcwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZUFyaXRoU3ViKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICBtX2ppdC5tb3ZlKG9wMS5n
cHIoKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgICAgIG1faml0LnN1YjMyKG9wMi5ncHIoKSwg
cmVzdWx0LmdwcigpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNo
ZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hTdWIzMihNYWNyb0Fz
c2VtYmxlcjo6T3ZlcmZsb3csIG9wMS5ncHIoKSwgb3AyLmdwcigpLCByZXN1bHQuZ3ByKCkpKTsK
KyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51
bGxwdHIsIG1faml0LmJyYW5jaFN1YjMyKE1hY3JvQXNzZW1ibGVyOjpPdmVyZmxvdywgb3AxLmdw
cigpLCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIoKSkpOwogCiAgICAgICAgIHN0cmljdEludDMyUmVz
dWx0KHJlc3VsdC5ncHIoKSwgbm9kZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTQ3OTksNyArNDc5
OSw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFN1YihOb2RlKiBub2RlKQog
ICAgICAgICBHUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAgICBtX2ppdC5tb3ZlKG9w
MS5ncHIoKSwgcmVzdWx0LmdwcigpKTsKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAg
ICAgICAgIEludDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICBJbnQ1
Mk92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLAogICAgICAgICAgICAgbV9qaXQuYnJh
bmNoU3ViNjQoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93LCBvcDIuZ3ByKCksIHJlc3VsdC5ncHIo
KSkpOwogICAgICAgICBpbnQ1MlJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUpOwogICAgICAgICBy
ZXR1cm47CkBAIC00ODY5LDkgKzQ4NjksOSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
QXJpdGhOZWdhdGUoTm9kZSogbm9kZSkKICAgICAgICAgaWYgKCFzaG91bGRDaGVja092ZXJmbG93
KG5vZGUtPmFyaXRoTW9kZSgpKSkKICAgICAgICAgICAgIG1faml0Lm5lZzMyKHJlc3VsdC5ncHIo
KSk7CiAgICAgICAgIGVsc2UgaWYgKCFzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0
aE1vZGUoKSkpCi0gICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
UmVncygpLCAwLCBtX2ppdC5icmFuY2hOZWczMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJl
c3VsdC5ncHIoKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNW
YWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoTmVnMzIoTWFjcm9Bc3NlbWJsZXI6Ok92
ZXJmbG93LCByZXN1bHQuZ3ByKCkpKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBzcGVj
dWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0
MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8sIHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKDB4N2Zm
ZmZmZmYpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVl
UmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6Olplcm8s
IHJlc3VsdC5ncHIoKSwgVHJ1c3RlZEltbTMyKDB4N2ZmZmZmZmYpKSk7CiAgICAgICAgICAgICBt
X2ppdC5uZWczMihyZXN1bHQuZ3ByKCkpOwogICAgICAgICB9CiAKQEAgLTQ4OTIsNyArNDg5Miw3
IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE5lZ2F0ZShOb2RlKiBub2RlKQog
ICAgICAgICAgICAgbV9qaXQubmVnNjQocmVzdWx0R1BSKTsKICAgICAgICAgICAgIGlmIChzaG91
bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0aE1vZGUoKSkpIHsKICAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpT
VmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAgICAgIE5lZ2F0aXZlWmVybywgSlNWYWx1
ZVJlZ3MoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdDY0
KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGludDUyUmVzdWx0KHJlc3VsdEdQUiwgbm9kZSwgb3AxLmZvcm1hdCgpKTsKQEAgLTQ5
MDUsMTEgKzQ5MDUsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTmVnYXRl
KE5vZGUqIG5vZGUpCiAgICAgICAgIEdQUlJlZyByZXN1bHRHUFIgPSByZXN1bHQuZ3ByKCk7CiAg
ICAgICAgIG1faml0Lm1vdmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKAotICAgICAgICAgICAgSW50NTJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAg
ICAgICAgICAgIEludDUyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAg
ICAgICBtX2ppdC5icmFuY2hOZWc2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQ
UikpOwogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2Rl
KCkpKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgIE5l
Z2F0aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICBOZWdhdGl2ZVpl
cm8sIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNo
VGVzdDY0KE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIpKTsKICAgICAgICAgfQogICAg
ICAgICBpbnQ1MlJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAtNTA0Niw3ICs1MDQ2LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVZhbHVlTXVsKE5vZGUqIG5vZGUpCiAKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgY2hlY2sgPSBtX2ppdC5icmFuY2hNdWwzMihNYWNyb0Fz
c2VtYmxlcjo6T3ZlcmZsb3csIHJlc3VsdEdQUiwgdGVtcEdQUiwgcmVzdWx0R1BSKTsKIAotICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKEJpZ0ludDMyT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAs
IGNoZWNrKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhCaWdJbnQzMk92ZXJmbG93LCBKU1Zh
bHVlUmVncygpLCBudWxscHRyLCBjaGVjayk7CiAKICAgICAgICAgbV9qaXQuYm94QmlnSW50MzIo
cmVzdWx0R1BSKTsKICAgICAgICAganNWYWx1ZVJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwpAQCAt
NTEyNSw3ICs1MTI1LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTXVsKE5v
ZGUqIG5vZGUpCiAgICAgICAgICAgICBpZiAoIXNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJp
dGhNb2RlKCkpKQogICAgICAgICAgICAgICAgIG1faml0Lm11bDMyKEltbTMyKGltbSksIG9wMUdQ
UiwgcmVzdWx0R1BSKTsKICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwKICAgICAg
ICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoTXVsMzIoTWFjcm9Bc3NlbWJsZXI6Ok92ZXJmbG93
LCBvcDFHUFIsIEltbTMyKGltbSksIHJlc3VsdEdQUikpOwogICAgICAgICAgICAgfQogCkBAIC01
MTM0LDEyICs1MTM0LDEyIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE11bChO
b2RlKiBub2RlKQogICAgICAgICAgICAgLy8gLXplcm8tb3AxICogbmVnYXRpdmUgY29uc3RhbnQu
CiAgICAgICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2Rl
KCkpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbW0pCi0gICAgICAgICAgICAgICAgICAgIHNw
ZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFu
Y2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwgb3AxR1BSKSk7CisgICAgICAgICAgICAg
ICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCBudWxs
cHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwgb3AxR1BSKSk7
CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAoaW1tIDwgMCkgewogICAgICAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpCi0gICAgICAgICAg
ICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJlZ3Mo
KSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCByZXN1bHRHUFIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJv
LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIHJlc3VsdEdQUikpOwogICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVybywgSlNWYWx1ZVJl
Z3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpaZXJvLCBvcDFHUFIp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJv
LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJs
ZXI6Olplcm8sIG9wMUdQUikpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApA
QCAtNTE2MCwxNSArNTE2MCwxNSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhN
dWwoTm9kZSogbm9kZSkKICAgICAgICAgICAgIG1faml0Lm11bDMyKHJlZzEsIHJlZzIsIHJlc3Vs
dC5ncHIoKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygK
LSAgICAgICAgICAgICAgICBPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAg
ICAgICBPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICBt
X2ppdC5icmFuY2hNdWwzMihNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIHJlZzEsIHJlZzIsIHJl
c3VsdC5ncHIoKSkpOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgLy8gQ2hlY2sg
Zm9yIG5lZ2F0aXZlIHplcm8sIGlmIHRoZSB1c2VycyBvZiB0aGlzIG5vZGUgY2FyZSBhYm91dCBz
dWNoIHRoaW5ncy4KICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFy
aXRoTW9kZSgpKSkgewogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmVzdWx0Tm9u
WmVybyA9IG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgcmVzdWx0
LmdwcigpKTsKLSAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1Zh
bHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6OlNpZ25lZCwg
cmVnMSkpOwotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZVplcm8sIEpTVmFs
dWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihNYWNyb0Fzc2VtYmxlcjo6U2lnbmVkLCBy
ZWcyKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVybywgSlNWYWx1
ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpTaWdu
ZWQsIHJlZzEpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBK
U1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoTWFjcm9Bc3NlbWJsZXI6
OlNpZ25lZCwgcmVnMikpOwogICAgICAgICAgICAgcmVzdWx0Tm9uWmVyby5saW5rKCZtX2ppdCk7
CiAgICAgICAgIH0KIApAQCAtNTIxNCwxNyArNTIxNCwxNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQXJpdGhNdWwoTm9kZSogbm9kZSkKICAgICAgICAgCiAgICAgICAgIG1faml0Lm1v
dmUob3AxR1BSLCByZXN1bHRHUFIpOwogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAg
ICAgICAgSW50NTJPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgIEludDUy
T3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAgICAgICBtX2ppdC5icmFu
Y2hNdWw2NChNYWNyb0Fzc2VtYmxlcjo6T3ZlcmZsb3csIG9wMkdQUiwgcmVzdWx0R1BSKSk7CiAg
ICAgICAgIAogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhN
b2RlKCkpKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCByZXN1bHROb25aZXJv
ID0gbV9qaXQuYnJhbmNoVGVzdDY0KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpO
b25aZXJvLCByZXN1bHRHUFIpOwogICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAg
ICAgICAgICAgICBOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCksIDAsCisgICAgICAgICAgICAg
ICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCBudWxscHRyLAogICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaDY0KE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AxR1BSLCBUcnVzdGVk
SW1tMzIoMCkpKTsKICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICAg
ICAgTmVnYXRpdmVaZXJvLCBKU1ZhbHVlUmVncygpLCAwLAorICAgICAgICAgICAgICAgIE5lZ2F0
aXZlWmVybywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICBtX2ppdC5i
cmFuY2g2NChNYWNyb0Fzc2VtYmxlcjo6TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTMyKDAp
KSk7CiAgICAgICAgICAgICByZXN1bHROb25aZXJvLmxpbmsoJm1faml0KTsKICAgICAgICAgfQpA
QCAtNTQyMCw4ICs1NDIwLDggQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2
KE5vZGUqIG5vZGUpCiAgICAgCiAgICAgICAgIEpJVENvbXBpbGVyOjpKdW1wTGlzdCBkb25lOwog
ICAgICAgICBpZiAoc2hvdWxkQ2hlY2tPdmVyZmxvdyhub2RlLT5hcml0aE1vZGUoKSkpIHsKLSAg
ICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdzKCksIDAsIG1f
aml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVybywgb3AyR1BSKSk7Ci0gICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5icmFu
Y2gzMihKSVRDb21waWxlcjo6RXF1YWwsIG9wMUdQUiwgVHJ1c3RlZEltbTMyKC0yMTQ3NDgzNjQ3
LTEpKSk7CisgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVn
cygpLCBudWxscHRyLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIG9wMkdQ
UikpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3Mo
KSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRy
dXN0ZWRJbW0zMigtMjE0NzQ4MzY0Ny0xKSkpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgLy8gVGhpcyBpcyB0aGUgY2FzZSB3aGVyZSB3ZSBjb252ZXJ0IHRoZSByZXN1bHQgdG8gYW4g
aW50IGFmdGVyIHdlJ3JlIGRvbmUsIGFuZCB3ZQogICAgICAgICAgICAgLy8gYWxyZWFkeSBrbm93
IHRoYXQgdGhlIGRlbm9taW5hdG9yIGlzIGVpdGhlciAtMSBvciAwLiBTbywgaWYgdGhlIGRlbm9t
aW5hdG9yIGlzCkBAIC01NDQ5LDcgKzU0NDksNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21w
aWxlQXJpdGhEaXYoTm9kZSogbm9kZSkKICAgICAgICAgLy8gdG8gcHJvZHVjZSBuZWdhdGl2ZSB6
ZXJvLgogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tOZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2Rl
KCkpKSB7CiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBudW1lcmF0b3JOb25aZXJv
ID0gbV9qaXQuYnJhbmNoVGVzdDMyKE1hY3JvQXNzZW1ibGVyOjpOb25aZXJvLCBvcDFHUFIpOwot
ICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhOZWdhdGl2ZVplcm8sIEpTVmFsdWVSZWdzKCks
IDAsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpMZXNzVGhhbiwgb3AyR1BSLCBUcnVz
dGVkSW1tMzIoMCkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJv
LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
TGVzc1RoYW4sIG9wMkdQUiwgVHJ1c3RlZEltbTMyKDApKSk7CiAgICAgICAgICAgICBudW1lcmF0
b3JOb25aZXJvLmxpbmsoJm1faml0KTsKICAgICAgICAgfQogICAgIApAQCAtNTQ2OCw3ICs1NDY4
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoRGl2KE5vZGUqIG5vZGUpCiAg
ICAgICAgIC8vIENoZWNrIHRoYXQgdGhlcmUgd2FzIG5vIHJlbWFpbmRlci4gSWYgdGhlcmUgaGFk
IGJlZW4sIHRoZW4gd2UnZCBiZSBvYmxpZ2F0ZWQgdG8KICAgICAgICAgLy8gcHJvZHVjZSBhIGRv
dWJsZSByZXN1bHQgaW5zdGVhZC4KICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9k
ZS0+YXJpdGhNb2RlKCkpKQotICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywg
SlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpOb25aZXJv
LCBlZHguZ3ByKCkpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpT
VmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6Tm9u
WmVybywgZWR4LmdwcigpKSk7CiAgICAgICAgIAogICAgICAgICBkb25lLmxpbmsoJm1faml0KTsK
ICAgICAgICAgc3RyaWN0SW50MzJSZXN1bHQoZWF4LmdwcigpLCBub2RlKTsKQEAgLTU2NDgsNyAr
NTY0OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZChOb2RlKiBub2Rl
KQogICAgICAgICAgICAgICAgIGlmIChzaG91bGRDaGVja05lZ2F0aXZlWmVybyhub2RlLT5hcml0
aE1vZGUoKSkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSdyZSBub3Qg
YWJvdXQgdG8gY3JlYXRlIG5lZ2F0aXZlIHplcm8uCiAgICAgICAgICAgICAgICAgICAgIEpJVENv
bXBpbGVyOjpKdW1wIG51bWVyYXRvclBvc2l0aXZlID0gbV9qaXQuYnJhbmNoMzIoSklUQ29tcGls
ZXI6OkdyZWF0ZXJUaGFuT3JFcXVhbCwgZGl2aWRlbmRHUFIsIFRydXN0ZWRJbW0zMigwKSk7Ci0g
ICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTmVnYXRpdmVaZXJvLCBKU1ZhbHVl
UmVncygpLCAwLCBtX2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIHJlc3VsdEdQ
UikpOworICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE5lZ2F0aXZlWmVybywg
SlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpa
ZXJvLCByZXN1bHRHUFIpKTsKICAgICAgICAgICAgICAgICAgICAgbnVtZXJhdG9yUG9zaXRpdmUu
bGluaygmbV9qaXQpOwogICAgICAgICAgICAgICAgIH0KIApAQCAtNTY4NCw3ICs1Njg0LDcgQEAg
dm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFyaXRoTW9kKE5vZGUqIG5vZGUpCiAgICAgICAg
ICAgICAgICAgbV9qaXQueDg2RGl2MzIoc2NyYXRjaEdQUik7CiAgICAgICAgICAgICAgICAgaWYg
KHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG5vZGUtPmFyaXRoTW9kZSgpKSkgewogICAgICAgICAg
ICAgICAgICAgICBKSVRDb21waWxlcjo6SnVtcCBudW1lcmF0b3JQb3NpdGl2ZSA9IG1faml0LmJy
YW5jaDMyKEpJVENvbXBpbGVyOjpHcmVhdGVyVGhhbk9yRXF1YWwsIG9wMVNhdmVHUFIsIFRydXN0
ZWRJbW0zMigwKSk7Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZs
b3csIEpTVmFsdWVSZWdzKCksIDAsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21waWxlcjo6WmVy
bywgZWR4LmdwcigpKSk7CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3Zl
cmZsb3csIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaFRlc3QzMihKSVRDb21w
aWxlcjo6WmVybywgZWR4LmdwcigpKSk7CiAgICAgICAgICAgICAgICAgICAgIG51bWVyYXRvclBv
c2l0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKQEAg
LTU3NDAsOCArNTc0MCw4IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aE1vZChO
b2RlKiBub2RlKQogICAgICAgICAvLyBGSVhNRTogLTJeMzEgLyAtMSB3aWxsIGFjdHVhbGx5IHlp
ZWxkIG5lZ2F0aXZlIHplcm8sIHNvIHdlIGNvdWxkIGhhdmUgYQogICAgICAgICAvLyBzZXBhcmF0
ZSBjYXNlIGZvciB0aGF0LiBCdXQgaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgc28gbXVjaC4K
ICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobm9kZS0+YXJpdGhNb2RlKCkpKSB7Ci0g
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBt
X2ppdC5icmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIG9wMkdQUikpOwotICAgICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJh
bmNoMzIoSklUQ29tcGlsZXI6OkVxdWFsLCBvcDFHUFIsIFRydXN0ZWRJbW0zMigtMjE0NzQ4MzY0
Ny0xKSkpOworICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJl
Z3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBvcDJH
UFIpKTsKKyAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3ZlcmZsb3csIEpTVmFsdWVSZWdz
KCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpFcXVhbCwgb3AxR1BSLCBU
cnVzdGVkSW1tMzIoLTIxNDc0ODM2NDctMSkpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugd2hlcmUgd2UgY29udmVydCB0aGUgcmVzdWx0IHRvIGFu
IGludCBhZnRlciB3ZSdyZSBkb25lLCBhbmQgd2UKICAgICAgICAgICAgIC8vIGFscmVhZHkga25v
dyB0aGF0IHRoZSBkZW5vbWluYXRvciBpcyBlaXRoZXIgLTEgb3IgMC4gU28sIGlmIHRoZSBkZW5v
bWluYXRvciBpcwpAQCAtNTc4MCw3ICs1NzgwLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZUFyaXRoTW9kKE5vZGUqIG5vZGUpCiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UncmUgbm90
IGFib3V0IHRvIGNyZWF0ZSBuZWdhdGl2ZSB6ZXJvLgogICAgICAgICBpZiAoc2hvdWxkQ2hlY2tO
ZWdhdGl2ZVplcm8obm9kZS0+YXJpdGhNb2RlKCkpKSB7CiAgICAgICAgICAgICBKSVRDb21waWxl
cjo6SnVtcCBudW1lcmF0b3JQb3NpdGl2ZSA9IG1faml0LmJyYW5jaDMyKEpJVENvbXBpbGVyOjpH
cmVhdGVyVGhhbk9yRXF1YWwsIG9wMVNhdmVHUFIsIFRydXN0ZWRJbW0zMigwKSk7Ci0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE92ZXJmbG93LCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5i
cmFuY2hUZXN0MzIoSklUQ29tcGlsZXI6Olplcm8sIGVkeC5ncHIoKSkpOworICAgICAgICAgICAg
c3BlY3VsYXRpb25DaGVjayhPdmVyZmxvdywgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQu
YnJhbmNoVGVzdDMyKEpJVENvbXBpbGVyOjpaZXJvLCBlZHguZ3ByKCkpKTsKICAgICAgICAgICAg
IG51bWVyYXRvclBvc2l0aXZlLmxpbmsoJm1faml0KTsKICAgICAgICAgfQogICAgIApAQCAtNzI0
Niw3ICs3MjQ2LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5VmFsT25EaXJl
Y3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBBU1NFUlQoQXJyYXlNb2RlKEFycmF5OjpEaXJl
Y3RBcmd1bWVudHMsIEFycmF5OjpSZWFkKS5hbHJlYWR5Q2hlY2tlZChtX2ppdC5ncmFwaCgpLCBu
b2RlLCBtX3N0YXRlLmZvck5vZGUobV9ncmFwaC52YXJBcmdDaGlsZChub2RlLCAwKSkpKTsKICAg
ICAKICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICBFeG90aWNPYmplY3RNb2RlLCBKU1Zh
bHVlU291cmNlKCksIDAsCisgICAgICAgIEV4b3RpY09iamVjdE1vZGUsIEpTVmFsdWVTb3VyY2Uo
KSwgbnVsbHB0ciwKICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0cigKICAgICAgICAgICAgIE1h
Y3JvQXNzZW1ibGVyOjpOb25aZXJvLAogICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6OkFkZHJl
c3MoYmFzZVJlZywgRGlyZWN0QXJndW1lbnRzOjpvZmZzZXRPZk1hcHBlZEFyZ3VtZW50cygpKSkp
OwpAQCAtNzI1NCw3ICs3MjU0LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUdldEJ5
VmFsT25EaXJlY3RBcmd1bWVudHMoTm9kZSogbm9kZSkKICAgICBtX2ppdC5sb2FkMzIoQ0NhbGxI
ZWxwZXJzOjpBZGRyZXNzKGJhc2VSZWcsIERpcmVjdEFyZ3VtZW50czo6b2Zmc2V0T2ZMZW5ndGgo
KSksIHNjcmF0Y2hSZWcpOwogICAgIGF1dG8gaXNPdXRPZkJvdW5kcyA9IG1faml0LmJyYW5jaDMy
KENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgc2NyYXRjaFJlZyk7CiAg
ICAgaWYgKG5vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkKLSAgICAgICAgc3BlY3VsYXRp
b25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVNvdXJjZSgpLCAwLCBpc091dE9mQm91bmRzKTsK
KyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhPdXRPZkJvdW5kcywgSlNWYWx1ZVNvdXJjZSgpLCBu
dWxscHRyLCBpc091dE9mQm91bmRzKTsKICAgICAKICAgICBtX2ppdC5sb2FkVmFsdWUoCiAgICAg
ICAgIE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoCkBAIC03NDEzLDcgKzc0MTMsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAg
ICAgR1BSUmVnIHJlc3VsdFJlZyA9IHJlc3VsdC5ncHIoKTsKICAgICAgICAgbV9qaXQubG9hZDMy
KE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VSZWcsIEJ1dHRlcmZseTo6b2Zmc2V0T2ZQ
dWJsaWNMZW5ndGgoKSksIHJlc3VsdFJlZyk7CiAgICAgICAgICAgICAKLSAgICAgICAgc3BlY3Vs
YXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6Okxlc3NUaGFuLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVz
dGVkSW1tMzIoMCkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNW
YWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6Okxlc3NU
aGFuLCByZXN1bHRSZWcsIE1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoMCkpKTsKICAgICAg
ICAgICAgIAogICAgICAgICBzdHJpY3RJbnQzMlJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAg
ICAgICBicmVhazsKQEAgLTc0NTcsNyArNzQ1Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNv
bXBpbGVHZXRBcnJheUxlbmd0aChOb2RlKiBub2RlKQogICAgICAgICBBU1NFUlQoQXJyYXlNb2Rl
KEFycmF5OjpEaXJlY3RBcmd1bWVudHMsIEFycmF5OjpSZWFkKS5hbHJlYWR5Q2hlY2tlZChtX2pp
dC5ncmFwaCgpLCBub2RlLCBtX3N0YXRlLmZvck5vZGUobm9kZS0+Y2hpbGQxKCkpKSk7CiAgICAg
ICAgIAogICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgRXhvdGljT2JqZWN0
TW9kZSwgSlNWYWx1ZVNvdXJjZSgpLCAwLAorICAgICAgICAgICAgRXhvdGljT2JqZWN0TW9kZSwg
SlNWYWx1ZVNvdXJjZSgpLCBudWxscHRyLAogICAgICAgICAgICAgbV9qaXQuYnJhbmNoVGVzdFB0
cigKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywKICAgICAgICAgICAg
ICAgICBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhiYXNlUmVnLCBEaXJlY3RBcmd1bWVudHM6Om9m
ZnNldE9mTWFwcGVkQXJndW1lbnRzKCkpKSk7CkBAIC03NDgxLDcgKzc0ODEsNyBAQCB2b2lkIFNw
ZWN1bGF0aXZlSklUOjpjb21waWxlR2V0QXJyYXlMZW5ndGgoTm9kZSogbm9kZSkKICAgICAgICAg
QVNTRVJUKEFycmF5TW9kZShBcnJheTo6U2NvcGVkQXJndW1lbnRzLCBBcnJheTo6UmVhZCkuYWxy
ZWFkeUNoZWNrZWQobV9qaXQuZ3JhcGgoKSwgbm9kZSwgbV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNo
aWxkMSgpKSkpOwogICAgICAgICAKICAgICAgICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAg
ICAgIEV4b3RpY09iamVjdE1vZGUsIEpTVmFsdWVTb3VyY2UoKSwgMCwKKyAgICAgICAgICAgIEV4
b3RpY09iamVjdE1vZGUsIEpTVmFsdWVTb3VyY2UoKSwgbnVsbHB0ciwKICAgICAgICAgICAgIG1f
aml0LmJyYW5jaFRlc3Q4KAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpOb25aZXJv
LAogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKGJhc2VSZWcsIFNjb3Bl
ZEFyZ3VtZW50czo6b2Zmc2V0T2ZPdmVycm9kZVRoaW5ncygpKSkpOwpAQCAtOTI1OSw3ICs5MjU5
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2RlKiBub2RlKQog
ICAgICAgICAgICAgbV9qaXQubG9hZDMyKE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0b3JhZ2VH
UFIsIEFycmF5U3RvcmFnZTo6bGVuZ3RoT2Zmc2V0KCkpLCBzdG9yYWdlTGVuZ3RoR1BSKTsKIAog
ICAgICAgICAgICAgLy8gUmVmdXNlIHRvIGhhbmRsZSBiaXphcnJlIGxlbmd0aHMuCi0gICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHN0b3JhZ2VMZW5ndGhHUFIsIFRydXN0
ZWRJbW0zMihsYXJnZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCkpKTsKKyAgICAgICAgICAgIHNwZWN1
bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJy
YW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZSwgc3RvcmFnZUxlbmd0aEdQUiwgVHJ1c3RlZElt
bTMyKGxhcmdlc3RQb3NpdGl2ZUludDMyTGVuZ3RoKSkpOwogCiAgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6SnVtcCBzbG93UGF0aCA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpB
Ym92ZU9yRXF1YWwsIHN0b3JhZ2VMZW5ndGhHUFIsIE1hY3JvQXNzZW1ibGVyOjpBZGRyZXNzKHN0
b3JhZ2VHUFIsIEFycmF5U3RvcmFnZTo6dmVjdG9yTGVuZ3RoT2Zmc2V0KCkpKTsKIApAQCAtOTI4
Myw3ICs5MjgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZUFycmF5UHVzaChOb2Rl
KiBub2RlKQogICAgICAgICBtX2ppdC5sb2FkMzIoTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3Rv
cmFnZUdQUiwgQXJyYXlTdG9yYWdlOjpsZW5ndGhPZmZzZXQoKSksIHN0b3JhZ2VMZW5ndGhHUFIp
OwogCiAgICAgICAgIC8vIFJlZnVzZSB0byBoYW5kbGUgYml6YXJyZSBsZW5ndGhzLgotICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmUsIHN0b3JhZ2VMZW5ndGhHUFIsIFRydXN0ZWRJ
bW0zMihsYXJnZXN0UG9zaXRpdmVJbnQzMkxlbmd0aCkpKTsKKyAgICAgICAgc3BlY3VsYXRpb25D
aGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoMzIo
TWFjcm9Bc3NlbWJsZXI6OkFib3ZlLCBzdG9yYWdlTGVuZ3RoR1BSLCBUcnVzdGVkSW1tMzIobGFy
Z2VzdFBvc2l0aXZlSW50MzJMZW5ndGgpKSk7CiAKICAgICAgICAgbV9qaXQubW92ZShzdG9yYWdl
TGVuZ3RoR1BSLCBidWZmZXJHUFIpOwogICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIo
ZWxlbWVudENvdW50KSwgYnVmZmVyR1BSKTsKQEAgLTk0OTEsNyArOTQ5MSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmVtaXRTdHJ1Y3R1cmVDaGVjayhOb2RlKiBub2RlLCBHUFJSZWcgY2VsbEdQ
UiwgR1BSUmVnIHRlbXBHCiAgICAgCiAgICAgaWYgKG5vZGUtPnN0cnVjdHVyZVNldCgpLnNpemUo
KSA9PSAxKSB7CiAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soCi0gICAgICAgICAgICBCYWRDYWNo
ZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIDAsCisgICAgICAgICAgICBC
YWRDYWNoZSwgSlNWYWx1ZVNvdXJjZTo6dW5ib3hlZENlbGwoY2VsbEdQUiksIG51bGxwdHIsCiAg
ICAgICAgICAgICBtX2ppdC5icmFuY2hXZWFrU3RydWN0dXJlKAogICAgICAgICAgICAgICAgIEpJ
VENvbXBpbGVyOjpOb3RFcXVhbCwKICAgICAgICAgICAgICAgICBKSVRDb21waWxlcjo6QWRkcmVz
cyhjZWxsR1BSLCBKU0NlbGw6OnN0cnVjdHVyZUlET2Zmc2V0KCkpLApAQCAtOTUxNiw3ICs5NTE2
LDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdFN0cnVjdHVyZUNoZWNrKE5vZGUqIG5vZGUs
IEdQUlJlZyBjZWxsR1BSLCBHUFJSZWcgdGVtcEcKICAgICAgICAgfQogICAgICAgICAKICAgICAg
ICAgc3BlY3VsYXRpb25DaGVjaygKLSAgICAgICAgICAgIEJhZENhY2hlLCBKU1ZhbHVlU291cmNl
Ojp1bmJveGVkQ2VsbChjZWxsR1BSKSwgMCwKKyAgICAgICAgICAgIEJhZENhY2hlLCBKU1ZhbHVl
U291cmNlOjp1bmJveGVkQ2VsbChjZWxsR1BSKSwgbnVsbHB0ciwKICAgICAgICAgICAgIG1faml0
LmJyYW5jaFdlYWtTdHJ1Y3R1cmUoCiAgICAgICAgICAgICAgICAgSklUQ29tcGlsZXI6Ok5vdEVx
dWFsLCBzdHJ1Y3R1cmVHUFIsIG5vZGUtPnN0cnVjdHVyZVNldCgpLmxhc3QoKSkpOwogICAgICAg
ICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAppbmRl
eCAzMTk5NDgxMTZlYjA5ODEwZjQ0YjQyNDExYzJjZThlNTgwOTM3MGU1Li5lODgyNTlhNWQ2ZDUy
MmU3Yzk5NmM4NTQ0N2RjZDQ4N2FiZDNmYmJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCkBAIC0xNzAsNyArMTcwLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgZm9yIChCbG9ja0luZGV4IHJlc3VsdEluZGV4ID0gbV9ibG9jay0+aW5kZXgg
KyAxOyA7IHJlc3VsdEluZGV4KyspIHsKICAgICAgICAgICAgIGlmIChyZXN1bHRJbmRleCA+PSBt
X2ppdC5ncmFwaCgpLm51bUJsb2NrcygpKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgaWYgKEJhc2ljQmxvY2sq
IHJlc3VsdCA9IG1faml0LmdyYXBoKCkuYmxvY2socmVzdWx0SW5kZXgpKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KQEAgLTExMzUsNyArMTEzNSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgbGlua0JyYW5jaGVzKCk7CiAKLSAgICB2b2lkIGR1bXAoY29uc3QgY2hh
ciogbGFiZWwgPSAwKTsKKyAgICB2b2lkIGR1bXAoY29uc3QgY2hhciogbGFiZWwgPSBudWxscHRy
KTsKIAogICAgIGJvb2wgYmV0dGVyVXNlU3RyaWN0SW50NTIoTm9kZSogbm9kZSkKICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcApp
bmRleCA4OGU4ZTIwZDVhOTQ0Y2E2YWVhMzlhM2U0YzU0YjMyNDU2ZjlmOGIyLi4xZjI1OTA1MmQ4
NjE0NjRiYWNmNTIxYzA1YjI0NzViM2QyN2JjNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTk0OSw3ICs5NDksNyBAQCBH
UFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQzMkludGVybmFsKEVkZ2UgZWRn
ZSwgRGF0YUZvcm1hdCYgcmV0dXJuRgogICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBT
cGVjSW50MzJPbmx5KTsKICAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CiAgICAgICAgIGlmICht
YXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAg
ICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuRm9ybWF0ID0gRGF0YUZvcm1hdEludDMy
OwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CkBAIC0xMDk0LDcgKzEwOTQsNyBA
QCBHUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVJbnQ1MihFZGdlIGVkZ2UsIERh
dGFGb3JtYXQgZGVzaXJlZEZvcm1hdCkKICAgICBtX2ludGVycHJldGVyLmZpbHRlcih2YWx1ZSwg
U3BlY0ludDUyQW55KTsKICAgICBpZiAodmFsdWUuaXNDbGVhcigpKSB7CiAgICAgICAgIGlmICht
YXlIYXZlVHlwZUNoZWNrKGVkZ2UudXNlS2luZCgpKSkKLSAgICAgICAgICAgIHRlcm1pbmF0ZVNw
ZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCAwKTsKKyAgICAg
ICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZlRXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVl
UmVncygpLCBudWxscHRyKTsKICAgICAgICAgcmV0dXJuIGFsbG9jYXRlKCk7CiAgICAgfQogCkBA
IC0xMjAyLDcgKzEyMDIsNyBAQCBGUFJSZWcgU3BlY3VsYXRpdmVKSVQ6OmZpbGxTcGVjdWxhdGVE
b3VibGUoRWRnZSBlZGdlKQogICAgICAgICAgICAgICAgIHJldHVybiBmcHI7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVzZUtpbmQoKSkpCi0g
ICAgICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUs
IEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICAgICAgICAgIHRlcm1pbmF0ZVNwZWN1bGF0aXZl
RXhlY3V0aW9uKFVuY291bnRhYmxlLCBKU1ZhbHVlUmVncygpLCBudWxscHRyKTsKICAgICAgICAg
ICAgIHJldHVybiBmcHJBbGxvY2F0ZSgpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTIzNiw3
ICsxMjM2LDcgQEAgR1BSUmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQ2VsbChFZGdl
IGVkZ2UpCiAgICAgbV9pbnRlcnByZXRlci5maWx0ZXIodmFsdWUsIFNwZWNDZWxsQ2hlY2spOwog
ICAgIGlmICh2YWx1ZS5pc0NsZWFyKCkpIHsKICAgICAgICAgaWYgKG1heUhhdmVUeXBlQ2hlY2so
ZWRnZS51c2VLaW5kKCkpKQotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRp
b24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICAgICAgdGVybWluYXRl
U3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIp
OwogICAgICAgICByZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKQEAgLTEzMTYsNyArMTMxNiw3
IEBAIEdQUlJlZyBTcGVjdWxhdGl2ZUpJVDo6ZmlsbFNwZWN1bGF0ZUJvb2xlYW4oRWRnZSBlZGdl
KQogICAgIG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQm9vbGVhbik7CiAgICAgaWYg
KHZhbHVlLmlzQ2xlYXIoKSkgewogICAgICAgICBpZiAobWF5SGF2ZVR5cGVDaGVjayhlZGdlLnVz
ZUtpbmQoKSkpCi0gICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihVbmNv
dW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCk7CisgICAgICAgICAgICB0ZXJtaW5hdGVTcGVjdWxh
dGl2ZUV4ZWN1dGlvbihVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0cik7CiAgICAg
ICAgIHJldHVybiBhbGxvY2F0ZSgpOwogICAgIH0KIApAQCAtMTQyMiw3ICsxNDIyLDcgQEAgR1BS
UmVnIFNwZWN1bGF0aXZlSklUOjpmaWxsU3BlY3VsYXRlQmlnSW50MzIoRWRnZSBlZGdlKQogICAg
IG1faW50ZXJwcmV0ZXIuZmlsdGVyKHZhbHVlLCBTcGVjQmlnSW50MzIpOwogICAgIGlmICh2YWx1
ZS5pc0NsZWFyKCkpIHsKICAgICAgICAgaWYgKG1heUhhdmVUeXBlQ2hlY2soZWRnZS51c2VLaW5k
KCkpKQotICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVFeGVjdXRpb24oVW5jb3VudGFi
bGUsIEpTVmFsdWVSZWdzKCksIDApOworICAgICAgICAgICAgdGVybWluYXRlU3BlY3VsYXRpdmVF
eGVjdXRpb24oVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIpOwogICAgICAgICBy
ZXR1cm4gYWxsb2NhdGUoKTsKICAgICB9CiAKQEAgLTI3NDEsNyArMjc0MSw3IEBAIHZvaWQgU3Bl
Y3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAgICAgICAgICBpZiAoIW1f
Y29tcGlsZU9rYXkpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVl
UmVncygpLCAwLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBw
cm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5
OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9u
Q2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMy
KE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxl
cjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkp
KSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgR1BSVGVtcG9yYXJ5IHJlc3Vs
dCh0aGlzKTsKIApAQCAtMjc1Myw3ICsyNzUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29t
cGlsZShOb2RlKiBub2RlKQogICAgICAgICAgICAgICAgICAgICBub3RIb2xlLmxpbmsoJm1faml0
KTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzcGVjdWxh
dGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICAgICAgTG9hZEZyb21Ib2xlLCBKU1ZhbHVl
UmVncygpLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgTG9hZEZyb21Ib2xlLCBKU1ZhbHVl
UmVncygpLCBudWxscHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgbV9qaXQuYnJhbmNoSWZF
bXB0eShyZXN1bHQuZ3ByKCkpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
anNWYWx1ZVJlc3VsdChyZXN1bHQuZ3ByKCksIG5vZGUsIG5vZGUtPmFycmF5TW9kZSgpLnR5cGUo
KSA9PSBBcnJheTo6SW50MzIgPyBEYXRhRm9ybWF0SlNJbnQzMiA6IERhdGFGb3JtYXRKUyk7CkBA
IC0yODA0LDExICsyODA0LDExIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSog
bm9kZSkKICAgICAgICAgICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMpOwogICAgICAg
ICAgICAgICAgIEZQUlJlZyByZXN1bHRSZWcgPSByZXN1bHQuZnByKCk7CiAKLSAgICAgICAgICAg
ICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBtX2pp
dC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFj
cm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5OjpvZmZzZXRPZlB1Ymxp
Y0xlbmd0aCgpKSkpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3Vu
ZHMsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsIG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVy
OjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9y
YWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3RoKCkpKSk7CiAKICAgICAgICAg
ICAgICAgICBtX2ppdC5sb2FkRG91YmxlKE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFn
ZVJlZywgcHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0KSwgcmVzdWx0UmVn
KTsKICAgICAgICAgICAgICAgICBpZiAoIW5vZGUtPmFycmF5TW9kZSgpLmlzU2FuZUNoYWluKCkp
Ci0gICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soTG9hZEZyb21Ib2xlLCBKU1Zh
bHVlUmVncygpLCAwLCBtX2ppdC5icmFuY2hJZk5hTihyZXN1bHRSZWcpKTsKKyAgICAgICAgICAg
ICAgICAgICAgc3BlY3VsYXRpb25DaGVjayhMb2FkRnJvbUhvbGUsIEpTVmFsdWVSZWdzKCksIG51
bGxwdHIsIG1faml0LmJyYW5jaElmTmFOKHJlc3VsdFJlZykpOwogICAgICAgICAgICAgICAgIGRv
dWJsZVJlc3VsdChyZXN1bHRSZWcsIG5vZGUpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQpAQCAtMjg1OCwxMSArMjg1OCwxMSBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpj
b21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgaWYgKCFtX2NvbXBpbGVPa2F5KQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAKLSAgICAgICAgICAgICAg
ICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBtX2ppdC5i
cmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9B
c3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhP
ZmZzZXQoKSkpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRz
LCBKU1ZhbHVlUmVncygpLCBudWxscHRyLCBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6
QWJvdmVPckVxdWFsLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFn
ZVJlZywgQXJyYXlTdG9yYWdlOjp2ZWN0b3JMZW5ndGhPZmZzZXQoKSkpKTsKICAgICAgICAgICAg
IAogICAgICAgICAgICAgICAgIEdQUlRlbXBvcmFyeSByZXN1bHQodGhpcyk7CiAgICAgICAgICAg
ICAgICAgbV9qaXQubG9hZDY0KE1hY3JvQXNzZW1ibGVyOjpCYXNlSW5kZXgoc3RvcmFnZVJlZywg
cHJvcGVydHlSZWcsIE1hY3JvQXNzZW1ibGVyOjpUaW1lc0VpZ2h0LCBBcnJheVN0b3JhZ2U6OnZl
Y3Rvck9mZnNldCgpKSwgcmVzdWx0LmdwcigpKTsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGlv
bkNoZWNrKExvYWRGcm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQuYnJhbmNoSWZFbXB0
eShyZXN1bHQuZ3ByKCkpKTsKKyAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKExvYWRG
cm9tSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgbnVsbHB0ciwgbV9qaXQuYnJhbmNoSWZFbXB0eShyZXN1
bHQuZ3ByKCkpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGpzVmFsdWVSZXN1bHQo
cmVzdWx0LmdwcigpLCBub2RlKTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTMwMjgsNyAr
MzAyOCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAg
ICAgICAgIAogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91bmRzKCkpIHsKICAgICAg
ICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAgICAgICBPdXRPZkJv
dW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgT3V0T2ZCb3VuZHMs
IEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAgIG1faml0LmJyYW5j
aDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9yRXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2Vt
Ymxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGljTGVuZ3Ro
KCkpKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1i
bGVyOjpKdW1wIGluQm91bmRzID0gbV9qaXQuYnJhbmNoMzIoTWFjcm9Bc3NlbWJsZXI6OkJlbG93
LCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVy
Zmx5OjpvZmZzZXRPZlB1YmxpY0xlbmd0aCgpKSk7CkBAIC0zMDM2LDcgKzMwMzYsNyBAQCB2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgICAgICAgICAgc2xv
d0Nhc2UgPSBtX2ppdC5icmFuY2gzMihNYWNyb0Fzc2VtYmxlcjo6QWJvdmVPckVxdWFsLCBwcm9w
ZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OkFkZHJlc3Moc3RvcmFnZVJlZywgQnV0dGVyZmx5Ojpv
ZmZzZXRPZlZlY3Rvckxlbmd0aCgpKSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKQotICAgICAgICAgICAgICAgICAgICBz
cGVjdWxhdGlvbkNoZWNrKE91dE9mQm91bmRzLCBKU1ZhbHVlUmVncygpLCAwLCBzbG93Q2FzZSk7
CisgICAgICAgICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFs
dWVSZWdzKCksIG51bGxwdHIsIHNsb3dDYXNlKTsKICAgICAgICAgICAgICAgICAKICAgICAgICAg
ICAgICAgICBtX2ppdC5hZGQzMihUcnVzdGVkSW1tMzIoMSksIHByb3BlcnR5UmVnLCB0ZW1wb3Jh
cnlSZWcpOwogICAgICAgICAgICAgICAgIG1faml0LnN0b3JlMzIodGVtcG9yYXJ5UmVnLCBNYWNy
b0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBCdXR0ZXJmbHk6Om9mZnNldE9mUHVibGlj
TGVuZ3RoKCkpKTsKQEAgLTMwOTgsMTQgKzMwOTgsMTQgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6
Y29tcGlsZShOb2RlKiBub2RlKQogCiAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBi
ZXlvbmRBcnJheUJvdW5kcyA9IG1faml0LmJyYW5jaDMyKE1hY3JvQXNzZW1ibGVyOjpBYm92ZU9y
RXF1YWwsIHByb3BlcnR5UmVnLCBNYWNyb0Fzc2VtYmxlcjo6QWRkcmVzcyhzdG9yYWdlUmVnLCBB
cnJheVN0b3JhZ2U6OnZlY3Rvckxlbmd0aE9mZnNldCgpKSk7CiAgICAgICAgICAgICBpZiAoIWFy
cmF5TW9kZS5pc091dE9mQm91bmRzKCkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRpb25DaGVj
ayhPdXRPZkJvdW5kcywgSlNWYWx1ZVJlZ3MoKSwgMCwgYmV5b25kQXJyYXlCb3VuZHMpOworICAg
ICAgICAgICAgICAgIHNwZWN1bGF0aW9uQ2hlY2soT3V0T2ZCb3VuZHMsIEpTVmFsdWVSZWdzKCks
IG51bGxwdHIsIGJleW9uZEFycmF5Qm91bmRzKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgICAgICBzbG93Q2FzZXMuYXBwZW5kKGJleW9uZEFycmF5Qm91bmRzKTsKIAogICAgICAgICAg
ICAgLy8gQ2hlY2sgaWYgd2UncmUgd3JpdGluZyB0byBhIGhvbGU7IGlmIHNvIGluY3JlbWVudCBt
X251bVZhbHVlc0luVmVjdG9yLgogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91bmRz
KCkpIHsKICAgICAgICAgICAgICAgICBzcGVjdWxhdGlvbkNoZWNrKAotICAgICAgICAgICAgICAg
ICAgICBTdG9yZVRvSG9sZSwgSlNWYWx1ZVJlZ3MoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAg
U3RvcmVUb0hvbGUsIEpTVmFsdWVSZWdzKCksIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgICAg
IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6WmVybywgTWFjcm9Bc3NlbWJsZXI6
OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRpbWVz
RWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpKSk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpKdW1wIG5vdEhvbGVWYWx1ZSA9
IG1faml0LmJyYW5jaFRlc3Q2NChNYWNyb0Fzc2VtYmxlcjo6Tm9uWmVybywgTWFjcm9Bc3NlbWJs
ZXI6OkJhc2VJbmRleChzdG9yYWdlUmVnLCBwcm9wZXJ0eVJlZywgTWFjcm9Bc3NlbWJsZXI6OlRp
bWVzRWlnaHQsIEFycmF5U3RvcmFnZTo6dmVjdG9yT2Zmc2V0KCkpKTsKQEAgLTQ5NDgsNyArNDk0
OCw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUoTm9kZSogbm9kZSkKICAgICAgICAg
YnJlYWs7CiAKICAgICBjYXNlIEZvcmNlT1NSRXhpdDogewotICAgICAgICB0ZXJtaW5hdGVTcGVj
dWxhdGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2UsIEpTVmFsdWVSZWdzKCksIDApOwor
ICAgICAgICB0ZXJtaW5hdGVTcGVjdWxhdGl2ZUV4ZWN1dGlvbihJbmFkZXF1YXRlQ292ZXJhZ2Us
IEpTVmFsdWVSZWdzKCksIG51bGxwdHIpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAg
IApAQCAtNTY4Myw3ICs1NjgzLDcgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVN0cmlu
Z0NvZGVQb2ludEF0KE5vZGUqIG5vZGUpCiAgICAgbV9qaXQubG9hZDMyKENDYWxsSGVscGVyczo6
QWRkcmVzcyhzY3JhdGNoMUdQUiwgU3RyaW5nSW1wbDo6bGVuZ3RoTWVtb3J5T2Zmc2V0KCkpLCBz
Y3JhdGNoMkdQUik7CiAKICAgICAvLyB1bnNpZ25lZCBjb21wYXJpc29uIHNvIHdlIGNhbiBmaWx0
ZXIgb3V0IG5lZ2F0aXZlIGluZGljZXMgYW5kIGluZGljZXMgdGhhdCBhcmUgdG9vIGxhcmdlCi0g
ICAgc3BlY3VsYXRpb25DaGVjayhVbmNvdW50YWJsZSwgSlNWYWx1ZVJlZ3MoKSwgMCwgbV9qaXQu
YnJhbmNoMzIoQ0NhbGxIZWxwZXJzOjpBYm92ZU9yRXF1YWwsIGluZGV4R1BSLCBzY3JhdGNoMkdQ
UikpOworICAgIHNwZWN1bGF0aW9uQ2hlY2soVW5jb3VudGFibGUsIEpTVmFsdWVSZWdzKCksIG51
bGxwdHIsIG1faml0LmJyYW5jaDMyKENDYWxsSGVscGVyczo6QWJvdmVPckVxdWFsLCBpbmRleEdQ
Uiwgc2NyYXRjaDJHUFIpKTsKIAogICAgIC8vIExvYWQgdGhlIGNoYXJhY3RlciBpbnRvIHNjcmF0
Y2gxR1BSCiAgICAgYXV0byBpczE2Qml0ID0gbV9qaXQuYnJhbmNoVGVzdDMyKENDYWxsSGVscGVy
czo6WmVybywgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxR1BSLCBTdHJpbmdJbXBsOjpm
bGFnc09mZnNldCgpKSwgVHJ1c3RlZEltbTMyKFN0cmluZ0ltcGw6OmZsYWdJczhCaXQoKSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFj
dFZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RydWN0dXJlQWJzdHJh
Y3RWYWx1ZS5jcHAKaW5kZXggMTI0MzMyMWQzMDk2OTk2YTMzNDUzYzJmMGZhNjU0ZmUwYjJhN2Mw
OC4uZmU5Y2QzYzViZjJiMGMzODk4NDA0NzA3Mzc2MzA1YTk5MmI3OThkZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cnVjdHVyZUFic3RyYWN0VmFsdWUu
Y3BwCkBAIC0zNzIsNyArMzcyLDcgQEAgdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpkdW1w
SW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBjb250ZXgKIAogdm9pZCBT
dHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0g
ICAgZHVtcEluQ29udGV4dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRy
KTsKIH0KIAogdm9pZCBTdHJ1Y3R1cmVBYnN0cmFjdFZhbHVlOjp2YWxpZGF0ZVJlZmVyZW5jZXMo
Y29uc3QgVHJhY2tlZFJlZmVyZW5jZXMmIHRyYWNrZWRSZWZlcmVuY2VzKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUcmFuc2l0aW9uLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVHJhbnNpdGlvbi5jcHAKaW5kZXggYTU0ZWMzNDg1ZDEx
ZTU4NDFlMjY0Y2JjMTM0OGNmOWFiZjJhMzBlMS4uMWEwMDAyNWI2ZDk4Nzg1ZjY0ZTdjYjljYjI2
NjI1NWJmNzEwNjc0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdU
cmFuc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1RyYW5zaXRp
b24uY3BwCkBAIC0zOSw3ICszOSw3IEBAIHZvaWQgVHJhbnNpdGlvbjo6ZHVtcEluQ29udGV4dChQ
cmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QKIAogdm9pZCBUcmFu
c2l0aW9uOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29udGV4
dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAogfSB9IC8v
IG5hbWVzcGFjZSBKU0M6OkRGRwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdUeXBlQ2hlY2tIb2lzdGluZ1BoYXNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHVHlwZUNoZWNrSG9pc3RpbmdQaGFzZS5jcHAKaW5kZXggOTJkMGM4ZjFjNDU2MzczOTBj
MDYzNGE4MTU4MjQyODVlOTdhM2ViMi4uN2NhZTU2OWFkYjc0Y2FjMTQwOWNlYzA1M2NkMjgwNmYz
OGZlOGVkMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdUeXBlQ2hl
Y2tIb2lzdGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1R5
cGVDaGVja0hvaXN0aW5nUGhhc2UuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHN0cnVjdCBDaGVja0Rh
dGEgewogICAgIGJvb2wgbV9hcnJheU1vZGVIb2lzdGluZ09rYXk7CiAgICAgCiAgICAgQ2hlY2tE
YXRhKCkKLSAgICAgICAgOiBtX3N0cnVjdHVyZSgwKQorICAgICAgICA6IG1fc3RydWN0dXJlKG51
bGxwdHIpCiAgICAgICAgICwgbV9hcnJheU1vZGVJc1ZhbGlkKGZhbHNlKQogICAgICAgICAsIG1f
YXJyYXlNb2RlSG9pc3RpbmdPa2F5KGZhbHNlKQogICAgIHsKQEAgLTY0LDcgKzY0LDcgQEAgc3Ry
dWN0IENoZWNrRGF0YSB7CiAgICAgfQogCiAgICAgQ2hlY2tEYXRhKEFycmF5TW9kZSBhcnJheU1v
ZGUpCi0gICAgICAgIDogbV9zdHJ1Y3R1cmUoMCkKKyAgICAgICAgOiBtX3N0cnVjdHVyZShudWxs
cHRyKQogICAgICAgICAsIG1fYXJyYXlNb2RlKGFycmF5TW9kZSkKICAgICAgICAgLCBtX2FycmF5
TW9kZUlzVmFsaWQodHJ1ZSkKICAgICAgICAgLCBtX2FycmF5TW9kZUhvaXN0aW5nT2theSh0cnVl
KQpAQCAtNTAzLDcgKzUwMyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIGlmIChyZXN1bHQuaXRlcmF0b3ItPnZhbHVlLm1fc3RydWN0dXJlID09IHN0cnVjdHVyZS5n
ZXQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5tX3N0cnVjdHVyZSA9IDA7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUubV9zdHJ1
Y3R1cmUgPSBudWxscHRyOwogICAgIH0KICAgICAKICAgICB2b2lkIG5vdGljZVN0cnVjdHVyZUNo
ZWNrKFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUsIFJlZ2lzdGVyZWRTdHJ1Y3R1cmVTZXQg
c2V0KQpAQCAtNTk0LDcgKzU5NCw3IEBAIHN0cnVjdCBTdHJ1Y3R1cmVUeXBlQ2hlY2sgewogCiAg
ICAgc3RhdGljIHZvaWQgZGlzYWJsZUhvaXN0aW5nKENoZWNrRGF0YSYgY2hlY2tEYXRhKQogICAg
IHsKLSAgICAgICAgY2hlY2tEYXRhLm1fc3RydWN0dXJlID0gMDsKKyAgICAgICAgY2hlY2tEYXRh
Lm1fc3RydWN0dXJlID0gbnVsbHB0cjsKICAgICB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0NvbnRy
YXZlbmVkQnlWYWx1ZShDaGVja0RhdGEmIGNoZWNrRGF0YSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29ya2xpc3QuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAKaW5kZXggNzRlN2IwNGQyODAwYzA2
MzNiYzk4MDRlYjJjYWE4OTQ0NjcwNDJmZC4uNjcyMGUyM2U5M2U5NzM0MjY4NWUxZmIxZGE3MGFi
ODE1MzRlMjFiZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3Jr
bGlzdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAK
QEAgLTYzNCw3ICs2MzQsNyBAQCBXb3JrbGlzdCogZXhpc3RpbmdXb3JrbGlzdEZvckluZGV4T3JO
dWxsKHVuc2lnbmVkIGluZGV4KQogICAgICAgICByZXR1cm4gZXhpc3RpbmdHbG9iYWxGVExXb3Jr
bGlzdE9yTnVsbCgpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LmgKaW5kZXggMmY0OWE4ZTJjNjNmMWY2NzkxMDgwN2ZlNmIzNGJiNGFk
NDU5MzYyOC4uOTJmYzQwODBiMTk2MDIyYTA1ZTlhMzBkNTk3NTliOGY3ZmVhNzM4ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0b3J5
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBYnN0cmFjdEhlYXBSZXBvc2l0
b3J5LmgKQEAgLTIyMSw3ICsyMjEsNyBAQCBwdWJsaWM6CiAgICAgICAgIHN3aXRjaCAoaW5kZXhp
bmdUeXBlKSB7CiAgICAgICAgIGNhc2UgQUxMX0JMQU5LX0lOREVYSU5HX1RZUEVTOgogICAgICAg
ICBjYXNlIEFMTF9VTkRFQ0lERURfSU5ERVhJTkdfVFlQRVM6Ci0gICAgICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgCiAgICAgICAgIGNh
c2UgQUxMX0lOVDMyX0lOREVYSU5HX1RZUEVTOgogICAgICAgICAgICAgcmV0dXJuICZpbmRleGVk
SW50MzJQcm9wZXJ0aWVzOwpAQCAtMjM3LDcgKzIzNyw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEF2YWlsYWJsZVJlY292ZXJ5LmgKaW5kZXggMWYzNmMzYjg3YTg2ZTMwNTBmMTRiYTc5Y2Yw
NWRjYjM1ZDNkMWYwZS4uN2FhNTNlN2NkMjQxY2NjZDJlMTY4OGUzN2U5ZjAwMmU5MjZkYjY2YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExBdmFpbGFibGVSZWNvdmVy
eS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQXZhaWxhYmxlUmVjb3Zlcnku
aApAQCAtMzcsMTEgKzM3LDExIEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIGNs
YXNzIEF2YWlsYWJsZVJlY292ZXJ5IHsKIHB1YmxpYzoKICAgICBBdmFpbGFibGVSZWNvdmVyeSgp
Ci0gICAgICAgIDogbV9ub2RlKDApCisgICAgICAgIDogbV9ub2RlKG51bGxwdHIpCiAgICAgICAg
ICwgbV9mb3JtYXQoRGF0YUZvcm1hdE5vbmUpCiAgICAgICAgICwgbV9vcGNvZGUoQWRkUmVjb3Zl
cnkpCi0gICAgICAgICwgbV9sZWZ0KDApCi0gICAgICAgICwgbV9yaWdodCgwKQorICAgICAgICAs
IG1fbGVmdChudWxscHRyKQorICAgICAgICAsIG1fcmlnaHQobnVsbHB0cikKICAgICB7CiAgICAg
fQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFs
dWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExFeGl0VmFsdWUuY3BwCmluZGV4
IDBjYWNmMDk0NmIxNzk0NmMwM2Y2ZWMyYTYyMGJmNjA5M2Q1NzZiYzMuLjFiNTdkYTA3MjNlNTFm
ZDcxODMxYTViOGRmODc2NzM4YWU0NTY1NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMRXhpdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEV4aXRWYWx1ZS5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIEV4aXRWYWx1ZTo6ZHVt
cEluQ29udGV4dChQcmludFN0cmVhbSYgb3V0LCBEdW1wQ29udGV4dCogY29udGV4dCkgY29uc3QK
IAogdm9pZCBFeGl0VmFsdWU6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKLSAgICBk
dW1wSW5Db250ZXh0KG91dCwgMCk7CisgICAgZHVtcEluQ29udGV4dChvdXQsIG51bGxwdHIpOwog
fQogCiB2b2lkIEV4aXRWYWx1ZTo6dmFsaWRhdGVSZWZlcmVuY2VzKGNvbnN0IFRyYWNrZWRSZWZl
cmVuY2VzJiB0cmFja2VkUmVmZXJlbmNlcykgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMRm9ybWF0dGVkVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMRm9ybWF0dGVkVmFsdWUuaAppbmRleCBlZTBhMDcwMWZiNjQzNjAwNGIwMjRjMjMw
MTdiMDRhNTI4YjlmOTAzLi5kYjY0ZjAxZmU2OTYwYjdkM2YxODI2NzUzYWZlZTQyNTU4MjA5MmVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEZvcm1hdHRlZFZhbHVl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExGb3JtYXR0ZWRWYWx1ZS5oCkBA
IC00MCw3ICs0MCw3IEBAIGNsYXNzIEZvcm1hdHRlZFZhbHVlIHsKIHB1YmxpYzoKICAgICBGb3Jt
YXR0ZWRWYWx1ZSgpCiAgICAgICAgIDogbV9mb3JtYXQoRGF0YUZvcm1hdE5vbmUpCi0gICAgICAg
ICwgbV92YWx1ZSgwKQorICAgICAgICAsIG1fdmFsdWUobnVsbHB0cikKICAgICB7CiAgICAgfQog
ICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExKSVRDb2RlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMSklUQ29kZS5jcHAKaW5kZXggZWRiYjM5
ZGY1ZTVmNDJkYmVjOTQxMDE3ZjIxOWUyNGIzMWNhNzFlYy4uNzM5YTY0ZGMxYjEzMDIyNWYyOGQx
MTM2YWQ5YTkwOTY2OWFlN2VlMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExKSVRDb2RlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEpJVENv
ZGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCogSklUQ29kZTo6ZGF0YUFkZHJlc3NBdE9m
ZnNldChzaXplX3QpCiAgICAgLy8gV2UgY2FuJ3QgcGF0Y2ggRlRMIGNvZGUsIHlldC4gRXZlbiBp
ZiB3ZSBkaWQsIGl0J3Mgbm90IGNsZWFyIHRoYXQgd2Ugd291bGQgZG8gc28KICAgICAvLyB0aHJv
dWdoIHRoaXMgQVBJLgogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHVuc2lnbmVkIEpJVENvZGU6Om9mZnNl
dE9mKHZvaWQqKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMaW5r
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTGluay5jcHAKaW5kZXggM2UwZDU4
ZmU3OTc2Mjc5MzZiMzY3NjIzZTg4NDQxNGE4NGRmNDM4NS4uNWIwYjMzM2ZmZTVmYmQ1MWZkZWUy
YmZkNDE0ZDk5NmNhMWFmZDljZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0
bC9GVExMaW5rLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExpbmsuY3Bw
CkBAIC04MCw3ICs4MCw3IEBAIHZvaWQgbGluayhTdGF0ZSYgc3RhdGUpCiAgICAgICAgIAogICAg
ICAgICBEdW1wQ29udGV4dCBkdW1wQ29udGV4dDsKICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0g
b3V0OwotICAgICAgICBOb2RlKiBsYXN0Tm9kZSA9IDA7CisgICAgICAgIE5vZGUqIGxhc3ROb2Rl
ID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChzaXplX3QgYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5k
ZXggPCBncmFwaC5udW1CbG9ja3MoKTsgKytibG9ja0luZGV4KSB7CiAgICAgICAgICAgICBCYXNp
Y0Jsb2NrKiBibG9jayA9IGdyYXBoLmJsb2NrKGJsb2NrSW5kZXgpOwogICAgICAgICAgICAgaWYg
KCFibG9jaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJE
RkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNw
cAppbmRleCA1MmE2OTlmZmM5Y2U2YjgzYWIwNGZjYmQzMDc0M2YwNDY0Y2E0MjM0Li5kNDcxMWE5
OWZlNzZhMDEzM2I3NjEzYWFjZGRjZjIwZmJhNzMxMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC00ODQsMTMgKzQ4NCwxMyBAQCBwcml2
YXRlOgogICAgICAgICAKICAgICAgICAgTEJhc2ljQmxvY2sgbG93QmxvY2sgPSBtX2Jsb2Nrcy5n
ZXQobV9oaWdoQmxvY2spOwogICAgICAgICAKLSAgICAgICAgbV9uZXh0SGlnaEJsb2NrID0gMDsK
KyAgICAgICAgbV9uZXh0SGlnaEJsb2NrID0gbnVsbHB0cjsKICAgICAgICAgZm9yIChCbG9ja0lu
ZGV4IG5leHRCbG9ja0luZGV4ID0gbV9oaWdoQmxvY2stPmluZGV4ICsgMTsgbmV4dEJsb2NrSW5k
ZXggPCBtX2dyYXBoLm51bUJsb2NrcygpOyArK25leHRCbG9ja0luZGV4KSB7CiAgICAgICAgICAg
ICBtX25leHRIaWdoQmxvY2sgPSBtX2dyYXBoLmJsb2NrKG5leHRCbG9ja0luZGV4KTsKICAgICAg
ICAgICAgIGlmIChtX25leHRIaWdoQmxvY2spCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KLSAgICAgICAgbV9uZXh0TG93QmxvY2sgPSBtX25leHRIaWdoQmxvY2sgPyBtX2Jsb2Nr
cy5nZXQobV9uZXh0SGlnaEJsb2NrKSA6IDA7CisgICAgICAgIG1fbmV4dExvd0Jsb2NrID0gbV9u
ZXh0SGlnaEJsb2NrID8gbV9ibG9ja3MuZ2V0KG1fbmV4dEhpZ2hCbG9jaykgOiBudWxscHRyOwog
ICAgICAgICAKICAgICAgICAgLy8gQWxsIG9mIHRoaXMgZWZmb3J0IHRvIGZpbmQgdGhlIG5leHQg
YmxvY2sgZ2l2ZXMgdXMgdGhlIGFiaWxpdHkgdG8ga2VlcCB0aGUKICAgICAgICAgLy8gZ2VuZXJh
dGVkIElSIGluIHJvdWdobHkgcHJvZ3JhbSBvcmRlci4gVGhpcyBvdWdodCBub3QgYWZmZWN0IHRo
ZSBwZXJmb3JtYW5jZQpAQCAtMjcxNCw3ICsyNzE0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
ICAgICBMQmFzaWNCbG9jayBpbm5lckxhc3ROZXh0ID0gbV9vdXQuYXBwZW5kVG8oemVyb051bWVy
YXRvciwgbnVtZXJhdG9yQ29udGludWF0aW9uKTsKIAogICAgICAgICAgICAgICAgIHNwZWN1bGF0
ZSgKLSAgICAgICAgICAgICAgICAgICAgTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0
Lmxlc3NUaGFuKGRlbm9taW5hdG9yLCBtX291dC5pbnQzMlplcm8pKTsKKyAgICAgICAgICAgICAg
ICAgICAgTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFuKGRl
bm9taW5hdG9yLCBtX291dC5pbnQzMlplcm8pKTsKIAogICAgICAgICAgICAgICAgIG1fb3V0Lmp1
bXAobnVtZXJhdG9yQ29udGludWF0aW9uKTsKIApAQCAtMjczOSw3ICsyNzM5LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgICAgICBtX291dC5hcHBlbmRUbyhjb250aW51YXRpb24sIGxhc3ROZXh0
KTsKICAgICAgICAgICAgICAgICBMVmFsdWUgcmVzdWx0ID0gbV9vdXQuZGl2KG51bWVyYXRvciwg
ZGVub21pbmF0b3IpOwogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgICAg
ICAgICAgT3ZlcmZsb3csIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgT3ZlcmZs
b3csIG5vVmFsdWUoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1
YWwobV9vdXQubXVsKHJlc3VsdCwgZGVub21pbmF0b3IpLCBudW1lcmF0b3IpKTsKICAgICAgICAg
ICAgICAgICBzZXRJbnQzMihyZXN1bHQpOwogICAgICAgICAgICAgfSBlbHNlCkBAIC0yODIxLDcg
KzI4MjEsNyBAQCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgTEJhc2ljQmxvY2sgaW5uZXJM
YXN0TmV4dCA9IG1fb3V0LmFwcGVuZFRvKG5lZ2F0aXZlTnVtZXJhdG9yLCBudW1lcmF0b3JDb250
aW51YXRpb24pOwogCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRlKE5lZ2F0aXZlWmVybywgbm9W
YWx1ZSgpLCAwLCBtX291dC5pc1plcm8zMihyZW1haW5kZXIpKTsKKyAgICAgICAgICAgICAgICBz
cGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0LmlzWmVybzMy
KHJlbWFpbmRlcikpOwogCiAgICAgICAgICAgICAgICAgbV9vdXQuanVtcChudW1lcmF0b3JDb250
aW51YXRpb24pOwogCkBAIC0yOTA2LDcgKzI5MDYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
TFZhbHVlIHJlc3VsdCA9IG1fb3V0LmJpdFhvcihtYXNrLCBtX291dC5hZGQobWFzaywgdmFsdWUp
KTsKIAogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrT3ZlcmZsb3cobV9ub2RlLT5hcml0aE1v
ZGUoKSkpCi0gICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIDAs
IG1fb3V0Lmxlc3NUaGFuKHJlc3VsdCwgbV9vdXQuaW50MzJaZXJvKSk7CisgICAgICAgICAgICAg
ICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0Lmxlc3NUaGFu
KHJlc3VsdCwgbV9vdXQuaW50MzJaZXJvKSk7CiAKICAgICAgICAgICAgIHNldEludDMyKHJlc3Vs
dCk7CiAgICAgICAgICAgICBicmVhazsKQEAgLTMyOTUsNyArMzI5NSw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgYmxlc3NTcGVjdWxhdGlvbihjaGVjaywgT3ZlcmZsb3csIG5vVmFsdWUo
KSwgbnVsbHB0ciwgbV9vcmlnaW4pOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNoZWNrOwog
ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzcGVjdWxhdGUoT3ZlcmZsb3cs
IG5vVmFsdWUoKSwgMCwgbV9vdXQudGVzdElzWmVybzMyKHZhbHVlLCBtX291dC5jb25zdEludDMy
KDB4N2ZmZmZmZmYpKSk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE92ZXJmbG93LCBub1Zh
bHVlKCksIG51bGxwdHIsIG1fb3V0LnRlc3RJc1plcm8zMih2YWx1ZSwgbV9vdXQuY29uc3RJbnQz
MigweDdmZmZmZmZmKSkpOwogICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1fb3V0Lm5lZyh2YWx1
ZSk7CiAgICAgICAgICAgICB9CiAKQEAgLTMzMDksNyArMzMwOSw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgTFZhbHVlIHZhbHVlID0gbG93V2hpY2hldmVySW50NTIobV9ub2RlLT5jaGls
ZDEoKSwga2luZCk7CiAgICAgICAgICAgICAgICAgTFZhbHVlIHJlc3VsdCA9IG1fb3V0Lm5lZyh2
YWx1ZSk7CiAgICAgICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG1fbm9k
ZS0+YXJpdGhNb2RlKCkpKQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVa
ZXJvLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzY0KHJlc3VsdCkpOworICAgICAgICAgICAg
ICAgICAgICBzcGVjdWxhdGUoTmVnYXRpdmVaZXJvLCBub1ZhbHVlKCksIG51bGxwdHIsIG1fb3V0
LmlzWmVybzY0KHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIHNldEludDUyKHJlc3VsdCwga2lu
ZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CkBAIC0zMzE4LDcgKzMz
MTgsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQ2hlY2tWYWx1ZSogcmVzdWx0ID0gbV9vdXQu
c3BlY3VsYXRlU3ViKG1fb3V0LmludDY0WmVybywgdmFsdWUpOwogICAgICAgICAgICAgYmxlc3NT
cGVjdWxhdGlvbihyZXN1bHQsIEludDUyT3ZlcmZsb3csIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9v
cmlnaW4pOwogICAgICAgICAgICAgaWYgKHNob3VsZENoZWNrTmVnYXRpdmVaZXJvKG1fbm9kZS0+
YXJpdGhNb2RlKCkpKQotICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShOZWdhdGl2ZVplcm8sIG5v
VmFsdWUoKSwgMCwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgc3Bl
Y3VsYXRlKE5lZ2F0aXZlWmVybywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5pc1plcm82NChy
ZXN1bHQpKTsKICAgICAgICAgICAgIHNldEludDUyKHJlc3VsdCk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQpAQCAtMzU1MSw3ICszNTUxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1
ZSgpLCAwLCBtX291dC5sZXNzVGhhbih2YWx1ZSwgbV9vdXQuaW50MzJaZXJvKSk7CisgICAgICAg
IHNwZWN1bGF0ZShPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5sZXNzVGhhbih2
YWx1ZSwgbV9vdXQuaW50MzJaZXJvKSk7CiAgICAgICAgIHNldEludDMyKHZhbHVlKTsKICAgICB9
CiAgICAgCkBAIC0zNzI0LDcgKzM3MjQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUFy
cmF5aWZ5KCkKICAgICB7CiAgICAgICAgIExWYWx1ZSBjZWxsID0gbG93Q2VsbChtX25vZGUtPmNo
aWxkMSgpKTsKLSAgICAgICAgTFZhbHVlIHByb3BlcnR5ID0gISFtX25vZGUtPmNoaWxkMigpID8g
bG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkgOiAwOworICAgICAgICBMVmFsdWUgcHJvcGVydHkg
PSAhIW1fbm9kZS0+Y2hpbGQyKCkgPyBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKSA6IG51bGxw
dHI7CiAgICAgICAgIAogICAgICAgICBMQmFzaWNCbG9jayB1bmV4cGVjdGVkU3RydWN0dXJlID0g
bV9vdXQubmV3QmxvY2soKTsKICAgICAgICAgTEJhc2ljQmxvY2sgY29udGludWF0aW9uID0gbV9v
dXQubmV3QmxvY2soKTsKQEAgLTM3NDcsNyArMzc0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBjYXNlIEFycmF5OjpEb3VibGU6CiAgICAgICAgICAgICBjYXNlIEFycmF5OjpDb250aWd1b3Vz
OgogICAgICAgICAgICAgICAgIHNwZWN1bGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgVW5jb3Vu
dGFibGUsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgICAgICAgICAgVW5jb3VudGFibGUsIG5v
VmFsdWUoKSwgbnVsbHB0ciwKICAgICAgICAgICAgICAgICAgICAgbV9vdXQuYWJvdmVPckVxdWFs
KHByb3BlcnR5LCBtX291dC5jb25zdEludDMyKE1JTl9TUEFSU0VfQVJSQVlfSU5ERVgpKSk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMzc3NCw3ICsz
Nzc0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAg
IAotICAgICAgICBzcGVjdWxhdGUoQmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2VsbCks
IDAsIGlzVW5leHBlY3RlZEFycmF5KGNlbGwpKTsKKyAgICAgICAgc3BlY3VsYXRlKEJhZEluZGV4
aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCBudWxscHRyLCBpc1VuZXhwZWN0ZWRBcnJheShj
ZWxsKSk7CiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKICAgICAgICAgCiAgICAg
ICAgIG1fb3V0LmFwcGVuZFRvKGNvbnRpbnVhdGlvbiwgbGFzdE5leHQpOwpAQCAtNDI4NCw3ICs0
Mjg0LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAg
IHNwZWN1bGF0ZSgKLSAgICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNl
bGwpLCAwLAorICAgICAgICAgICAgQmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2VsbCks
IG51bGxwdHIsCiAgICAgICAgICAgICBtX291dC5sb2dpY2FsTm90KGlzQXJyYXlUeXBlRm9yQ2hl
Y2tBcnJheShjZWxsLCBtX25vZGUtPmFycmF5TW9kZSgpKSkpOwogICAgIH0KIApAQCAtNDMxMCw3
ICs0MzEwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgfQogCiAgICAgICAgIHNwZWN1bGF0ZSgKLSAg
ICAgICAgICAgIEJhZEluZGV4aW5nVHlwZSwganNWYWx1ZVZhbHVlKGNlbGwpLCAwLAorICAgICAg
ICAgICAgQmFkSW5kZXhpbmdUeXBlLCBqc1ZhbHVlVmFsdWUoY2VsbCksIG51bGxwdHIsCiAgICAg
ICAgICAgICBtX291dC5sb2dpY2FsTm90KGlzQXJyYXlUeXBlRm9yQ2hlY2tBcnJheShjZWxsLCBt
X25vZGUtPmFycmF5TW9kZSgpKSkpOwogCiAgICAgICAgIGlmIChtYXlTZWVFbXB0eVZhbHVlKSB7
CkBAIC00NTMwLDcgKzQ1MzAsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY29tcGlsZUNoZWNrSW5C
b3VuZHMoKQogICAgIHsKICAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgT3V0T2ZCb3Vu
ZHMsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAgICAgIE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51
bGxwdHIsCiAgICAgICAgICAgICBtX291dC5hYm92ZU9yRXF1YWwobG93SW50MzIobV9ub2RlLT5j
aGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CiAKICAgICAgICAgLy8gRXZl
biB0aG91Z2ggd2UgY2xhaW0gdG8gaGF2ZSBKU1ZhbHVlIHJlc3VsdCwgbm8gdXNlciBvZiB1cyBz
aG91bGQKQEAgLTQ1NjEsNyArNDU2MSw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdCA9IG1fb3V0LnNlbGVjdCgKICAgICAgICAgICAgICAgICAgICAgICAgIGlzSG9sZSwg
bV9vdXQuY29uc3RJbnQ2NChKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSkpLCByZXN1bHQp
OwogICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUo
TG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIGlzSG9sZSk7CisgICAgICAgICAgICAgICAgICAg
IHNwZWN1bGF0ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgaXNIb2xlKTsKICAg
ICAgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIGtlZXAgYmFzZSBhbGl2ZSB0byBrZWVwIGNvbnRl
bnQgaW4gc3RvcmFnZSBhbGl2ZS4KICAgICAgICAgICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1v
ZGUoKS50eXBlKCkgPT0gQXJyYXk6OkNvbnRpZ3VvdXMpCiAgICAgICAgICAgICAgICAgICAgIGVu
c3VyZVN0aWxsQWxpdmVIZXJlKGJhc2UpOwpAQCAtNDYxMCw3ICs0NjEwLDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAoIW1fbm9kZS0+YXJyYXlNb2Rl
KCkuaXNTYW5lQ2hhaW4oKSkgewogICAgICAgICAgICAgICAgICAgICBzcGVjdWxhdGUoCi0gICAg
ICAgICAgICAgICAgICAgICAgICBMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIExvYWRGcm9tSG9sZSwgbm9WYWx1ZSgpLCBudWxscHRyLAogICAgICAg
ICAgICAgICAgICAgICAgICAgbV9vdXQuZG91YmxlTm90RXF1YWxPclVub3JkZXJlZChyZXN1bHQs
IHJlc3VsdCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBzZXREb3VibGUo
cmVzdWx0KTsKQEAgLTQ4NzAsNyArNDg3MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgIGlm
IChtX25vZGUtPmFycmF5TW9kZSgpLmlzSW5Cb3VuZHMoKSkgewogICAgICAgICAgICAgICAgIExW
YWx1ZSByZXN1bHQgPSBtX291dC5sb2FkNjQoYmFzZUluZGV4KGhlYXAsIHN0b3JhZ2UsIGluZGV4
LCBtX2dyYXBoLnZhckFyZ0NoaWxkKG1fbm9kZSwgMSkpKTsKLSAgICAgICAgICAgICAgICBzcGVj
dWxhdGUoTG9hZEZyb21Ib2xlLCBub1ZhbHVlKCksIDAsIG1fb3V0LmlzWmVybzY0KHJlc3VsdCkp
OworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShMb2FkRnJvbUhvbGUsIG5vVmFsdWUoKSwgbnVs
bHB0ciwgbV9vdXQuaXNaZXJvNjQocmVzdWx0KSk7CiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2
ZSB0byBrZWVwIGJhc2UgYWxpdmUgdG8ga2VlcCBjb250ZW50IGluIHN0b3JhZ2UgYWxpdmUuCiAg
ICAgICAgICAgICAgICAgZW5zdXJlU3RpbGxBbGl2ZUhlcmUoYmFzZSk7CiAgICAgICAgICAgICAg
ICAgc2V0SlNWYWx1ZShyZXN1bHQpOwpAQCAtNTE5Miw3ICs1MTkyLDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGFycmF5TW9kZS5pc0luQm91bmRzKCkpIHsK
LSAgICAgICAgICAgICAgICBzcGVjdWxhdGUoU3RvcmVUb0hvbGUsIG5vVmFsdWUoKSwgMCwgbV9v
dXQuaXNaZXJvNjQobV9vdXQubG9hZDY0KGVsZW1lbnRQb2ludGVyKSkpOworICAgICAgICAgICAg
ICAgIHNwZWN1bGF0ZShTdG9yZVRvSG9sZSwgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5pc1pl
cm82NChtX291dC5sb2FkNjQoZWxlbWVudFBvaW50ZXIpKSk7CiAgICAgICAgICAgICAgICAgbV9v
dXQuc3RvcmU2NCh2YWx1ZSwgZWxlbWVudFBvaW50ZXIpOwogICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgIH0KQEAgLTUyMDQsNyArNTIwNCw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgPyAobV9ub2RlLT5vcCgpID09IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0
QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5kc1N0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5
b25kQXJyYXlCb3VuZHNTdHJpY3QpCiAgICAgICAgICAgICAgICAgOiAobV9ub2RlLT5vcCgpID09
IFB1dEJ5VmFsRGlyZWN0ID8gb3BlcmF0aW9uUHV0QnlWYWxEaXJlY3RCZXlvbmRBcnJheUJvdW5k
c05vblN0cmljdCA6IG9wZXJhdGlvblB1dEJ5VmFsQmV5b25kQXJyYXlCb3VuZHNOb25TdHJpY3Qp
OwogICAgICAgICAgICAgaWYgKCFhcnJheU1vZGUuaXNPdXRPZkJvdW5kcygpKSB7Ci0gICAgICAg
ICAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIDAsIGlzT3V0T2ZCb3Vu
ZHMpOworICAgICAgICAgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCBu
dWxscHRyLCBpc091dE9mQm91bmRzKTsKICAgICAgICAgICAgICAgICBpc091dE9mQm91bmRzID0g
bV9vdXQuYm9vbGVhbkZhbHNlOwogICAgICAgICAgICAgfQogCkBAIC03ODU3LDcgKzc4NTcsNyBA
QCBwcml2YXRlOgogICAgICAgICAgICAga2lkc1syXSA9IGxvd0NlbGwoZWRnZXNbMl0pOwogICAg
ICAgICAgICAgbnVtS2lkcyA9IDM7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBraWRz
WzJdID0gMDsKKyAgICAgICAgICAgIGtpZHNbMl0gPSBudWxscHRyOwogICAgICAgICAgICAgbnVt
S2lkcyA9IDI7CiAgICAgICAgIH0KICAgICAgICAgCkBAIC04MDQzLDcgKzgwNDMsNyBAQCBwcml2
YXRlOgogICAgICAgICBtX291dC5hcHBlbmRUbyhzbG93UGF0aCwgY29udGludWF0aW9uKTsKICAg
ICAgICAgICAgIAogICAgICAgICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS5pc0luQm91bmRzKCkp
IHsKLSAgICAgICAgICAgIHNwZWN1bGF0ZShPdXRPZkJvdW5kcywgbm9WYWx1ZSgpLCAwLCBtX291
dC5ib29sZWFuVHJ1ZSk7CisgICAgICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFs
dWUoKSwgbnVsbHB0ciwgbV9vdXQuYm9vbGVhblRydWUpOwogICAgICAgICAgICAgcmVzdWx0cy5h
cHBlbmQobV9vdXQuYW5jaG9yKG1fb3V0LmludFB0clplcm8pKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIEZJWE1FOiBSZXZpc2l0IEpTR2xvYmFsT2JqZWN0LgpAQCAtODA5Niw3
ICs4MDk2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgTFZhbHVlIHN0cmluZ0ltcGwgPSBtX291dC5s
b2FkUHRyKGJhc2UsIG1faGVhcHMuSlNTdHJpbmdfdmFsdWUpOwogCiAgICAgICAgIHNwZWN1bGF0
ZSgKLSAgICAgICAgICAgIFVuY291bnRhYmxlLCBub1ZhbHVlKCksIDAsCisgICAgICAgICAgICBV
bmNvdW50YWJsZSwgbm9WYWx1ZSgpLCBudWxscHRyLAogICAgICAgICAgICAgbV9vdXQuYWJvdmVP
ckVxdWFsKAogICAgICAgICAgICAgICAgIGluZGV4LCBtX291dC5sb2FkMzJOb25OZWdhdGl2ZShz
dHJpbmdJbXBsLCBtX2hlYXBzLlN0cmluZ0ltcGxfbGVuZ3RoKSkpOwogICAgICAgICAKQEAgLTgx
NDcsNyArODE0Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIExWYWx1ZSBzdHJpbmdJbXBsID0gbV9v
dXQubG9hZFB0cihiYXNlLCBtX2hlYXBzLkpTU3RyaW5nX3ZhbHVlKTsKICAgICAgICAgTFZhbHVl
IGxlbmd0aCA9IG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0cmluZ0ltcGwsIG1faGVhcHMuU3Ry
aW5nSW1wbF9sZW5ndGgpOwogCi0gICAgICAgIHNwZWN1bGF0ZShVbmNvdW50YWJsZSwgbm9WYWx1
ZSgpLCAwLCBtX291dC5hYm92ZU9yRXF1YWwoaW5kZXgsIGxlbmd0aCkpOworICAgICAgICBzcGVj
dWxhdGUoVW5jb3VudGFibGUsIG5vVmFsdWUoKSwgbnVsbHB0ciwgbV9vdXQuYWJvdmVPckVxdWFs
KGluZGV4LCBsZW5ndGgpKTsKIAogICAgICAgICBtX291dC5icmFuY2goCiAgICAgICAgICAgICBt
X291dC50ZXN0SXNaZXJvMzIoCkBAIC0xMTk0OSw3ICsxMTk0OSw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBjb21waWxlQ2hlY2tUeXBlSW5mb0ZsYWdzKCkKICAgICB7CiAgICAgICAgIHNwZWN1bGF0
ZSgKLSAgICAgICAgICAgIEJhZFR5cGVJbmZvRmxhZ3MsIG5vVmFsdWUoKSwgMCwKKyAgICAgICAg
ICAgIEJhZFR5cGVJbmZvRmxhZ3MsIG5vVmFsdWUoKSwgbnVsbHB0ciwKICAgICAgICAgICAgIG1f
b3V0LnRlc3RJc1plcm8zMigKICAgICAgICAgICAgICAgICBtX291dC5sb2FkOFplcm9FeHQzMihs
b3dDZWxsKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX2hlYXBzLkpTQ2VsbF90eXBlSW5mb0ZsYWdzKSwK
ICAgICAgICAgICAgICAgICBtX291dC5jb25zdEludDMyKG1fbm9kZS0+dHlwZUluZm9PcGVyYW5k
KCkpKSk7CkBAIC0xMzE4MCw3ICsxMzE4MCw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgaWYgKHNl
dC5zaXplKCkgPT0gMSkgewogICAgICAgICAgICAgc3BlY3VsYXRlKAotICAgICAgICAgICAgICAg
IGV4aXRLaW5kLCBmb3JtYXR0ZWRWYWx1ZSwgMCwKKyAgICAgICAgICAgICAgICBleGl0S2luZCwg
Zm9ybWF0dGVkVmFsdWUsIG51bGxwdHIsCiAgICAgICAgICAgICAgICAgbV9vdXQubm90RXF1YWwo
c3RydWN0dXJlRGlzY3JpbWluYW50LCB3ZWFrU3RydWN0dXJlRGlzY3JpbWluYW50KHNldFswXSkp
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTMxOTcsNyArMTMxOTcsNyBA
QCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBzcGVjdWxhdGUoCi0gICAg
ICAgICAgICBleGl0S2luZCwgZm9ybWF0dGVkVmFsdWUsIDAsCisgICAgICAgICAgICBleGl0S2lu
ZCwgZm9ybWF0dGVkVmFsdWUsIG51bGxwdHIsCiAgICAgICAgICAgICBtX291dC5ub3RFcXVhbChz
dHJ1Y3R1cmVEaXNjcmltaW5hbnQsIHdlYWtTdHJ1Y3R1cmVEaXNjcmltaW5hbnQoc2V0Lmxhc3Qo
KSkpKTsKICAgICAgICAgCiAgICAgICAgIG1fb3V0Lmp1bXAoY29udGludWF0aW9uKTsKQEAgLTEz
MjA4LDggKzEzMjA4LDggQEAgcHJpdmF0ZToKICAgICB7CiAgICAgICAgIExCYXNpY0Jsb2NrIGlu
dENhc2UgPSBtX291dC5uZXdCbG9jaygpOwogICAgICAgICBMQmFzaWNCbG9jayBub3RJbnRDYXNl
ID0gbV9vdXQubmV3QmxvY2soKTsKLSAgICAgICAgTEJhc2ljQmxvY2sgZG91YmxlQ2FzZSA9IDA7
Ci0gICAgICAgIExCYXNpY0Jsb2NrIG5vdE51bWJlckNhc2UgPSAwOworICAgICAgICBMQmFzaWNC
bG9jayBkb3VibGVDYXNlID0gbnVsbHB0cjsKKyAgICAgICAgTEJhc2ljQmxvY2sgbm90TnVtYmVy
Q2FzZSA9IG51bGxwdHI7CiAgICAgICAgIGlmIChlZGdlLnVzZUtpbmQoKSA9PSBOb3RDZWxsTm9y
QmlnSW50VXNlKSB7CiAgICAgICAgICAgICBkb3VibGVDYXNlID0gbV9vdXQubmV3QmxvY2soKTsK
ICAgICAgICAgICAgIG5vdE51bWJlckNhc2UgPSBtX291dC5uZXdCbG9jaygpOwpAQCAtMTUyMzQs
OCArMTUyMzQsOCBAQCBwcml2YXRlOgogICAgIAogICAgIHN0cnVjdCBBcnJheVZhbHVlcyB7CiAg
ICAgICAgIEFycmF5VmFsdWVzKCkKLSAgICAgICAgICAgIDogYXJyYXkoMCkKLSAgICAgICAgICAg
ICwgYnV0dGVyZmx5KDApCisgICAgICAgICAgICA6IGFycmF5KG51bGxwdHIpCisgICAgICAgICAg
ICAsIGJ1dHRlcmZseShudWxscHRyKQogICAgICAgICB7CiAgICAgICAgIH0KICAgICAgICAgCkBA
IC0xNTU5Miw3ICsxNTU5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIH0KICAgICAgICAgZGVmYXVs
dDoKICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBtX25vZGUsICJCYWQgdXNlIGtpbmQi
KTsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgICAgIH0KICAgICB9CiAgICAgCkBAIC0xNTcwOCw3ICsxNTcwOCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgICAgICAgICAgaW5kZXgsIG1fb3V0LmxvYWQzMk5vbk5lZ2F0aXZlKHN0b3JhZ2UsIG1f
aGVhcHMuQnV0dGVyZmx5X3ZlY3Rvckxlbmd0aCkpOwogICAgICAgICAgICAgICAgIAogICAgICAg
ICAgICAgaWYgKCFtX25vZGUtPmFycmF5TW9kZSgpLmlzT3V0T2ZCb3VuZHMoKSkKLSAgICAgICAg
ICAgICAgICBzcGVjdWxhdGUoT3V0T2ZCb3VuZHMsIG5vVmFsdWUoKSwgMCwgaXNPdXRPZkJvdW5k
cyk7CisgICAgICAgICAgICAgICAgc3BlY3VsYXRlKE91dE9mQm91bmRzLCBub1ZhbHVlKCksIG51
bGxwdHIsIGlzT3V0T2ZCb3VuZHMpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAg
ICAgTEJhc2ljQmxvY2sgb3V0T2ZCb3VuZHNDYXNlID0KICAgICAgICAgICAgICAgICAgICAgbV9v
dXQubmV3QmxvY2soKTsKQEAgLTE2MzgxLDcgKzE2MzgxLDcgQEAgcHJpdmF0ZToKICAgICAgICAg
CiAgICAgICAgIGlmIChtX25vZGUtPnNob3VsZFNwZWN1bGF0ZUludDMyKCkgJiYgY2FuU3BlY3Vs
YXRlKSB7CiAgICAgICAgICAgICBzcGVjdWxhdGUoCi0gICAgICAgICAgICAgICAgT3ZlcmZsb3cs
IG5vVmFsdWUoKSwgMCwgbV9vdXQubGVzc1RoYW4ocmVzdWx0LCBtX291dC5pbnQzMlplcm8pKTsK
KyAgICAgICAgICAgICAgICBPdmVyZmxvdywgbm9WYWx1ZSgpLCBudWxscHRyLCBtX291dC5sZXNz
VGhhbihyZXN1bHQsIG1fb3V0LmludDMyWmVybykpOwogICAgICAgICAgICAgc2V0SW50MzIocmVz
dWx0KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTcxMTgsNyArMTcxMTgs
NyBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBERkdfQ1JBU0gobV9n
cmFwaCwgbV9ub2RlLCBtYWtlU3RyaW5nKCJWYWx1ZSBub3QgZGVmaW5lZDogIiwgU3RyaW5nOjpu
dW1iZXIoZWRnZS5ub2RlKCktPmluZGV4KCkpKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgICAgIHJl
dHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBMVmFsdWUgbG93
Tm90Q2VsbChFZGdlIGVkZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTExvd2VyZWROb2RlVmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93
ZXJlZE5vZGVWYWx1ZS5oCmluZGV4IDA1OTY2N2I3ZjZjZWMxZDdhODk3NjBhYjYxMjA3NTFlYWJk
YzQ4ZDMuLjcwNzQxZWJkOGFmMmQ4MWFkMzg1ZTExN2I3N2I1NmVkYWM3NDc4MTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJlZE5vZGVWYWx1ZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJlZE5vZGVWYWx1ZS5oCkBAIC00Myw4
ICs0Myw4IEBAIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgRlRMIHsKIGNsYXNzIExvd2VyZWRO
b2RlVmFsdWUgewogcHVibGljOgogICAgIExvd2VyZWROb2RlVmFsdWUoKQotICAgICAgICA6IG1f
dmFsdWUoMCkKLSAgICAgICAgLCBtX2Jsb2NrKDApCisgICAgICAgIDogbV92YWx1ZShudWxscHRy
KQorICAgICAgICAsIG1fYmxvY2sobnVsbHB0cikKICAgICB7CiAgICAgfQogICAgIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExPU1JFbnRyeS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcAppbmRleCAwNWNhZWQ5NTEzNzUyYjU5
NGU5NmRlMTgwOTI2MGMyNmI3NTQ2ZjQ3Li42MDJjNTYwMzFhOTFhNDdhNGM5MTY4NmU3N2RkNDgx
MzUxZjg0MDc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVu
dHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkVudHJ5LmNwcApA
QCAtNTAsNyArNTAsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAKICAgICBpZiAoIWVudHJ5
Q29kZS0+ZGZnQ29tbW9uKCktPmlzU3RpbGxWYWxpZCkgewogICAgICAgICBkZmdDb2RlLT5jbGVh
ck9TUkVudHJ5QmxvY2tBbmRSZXNldFRocmVzaG9sZHMoZGZnQ29kZUJsb2NrKTsKLSAgICAgICAg
cmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwKQEAgLTYyLDcgKzYyLDcgQEAgdm9pZCogcHJlcGFy
ZU9TUkVudHJ5KAogCiAgICAgaWYgKGJ5dGVjb2RlSW5kZXggIT0gZW50cnlDb2RlLT5ieXRlY29k
ZUluZGV4KCkpIHsKICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
ICAgIE9TUiBmYWlsZWQgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGFuIGVudHJ5cG9pbnQgZm9yICIs
IGJ5dGVjb2RlSW5kZXgsICI7IG91cnMgaXMgZm9yICIsIGVudHJ5Q29kZS0+Ynl0ZWNvZGVJbmRl
eCgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ICAgICAKICAgICBPcGVyYW5kczxPcHRpb25hbDxKU1ZhbHVlPj4gdmFsdWVzOwpAQCAtOTgsNyAr
OTgsNyBAQCB2b2lkKiBwcmVwYXJlT1NSRW50cnkoCiAgICAgaW50IHN0YWNrRnJhbWVTaXplID0g
ZW50cnlDb2RlLT5jb21tb24ucmVxdWlyZWRSZWdpc3RlckNvdW50Rm9yRXhlY3V0aW9uQW5kRXhp
dCgpOwogICAgIGlmIChVTkxJS0VMWSghdm0uZW5zdXJlU3RhY2tDYXBhY2l0eUZvcigmY2FsbEZy
YW1lLT5yZWdpc3RlcnMoKVt2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChzdGFja0ZyYW1lU2l6ZSAt
IDEpLm9mZnNldCgpXSkpKSB7CiAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VP
U1IoKSwgIiAgICBPU1IgZmFpbGVkIGJlY2F1c2Ugc3RhY2sgZ3Jvd3RoIGZhaWxlZC4iKTsKLSAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICAKICAg
ICBjYWxsRnJhbWUtPnNldENvZGVCbG9jayhlbnRyeUNvZGVCbG9jayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTE9TUkV4aXRDb21waWxlci5jcHAKaW5kZXggMWY0Mzg1YTI3
MmI5Y2YwNTgyZTQwMTQyOGY1MGYwNTEzODY3NTU5Ny4uOGNlYmZkOWI1NDU5OGE2NjQzYjEwODQ2
NDEzY2I5OTI1MjllODQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExPU1JFeGl0Q29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRM
T1NSRXhpdENvbXBpbGVyLmNwcApAQCAtMTgxLDcgKzE4MSw3IEBAIHN0YXRpYyB2b2lkIGNvbXBp
bGVTdHViKFZNJiB2bSwgdW5zaWduZWQgZXhpdElELCBKSVRDb2RlKiBqaXRDb2RlLCBPU1JFeGl0
JiBleGl0CiAgICAgICAgICAgICBleGl0Lm1fZGVzY3JpcHRvci0+bV92YWx1ZXMuc2l6ZSgpICsg
bnVtTWF0ZXJpYWxpemF0aW9ucyArIG1heE1hdGVyaWFsaXphdGlvbk51bUFyZ3VtZW50cykgKwog
ICAgICAgICByZXF1aXJlZFNjcmF0Y2hNZW1vcnlTaXplSW5CeXRlcygpICsKICAgICAgICAgY29k
ZUJsb2NrLT5jYWxsZWVTYXZlUmVnaXN0ZXJzKCktPnNpemUoKSAqIHNpemVvZih1aW50NjRfdCkp
OwotICAgIEVuY29kZWRKU1ZhbHVlKiBzY3JhdGNoID0gc2NyYXRjaEJ1ZmZlciA/IHN0YXRpY19j
YXN0PEVuY29kZWRKU1ZhbHVlKj4oc2NyYXRjaEJ1ZmZlci0+ZGF0YUJ1ZmZlcigpKSA6IDA7Cisg
ICAgRW5jb2RlZEpTVmFsdWUqIHNjcmF0Y2ggPSBzY3JhdGNoQnVmZmVyID8gc3RhdGljX2Nhc3Q8
RW5jb2RlZEpTVmFsdWUqPihzY3JhdGNoQnVmZmVyLT5kYXRhQnVmZmVyKCkpIDogbnVsbHB0cjsK
ICAgICBFbmNvZGVkSlNWYWx1ZSogbWF0ZXJpYWxpemF0aW9uUG9pbnRlcnMgPSBzY3JhdGNoICsg
ZXhpdC5tX2Rlc2NyaXB0b3ItPm1fdmFsdWVzLnNpemUoKTsKICAgICBFbmNvZGVkSlNWYWx1ZSog
bWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzID0gbWF0ZXJpYWxpemF0aW9uUG9pbnRlcnMgKyBudW1N
YXRlcmlhbGl6YXRpb25zOwogICAgIGNoYXIqIHJlZ2lzdGVyU2NyYXRjaCA9IGJpdHdpc2VfY2Fz
dDxjaGFyKj4obWF0ZXJpYWxpemF0aW9uQXJndW1lbnRzICsgbWF4TWF0ZXJpYWxpemF0aW9uTnVt
QXJndW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVHlw
ZWRQb2ludGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTFR5cGVkUG9pbnRlci5o
CmluZGV4IDhjMGNiYWU1ZjFkYTU3M2VlZGJiNzYyZmM2MDRhYzEwYzcxZjVhNTUuLjIwNjg1MTlj
NWMyM2U1MDFmNzM2MDFkN2I4Y2ZlYWNkYTY2ZTc0Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMVHlwZWRQb2ludGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExUeXBlZFBvaW50ZXIuaApAQCAtMzUsOCArMzUsOCBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIEZUTCB7CiBjbGFzcyBUeXBlZFBvaW50ZXIgewogcHVibGljOgogICAgIFR5
cGVkUG9pbnRlcigpCi0gICAgICAgIDogbV9oZWFwKDApCi0gICAgICAgICwgbV92YWx1ZSgwKQor
ICAgICAgICA6IG1faGVhcChudWxscHRyKQorICAgICAgICAsIG1fdmFsdWUobnVsbHB0cikKICAg
ICB7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExWYWx1ZUZyb21CbG9jay5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZUZy
b21CbG9jay5oCmluZGV4IDViZDE0Y2E2MjFhMDRkNTRjYzlmNTQwZjZkMWFmMTBkNDI0Njg0NmUu
LmI4ZDEwYjFhZDJmNGU1ZGZiZmJhZDlmZmYzMWQ1MzMwOGI3YTFjNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVGcm9tQmxvY2suaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZnRsL0ZUTFZhbHVlRnJvbUJsb2NrLmgKQEAgLTM0LDggKzM0LDggQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVmFsdWVGcm9tQmxvY2sgewog
cHVibGljOgogICAgIFZhbHVlRnJvbUJsb2NrKCkKLSAgICAgICAgOiBtX3ZhbHVlKDApCi0gICAg
ICAgICwgbV9ibG9jaygwKQorICAgICAgICA6IG1fdmFsdWUobnVsbHB0cikKKyAgICAgICAgLCBt
X2Jsb2NrKG51bGxwdHIpCiAgICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMVmFsdWVSYW5nZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2Z0bC9GVExWYWx1ZVJhbmdlLmgKaW5kZXggM2FlM2RjYmY5MzI0MjQyZDU4OGRhYzY4MWIyMzY1
ODcxMzBhYjRjMS4uNzU1ODE4ZjY1YzFiZDQ0NWQzMGU4OWM5NzcyOTZjZmQyMmE1NTFiYSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVJhbmdlLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExWYWx1ZVJhbmdlLmgKQEAgLTM0LDggKzM0LDgg
QEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBGVEwgewogY2xhc3MgVmFsdWVSYW5nZSB7CiBw
dWJsaWM6CiAgICAgVmFsdWVSYW5nZSgpCi0gICAgICAgIDogbV9iZWdpbigwKQotICAgICAgICAs
IG1fZW5kKDApCisgICAgICAgIDogbV9iZWdpbihudWxscHRyKQorICAgICAgICAsIG1fZW5kKG51
bGxwdHIpCiAgICAgewogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0dDU2VnbWVudGVkQXJyYXkuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFw
L0dDU2VnbWVudGVkQXJyYXkuaAppbmRleCBkNDA3ZDVhMjIwOGEyMzc4MGQ0Mjk4Zjc1ZmVlM2Nh
NmMyYWY0NzczLi4zZTZkYWVjMThiMTU5MTc0OGNmNmFiMmU1MDY0ZWE0ZjljYjJjZDRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9HQ1NlZ21lbnRlZEFycmF5LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvR0NTZWdtZW50ZWRBcnJheS5oCkBAIC0xMTgs
NyArMTE4LDcgQEAgY2xhc3MgR0NTZWdtZW50ZWRBcnJheUl0ZXJhdG9yIHsKICAgICBmcmllbmQg
Y2xhc3MgR0NTZWdtZW50ZWRBcnJheTxUPjsKIHB1YmxpYzoKICAgICBHQ1NlZ21lbnRlZEFycmF5
SXRlcmF0b3IoKQotICAgICAgICA6IG1fY3VycmVudFNlZ21lbnQoMCkKKyAgICAgICAgOiBtX2N1
cnJlbnRTZWdtZW50KG51bGxwdHIpCiAgICAgICAgICwgbV9jdXJyZW50T2Zmc2V0KDApCiAgICAg
ewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKaW5kZXggODY2YTA3NjllYzZi
YTg5MGY1MWY4Y2FiMmE3MjJkNWRlNGFiNTMzNS4uMWRlM2ZhMDljMzI4YmY0OTM1OWIyY2ZkZDYz
ZGRhYTNjOTA4OTQ5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFu
ZGxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlLmgKQEAgLTEyMyw3
ICsxMjMsNyBAQCBwdWJsaWM6CiAgICAgRXh0ZXJuYWxUeXBlIGdldCgpIGNvbnN0IHsgcmV0dXJu
IEhhbmRsZVR5cGVzPFQ+OjpnZXRGcm9tU2xvdCh0aGlzLT5zbG90KCkpOyB9CiAKIHByb3RlY3Rl
ZDoKLSAgICBIYW5kbGUoSGFuZGxlU2xvdCBzbG90ID0gMCkKKyAgICBIYW5kbGUoSGFuZGxlU2xv
dCBzbG90ID0gbnVsbHB0cikKICAgICAgICAgOiBIYW5kbGVCYXNlKHNsb3QpCiAgICAgewogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgKaW5kZXggNWQyMjJkOTU2MGMx
NDc0MjUxYmFiYzIxMTE4NzJkMTQwYjY1OTM5NC4uZDQ0M2ZjZTM2MjM0OTYzNWI3MWJhZGUxNzI5
MWQ0OGIxY2E3ZDJhMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFu
ZGxlU2V0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU2V0LmgKQEAg
LTEzOSwxNCArMTM5LDE0IEBAIGlubGluZSB2b2lkIEhhbmRsZVNldDo6ZGVhbGxvY2F0ZShIYW5k
bGVTbG90IGhhbmRsZSkKIH0KIAogaW5saW5lIEhhbmRsZU5vZGU6OkhhbmRsZU5vZGUoKQotICAg
IDogbV9wcmV2KDApCi0gICAgLCBtX25leHQoMCkKKyAgICA6IG1fcHJldihudWxscHRyKQorICAg
ICwgbV9uZXh0KG51bGxwdHIpCiB7CiB9CiAKIGlubGluZSBIYW5kbGVOb2RlOjpIYW5kbGVOb2Rl
KFdURjo6U2VudGluZWxUYWcpCi0gICAgOiBtX3ByZXYoMCkKLSAgICAsIG1fbmV4dCgwKQorICAg
IDogbV9wcmV2KG51bGxwdHIpCisgICAgLCBtX25leHQobnVsbHB0cikKIHsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlwZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVR5cGVzLmgKaW5kZXggNGUzNTMwZTlkMTExNDFiMDJj
OTM3MjIzYzhjMWY2MWFlNTE1NGMyMy4uYWQzNmRmY2VlNTE0MTIxMTM0ZDgxYzJjOGZkYmNlOTI1
OWRhYjg0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlVHlw
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVUeXBlcy5oCkBAIC0z
Myw3ICszMyw3IEBAIHR5cGVkZWYgSlNWYWx1ZSogSGFuZGxlU2xvdDsKIAogdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gc3RydWN0IEhhbmRsZVR5cGVzIHsKICAgICB0eXBlZGVmIFQqIEV4dGVybmFsVHlw
ZTsKLSAgICBzdGF0aWMgRXh0ZXJuYWxUeXBlIGdldEZyb21TbG90KEhhbmRsZVNsb3Qgc2xvdCkg
eyByZXR1cm4gKHNsb3QgJiYgKnNsb3QpID8gcmVpbnRlcnByZXRfY2FzdDxFeHRlcm5hbFR5cGU+
KHN0YXRpY19jYXN0PHZvaWQqPihzbG90LT5hc0NlbGwoKSkpIDogMDsgfQorICAgIHN0YXRpYyBF
eHRlcm5hbFR5cGUgZ2V0RnJvbVNsb3QoSGFuZGxlU2xvdCBzbG90KSB7IHJldHVybiAoc2xvdCAm
JiAqc2xvdCkgPyByZWludGVycHJldF9jYXN0PEV4dGVybmFsVHlwZT4oc3RhdGljX2Nhc3Q8dm9p
ZCo+KHNsb3QtPmFzQ2VsbCgpKSkgOiBudWxscHRyOyB9CiAgICAgc3RhdGljIEpTVmFsdWUgdG9K
U1ZhbHVlKFQqIGNlbGwpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8SlNDZWxsKj4oY2VsbCk7
IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBzdGF0aWMgdm9pZCB2YWxpZGF0ZVVwY2FzdCgp
IHsgVCogdGVtcDsgdGVtcCA9IChVKikwOyB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCAyNTg5ZTJjZmM1OTJjYThl
ZDllMTcxNTM3ZTE2M2ZhNWZkNzE0ZjRkLi5kYjQ3MDEzYTRiMzM1ZWFmNWQzMjBiMDllZmE5M2U3
MzY5OTk0NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3RCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25h
cHNob3RCdWlsZGVyLmNwcApAQCAtNDIwLDcgKzQyMCw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RC
dWlsZGVyOjpqc29uKEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxs
b3dOCiAgICAgICAgICAgICBuZXh0Q2xhc3NOYW1lSW5kZXgrKzsKICAgICAgICAgdW5zaWduZWQg
Y2xhc3NOYW1lSW5kZXggPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgICAgIHZvaWQq
IHdyYXBwZWRBZGRyZXNzID0gMDsKKyAgICAgICAgdm9pZCogd3JhcHBlZEFkZHJlc3MgPSBudWxs
cHRyOwogICAgICAgICB1bnNpZ25lZCBsYWJlbEluZGV4ID0gMDsKICAgICAgICAgaWYgKCFub2Rl
LmNlbGwtPmlzU3RyaW5nKCkgJiYgIW5vZGUuY2VsbC0+aXNIZWFwQmlnSW50KCkpIHsKICAgICAg
ICAgICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gbm9kZS5jZWxsLT5zdHJ1Y3R1cmUodm0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkQmxvY2tJbmxpbmVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAppbmRl
eCBmMjdlZWY0YjQyMzE2NGFjODk4NDYzMDBjOTk5ZmNjNDFhNDE0NmRlLi5iOWFhZTVhNjkyY2Y4
NzZhMDZhODY2OWRjYjZhOTdkYzI1NmNjMGViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9ja0lubGluZXMuaApAQCAtMzA2LDcgKzMwNiw3IEBAIHZvaWQgTWFy
a2VkQmxvY2s6OkhhbmRsZTo6c3BlY2lhbGl6ZWRTd2VlcChGcmVlTGlzdCogZnJlZUxpc3QsIE1h
cmtlZEJsb2NrOjpIYW5kCiAgICAgLy8gVGhpcyBwcm9kdWNlcyBhIGZyZWUgbGlzdCB0aGF0IGlz
IG9yZGVyZWQgaW4gcmV2ZXJzZSB0aHJvdWdoIHRoZSBibG9jay4KICAgICAvLyBUaGlzIGlzIGZp
bmUsIHNpbmNlIHRoZSBhbGxvY2F0aW9uIGNvZGUgbWFrZXMgbm8gYXNzdW1wdGlvbnMgYWJvdXQg
dGhlCiAgICAgLy8gb3JkZXIgb2YgdGhlIGZyZWUgbGlzdC4KLSAgICBGcmVlQ2VsbCogaGVhZCA9
IDA7CisgICAgRnJlZUNlbGwqIGhlYWQgPSBudWxscHRyOwogICAgIHNpemVfdCBjb3VudCA9IDA7
CiAgICAgdWludHB0cl90IHNlY3JldDsKICAgICBjcnlwdG9ncmFwaGljYWxseVJhbmRvbVZhbHVl
cygmc2VjcmV0LCBzaXplb2YodWludHB0cl90KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaGVhcC9TdHJvbmcuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9u
Zy5oCmluZGV4IGMzNzQ4MWE5NmYzNDVjZTI1ZjJiMmRmNzA4ZDc2NjQxOGNjNDg2MDUuLjZjZmRm
M2RmZTA2MTIyNmRiY2RhZmIzZWRmOTdjMWUyM2IzNzI3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL1N0cm9uZy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1N0cm9uZy5oCkBAIC0xMjYsMTAgKzEyNiwxMCBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChz
aG91bGRTdHJvbmdEZXN0cnVjdG9yR3JhYkxvY2sgPT0gU2hvdWxkU3Ryb25nRGVzdHJ1Y3Rvckdy
YWJMb2NrOjpZZXMpIHsKICAgICAgICAgICAgIEpTTG9ja0hvbGRlciBob2xkZXIoaGVhcC0+dm0o
KSk7CiAgICAgICAgICAgICBoZWFwLT5kZWFsbG9jYXRlKHNsb3QoKSk7Ci0gICAgICAgICAgICBz
ZXRTbG90KDApOworICAgICAgICAgICAgc2V0U2xvdChudWxscHRyKTsKICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgIGhlYXAtPmRlYWxsb2NhdGUoc2xvdCgpKTsKLSAgICAgICAgICAgIHNl
dFNsb3QoMCk7CisgICAgICAgICAgICBzZXRTbG90KG51bGxwdHIpOwogICAgICAgICB9CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFrSW1wbC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha0ltcGwuaAppbmRleCAzZjZmZmJmYTQzNTEw
YjU1ODU0ODNiNGFmYWU0M2MwZTE2MDIyMzAyLi40NDJhMDdmYzdkM2Y4N2Y5ODk5ZTZhYWVmZmZk
YzliYjkwYzdiZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
SW1wbC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbXBsLmgKQEAgLTY1
LDggKzY1LDggQEAgcHJpdmF0ZToKIH07CiAKIGlubGluZSBXZWFrSW1wbDo6V2Vha0ltcGwoKQot
ICAgIDogbV93ZWFrSGFuZGxlT3duZXIoMCkKLSAgICAsIG1fY29udGV4dCgwKQorICAgIDogbV93
ZWFrSGFuZGxlT3duZXIobnVsbHB0cikKKyAgICAsIG1fY29udGV4dChudWxscHRyKQogewogICAg
IHNldFN0YXRlKERlYWxsb2NhdGVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9XZWFr
SW5saW5lcy5oCmluZGV4IGNmNzk5NzE5NDA5YjUwM2RkOTNmYWQ3YTJlNjk3MTZmOTMwZjEyN2Iu
LmEyNDQ2NzFmMjc2MWQ2YTM4MmYyZmQ1N2RhYjBmODA5MWFiM2M5NGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1dlYWtJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvV2Vha0lubGluZXMuaApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNl
IEpTQyB7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBXZWFrPFQ+OjpXZWFrKFQqIGNl
bGwsIFdlYWtIYW5kbGVPd25lciogd2Vha093bmVyLCB2b2lkKiBjb250ZXh0KQotICAgIDogbV9p
bXBsKGNlbGwgPyBXZWFrU2V0OjphbGxvY2F0ZShjZWxsLCB3ZWFrT3duZXIsIGNvbnRleHQpIDog
MCkKKyAgICA6IG1faW1wbChjZWxsID8gV2Vha1NldDo6YWxsb2NhdGUoY2VsbCwgd2Vha093bmVy
LCBjb250ZXh0KSA6IG51bGxwdHIpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL1dlYWtTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vh
a1NldC5jcHAKaW5kZXggZmUzMzE2MzQwODk3ZjNiMTY2YjM4NTM2ZTBhNmEyZDY0OWNiNTk2NC4u
ZGU1OTEwNjAwMGNiN2U1NTlmZGUxYjZiNzU4NTQxMzhmMTU5MTJiZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvV2Vha1NldC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBXZWFrQmxvY2s6OkZy
ZWVDZWxsKiBXZWFrU2V0Ojp0cnlGaW5kQWxsb2NhdG9yKCkKICAgICAgICAgICAgIHJldHVybiBz
d2VlcFJlc3VsdC5mcmVlTGlzdDsKICAgICB9CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogV2Vha0Jsb2NrOjpGcmVlQ2VsbCogV2Vha1NldDo6YWRkQWxsb2NhdG9y
KENlbGxDb250YWluZXIgY29udGFpbmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvV2Vha1NldC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvV2Vha1NldC5o
CmluZGV4IDk4NjdlMjRjNWQwMzA4ODk2YjA1ODFmYjVlMWJjZjZiYjllYjMxNWIuLjRiM2ExNGI5
OTVhOTRmYWZhZWU4OTJiYzBmZGJkNGQxNTJiZTIzYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9oZWFwL1dlYWtTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVh
cC9XZWFrU2V0LmgKQEAgLTM4LDcgKzM4LDcgQEAgY2xhc3MgV2Vha1NldCA6IHB1YmxpYyBCYXNp
Y1Jhd1NlbnRpbmVsTm9kZTxXZWFrU2V0PiB7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0
c0V4dHJhY3RvcjsKIAogcHVibGljOgotICAgIHN0YXRpYyBXZWFrSW1wbCogYWxsb2NhdGUoSlNW
YWx1ZSwgV2Vha0hhbmRsZU93bmVyKiA9IDAsIHZvaWQqIGNvbnRleHQgPSAwKTsKKyAgICBzdGF0
aWMgV2Vha0ltcGwqIGFsbG9jYXRlKEpTVmFsdWUsIFdlYWtIYW5kbGVPd25lciogPSBudWxscHRy
LCB2b2lkKiBjb250ZXh0ID0gbnVsbHB0cik7CiAgICAgc3RhdGljIHZvaWQgZGVhbGxvY2F0ZShX
ZWFrSW1wbCopOwogCiAgICAgV2Vha1NldChWTSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCAyYzc3NWY5NDRmOGVlNzRkNDFjZTk5
MjM2MjViNTgyNzY3NGVjYmY1Li41NmIxN2VkYWE3YTJmZjMwNDQwYmNiYzFlMDY4NjQyNjQwMjNk
MTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1l
LmNwcApAQCAtNDQsNyArNDQsNyBAQCB2b2lkIENhbGxGcmFtZTo6aW5pdERlcHJlY2F0ZWRDYWxs
RnJhbWVGb3JEZWJ1Z2dlcihDYWxsRnJhbWUqIGdsb2JhbEV4ZWMsIEpTQ2FsbAogewogICAgIGds
b2JhbEV4ZWMtPnNldENvZGVCbG9jayhudWxscHRyKTsKICAgICBnbG9iYWxFeGVjLT5zZXRDYWxs
ZXJGcmFtZShub0NhbGxlcigpKTsKLSAgICBnbG9iYWxFeGVjLT5zZXRSZXR1cm5QQygwKTsKKyAg
ICBnbG9iYWxFeGVjLT5zZXRSZXR1cm5QQyhudWxscHRyKTsKICAgICBnbG9iYWxFeGVjLT5zZXRB
cmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygwKTsKICAgICBnbG9iYWxFeGVjLT5zZXRDYWxsZWUo
Z2xvYmFsQ2FsbGVlKTsKICAgICBBU1NFUlQoZ2xvYmFsRXhlYy0+aXNEZXByZWNhdGVkQ2FsbEZy
YW1lRm9yRGVidWdnZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvQ2FsbEZyYW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgKaW5kZXggN2Q1NmZjNzU0NmJjZmUwMTI5ZTI3MGIxM2ZlZDYwNDlhYmViYzY3
Yy4uMjQyYjMzNWI0ZWRkYTFjZTYwOWFmYTAxYjcwY2FmNTk1OGRiNzhiZiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaApAQCAtMTUyLDcgKzE1Miw3
IEBAIG5hbWVzcGFjZSBKU0MgIHsKIAogICAgICAgICBSZXR1cm5BZGRyZXNzUHRyIHJldHVyblBD
KCkgY29uc3QgeyByZXR1cm4gUmV0dXJuQWRkcmVzc1B0cihjYWxsZXJGcmFtZUFuZFBDKCkucmV0
dXJuUEMpOyB9CiAgICAgICAgIGJvb2wgaGFzUmV0dXJuUEMoKSBjb25zdCB7IHJldHVybiAhIWNh
bGxlckZyYW1lQW5kUEMoKS5yZXR1cm5QQzsgfQotICAgICAgICB2b2lkIGNsZWFyUmV0dXJuUEMo
KSB7IGNhbGxlckZyYW1lQW5kUEMoKS5yZXR1cm5QQyA9IDA7IH0KKyAgICAgICAgdm9pZCBjbGVh
clJldHVyblBDKCkgeyBjYWxsZXJGcmFtZUFuZFBDKCkucmV0dXJuUEMgPSBudWxscHRyOyB9CiAg
ICAgICAgIHN0YXRpYyBwdHJkaWZmX3QgcmV0dXJuUENPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1Rf
T0ZGU0VUT0YoQ2FsbGVyRnJhbWVBbmRQQywgcmV0dXJuUEMpOyB9CiAgICAgICAgIEFic3RyYWN0
UEMgYWJzdHJhY3RSZXR1cm5QQyhWTSYgdm0pIHsgcmV0dXJuIEFic3RyYWN0UEModm0sIHRoaXMp
OyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0
ZXIuY3BwCmluZGV4IDFkOTNlYjg1NDc5MDk1YzhkZjQ3ZTRhOTE0ZDE4NTc2MzE0OTllZTMuLjgz
MzZhOTEyNmNhZGE4NWU5OGZjMzBiZDk3MmQ2NDcxYTY4YjA1MjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcApAQCAtNDkwLDcgKzQ5
MCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEhhbmRsZXJJbmZvKiBmaW5kRXhjZXB0aW9uSGFu
ZGxlcihTdGFja1Zpc2l0b3ImIHZpc2l0b3IsIENvCiBjbGFzcyBHZXRDYXRjaEhhbmRsZXJGdW5j
dG9yIHsKIHB1YmxpYzoKICAgICBHZXRDYXRjaEhhbmRsZXJGdW5jdG9yKCkKLSAgICAgICAgOiBt
X2hhbmRsZXIoMCkKKyAgICAgICAgOiBtX2hhbmRsZXIobnVsbHB0cikKICAgICB7CiAgICAgfQog
CkBAIC0xMDIxLDcgKzEwMjEsNyBAQCBKU09iamVjdCogSW50ZXJwcmV0ZXI6OmV4ZWN1dGVDb25z
dHJ1Y3QoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTTwogICAgICAgICB9
CiAgICAgfQogCi0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCAwKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIG51bGxwdHIpOwogICAgIEFTU0VSVChyZXN1
bHQuaXNPYmplY3QoKSk7CiAgICAgcmV0dXJuIGNoZWNrZWRSZXR1cm4oYXNPYmplY3QocmVzdWx0
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvUHJv
dG9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0Nh
bGxGcmFtZS5oCmluZGV4IDdjZjZkZTkxYmQ0YWYwYjcwYmJhMTY0OTMxZjFiZWQyMzJiN2IwYjku
LjQ3YWM4NWY1ODY5N2Q4NzVlN2RhYTk3ODJkYWFkZDE4OWJkNDVlYjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9Qcm90b0NhbGxGcmFtZS5oCkBAIC00Nyw3
ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBKU1ZhbHVlICphcmdzOwogICAgIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3Q7CiAKLSAgICBpbmxpbmUgdm9pZCBpbml0KENvZGVCbG9jayosIEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqLCBKU1ZhbHVlLCBpbnQsIEpTVmFsdWUqIG90aGVyQXJncyA9
IDApOworICAgIGlubGluZSB2b2lkIGluaXQoQ29kZUJsb2NrKiwgSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCosIEpTVmFsdWUsIGludCwgSlNWYWx1ZSogb3RoZXJBcmdzID0gbnVsbHB0cik7CiAK
ICAgICBpbmxpbmUgQ29kZUJsb2NrKiBjb2RlQmxvY2soKSBjb25zdDsKICAgICBpbmxpbmUgdm9p
ZCBzZXRDb2RlQmxvY2soQ29kZUJsb2NrKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDg1NWI4NTYyM2E5ZDI5NTFhODVl
ZTE3OThiY2IxMTNhM2FjMzBkOTUuLmIwYTViMmZjMjQxYWY5NTY0YzkyMjEwMDI2MjRlMDBjNTg0
YTQ0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFj
a1Zpc2l0b3IuY3BwCkBAIC01OCw4ICs1OCw4IEBAIFN0YWNrVmlzaXRvcjo6U3RhY2tWaXNpdG9y
KENhbGxGcmFtZSogc3RhcnRGcmFtZSwgVk0mIHZtKQogICAgICAgICB9CiAKICAgICB9IGVsc2Ug
ewotICAgICAgICBtX2ZyYW1lLm1fZW50cnlGcmFtZSA9IDA7Ci0gICAgICAgIHRvcEZyYW1lID0g
MDsKKyAgICAgICAgbV9mcmFtZS5tX2VudHJ5RnJhbWUgPSBudWxscHRyOworICAgICAgICB0b3BG
cmFtZSA9IG51bGxwdHI7CiAgICAgfQogICAgIG1fZnJhbWUubV9jYWxsZXJJc0VudHJ5RnJhbWUg
PSBmYWxzZTsKICAgICByZWFkRnJhbWUodG9wRnJhbWUpOwpAQCAtMTg0LDcgKzE4NCw3IEBAIHZv
aWQgU3RhY2tWaXNpdG9yOjpyZWFkTm9uSW5saW5lZEZyYW1lKENhbGxGcmFtZSogY2FsbEZyYW1l
LCBDb2RlT3JpZ2luKiBjb2RlT3JpCiAgICAgfQogCiAjaWYgRU5BQkxFKERGR19KSVQpCi0gICAg
bV9mcmFtZS5tX2lubGluZUNhbGxGcmFtZSA9IDA7CisgICAgbV9mcmFtZS5tX2lubGluZUNhbGxG
cmFtZSA9IG51bGxwdHI7CiAjZW5kaWYKIH0KIApAQCAtNDI5LDkgKzQyOSw5IEBAIHZvaWQgU3Rh
Y2tWaXNpdG9yOjpGcmFtZTo6cmV0cmlldmVFeHByZXNzaW9uSW5mbyhpbnQmIGRpdm90LCBpbnQm
IHN0YXJ0T2Zmc2V0LCBpCiAKIHZvaWQgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c2V0VG9FbmQoKQog
ewotICAgIG1fY2FsbEZyYW1lID0gMDsKKyAgICBtX2NhbGxGcmFtZSA9IG51bGxwdHI7CiAjaWYg
RU5BQkxFKERGR19KSVQpCi0gICAgbV9pbmxpbmVDYWxsRnJhbWUgPSAwOworICAgIG1faW5saW5l
Q2FsbEZyYW1lID0gbnVsbHB0cjsKICNlbmRpZgogICAgIG1faXNXYXNtRnJhbWUgPSBmYWxzZTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zp
c2l0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3Iu
aAppbmRleCAwYzgxZDFiMzIzNjk4Njc5Mjc0MjdjNmQwZjc0ZjE0OTMyM2Q3Nzc0Li5lMGQ5OTFj
ZWJmMWU3YWMxMGVkNzE5YzE1MzdkODA3MDEyNzJkN2U3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5oCkBAIC0xNjgsNyArMTY4LDcgQEAg
cHJpdmF0ZToKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGdvdG9OZXh0RnJhbWUoKTsKIAog
ICAgIHZvaWQgcmVhZEZyYW1lKENhbGxGcmFtZSopOwotICAgIHZvaWQgcmVhZE5vbklubGluZWRG
cmFtZShDYWxsRnJhbWUqLCBDb2RlT3JpZ2luKiA9IDApOworICAgIHZvaWQgcmVhZE5vbklubGlu
ZWRGcmFtZShDYWxsRnJhbWUqLCBDb2RlT3JpZ2luKiA9IG51bGxwdHIpOwogI2lmIEVOQUJMRShE
RkdfSklUKQogICAgIHZvaWQgcmVhZElubGluZWRGcmFtZShDYWxsRnJhbWUqLCBDb2RlT3JpZ2lu
Kik7CiAjZW5kaWYKQEAgLTE4MSw3ICsxODEsNyBAQCBjbGFzcyBDYWxsZXJGdW5jdG9yIHsKIHB1
YmxpYzoKICAgICBDYWxsZXJGdW5jdG9yKCkKICAgICAgICAgOiBtX2hhc1NraXBwZWRGaXJzdEZy
YW1lKGZhbHNlKQotICAgICAgICAsIG1fY2FsbGVyRnJhbWUoMCkKKyAgICAgICAgLCBtX2NhbGxl
ckZyYW1lKG51bGxwdHIpCiAgICAgewogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
aXQvQXNzZW1ibHlIZWxwZXJzLmgKaW5kZXggOTJjYTE0ZTllMzNhZTAyMjkyNGNkNDJkNDYzMWMy
NWFhOTAxNzg3MS4uZjlkNTc3NDRlNzczMjk5NjBiNzY0NTBkMTI3OTk1NGVmZWNlZDA2ZiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9Bc3NlbWJseUhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0Fzc2VtYmx5SGVscGVycy5oCkBAIC01Myw3ICs1
Myw3IEBAIGNsYXNzIEFzc2VtYmx5SGVscGVycyA6IHB1YmxpYyBNYWNyb0Fzc2VtYmxlciB7CiBw
dWJsaWM6CiAgICAgQXNzZW1ibHlIZWxwZXJzKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAg
ICA6IG1fY29kZUJsb2NrKGNvZGVCbG9jaykKLSAgICAgICAgLCBtX2Jhc2VsaW5lQ29kZUJsb2Nr
KGNvZGVCbG9jayA/IGNvZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpIDogMCkKKyAgICAg
ICAgLCBtX2Jhc2VsaW5lQ29kZUJsb2NrKGNvZGVCbG9jayA/IGNvZGVCbG9jay0+YmFzZWxpbmVB
bHRlcm5hdGl2ZSgpIDogbnVsbHB0cikKICAgICB7CiAgICAgICAgIGlmIChtX2NvZGVCbG9jaykg
ewogICAgICAgICAgICAgQVNTRVJUKG1fYmFzZWxpbmVDb2RlQmxvY2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvQ0NhbGxIZWxwZXJzLmgKaW5kZXggMzVkNTA5YmMzZjU0ZWE4ZGQzMmUwYWRl
YzAwZWZlN2E1MTUyOGFhMi4uZWNkYTU2NGMwNDhkNzJkZDA5MmRjMmYyYTAyNDNhZWQzYjU1ODk1
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9DQ2FsbEhlbHBlcnMuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0NDYWxsSGVscGVycy5oCkBAIC00OSw3ICs0
OSw3IEBAIGNsYXNzIFJlZ2lzdGVyZWRTdHJ1Y3R1cmU7CiAKIGNsYXNzIENDYWxsSGVscGVycyA6
IHB1YmxpYyBBc3NlbWJseUhlbHBlcnMgewogcHVibGljOgotICAgIENDYWxsSGVscGVycyhDb2Rl
QmxvY2sqIGNvZGVCbG9jayA9IDApCisgICAgQ0NhbGxIZWxwZXJzKENvZGVCbG9jayogY29kZUJs
b2NrID0gbnVsbHB0cikKICAgICAgICAgOiBBc3NlbWJseUhlbHBlcnMoY29kZUJsb2NrKQogICAg
IHsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVENvZGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRDb2RlLmNwcAppbmRleCBhODUwMDcz
MmE5N2NlMDI1NjQ1MTA2ZGNmZjJlNjc3NzYyMmM5YzJlLi44YjUwZmZmMmU5OGM5NTgyZGM1NTEz
YmZhNTQwMGM5NmZhNWFkYWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVENvZGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUQ29kZS5jcHAK
QEAgLTcyLDI1ICs3MiwyNSBAQCB2b2lkIEpJVENvZGU6OnZhbGlkYXRlUmVmZXJlbmNlcyhjb25z
dCBUcmFja2VkUmVmZXJlbmNlcyYpCiBERkc6OkNvbW1vbkRhdGEqIEpJVENvZGU6OmRmZ0NvbW1v
bigpCiB7CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsK
KyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogREZHOjpKSVRDb2RlKiBKSVRDb2RlOjpkZmcoKQog
ewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIEZUTDo6SklUQ29kZSogSklUQ29kZTo6ZnRsKCkKIHsKICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVy
biBudWxscHRyOwogfQogCiBGVEw6OkZvck9TUkVudHJ5SklUQ29kZSogSklUQ29kZTo6ZnRsRm9y
T1NSRW50cnkoKQogewogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgSklUQ29kZTo6c2hyaW5rVG9G
aXQoY29uc3QgQ29uY3VycmVudEpTTG9ja2VyJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IDk3ZjRkYzA3YTVmOWJlNzViODM2NjcwZmM3MjdlNjI2
YTQyZjIwZTkuLjMzYWE4YzA2NmFmNWRhYWU5NGJhMzQzNjE5MzBlNjYxYTc3MjQyZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcApAQCAtMTAzOSw3ICsx
MDM5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25DYWxsRXZhbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0g
ICAgY2FsbGVlRnJhbWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0Q29k
ZUJsb2NrKG51bGxwdHIpOwogICAgIAogICAgIGlmICghaXNIb3N0RnVuY3Rpb24oY2FsbGVlRnJh
bWUtPmd1YXJhbnRlZWRKU1ZhbHVlQ2FsbGVlKCksIGdsb2JhbEZ1bmNFdmFsKSkKICAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAg
c3RhdGljIFNsb3dQYXRoUmV0dXJuVHlwZSBoYW5kbGVIb3N0Q2FsbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgY2FsbGVl
RnJhbWUtPnNldENvZGVCbG9jaygwKTsKKyAgICBjYWxsZWVGcmFtZS0+c2V0Q29kZUJsb2NrKG51
bGxwdHIpOwogCiAgICAgaWYgKGNhbGxMaW5rSW5mby0+c3BlY2lhbGl6YXRpb25LaW5kKCkgPT0g
Q29kZUZvckNhbGwpIHsKICAgICAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBj
YWxsZWUpOwpAQCAtMTU3OCwyMSArMTU3OCwyMSBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlYwog
ICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RG
RyIsICgiY291bnRlciA9ICIsIGNvZGVCbG9jay0+aml0RXhlY3V0ZUNvdW50ZXIoKSkpOwogICAg
ICAgICBjb2RlQmxvY2stPnVwZGF0ZUFsbFByZWRpY3Rpb25zKCk7CiAgICAgICAgIGRhdGFMb2dM
bklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIkNob29zaW5nIG5vdCB0byBvcHRpbWl6ZSAiLCAq
Y29kZUJsb2NrLCAiIHlldCwgYmVjYXVzZSB0aGUgdGhyZXNob2xkIGhhc24ndCBiZWVuIHJlYWNo
ZWQuIik7Ci0gICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CisgICAgICAgIHJldHVy
biBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7CiAgICAgfQogICAgIAogICAgIERlYnVn
Z2VyKiBkZWJ1Z2dlciA9IGNvZGVCbG9jay0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCk7CiAg
ICAgaWYgKFVOTElLRUxZKGRlYnVnZ2VyICYmIChkZWJ1Z2dlci0+aXNTdGVwcGluZygpIHx8IGNv
ZGVCbG9jay0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpLT5oYXNEZWJ1Z2dlclJlcXVlc3RzKCkpKSkg
ewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVU
b0RGRyIsICgiZGVidWdnZXIgaXMgc3RlcHBpbmcgb3IgaGFzIHJlcXVlc3RzIikpOwogICAgICAg
ICB1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZE9wdGltaXplQWZ0ZXJXYXJtVXAoY29kZUJsb2NrKTsK
LSAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKKyAgICAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKICAgICB9CiAKICAgICBpZiAoY29kZUJsb2NrLT5t
X3Nob3VsZEFsd2F5c0JlSW5saW5lZCkgewogICAgICAgICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNv
ZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgic2hvdWxkIGFsd2F5cyBiZSBpbmxpbmVk
IikpOwogICAgICAgICB1cGRhdGVBbGxQcmVkaWN0aW9uc0FuZE9wdGltaXplQWZ0ZXJXYXJtVXAo
Y29kZUJsb2NrKTsKICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAi
Q2hvb3Npbmcgbm90IHRvIG9wdGltaXplICIsICpjb2RlQmxvY2ssICIgeWV0LCBiZWNhdXNlIG1f
c2hvdWxkQWx3YXlzQmVJbmxpbmVkID09IHRydWUuIik7Ci0gICAgICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQoMCwgMCk7CisgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0
cik7CiAgICAgfQogCiAgICAgLy8gV2UgY2Fubm90IGJlIGluIHRoZSBwcm9jZXNzIG9mIGFzeW5j
aHJvbm91cyBjb21waWxhdGlvbiBhbmQgYWxzbyBoYXZlIGFuIG9wdGltaXplZApAQCAtMTYzNCw3
ICsxNjM0LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0
aW1pemUoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWMKICAgICAgICAgLy8gcmVwbGFjZW1l
bnQuCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxh
Y2VtZW50KCkpOwogICAgICAgICBjb2RlQmxvY2stPnNldE9wdGltaXphdGlvblRocmVzaG9sZEJh
c2VkT25Db21waWxhdGlvblJlc3VsdChDb21waWxhdGlvbkRlZmVycmVkKTsKLSAgICAgICAgcmV0
dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxs
cHRyLCBudWxscHRyKTsKICAgICB9CiAKICAgICBpZiAod29ya2xpc3RTdGF0ZSA9PSBERkc6Oldv
cmtsaXN0OjpDb21waWxlZCkgewpAQCAtMTY0Nyw3ICsxNjQ3LDcgQEAgU2xvd1BhdGhSZXR1cm5U
eXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0aW1pemUoVk0qIHZtUG9pbnRlciwgdWludDMy
X3QgYnl0ZWMKICAgICAgICAgICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAiZGVs
YXlPcHRpbWl6ZVRvREZHIiwgKCJjb21waWxlZCBhbmQgZmFpbGVkIikpOwogICAgICAgICAgICAg
Y29kZUJsb2NrLT51cGRhdGVBbGxQcmVkaWN0aW9ucygpOwogICAgICAgICAgICAgZGF0YUxvZ0xu
SWYoT3B0aW9uczo6dmVyYm9zZU9TUigpLCAiQ29kZSBibG9jayAiLCAqY29kZUJsb2NrLCAiIHdh
cyBjb21waWxlZCBidXQgaXQgZG9lc24ndCBoYXZlIGFuIG9wdGltaXplZCByZXBsYWNlbWVudC4i
KTsKLSAgICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQoMCwgMCk7CisgICAgICAgICAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgfSBl
bHNlIGlmIChjb2RlQmxvY2stPmhhc09wdGltaXplZFJlcGxhY2VtZW50KCkpIHsKICAgICAgICAg
Q29kZUJsb2NrKiByZXBsYWNlbWVudCA9IGNvZGVCbG9jay0+cmVwbGFjZW1lbnQoKTsKQEAgLTE2
NzEsNyArMTY3MSw3IEBAIFNsb3dQYXRoUmV0dXJuVHlwZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
bk9wdGltaXplKFZNKiB2bVBvaW50ZXIsIHVpbnQzMl90IGJ5dGVjCiAgICAgICAgICAgICAgICAg
IlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgY29kZUJsb2NrLAogICAgICAgICAgICAg
ICAgICIoIiwgcmVwbGFjZW1lbnQsICIpIChpbiBsb29wKS4iKTsKICAgICAgICAgICAgIHJlcGxh
Y2VtZW50LT5qZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0
aW1pemF0aW9uVHJpZ2dlciwgQ291bnRSZW9wdGltaXphdGlvbik7Ci0gICAgICAgICAgICByZXR1
cm4gZW5jb2RlUmVzdWx0KDAsIDApOworICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChu
dWxscHRyLCBudWxscHRyKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIGlmICgh
Y29kZUJsb2NrLT5zaG91bGRPcHRpbWl6ZU5vdygpKSB7CkBAIC0xNjc5LDcgKzE2NzksNyBAQCBT
bG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Q
b2ludGVyLCB1aW50MzJfdCBieXRlYwogICAgICAgICAgICAgZGF0YUxvZ0xuSWYoT3B0aW9uczo6
dmVyYm9zZU9TUigpLAogICAgICAgICAgICAgICAgICJEZWxheWluZyBvcHRpbWl6YXRpb24gZm9y
ICIsICpjb2RlQmxvY2ssCiAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIG9mIGluc3VmZmljaWVu
dCBwcm9maWxpbmcuIik7Ci0gICAgICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KDAsIDApOwor
ICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsKICAgICAg
ICAgfQogCiAgICAgICAgIGRhdGFMb2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIlRyaWdn
ZXJpbmcgb3B0aW1pemVkIGNvbXBpbGF0aW9uIG9mICIsICpjb2RlQmxvY2spOwpAQCAtMTcwNSw3
ICsxNzA1LDcgQEAgU2xvd1BhdGhSZXR1cm5UeXBlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uT3B0
aW1pemUoVk0qIHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWMKICAgICAgICAgCiAgICAgICAgIGlm
IChyZXN1bHQgIT0gQ29tcGlsYXRpb25TdWNjZXNzZnVsKSB7CiAgICAgICAgICAgICBDT0RFQkxP
Q0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgImRlbGF5T3B0aW1pemVUb0RGRyIsICgiY29tcGlsYXRp
b24gZmFpbGVkIikpOwotICAgICAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKKyAg
ICAgICAgICAgIHJldHVybiBlbmNvZGVSZXN1bHQobnVsbHB0ciwgbnVsbHB0cik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC0xNzQ2LDcgKzE3NDYsNyBAQCBTbG93UGF0aFJldHVyblR5cGUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBi
eXRlYwogICAgICAgICAgICAgIlRyaWdnZXJpbmcgcmVvcHRpbWl6YXRpb24gb2YgIiwgY29kZUJs
b2NrLCAiIC0+ICIsCiAgICAgICAgICAgICBjb2RlQmxvY2stPnJlcGxhY2VtZW50KCksICIgKGFm
dGVyIE9TUiBmYWlsKS4iKTsKICAgICAgICAgb3B0aW1pemVkQ29kZUJsb2NrLT5qZXR0aXNvbihQ
cm9maWxlcjo6SmV0dGlzb25EdWVUb0Jhc2VsaW5lTG9vcFJlb3B0aW1pemF0aW9uVHJpZ2dlck9u
T1NSRW50cnlGYWlsLCBDb3VudFJlb3B0aW1pemF0aW9uKTsKLSAgICAgICAgcmV0dXJuIGVuY29k
ZVJlc3VsdCgwLCAwKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxs
cHRyKTsKICAgICB9CiAKICAgICAvLyBPU1IgZmFpbGVkIHRoaXMgdGltZSwgYnV0IGl0IG1pZ2h0
IHN1Y2NlZWQgbmV4dCB0aW1lISBMZXQgdGhlIGNvZGUgcnVuIGEgYml0CkBAIC0xNzU0LDcgKzE3
NTQsNyBAQCBTbG93UGF0aFJldHVyblR5cGUgSklUX09QRVJBVElPTiBvcGVyYXRpb25PcHRpbWl6
ZShWTSogdm1Qb2ludGVyLCB1aW50MzJfdCBieXRlYwogICAgIGNvZGVCbG9jay0+b3B0aW1pemVB
ZnRlcldhcm1VcCgpOwogICAgIAogICAgIENPREVCTE9DS19MT0dfRVZFTlQoY29kZUJsb2NrLCAi
ZGVsYXlPcHRpbWl6ZVRvREZHIiwgKCJPU1IgZmFpbGVkIikpOwotICAgIHJldHVybiBlbmNvZGVS
ZXN1bHQoMCwgMCk7CisgICAgcmV0dXJuIGVuY29kZVJlc3VsdChudWxscHRyLCBudWxscHRyKTsK
IH0KIAogY2hhciogSklUX09QRVJBVElPTiBvcGVyYXRpb25UcnlPU1JFbnRlckF0Q2F0Y2goVk0q
IHZtUG9pbnRlciwgdWludDMyX3QgYnl0ZWNvZGVJbmRleEJpdHMpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9SZXBhdGNoLmNwcAppbmRleCAxOGJkNmU0NTNlOGQ2MDU3MGI5M2IxMjQ3ZWI2NWI4MmVm
MjNlZTY3Li5iMTdlYzcyNGI2MWViMTEwYjQyMjc4MzBkMmEyZDBlMmIyNjg4MmVjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvUmVwYXRjaC5jcHAKQEAgLTExMTMsNyArMTExMyw3IEBAIHN0YXRp
YyB2b2lkIHJldmVydENhbGwoVk0mIHZtLCBDYWxsTGlua0luZm8mIGNhbGxMaW5rSW5mbywgTWFj
cm9Bc3NlbWJsZXJDb2RlUmVmCiAgICAgICAgIGlmICghY2FsbExpbmtJbmZvLmNsZWFyZWRCeUpl
dHRpc29uKCkpIHsKICAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXZlcnRKdW1wUmVwbGFj
ZW1lbnRUb0JyYW5jaFB0cldpdGhQYXRjaCgKICAgICAgICAgICAgICAgICBNYWNyb0Fzc2VtYmxl
cjo6c3RhcnRPZkJyYW5jaFB0cldpdGhQYXRjaE9uUmVnaXN0ZXIoY2FsbExpbmtJbmZvLmhvdFBh
dGhCZWdpbigpKSwKLSAgICAgICAgICAgICAgICBjYWxsTGlua0luZm8uY2FsbGVlR1BSKCksIDAp
OworICAgICAgICAgICAgICAgIGNhbGxMaW5rSW5mby5jYWxsZWVHUFIoKSwgbnVsbHB0cik7CiAg
ICAgICAgICAgICBsaW5rU2xvd0Zvcih2bSwgY2FsbExpbmtJbmZvLCBjb2RlUmVmKTsKICAgICAg
ICAgICAgIE1hY3JvQXNzZW1ibGVyOjpyZXBhdGNoUG9pbnRlcihjYWxsTGlua0luZm8uaG90UGF0
aEJlZ2luKCksIG51bGxwdHIpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L1RodW5rR2VuZXJhdG9ycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L1RodW5rR2VuZXJhdG9ycy5jcHAKaW5kZXggZjY5OTQ1Y2U0OTlkOGU4OGJjNWI3YTQ4MTY0
NTE1MTUyMGRkZTVhZC4uYzQyNGYxMjMxZWJkMzFkYjUwN2EzZjhiMGI5ZDRjNTg4MTEwZjE0NCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9UaHVua0dlbmVyYXRvcnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvVGh1bmtHZW5lcmF0b3JzLmNwcApAQCAt
MjcyLDcgKzI3Miw3IEBAIHN0YXRpYyBNYWNyb0Fzc2VtYmxlckNvZGVSZWY8SklUVGh1bmtQdHJU
YWc+IG5hdGl2ZUZvckdlbmVyYXRvcihWTSYgdm0sIFRodW5rRnVuCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KIAotICAgIGppdC5lbWl0UHV0VG9DYWxsRnJhbWVIZWFkZXIoMCwgQ2FsbEZyYW1lU2xv
dDo6Y29kZUJsb2NrKTsKKyAgICBqaXQuZW1pdFB1dFRvQ2FsbEZyYW1lSGVhZGVyKG51bGxwdHIs
IENhbGxGcmFtZVNsb3Q6OmNvZGVCbG9jayk7CiAgICAgaml0LnN0b3JlUHRyKEdQUkluZm86OmNh
bGxGcmFtZVJlZ2lzdGVyLCAmdm0udG9wQ2FsbEZyYW1lKTsKIAogICAgIC8vIEhvc3QgZnVuY3Rp
b24gc2lnbmF0dXJlOiBmKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCmluZGV4IDQzOGI0NDRlNWNkZGJjNmNjNjkxMjljNjk3MjU0OTc0Y2E4NjA1NDMuLjY4
NTMzZWJmMGY4ZmU2MzU4NjVjMzVkOWY0NzczYTlmODllZjUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2Mu
Y3BwCkBAIC00ODMsNyArNDgzLDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFN0cnVjdHVyZSog
Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNWYWx1ZSBwcm90b3R5cGUpCiAgICAgewotICAgICAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIDAsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xv
YmFsT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworICAgICAgICByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIG51bGxwdHIsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xvYmFs
T2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgIH0KIAogICAgIHN0YXRp
YyBSdW50aW1lRmxhZ3MgamF2YVNjcmlwdFJ1bnRpbWVGbGFncyhjb25zdCBKU0dsb2JhbE9iamVj
dCopIHsgcmV0dXJuIFJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpOyB9CkBAIC01OTIs
NyArNTkyLDcgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAgICAgICAgIGlmICghYXJndW1lbnRzLmlz
RW1wdHkoKSkgewotICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KHRoaXMsIDApOworICAgICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0
eUFycmF5KHRoaXMsIG51bGxwdHIpOwogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBhcmd1bWVudHMuc2l6ZSgpOyArK2kpCiAgICAgICAgICAgICAgICAgYXJyYXktPnB1dERpcmVj
dEluZGV4KHRoaXMsIGksIGpzU3RyaW5nKHZtLCBhcmd1bWVudHNbaV0pKTsKICAgICAgICAgICAg
IHB1dERpcmVjdCh2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImFyZ3VtZW50cyIpLCBh
cnJheSk7CkBAIC0xNDc2LDcgKzE0NzYsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uUnVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZQogCiAg
ICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxP
YmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsK
IAotICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShyZWFsbSwgMCk7Cisg
ICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KHJlYWxtLCBudWxscHRyKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCk7ICsraSkg
ewogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgocmVhbG0sIGkgLSAxLCBjYWxsRnJhbWUt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKQEAgLTE1MDgsNyArMTUwOCw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW5TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsCiAKICAgICBHbG9iYWxPYmplY3QqIHJlYWxtID0gR2xvYmFsT2JqZWN0Ojpj
cmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZl
Y3RvcjxTdHJpbmc+KCkpOwogCi0gICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFy
cmF5KHJlYWxtLCAwKTsKKyAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXko
cmVhbG0sIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChyZWFsbSwg
aSAtIDEsIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKaW5kZXggNzU5YzEzMjcwZTU4YzY0
NDFhY2YyMWIyZjJkOGM1NThkZTlhODUzMS4uNDUxYWMzNGZlYWM4NWIyZTg3ZDIzZDhkYmY5N2Y5
YzcxNmJhOWIwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93
UGF0aHMuY3BwCkBAIC00NzgsMTEgKzQ3OCwxMSBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChsb29w
X29zcikKIAogICAgIGlmICghc2hvdWxkSklUKGNvZGVCbG9jaykpIHsKICAgICAgICAgY29kZUJs
b2NrLT5kb250SklUQW55dGltZVNvb24oKTsKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCAw
KTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhudWxscHRyLCBudWxscHRyKTsKICAgICB9CiAg
ICAgCiAgICAgaWYgKCFqaXRDb21waWxlQW5kU2V0SGV1cmlzdGljcyh2bSwgY29kZUJsb2NrLCBs
b29wT1NSRW50cnlCeXRlY29kZUluZGV4KSkKLSAgICAgICAgTExJTlRfUkVUVVJOX1RXTygwLCAw
KTsKKyAgICAgICAgTExJTlRfUkVUVVJOX1RXTyhudWxscHRyLCBudWxscHRyKTsKICAgICAKICAg
ICBDT0RFQkxPQ0tfTE9HX0VWRU5UKGNvZGVCbG9jaywgIm9zckVudHJ5IiwgKCJhdCAiLCBsb29w
T1NSRW50cnlCeXRlY29kZUluZGV4KSk7CiAKQEAgLTIxOTgsNyArMjE5OCw3IEBAIGV4dGVybiAi
QyIgU2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF9jaGVja3BvaW50X29zcl9leGl0KENhbGxG
cmFtZSogY2FsbEZyYW1lCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKQotICAgICAgICByZXR1cm4gZW5jb2RlUmVzdWx0KHJldHVyblRv
VGhyb3codm0pLCAwKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZVJlc3VsdChyZXR1cm5Ub1Rocm93
KHZtKSwgbnVsbHB0cik7CiAKICAgICByZXR1cm4gZGlzcGF0Y2hUb05leHRJbnN0cnVjdGlvbihj
b2RlQmxvY2ssIHBjKTsKIH0KQEAgLTIyMTMsNyArMjIxMyw3IEBAIGV4dGVybiAiQyIgU2xvd1Bh
dGhSZXR1cm5UeXBlIGxsaW50X3Rocm93X3N0YWNrX292ZXJmbG93X2Vycm9yKFZNKiB2bSwgUHJv
dG9DYWxsCiAgICAgZWxzZQogICAgICAgICBnbG9iYWxPYmplY3QgPSBwcm90b0ZyYW1lLT5jYWxs
ZWUoKS0+Z2xvYmFsT2JqZWN0KCp2bSk7CiAgICAgdGhyb3dTdGFja092ZXJmbG93RXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSk7Ci0gICAgcmV0dXJuIGVuY29kZVJlc3VsdCgwLCAwKTsKKyAgICBy
ZXR1cm4gZW5jb2RlUmVzdWx0KG51bGxwdHIsIG51bGxwdHIpOwogfQogCiAjaWYgRU5BQkxFKENf
TE9PUCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvQVNUQnVpbGRl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9BU1RCdWlsZGVyLmgKaW5kZXggZDk1
NTgwOGM2YTMyOGRjZTA2ZGE3M2U3NTFkNjIyMzdkZDc3YmE2Mi4uMTBhMTQ1M2Y4YmUyN2QyMmUw
ZTM1YTkwNmU1OTBkY2Y0N2FlMGY3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9BU1RCdWlsZGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9B
U1RCdWlsZGVyLmgKQEAgLTM0MCw3ICszNDAsNyBAQCBwdWJsaWM6CiAgICAgRXhwcmVzc2lvbk5v
ZGUqIGNyZWF0ZVJlZ0V4cChjb25zdCBKU1Rva2VuTG9jYXRpb24mIGxvY2F0aW9uLCBjb25zdCBJ
ZGVudGlmaWVyJiBwYXR0ZXJuLCBjb25zdCBJZGVudGlmaWVyJiBmbGFncywgY29uc3QgSlNUZXh0
UG9zaXRpb24mIHN0YXJ0KQogICAgIHsKICAgICAgICAgaWYgKFlhcnI6Omhhc0Vycm9yKFlhcnI6
OmNoZWNrU3ludGF4KHBhdHRlcm4uc3RyaW5nKCksIGZsYWdzLnN0cmluZygpKSkpCi0gICAgICAg
ICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBSZWdF
eHBOb2RlKiBub2RlID0gbmV3IChtX3BhcnNlckFyZW5hKSBSZWdFeHBOb2RlKGxvY2F0aW9uLCBw
YXR0ZXJuLCBmbGFncyk7CiAgICAgICAgIGludCBzaXplID0gcGF0dGVybi5sZW5ndGgoKSArIDI7
IC8vICsgMiBmb3IgdGhlIHR3byAvJ3MKICAgICAgICAgSlNUZXh0UG9zaXRpb24gZW5kID0gc3Rh
cnQgKyBzaXplOwpAQCAtOTcxLDcgKzk3MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2b2lkIGFw
cGVuZEFycmF5UGF0dGVyblNraXBFbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNUb2tl
bkxvY2F0aW9uJiBsb2NhdGlvbikKICAgICB7Ci0gICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFy
cmF5UGF0dGVybk5vZGU6OkJpbmRpbmdUeXBlOjpFbGlzaW9uLCBsb2NhdGlvbiwgMCwgbnVsbHB0
cik7CisgICAgICAgIG5vZGUtPmFwcGVuZEluZGV4KEFycmF5UGF0dGVybk5vZGU6OkJpbmRpbmdU
eXBlOjpFbGlzaW9uLCBsb2NhdGlvbiwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgfQogCiAgICAg
dm9pZCBhcHBlbmRBcnJheVBhdHRlcm5FbnRyeShBcnJheVBhdHRlcm4gbm9kZSwgY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiBsb2NhdGlvbiwgRGVzdHJ1Y3R1cmluZ1BhdHRlcm4gcGF0dGVybiwgRXhw
cmVzc2lvbk5vZGUqIGRlZmF1bHRWYWx1ZSkKQEAgLTE1MzYsNyArMTUzNiw3IEBAIEV4cHJlc3Np
b25Ob2RlKiBBU1RCdWlsZGVyOjptYWtlQmluYXJ5Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
IGxvY2F0aW9uLCBpbnQKICAgICAgICAgcmV0dXJuIG1ha2VQb3dOb2RlKGxvY2F0aW9uLCBsaHMu
Zmlyc3QsIHJocy5maXJzdCwgcmhzLnNlY29uZC5oYXNBc3NpZ25tZW50KTsKICAgICB9CiAgICAg
Q1JBU0goKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogRXhwcmVz
c2lvbk5vZGUqIEFTVEJ1aWxkZXI6Om1ha2VBc3NpZ25Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYgbG9jYXRpb24sIEV4cHJlc3Npb25Ob2RlKiBsb2MsIE9wZXJhdG9yIG9wLCBFeHByZXNzaW9u
Tm9kZSogZXhwciwgYm9vbCBsb2NIYXNBc3NpZ25tZW50cywgYm9vbCBleHBySGFzQXNzaWdubWVu
dHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBzdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZW5kKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0xleGVyLmNwcAppbmRleCA5YWEyNjczMDMzMGQ2NTM4ZjQ4YjBjMDE1MzZiN2MyMzIxNTI3NWM1
Li45YzE1NTRhMDhhOWZlYTg5YjczMmUxY2I2OGEwMzNkN2MyMDgxNzEwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIHZvaWQgTGV4ZXI8
VD46OnNldENvZGUoY29uc3QgU291cmNlQ29kZSYgc291cmNlLCBQYXJzZXJBcmVuYSogYXJlbmEp
CiAgICAgaWYgKCFzb3VyY2VTdHJpbmcuaXNOdWxsKCkpCiAgICAgICAgIHNldENvZGVTdGFydChz
b3VyY2VTdHJpbmcpOwogICAgIGVsc2UKLSAgICAgICAgbV9jb2RlU3RhcnQgPSAwOworICAgICAg
ICBtX2NvZGVTdGFydCA9IG51bGxwdHI7CiAKICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7CiAgICAg
bV9zb3VyY2VPZmZzZXQgPSBzb3VyY2Uuc3RhcnRPZmZzZXQoKTsKQEAgLTEyMjcsNyArMTIyNyw3
IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSB0eXBl
bmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSCiAgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBt
YWtlSWRlbnRpZmllcihtX2J1ZmZlcjguZGF0YSgpLCBtX2J1ZmZlcjguc2l6ZSgpKTsKICAgICAg
ICAgbV9idWZmZXI4LnNocmluaygwKTsKICAgICB9IGVsc2UKLSAgICAgICAgdG9rZW5EYXRhLT5p
ZGVudCA9IDA7CisgICAgICAgIHRva2VuRGF0YS0+aWRlbnQgPSBudWxscHRyOwogCiAgICAgcmV0
dXJuIFN0cmluZ1BhcnNlZFN1Y2Nlc3NmdWxseTsKIH0KQEAgLTEzODIsNyArMTM4Miw3IEBAIHRl
bXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gYXV0byBMZXhlcjxUPjo6cGFyc2VTdHJp
bmdTbG93Q2FzZShKU1Rva2VuRGF0CiAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKICAgICAg
ICAgdG9rZW5EYXRhLT5pZGVudCA9IG1ha2VJZGVudGlmaWVyKG1fYnVmZmVyMTYuZGF0YSgpLCBt
X2J1ZmZlcjE2LnNpemUoKSk7CiAgICAgZWxzZQotICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0g
MDsKKyAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9IG51bGxwdHI7CiAKICAgICBtX2J1ZmZlcjE2
LnNocmluaygwKTsKICAgICByZXR1cm4gU3RyaW5nUGFyc2VkU3VjY2Vzc2Z1bGx5OwpAQCAtMjY4
MSw3ICsyNjgxLDcgQEAgSlNUb2tlblR5cGUgTGV4ZXI8VD46OnNjYW5UZW1wbGF0ZVN0cmluZyhK
U1Rva2VuKiB0b2tlblJlY29yZCwgUmF3U3RyaW5nc0J1aWxkTW8KIHRlbXBsYXRlIDx0eXBlbmFt
ZSBUPgogdm9pZCBMZXhlcjxUPjo6Y2xlYXIoKQogewotICAgIG1fYXJlbmEgPSAwOworICAgIG1f
YXJlbmEgPSBudWxscHRyOwogCiAgICAgVmVjdG9yPExDaGFyPiBuZXdCdWZmZXI4OwogICAgIG1f
YnVmZmVyOC5zd2FwKG5ld0J1ZmZlcjgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9MZXhlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5o
CmluZGV4IDdjZmMwM2Y1MTg3MjcxMTUwMmIyMWFlNTIwNjZjMDI5MGNiNTViZDQuLmNjMWFkYWY1
YjY1MTY3YzViM2M5ZTI2MmQ4NDI4ODI5NmUxOWViOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTGV4ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL0xleGVyLmgKQEAgLTM3OCw3ICszNzgsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVG9rZW5UeXBl
IExleGVyPFQ+OjpsZXhFeHBlY3RJZGVudGlmaWVyKEpTVG9rZW4qIHRva2VuUmVjb3JkLCBPcAog
ICAgICAgICAmJiAhbV9wYXJzaW5nQnVpbHRpbkZ1bmN0aW9uCiAjZW5kaWYKICAgICAgICAgKQot
ICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gMDsKKyAgICAgICAgdG9rZW5EYXRhLT5pZGVudCA9
IG51bGxwdHI7CiAgICAgZWxzZQogICAgICAgICB0b2tlbkRhdGEtPmlkZW50ID0gbWFrZUxDaGFy
SWRlbnRpZmllcihzdGFydCwgcHRyIC0gc3RhcnQpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuY3BwCmluZGV4IDlkMWNmYTRmMTc2MTMwMmEzM2JiYWUzMWVmNjBmZGZjYWYyMDdk
ZjUuLjY1YzE2MDEyOGM4YTMyYTgyZWZhMWJmOTE0NDdjZDY4YTUxZDIxZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAgU2NvcGVOb2Rl
OjpTY29wZU5vZGUoUGFyc2VyQXJlbmEmIHBhcnNlckFyZW5hLCBjb25zdCBKU1Rva2VuTG9jYXRp
b24mIHN0YXJ0TG9jYXQKICAgICAsIG1fZmVhdHVyZXMoaW5TdHJpY3RDb250ZXh0ID8gU3RyaWN0
TW9kZUZlYXR1cmUgOiBOb0ZlYXR1cmVzKQogICAgICwgbV9pbm5lckFycm93RnVuY3Rpb25Db2Rl
RmVhdHVyZXMoTm9Jbm5lckFycm93RnVuY3Rpb25GZWF0dXJlcykKICAgICAsIG1fbnVtQ29uc3Rh
bnRzKDApCi0gICAgLCBtX3N0YXRlbWVudHMoMCkKKyAgICAsIG1fc3RhdGVtZW50cyhudWxscHRy
KQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVz
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNzRlYmNhZTVi
MGJmNjRhZTc3OTJkNzg5NzFhMTgwYjg4NjhhNjAyMS4uNDNkMTMxYzgzNThjZTllMzE5YmQzOWU5
NzVkOTFlMGFlM2Y3MGQyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAt
MTc0LDcgKzE3NCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBFeHByZXNzaW9uTm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBSZXN1bHRUeXBlID0gUmVzdWx0VHlwZTo6dW5rbm93blR5
cGUoKSk7CiAKICAgICBwdWJsaWM6Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSAwKSA9
IDA7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSBudWxscHRyKSA9IDA7CiAKICAgICAg
ICAgdmlydHVhbCBib29sIGlzTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAg
ICAgdmlydHVhbCBib29sIGlzU3RyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTIz
NSw3ICsyMzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU3RhdGVtZW50Tm9kZShjb25z
dCBKU1Rva2VuTG9jYXRpb24mKTsKIAogICAgIHB1YmxpYzoKLSAgICAgICAgdmlydHVhbCB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9u
ID0gMCkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogZGVzdGluYXRpb24gPSBudWxscHRyKSA9IDA7CiAKICAgICAg
ICAgdm9pZCBzZXRMb2ModW5zaWduZWQgZmlyc3RMaW5lLCB1bnNpZ25lZCBsYXN0TGluZSwgaW50
IHN0YXJ0T2Zmc2V0LCBpbnQgbGluZVN0YXJ0T2Zmc2V0KTsKICAgICAgICAgdW5zaWduZWQgbGFz
dExpbmUoKSBjb25zdCB7IHJldHVybiBtX2xhc3RMaW5lOyB9CkBAIC0yOTIsNyArMjkyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNDb25zdGFudCgpIGNvbnN0ICBvdmVycmlk
ZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIHZpcnR1YWwgSlNWYWx1ZSBqc1ZhbHVlKEJ5dGVj
b2RlR2VuZXJhdG9yJikgY29uc3QgPSAwOwogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZW1pdEJ5
dGVjb2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwmIHRydWVU
YXJnZXQsIExhYmVsJiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKSBvdmVycmlkZTsKICAg
ICB9OwogCkBAIC0zMjIsNyArMzIyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE51bWJl
ck5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgZG91YmxlIHZhbHVlKTsKICAgICAgICAgZG91
YmxlIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQogICAgICAgICB2aXJ0dWFsIGJv
b2wgaXNJbnRlZ2VyTm9kZSgpIGNvbnN0ID0gMDsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBmaW5hbDsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBmaW5hbDsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNOdW1i
ZXIoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CkBAIC01NDksNyArNTQ5LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIHJhdygpIHsgcmV0dXJuIG1f
cmF3OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fY29va2Vk
OwogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX3JhdzsKQEAgLTU3Nyw3ICs1NzcsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGVtcGxhdGVFeHByZXNzaW9uTGlzdE5vZGUqIHRlbXBs
YXRlRXhwcmVzc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX3RlbXBsYXRlRXhwcmVzc2lvbnM7IH0K
IAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0
cikgb3ZlcnJpZGU7CiAKICAgICAgICAgVGVtcGxhdGVTdHJpbmdMaXN0Tm9kZSogbV90ZW1wbGF0
ZVN0cmluZ3M7CiAgICAgICAgIFRlbXBsYXRlRXhwcmVzc2lvbkxpc3ROb2RlKiBtX3RlbXBsYXRl
RXhwcmVzc2lvbnM7CkBAIC01OTAsNyArNTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFRlbXBsYXRlTGl0ZXJhbE5vZGUqIHRlbXBsYXRlTGl0ZXJhbCgpIGNvbnN0IHsgcmV0dXJuIG1f
dGVtcGxhdGVMaXRlcmFsOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRl
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX3RhZzsKICAgICAgICAgVGVtcGxhdGVMaXRlcmFsTm9kZSogbV90ZW1wbGF0ZUxpdGVyYWw7
CkBAIC02MDEsNyArNjAxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlZ0V4cE5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRlbnRpZmllciYgcGF0dGVybiwgY29uc3Qg
SWRlbnRpZmllciYgZmxhZ3MpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBtX3BhdHRlcm47CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1fZmxhZ3M7CkBAIC02
MTIsNyArNjEyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRoaXNOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgU3VwZXJO
b2RlIGZpbmFsIDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKQEAgLTYyMSw3ICs2MjEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaXNTdXBlck5vZGUo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIEltcG9y
dE5vZGUgZmluYWwgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUsIHB1YmxpYyBUaHJvd2FibGVFeHBy
ZXNzaW9uRGF0YSB7CkBAIC02MzAsNyArNjMwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBw
cml2YXRlOgogICAgICAgICBib29sIGlzSW1wb3J0Tm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIHRydWU7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBv
dmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC02
NDksNyArNjQ5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAgICBi
b29sIGlzTmV3VGFyZ2V0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAgICBS
ZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9
IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgIH07CiAKICAg
ICBjbGFzcyBJbXBvcnRNZXRhTm9kZSBmaW5hbCA6IHB1YmxpYyBNZXRhUHJvcGVydHlOb2RlIHsK
QEAgLTY1OCw3ICs2NTgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgaXNJbXBvcnRNZXRhKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTY3MCw3ICs2NzAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcigpIGNv
bnN0IHsgcmV0dXJuIG1faWRlbnQ7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc1B1
cmUoQnl0ZWNvZGVHZW5lcmF0b3ImKSBjb25zdCBvdmVycmlkZTsKICAgICAgICAgYm9vbCBpc0xv
Y2F0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNzA3LDcgKzcwNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIEVsZW1lbnROb2RlKiBlbGVtZW50cygpIGNv
bnN0IHsgcmV0dXJuIG1fZWxlbWVudDsgfQogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVy
SUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3Zl
cnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc1Np
bXBsZUFycmF5KCkgY29uc3Qgb3ZlcnJpZGU7CiAKQEAgLTc5NSw3ICs3OTUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgYm9vbCBpc09iamVjdExpdGVyYWwoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiB0cnVlOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIFByb3BlcnR5TGlzdE5vZGUq
IG1fbGlzdDsKICAgICB9OwpAQCAtODEwLDcgKzgxMCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzKCkgY29uc3QgeyByZXR1cm4gbV9zdWJz
Y3JpcHRIYXNBc3NpZ25tZW50czsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzTG9j
YXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAgICAgICAgIGJvb2wgaXNC
cmFja2V0QWNjZXNzb3JOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAt
ODI4LDcgKzgyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAog
ICAgICAgICBib29sIGlzTG9jYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9
CiAgICAgICAgIGJvb2wgaXNEb3RBY2Nlc3Nvck5vZGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biB0cnVlOyB9CkBAIC04NDQsNyArODQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBleHByZXNzaW9uKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9
CiAgICAgICAgIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQq
ID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgICAgIAogICAgICAgICBib29sIGlzU3ByZWFkRXhw
cmVzc2lvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKQEAgLTg1Nyw3ICs4NTcsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIGV4cHJlc3Npb24oKSBjb25zdCB7IHJldHVybiBt
X2V4cHJlc3Npb247IH0KICAgICAgICAgCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJ
RCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVy
cmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAgICAgCiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgfTsKQEAgLTg3MSw3ICs4NzEsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKIAogICAgIHBy
aXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRv
ciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJp
ZGU7CiAgICAgfTsKIAogICAgIGNsYXNzIEFyZ3VtZW50c05vZGUgZmluYWwgOiBwdWJsaWMgUGFy
c2VyQXJlbmFGcmVlYWJsZSB7CkBAIC04ODgsNyArODg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIE5ld0V4cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2Rl
KiwgQXJndW1lbnRzTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlk
ZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByOwogICAgICAgICBBcmd1bWVudHNOb2RlKiBtX2FyZ3M7CkBAIC04OTksNyArODk5
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV2YWxGdW5jdGlvbkNhbGxOb2RlKGNvbnN0
IEpTVG9rZW5Mb2NhdGlvbiYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYg
ZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzRnVuY3Rpb25D
YWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC05MTEsNyArOTExLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbFZhbHVlTm9kZShjb25zdCBK
U1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSosIEFyZ3VtZW50c05vZGUqLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBi
b29sIGlzRnVuY3Rpb25DYWxsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBA
IC05MjQsNyArOTI0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmN0aW9uQ2FsbFJl
c29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBBcmd1
bWVudHNOb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90LCBjb25zdCBKU1RleHRQb3Np
dGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90RW5kKTsKIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CiAKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KIApAQCAtOTM3LDcgKzkzNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBGdW5jdGlvbkNhbGxCcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHBy
ZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgYm9vbCBzdWJzY3Jp
cHRIYXNBc3NpZ25tZW50cywgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBk
aXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNh
bGwoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTk1Miw3ICs5NTIsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRnVuY3Rpb25DYWxsRG90Tm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRlbnRpZmllciYsIEFy
Z3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBv
c2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBv
dmVycmlkZTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uQ2FsbCgp
IGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTk4Myw3ICs5ODMsNyBAQCBuYW1l
c3BhY2UgSlNDIHsKICN1bmRlZiBKU0NfREVDTEFSRV9CWVRFQ09ERV9JTlRSSU5TSUNfRlVOQ1RJ
T05TCiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51
bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNGdW5jdGlvbkNhbGwoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiBtX3R5cGUgPT0gVHlwZTo6RnVuY3Rpb247IH0KIApAQCAtOTk4LDcg
Kzk5OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBDYWxsRnVuY3Rpb25DYWxsRG90Tm9k
ZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgY29uc3QgSWRl
bnRpZmllciYsIEFyZ3VtZW50c05vZGUqLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2
b3RFbmQsIHNpemVfdCBkaXN0YW5jZVRvSW5uZXJtb3N0Q2FsbE9yQXBwbHkpOwogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlk
ZTsKICAgICAgICAgc2l6ZV90IG1fZGlzdGFuY2VUb0lubmVybW9zdENhbGxPckFwcGx5OwogICAg
IH07CiAgICAgCkBAIC0xMDA3LDcgKzEwMDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
QXBwbHlGdW5jdGlvbkNhbGxEb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgQXJndW1lbnRzTm9kZSosIGNvbnN0IEpT
VGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNv
bnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCwgc2l6ZV90IGRpc3RhbmNlVG9Jbm5lcm1vc3RD
YWxsT3JBcHBseSk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgICAgICBzaXplX3QgbV9kaXN0YW5jZVRvSW5u
ZXJtb3N0Q2FsbE9yQXBwbHk7CiAgICAgfTsKIApAQCAtMTAxNiw3ICsxMDE2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZVJlc29sdmVOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYsIGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0
IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RF
bmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBu
dWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGlzRGVsZXRlTm9kZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTAyOCw3ICsxMDI4LDcgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIERlbGV0ZUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBib29s
IGlzRGVsZXRlTm9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMTA0MSw3
ICsxMDQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZURvdE5vZGUoY29uc3Qg
SlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXIm
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dFN0YXJ0LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAog
ICAgICAgICBib29sIGlzRGVsZXRlTm9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IApAQCAtMTA1NCw3ICsxMDU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIERlbGV0ZVZh
bHVlTm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSopOwogCiAgICAg
cHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVy
cmlkZTsKIAogICAgICAgICBib29sIGlzRGVsZXRlTm9kZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHRydWU7IH0KIApAQCAtMTA2Niw3ICsxMDY2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAg
IFZvaWROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBl
bWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92
ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTEw
NzgsNyArMTA3OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudDsgfQogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgIH07CkBAIC0xMDg4LDcgKzEw
ODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgVHlwZU9mVmFsdWVOb2RlKGNvbnN0IEpT
VG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX2V4cHI7CiAgICAgfTsKQEAgLTEwOTgsMTAgKzEwOTgsMTAgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFByZWZpeE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9u
JiwgRXhwcmVzc2lvbk5vZGUqLCBPcGVyYXRvciwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
LCBjb25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RTdGFydCwgY29uc3QgSlNUZXh0UG9zaXRpb24m
IGRpdm90RW5kKTsKIAogICAgIHByb3RlY3RlZDoKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKLSAg
ICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0UmVzb2x2ZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdEJyYWNr
ZXQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApOwotICAgICAgICB2aXJ0dWFs
IFJlZ2lzdGVySUQqIGVtaXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDAp
OworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIFJlZ2lzdGVy
SUQqIGVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRy
KTsKKyAgICAgICAgdmlydHVhbCBSZWdpc3RlcklEKiBlbWl0QnJhY2tldChCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cik7CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJ
RCogZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cik7CiAK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAgT3BlcmF0b3IgbV9vcGVy
YXRvcjsKQEAgLTExMTIsMTAgKzExMTIsMTAgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFBv
c3RmaXhOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiwgT3BlcmF0
b3IsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRp
dm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRl
OgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwotICAgICAgICBSZWdpc3RlcklEKiBlbWl0UmVzb2x2
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Ci0gICAgICAg
IFJlZ2lzdGVySUQqIGVtaXRCcmFja2V0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdERvdChCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3Zl
cnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRSZXNvbHZlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCog
ZW1pdEJyYWNrZXQoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92
ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgVW5h
cnlPcE5vZGUgOiBwdWJsaWMgRXhwcmVzc2lvbk5vZGUgewpAQCAtMTEyOCw3ICsxMTI4LDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE9wY29kZUlEIG9wY29kZUlEKCkgY29uc3QgeyByZXR1
cm4gbV9vcGNvZGVJRDsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9leHByOwogICAgICAgICBPcGNvZGVJRCBtX29wY29kZUlEOwpAQCAtMTEzOSw3ICsxMTM5LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFVuYXJ5UGx1c05vZGUoY29uc3QgSlNUb2tlbkxv
Y2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIHN0cmlwVW5hcnlQbHVzKCkgb3ZlcnJpZGUgeyByZXR1cm4gZXhwcigpOyB9CiAg
ICAgfTsKQEAgLTExNjYsNyArMTE2Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBCaW5h
cnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBF
eHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlELCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMp
OwogICAgICAgICBCaW5hcnlPcE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgUmVzdWx0VHlw
ZSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIxLCBFeHByZXNzaW9uTm9kZSogZXhwcjIsIE9wY29kZUlE
LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMpOwogCi0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRT
dHJjYXQoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZGVzdGluYXRp
b24sIFJlZ2lzdGVySUQqIGxocyA9IDAsIFJlYWRNb2RpZnlSZXNvbHZlTm9kZSogZW1pdEV4cHJl
c3Npb25JbmZvRm9yTWUgPSAwKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdFN0cmNhdChCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqIGRlc3RpbmF0aW9uLCBSZWdpc3RlcklEKiBsaHMg
PSBudWxscHRyLCBSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUqIGVtaXRFeHByZXNzaW9uSW5mb0Zvck1l
ID0gbnVsbHB0cik7CiAgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlSW5Db25kaXRpb25Db250ZXh0
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwmIHRydWVUYXJnZXQsIExhYmVsJiBmYWxzZVRhcmdl
dCwgRmFsbFRocm91Z2hNb2RlKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bGhzKCkgeyByZXR1cm4gbV9leHByMTsgfTsKQEAgLTExNzgsNyArMTE3OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBlbnVtIGNsYXNzIFVJbnQzMlJlc3VsdCA6IHVpbnQ4X3QgeyBVSW50
MzIsIENvbnN0YW50LCB9OwogCiAgICAgICAgIHZvaWQgdHJ5Rm9sZFRvQnJhbmNoKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgVHJpU3RhdGUmIGJyYW5jaENvbmRpdGlvbiwgRXhwcmVzc2lvbk5vZGUqJiBi
cmFuY2hFeHByZXNzaW9uKTsKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0
ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxs
cHRyKSBvdmVycmlkZTsKIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgT3Bjb2RlSUQgb3Bjb2Rl
SUQoKSBjb25zdCB7IHJldHVybiBtX29wY29kZUlEOyB9CkBAIC0xMjY4LDcgKzEyNjgsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgVGhyb3dhYmxlQmluYXJ5T3BOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBPcGNvZGVJRCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAg
fTsKICAgICAKICAgICBjbGFzcyBJbnN0YW5jZU9mTm9kZSBmaW5hbCA6IHB1YmxpYyBUaHJvd2Fi
bGVCaW5hcnlPcE5vZGUgewpAQCAtMTI3Niw3ICsxMjc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIEluc3RhbmNlT2ZOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25O
b2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdubWVu
dHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBu
dWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgSW5Ob2RlIGZpbmFsIDogcHVi
bGljIFRocm93YWJsZUJpbmFyeU9wTm9kZSB7CkBAIC0xMjg0LDcgKzEyODQsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgSW5Ob2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgRXF1YWxOb2RlIGZpbmFs
IDogcHVibGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMjkyLDcgKzEyOTIsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgRXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0SGFzQXNzaWdu
bWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgTm90RXF1YWxOb2RlIGZp
bmFsIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMzA1LDcgKzEzMDUsNyBAQCBuYW1lc3Bh
Y2UgSlNDIHsKICAgICAgICAgU3RyaWN0RXF1YWxOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYs
IEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIyLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsK
KyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVn
aXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICB9OwogCiAgICAgY2xhc3MgTm90U3Ry
aWN0RXF1YWxOb2RlIGZpbmFsIDogcHVibGljIEJpbmFyeU9wTm9kZSB7CkBAIC0xMzM0LDcgKzEz
MzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTG9naWNhbE9wTm9kZShjb25zdCBKU1Rv
a2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogZXhwcjEsIEV4cHJlc3Npb25Ob2RlKiBleHBy
MiwgTG9naWNhbE9wZXJhdG9yKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgZW1pdEJ5dGVj
b2RlSW5Db25kaXRpb25Db250ZXh0KEJ5dGVjb2RlR2VuZXJhdG9yJiwgTGFiZWwmIHRydWVUYXJn
ZXQsIExhYmVsJiBmYWxzZVRhcmdldCwgRmFsbFRocm91Z2hNb2RlKSBvdmVycmlkZTsKIAogICAg
ICAgICBMb2dpY2FsT3BlcmF0b3IgbV9vcGVyYXRvcjsKQEAgLTEzNzYsNyArMTM3Niw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBDb25kaXRpb25hbE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGxvZ2ljYWwsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhw
cmVzc2lvbk5vZGUqIGV4cHIyKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQq
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5v
ZGUqIG1fbG9naWNhbDsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjE7CkBAIC0xMzg4
LDcgKzEzODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVhZE1vZGlmeVJlc29sdmVO
b2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwg
RXhwcmVzc2lvbk5vZGUqICByaWdodCwgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBK
U1RleHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBj
b25zdCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBtX2lkZW50OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9yaWdo
dDsKQEAgLTE0MDEsNyArMTQwMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTaG9ydENp
cmN1aXRSZWFkTW9kaWZ5UmVzb2x2ZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3Qg
SWRlbnRpZmllciYsIE9wZXJhdG9yLCBFeHByZXNzaW9uTm9kZSogIHJpZ2h0LCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIp
IG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAgICAgICAg
IEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTQxNiw3ICsxNDE2LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIoKSBjb25zdCB7IHJl
dHVybiBtX2lkZW50OyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0
Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOwor
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1faWRlbnQ7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX3JpZ2h0OwpAQCAtMTQyOCw3ICsx
NDI4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFJlYWRNb2RpZnlCcmFja2V0Tm9kZShj
b25zdCBKU1Rva2VuTG9jYXRpb24mLCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5v
ZGUqIHN1YnNjcmlwdCwgT3BlcmF0b3IsIEV4cHJlc3Npb25Ob2RlKiByaWdodCwgYm9vbCBzdWJz
Y3JpcHRIYXNBc3NpZ25tZW50cywgYm9vbCByaWdodEhhc0Fzc2lnbm1lbnRzLCBjb25zdCBKU1Rl
eHRQb3NpdGlvbiYgZGl2b3QsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdFN0YXJ0LCBjb25z
dCBKU1RleHRQb3NpdGlvbiYgZGl2b3RFbmQpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgUmVn
aXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAw
KSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHBy
ZXNzaW9uTm9kZSogbV9iYXNlOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9zdWJzY3JpcHQ7
CkBAIC0xNDQzLDcgKzE0NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgU2hvcnRDaXJj
dWl0UmVhZE1vZGlmeUJyYWNrZXROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Np
b25Ob2RlKiBiYXNlLCBFeHByZXNzaW9uTm9kZSogc3Vic2NyaXB0LCBPcGVyYXRvciwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIp
IG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTE0NTgsNyArMTQ1OCw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBBc3NpZ25CcmFja2V0Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24m
LCBFeHByZXNzaW9uTm9kZSogYmFzZSwgRXhwcmVzc2lvbk5vZGUqIHN1YnNjcmlwdCwgRXhwcmVz
c2lvbk5vZGUqIHJpZ2h0LCBib29sIHN1YnNjcmlwdEhhc0Fzc2lnbm1lbnRzLCBib29sIHJpZ2h0
SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0
UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAK
ICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIp
IG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIEV4
cHJlc3Npb25Ob2RlKiBtX3N1YnNjcmlwdDsKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgICAgICBBc3NpZ25Eb3ROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiBiYXNlLCBjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqIHJp
Z2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZv
dCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9u
JiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jh
c2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBAIC0xNDg1LDcgKzE0ODUs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgUmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBP
cGVyYXRvciwgRXhwcmVzc2lvbk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMs
IGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90
U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgot
ICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdp
c3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAg
ICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1faWRlbnQ7CkBAIC0xNDk5LDcgKzE0OTksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
U2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgRXhw
cmVzc2lvbk5vZGUqIGJhc2UsIGNvbnN0IElkZW50aWZpZXImLCBPcGVyYXRvciwgRXhwcmVzc2lv
bk5vZGUqIHJpZ2h0LCBib29sIHJpZ2h0SGFzQXNzaWdubWVudHMsIGNvbnN0IEpTVGV4dFBvc2l0
aW9uJiBkaXZvdCwgY29uc3QgSlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4
dFBvc2l0aW9uJiBkaXZvdEVuZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklE
KiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiBtX2Jhc2U7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CkBAIC0xNTEz
LDcgKzE1MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgQXNzaWduRXJyb3JOb2RlKGNv
bnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdCwgY29uc3Qg
SlNUZXh0UG9zaXRpb24mIGRpdm90U3RhcnQsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiBkaXZvdEVu
ZCk7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51
bGxwdHIpIG92ZXJyaWRlOwogICAgIH07CiAgICAgCiAgICAgY2xhc3MgQ29tbWFOb2RlIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlIHsKQEAgLTE1MjUsNyArMTUyNSw3IEBAIG5hbWVzcGFj
ZSBKU0MgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBpc0NvbW1hTm9kZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVj
b2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHBy
OwogICAgICAgICBDb21tYU5vZGUqIG1fbmV4dCB7IG51bGxwdHIgfTsKQEAgLTE1NjAsNyArMTU2
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBTdGF0ZW1lbnROb2RlKiBsYXN0U3RhdGVt
ZW50KCkgY29uc3Q7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZv
aWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRy
KSBvdmVycmlkZTsKIAogICAgICAgICBib29sIGhhc0NvbXBsZXRpb25WYWx1ZSgpIGNvbnN0IG92
ZXJyaWRlOwogICAgICAgICBib29sIGhhc0Vhcmx5QnJlYWtPckNvbnRpbnVlKCkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC0xNTc1LDcgKzE1NzUsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRW1w
dHlTdGF0ZW1lbnROb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYpOwogCiAgICAgcHJpdmF0ZToK
LSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklE
KiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBo
YXNDb21wbGV0aW9uVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQogICAg
ICAgICBib29sIGlzRW1wdHlTdGF0ZW1lbnQoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVl
OyB9CkBAIC0xNTg5LDcgKzE1ODksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBp
c0RlYnVnZ2VyU3RhdGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAg
ICAgICAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlk
ZTsKICAgICB9OwogCiAgICAgY2xhc3MgRXhwclN0YXRlbWVudE5vZGUgZmluYWwgOiBwdWJsaWMg
U3RhdGVtZW50Tm9kZSB7CkBAIC0xNjAxLDcgKzE2MDEsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBwcml2YXRlOgogICAgICAgICBib29sIGlzRXhwclN0YXRlbWVudCgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuIHRydWU7IH0KIAotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdl
bmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlk
ZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByOwogICAgIH07CkBAIC0xNjEwLDcg
KzE2MTAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBwdWJsaWM6CiAgICAgICAgIERlY2xhcmF0
aW9uU3RhdGVtZW50KGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKik7CiAg
ICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
LCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAg
ICAgICAgYm9vbCBoYXNDb21wbGV0aW9uVmFsdWUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBm
YWxzZTsgfQogCkBAIC0xNjIyLDcgKzE2MjIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
RW1wdHlWYXJFeHByZXNzaW9uKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZp
ZXImKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJl
Z2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0g
bnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsK
ICAgICB9OwpAQCAtMTYzMiw3ICsxNjMyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEVt
cHR5TGV0RXhwcmVzc2lvbihjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBjb25zdCBJZGVudGlmaWVy
Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51
bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1faWRlbnQ7CiAg
ICAgfTsKQEAgLTE2NDIsNyArMTY0Miw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBJZkVs
c2VOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBjb25kaXRpb24s
IFN0YXRlbWVudE5vZGUqIGlmQmxvY2ssIFN0YXRlbWVudE5vZGUqIGVsc2VCbG9jayk7CiAKICAg
ICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYs
IFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5
dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAg
ICAgYm9vbCB0cnlGb2xkQnJlYWtBbmRDb250aW51ZShCeXRlY29kZUdlbmVyYXRvciYsIFN0YXRl
bWVudE5vZGUqIGlmQmxvY2ssCiAgICAgICAgICAgICBMYWJlbComIHRydWVUYXJnZXQsIEZhbGxU
aHJvdWdoTW9kZSYpOwogCkBAIC0xNjU2LDcgKzE2NTYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgRG9XaGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9kZSos
IEV4cHJlc3Npb25Ob2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBu
dWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsK
ICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKQEAgLTE2NjcsNyArMTY2Nyw3IEBAIG5h
bWVzcGFjZSBKU0MgewogICAgICAgICBXaGlsZU5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwg
RXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKik7CiAKICAgICBwcml2YXRlOgotICAgICAg
ICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9k
ZSogbV9leHByOwogICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX3N0YXRlbWVudDsKQEAgLTE2Nzks
NyArMTY3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGb3JOb2RlKGNvbnN0IEpTVG9r
ZW5Mb2NhdGlvbiYsIEV4cHJlc3Npb25Ob2RlKiBleHByMSwgRXhwcmVzc2lvbk5vZGUqIGV4cHIy
LCBFeHByZXNzaW9uTm9kZSogZXhwcjMsIFN0YXRlbWVudE5vZGUqLCBWYXJpYWJsZUVudmlyb25t
ZW50Jik7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVy
cmlkZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByMTsKICAgICAgICAgRXhwcmVz
c2lvbk5vZGUqIG1fZXhwcjI7CkBAIC0xNzEyLDcgKzE3MTIsNyBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgUmVnaXN0ZXJJRCogdHJ5R2V0Qm91bmRMb2NhbChCeXRlY29kZUdlbmVyYXRvciYp
OwogICAgICAgICB2b2lkIGVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogcHJvcGVydHlOYW1lKTsKIAotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1p
dEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVy
cmlkZTsKICAgICB9OwogICAgIAogICAgIGNsYXNzIEZvck9mTm9kZSBmaW5hbCA6IHB1YmxpYyBF
bnVtZXJhdGlvbk5vZGUgewpAQCAtMTcyMyw3ICsxNzIzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIGJvb2wgaXNGb3JBd2FpdCgpIGNvbnN0IHsgcmV0dXJuIG1faXNGb3JBd2FpdDsgfQog
CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAK
ICAgICAgICAgY29uc3QgYm9vbCBtX2lzRm9yQXdhaXQ7CiAgICAgfTsKQEAgLTE3MzYsNyArMTcz
Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wgaGFzQ29t
cGxldGlvblZhbHVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAg
Ym9vbCBpc0NvbnRpbnVlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotICAgICAg
ICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlm
aWVyJiBtX2lkZW50OwogICAgIH07CkBAIC0xNzQ5LDcgKzE3NDksNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICBwcml2YXRlOgogICAgICAgICBib29sIGhhc0NvbXBsZXRpb25WYWx1ZSgpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgICAgIGJvb2wgaXNCcmVhaygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikg
b3ZlcnJpZGU7CiAKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbV9pZGVudDsKICAgICB9OwpA
QCAtMTc2MSw3ICsxNzYxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEV4cHJlc3Npb25O
b2RlKiB2YWx1ZSgpIHsgcmV0dXJuIG1fdmFsdWU7IH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAg
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSAwKSBv
dmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBS
ZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIGJvb2wgaXNSZXR1cm5O
b2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCkBAIC0xNzczLDcgKzE3NzMs
NyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgV2l0aE5vZGUoY29uc3QgSlNUb2tlbkxvY2F0
aW9uJiwgRXhwcmVzc2lvbk5vZGUqLCBTdGF0ZW1lbnROb2RlKiwgY29uc3QgSlNUZXh0UG9zaXRp
b24mIGRpdm90LCB1aW50MzJfdCBleHByZXNzaW9uTGVuZ3RoKTsKIAogICAgIHByaXZhdGU6Ci0g
ICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2V4cHI7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpAQCAt
MTc4OSw3ICsxNzg5LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBib29sIGhhc0NvbXBsZXRpb25WYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIG1fc3Rh
dGVtZW50LT5oYXNDb21wbGV0aW9uVmFsdWUoKTsgfQotICAgICAgICB2b2lkIGVtaXRCeXRlY29k
ZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAg
IHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxs
cHRyKSBvdmVycmlkZTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtX25hbWU7CiAgICAg
ICAgIFN0YXRlbWVudE5vZGUqIG1fc3RhdGVtZW50OwpAQCAtMTgwMCw3ICsxODAwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIFRocm93Tm9kZShjb25zdCBKU1Rva2VuTG9jYXRpb24mLCBF
eHByZXNzaW9uTm9kZSopOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAg
ICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVs
bHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICB9
OwpAQCAtMTgxMSw3ICsxODExLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIFRyeU5vZGUo
Y29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgU3RhdGVtZW50Tm9kZSogdHJ5QmxvY2ssIERlc3RydWN0
dXJpbmdQYXR0ZXJuTm9kZSogY2F0Y2hQYXR0ZXJuLCBTdGF0ZW1lbnROb2RlKiBjYXRjaEJsb2Nr
LCBWYXJpYWJsZUVudmlyb25tZW50JiBjYXRjaEVudmlyb25tZW50LCBTdGF0ZW1lbnROb2RlKiBm
aW5hbGx5QmxvY2spOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0
cikgb3ZlcnJpZGU7CiAKICAgICAgICAgU3RhdGVtZW50Tm9kZSogbV90cnlCbG9jazsKICAgICAg
ICAgRGVzdHJ1Y3R1cmluZ1BhdHRlcm5Ob2RlKiBtX2NhdGNoUGF0dGVybjsKQEAgLTE5MTIsNyAr
MTkxMiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wg
c2NvcGVJc0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7
CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAgICAgdW5zaWduZWQgbV9zdGFydENvbHVtbjsK
ICAgICAgICAgdW5zaWduZWQgbV9lbmRDb2x1bW47CiAgICAgfTsKQEAgLTE5MjcsNyArMTkyNyw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgc2NvcGVJ
c0Z1bmN0aW9uID0gZmFsc2U7CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAg
ICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBu
dWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsKICAgICB9
OwpAQCAtMTk0Nyw3ICsxOTQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAg
IHByaXZhdGU6Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwg
UmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgICAg
ICB1bnNpZ25lZCBtX3N0YXJ0Q29sdW1uOwogICAgICAgICB1bnNpZ25lZCBtX2VuZENvbHVtbjsK
ICAgICAgICAgUmVmPE1vZHVsZVNjb3BlRGF0YT4gbV9tb2R1bGVTY29wZURhdGE7CkBAIC0yMDA4
LDcgKzIwMDgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1v
ZHVsZU5hbWUoKSBjb25zdCB7IHJldHVybiBtX21vZHVsZU5hbWU7IH0KIAogICAgIHByaXZhdGU6
Ci0gICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIGFu
YWx5emVNb2R1bGUoTW9kdWxlQW5hbHl6ZXImKSBvdmVycmlkZTsKIAogICAgICAgICBJbXBvcnRT
cGVjaWZpZXJMaXN0Tm9kZSogbV9zcGVjaWZpZXJMaXN0OwpAQCAtMjAyMiw3ICsyMDIyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIE1vZHVsZU5hbWVOb2RlKiBtb2R1bGVOYW1lKCkgY29u
c3QgeyByZXR1cm4gbV9tb2R1bGVOYW1lOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lk
IGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJp
ZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0
ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBhbmFseXplTW9kdWxlKE1v
ZHVsZUFuYWx5emVyJikgb3ZlcnJpZGU7CiAKICAgICAgICAgTW9kdWxlTmFtZU5vZGUqIG1fbW9k
dWxlTmFtZTsKQEAgLTIwMzYsNyArMjAzNiw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBj
b25zdCBJZGVudGlmaWVyJiBsb2NhbE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2xvY2FsTmFtZTsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOwog
ICAgICAgICBTdGF0ZW1lbnROb2RlKiBtX2RlY2xhcmF0aW9uOwogICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBtX2xvY2FsTmFtZTsKQEAgLTIwNDksNyArMjA0OSw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBjb25zdCBTdGF0ZW1lbnROb2RlJiBkZWNsYXJhdGlvbigpIGNvbnN0IHsgcmV0
dXJuICptX2RlY2xhcmF0aW9uOyB9CiAKICAgICBwcml2YXRlOgotICAgICAgICB2b2lkIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSBudWxscHRyKSBvdmVycmlkZTsKICAgICAgICAgdm9pZCBhbmFseXplTW9kdWxlKE1vZHVsZUFu
YWx5emVyJikgb3ZlcnJpZGU7CiAgICAgICAgIFN0YXRlbWVudE5vZGUqIG1fZGVjbGFyYXRpb247
CiAgICAgfTsKQEAgLTIwODksNyArMjA4OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBN
b2R1bGVOYW1lTm9kZSogbW9kdWxlTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbW9kdWxlTmFtZTsg
fQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5l
cmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2b2lkIGVtaXRCeXRl
Y29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7
CiAgICAgICAgIHZvaWQgYW5hbHl6ZU1vZHVsZShNb2R1bGVBbmFseXplciYpIG92ZXJyaWRlOwog
ICAgICAgICBFeHBvcnRTcGVjaWZpZXJMaXN0Tm9kZSogbV9zcGVjaWZpZXJMaXN0OwogICAgICAg
ICBNb2R1bGVOYW1lTm9kZSogbV9tb2R1bGVOYW1lIHsgbnVsbHB0ciB9OwpAQCAtMjE5MCw3ICsy
MTkwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKICAgICAgICAgRnVuY3Rpb25QYXJhbWV0ZXJzKiBw
YXJhbWV0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9wYXJhbWV0ZXJzOyB9CiAKLSAgICAgICAgdm9p
ZCBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJy
aWRlOworICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBpc0Z1bmN0aW9uTm9k
ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtMjIzNCw3ICsyMjM0LDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEZ1bmNFeHByTm9kZShjb25zdCBKU1Rva2VuTG9j
YXRpb24mLCBjb25zdCBJZGVudGlmaWVyJiwgRnVuY3Rpb25NZXRhZGF0YU5vZGUqLCBjb25zdCBT
b3VyY2VDb2RlJiwgRnVuY3Rpb25Nb2RlKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIFJlZ2lz
dGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkg
b3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVy
YXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgYm9vbCBp
c0Z1bmNFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICAgICB9OwpA
QCAtMjI0NCw3ICsyMjQ0LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIEFycm93RnVuY0V4
cHJOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIGNvbnN0IElkZW50aWZpZXImLCBGdW5jdGlv
bk1ldGFkYXRhTm9kZSosIGNvbnN0IFNvdXJjZUNvZGUmKTsKIAogICAgIHByaXZhdGU6Ci0gICAg
ICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVy
SUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAg
ICAgYm9vbCBpc0Fycm93RnVuY0V4cHJOb2RlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1
ZTsgfQogICAgIH07CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAg
ICAgTWV0aG9kRGVmaW5pdGlvbk5vZGUoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiwgY29uc3QgSWRl
bnRpZmllciYsIEZ1bmN0aW9uTWV0YWRhdGFOb2RlKiwgY29uc3QgU291cmNlQ29kZSYpOwogICAg
ICAgICAKICAgICBwcml2YXRlOgotICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdp
c3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51
bGxwdHIpIG92ZXJyaWRlOwogICAgIH07CiAKICAgICBjbGFzcyBZaWVsZEV4cHJOb2RlIGZpbmFs
IDogcHVibGljIEV4cHJlc3Npb25Ob2RlLCBwdWJsaWMgVGhyb3dhYmxlRXhwcmVzc2lvbkRhdGEg
ewpAQCAtMjI2NSw3ICsyMjY1LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgZGVs
ZWdhdGUoKSBjb25zdCB7IHJldHVybiBtX2RlbGVnYXRlOyB9CiAKICAgICBwcml2YXRlOgotICAg
ICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3Rl
cklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICBSZWdpc3RlcklEKiBlbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IG51bGxwdHIpIG92ZXJyaWRlOwogCiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2FyZ3VtZW50OwogICAgICAgICBib29sIG1fZGVsZWdhdGU7
CkBAIC0yMjc4LDcgKzIyNzgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgRXhwcmVzc2lv
bk5vZGUqIGFyZ3VtZW50KCkgY29uc3QgeyByZXR1cm4gbV9hcmd1bWVudDsgfQogCiAgICAgcHJp
dmF0ZToKLSAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiwgUmVnaXN0ZXJJRCogPSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlk
ZTsKIAogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hcmd1bWVudDsKICAgICB9OwpAQCAtMjMx
Myw3ICsyMzEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaGFzSW5zdGFuY2VG
aWVsZHMoKSBjb25zdCB7IHJldHVybiBtX2NsYXNzRWxlbWVudHMgPyBtX2NsYXNzRWxlbWVudHMt
Pmhhc0luc3RhbmNlRmllbGRzKCkgOiBmYWxzZTsgfQogCiAgICAgcHJpdmF0ZToKLSAgICAgICAg
UmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCog
PSAwKSBvdmVycmlkZTsKKyAgICAgICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2Rl
R2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAgICBi
b29sIGlzQ2xhc3NFeHByTm9kZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIApA
QCAtMjMzNiw3ICsyMzM2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZpcnR1YWwgYm9v
bCBpc0JpbmRpbmdOb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICAgICAgdmlydHVh
bCBib29sIGlzQXNzaWdubWVudEVsZW1lbnROb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0K
ICAgICAgICAgdmlydHVhbCBib29sIGlzUmVzdFBhcmFtZXRlcigpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9Ci0gICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0
ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7IHJldHVybiAw
OyB9CisgICAgICAgIHZpcnR1YWwgUmVnaXN0ZXJJRCogZW1pdERpcmVjdEJpbmRpbmcoQnl0ZWNv
ZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiwgRXhwcmVzc2lvbk5vZGUqKSB7IHJldHVybiBudWxs
cHRyOyB9CiAgICAgICAgIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgRGVzdHJ1Y3R1cmluZ1Bh
dHRlcm5Ob2RlKCk7CkBAIC0yNDgyLDcgKzI0ODIsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBw
cml2YXRlOgogICAgICAgICBib29sIGlzQXNzaWdubWVudExvY2F0aW9uKCkgY29uc3Qgb3ZlcnJp
ZGUgeyByZXR1cm4gdHJ1ZTsgfQogICAgICAgICBib29sIGlzRGVzdHJ1Y3R1cmluZ05vZGUoKSBj
b25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIFJlZ2lzdGVySUQqIGVtaXRC
eXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7Cisg
ICAgICAgIFJlZ2lzdGVySUQqIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lz
dGVySUQqID0gbnVsbHB0cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRGVzdHJ1Y3R1cmluZ1BhdHRl
cm5Ob2RlKiBtX2JpbmRpbmdzOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9pbml0aWFsaXpl
cjsKQEAgLTI1MjgsNyArMjUyOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBGdW5jdGlv
bk1ldGFkYXRhTm9kZSogbWV0YWRhdGEoKSB7IHJldHVybiBtX21ldGFkYXRhOyB9CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAg
ICBGdW5jdGlvbk1ldGFkYXRhTm9kZSogbV9tZXRhZGF0YTsKICAgICB9OwpAQCAtMjUzOCw3ICsy
NTM4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIENsYXNzRGVjbE5vZGUoY29uc3QgSlNU
b2tlbkxvY2F0aW9uJiwgRXhwcmVzc2lvbk5vZGUqIGNsYXNzRXhwcmVzc2lvbik7CiAKICAgICBw
cml2YXRlOgotICAgICAgICB2b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJl
Z2lzdGVySUQqID0gMCkgb3ZlcnJpZGU7CisgICAgICAgIHZvaWQgZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJRCogPSBudWxscHRyKSBvdmVycmlkZTsKIAogICAgICAg
ICBib29sIGhhc0NvbXBsZXRpb25WYWx1ZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNl
OyB9CiAKQEAgLTI1NDcsNyArMjU0Nyw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgY2xhc3Mg
Q2FzZUNsYXVzZU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAg
cHVibGljOgotICAgICAgICBDYXNlQ2xhdXNlTm9kZShFeHByZXNzaW9uTm9kZSosIFNvdXJjZUVs
ZW1lbnRzKiA9IDApOworICAgICAgICBDYXNlQ2xhdXNlTm9kZShFeHByZXNzaW9uTm9kZSosIFNv
dXJjZUVsZW1lbnRzKiA9IG51bGxwdHIpOwogCiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBleHBy
KCkgY29uc3QgeyByZXR1cm4gbV9leHByOyB9CiAKQEAgLTI1OTMsNyArMjU5Myw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBTd2l0Y2hOb2RlKGNvbnN0IEpTVG9rZW5Mb2NhdGlvbiYsIEV4
cHJlc3Npb25Ob2RlKiwgQ2FzZUJsb2NrTm9kZSosIFZhcmlhYmxlRW52aXJvbm1lbnQmLCBGdW5j
dGlvblN0YWNrJiYpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgdm9pZCBlbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImLCBSZWdpc3RlcklEKiA9IDApIG92ZXJyaWRlOworICAgICAgICB2
b2lkIGVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYsIFJlZ2lzdGVySUQqID0gbnVsbHB0
cikgb3ZlcnJpZGU7CiAKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fZXhwcjsKICAgICAgICAg
Q2FzZUJsb2NrTm9kZSogbV9ibG9jazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCA3NjZhMmIzZWE2NzE1N2Y3ZjQyNWFmM2ExZTc5ZWZhZTA0MzQ4MDVkLi5lYjJl
ZDZmOGFhNDE1MDQxY2I5NTg2NDVlNzdmMTMwZGJiOWIwMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0zNTcsNyArMzU3LDcgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNl
U291cmNlRWwKIHsKICAgICBjb25zdCB1bnNpZ25lZCBsZW5ndGhPZlVzZVN0cmljdExpdGVyYWwg
PSAxMjsgLy8gInVzZSBzdHJpY3QiLmxlbmd0aAogICAgIFRyZWVTb3VyY2VFbGVtZW50cyBzb3Vy
Y2VFbGVtZW50cyA9IGNvbnRleHQuY3JlYXRlU291cmNlRWxlbWVudHMoKTsKLSAgICBjb25zdCBJ
ZGVudGlmaWVyKiBkaXJlY3RpdmUgPSAwOworICAgIGNvbnN0IElkZW50aWZpZXIqIGRpcmVjdGl2
ZSA9IG51bGxwdHI7CiAgICAgdW5zaWduZWQgZGlyZWN0aXZlTGl0ZXJhbExlbmd0aCA9IDA7CiAg
ICAgYXV0byBzYXZlUG9pbnQgPSBjcmVhdGVTYXZlUG9pbnQoY29udGV4dCk7CiAgICAgYm9vbCBz
aG91bGRDaGVja0ZvclVzZVN0cmljdCA9IG1vZGUgPT0gQ2hlY2tGb3JTdHJpY3RNb2RlOwpAQCAt
NDM4LDcgKzQzOCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVs
ZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZU1vZHVsZVNvCiAgICAgICAgIH0KIAogICAg
ICAgICBkZWZhdWx0OiB7Ci0gICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBkaXJlY3RpdmUg
PSAwOworICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciogZGlyZWN0aXZlID0gbnVsbHB0cjsK
ICAgICAgICAgICAgIHVuc2lnbmVkIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwOwogICAgICAg
ICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1vZHVsZUFuYWx5emVNb2Rl
KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFwYXJzZVN0YXRlbWVudExpc3RJdGVtKHN5bnRheENo
ZWNrZXIsIGRpcmVjdGl2ZSwgJmRpcmVjdGl2ZUxpdGVyYWxMZW5ndGgpKQpAQCAtNzYxLDcgKzc2
MSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VEb1doaWxlU3RhdGVtCiAgICAgQVNTRVJUKG1hdGNoKERPKSk7CiAg
ICAgaW50IHN0YXJ0TGluZSA9IHRva2VuTGluZSgpOwogICAgIG5leHQoKTsKLSAgICBjb25zdCBJ
ZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IG51
bGxwdHI7CiAgICAgc3RhcnRMb29wKCk7CiAgICAgVHJlZVN0YXRlbWVudCBzdGF0ZW1lbnQgPSBw
YXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGVuZExvb3AoKTsKQEAgLTc5Niw3
ICs3OTYsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlV2hpbGVTdGF0ZW1lbgogICAgIGludCBlbmRMaW5lID0gdG9r
ZW5MaW5lKCk7CiAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFpbChDTE9TRVBBUkVOLCAiKSIsICJl
bmQiLCAid2hpbGUgbG9vcCBjb25kaXRpb24iKTsKIAotICAgIGNvbnN0IElkZW50aWZpZXIqIHVu
dXNlZCA9IDA7CisgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gbnVsbHB0cjsKICAgICBz
dGFydExvb3AoKTsKICAgICBUcmVlU3RhdGVtZW50IHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50
KGNvbnRleHQsIHVudXNlZCk7CiAgICAgZW5kTG9vcCgpOwpAQCAtODE1LDggKzgxNSw4IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlVmFyaWFibGVEZWNsCiAgICAgSlNUb2tlbiBsYXN0SWRlbnRUb2tlbjsgCiAgICAg
QXNzaWdubWVudENvbnRleHQgYXNzaWdubWVudENvbnRleHQgPSBhc3NpZ25tZW50Q29udGV4dEZy
b21EZWNsYXJhdGlvblR5cGUoZGVjbGFyYXRpb25UeXBlKTsKICAgICBkbyB7Ci0gICAgICAgIGxh
c3RJZGVudCA9IDA7CiAgICAgICAgIGxhc3RQYXR0ZXJuID0gVHJlZURlc3RydWN0dXJpbmdQYXR0
ZXJuKDApOworICAgICAgICBsYXN0SWRlbnQgPSBudWxscHRyOwogICAgICAgICBKU1Rva2VuTG9j
YXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKICAgICAgICAgbmV4dCgpOwogICAgICAg
ICBpZiAoaGVhZCkgewpAQCAtODc2LDcgKzg3Niw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVp
bGRlcj4gVHJlZUV4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBhcnNlVmFyaWFibGVEZWNs
CiAgICAgICAgICAgICAgICAgICAgIG5vZGUgPSBjb250ZXh0LmNyZWF0ZUVtcHR5TGV0RXhwcmVz
c2lvbih2YXJTdGFydExvY2F0aW9uLCAqbmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICBsYXN0SWRlbnQgPSAwOworICAgICAgICAgICAgbGFzdElkZW50
ID0gbnVsbHB0cjsKICAgICAgICAgICAgIGF1dG8gcGF0dGVybiA9IHBhcnNlRGVzdHJ1Y3R1cmlu
Z1BhdHRlcm4oY29udGV4dCwgZGVzdHJ1Y3R1cmluZ0tpbmRGcm9tRGVjbGFyYXRpb25UeXBlKGRl
Y2xhcmF0aW9uVHlwZSksIGV4cG9ydFR5cGUsIG51bGxwdHIsIG51bGxwdHIsIGFzc2lnbm1lbnRD
b250ZXh0KTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBhdHRlcm4sICJDYW5ub3QgcGFyc2Ug
dGhpcyBkZXN0cnVjdHVyaW5nIHBhdHRlcm4iKTsKICAgICAgICAgICAgIGhhc0luaXRpYWxpemVy
ID0gbWF0Y2goRVFVQUwpOwpAQCAtMTQyMyw3ICsxNDIzLDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRl
bWVudCgKICAgICAgICAgCiAgICAgICAgIGhhbmRsZVByb2R1Y3Rpb25PckZhaWwoQ0xPU0VQQVJF
TiwgIikiLCAiZW5kIiwgKGlzT2ZFbnVtZXJhdGlvbiA/ICJmb3Itb2YgaGVhZGVyIiA6ICJmb3It
aW4gaGVhZGVyIikpOwogICAgICAgICAKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51c2Vk
ID0gMDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gbnVsbHB0cjsKICAgICAg
ICAgc3RhcnRMb29wKCk7CiAgICAgICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VT
dGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICAgICAgZW5kTG9vcCgpOwpAQCAtMTQ4OCw3
ICsxNDg4LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUZvclN0YXRlbWVudCgKICAgICAgICAgfQogICAgICAgICBp
bnQgZW5kTGluZSA9IHRva2VuTGluZSgpOwogICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWls
KENMT1NFUEFSRU4sICIpIiwgImVuZCIsICJmb3ItbG9vcCBoZWFkZXIiKTsKLSAgICAgICAgY29u
c3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51
c2VkID0gbnVsbHB0cjsKICAgICAgICAgc3RhcnRMb29wKCk7CiAgICAgICAgIFRyZWVTdGF0ZW1l
bnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICAgICAg
ZW5kTG9vcCgpOwpAQCAtMTUxOSw3ICsxNTE5LDcgQEAgZW51bWVyYXRpb25Mb29wOgogICAgIGlu
dCBlbmRMaW5lID0gdG9rZW5MaW5lKCk7CiAgICAgCiAgICAgaGFuZGxlUHJvZHVjdGlvbk9yRmFp
bChDTE9TRVBBUkVOLCAiKSIsICJlbmQiLCAoaXNPZkVudW1lcmF0aW9uID8gImZvci1vZiBoZWFk
ZXIiIDogImZvci1pbiBoZWFkZXIiKSk7Ci0gICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0g
MDsKKyAgICBjb25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSBudWxscHRyOwogICAgIHN0YXJ0TG9v
cCgpOwogICAgIFRyZWVTdGF0ZW1lbnQgc3RhdGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4
dCwgdW51c2VkKTsKICAgICBlbmRMb29wKCk7CkBAIC0xNjU3LDcgKzE2NTcsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlV2l0aFN0YXRlbWVudAogICAgIEpTVGV4dFBvc2l0aW9uIGVuZCA9IGxhc3RUb2tlbkVuZFBv
c2l0aW9uKCk7CiAgICAgaW50IGVuZExpbmUgPSB0b2tlbkxpbmUoKTsKICAgICBoYW5kbGVQcm9k
dWN0aW9uT3JGYWlsKENMT1NFUEFSRU4sICIpIiwgInN0YXJ0IiwgInN1YmplY3Qgb2YgYSAnd2l0
aCcgc3RhdGVtZW50Iik7Ci0gICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gMDsKKyAgICBj
b25zdCBJZGVudGlmaWVyKiB1bnVzZWQgPSBudWxscHRyOwogICAgIFRyZWVTdGF0ZW1lbnQgc3Rh
dGVtZW50ID0gcGFyc2VTdGF0ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICBmYWlsSWZGYWxz
ZShzdGF0ZW1lbnQsICJBICd3aXRoJyBzdGF0ZW1lbnQgbXVzdCBoYXZlIGEgYm9keSIpOwogICAg
IApAQCAtMjM1Niw3ICsyMzU2LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBib29s
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUZ1bmN0aW9uSW5mbyhUcmVlQnVpbGQKICAgICAgICAg
QVNTRVJUKHN0YXJ0Q29sdW1uICE9IC0xKTsKIAogICAgICAgICAvLyBJZiB3ZSBrbm93IGFib3V0
IHRoaXMgZnVuY3Rpb24gYWxyZWFkeSwgd2UgY2FuIHVzZSB0aGUgY2FjaGVkIGluZm8gYW5kIHNr
aXAgdGhlIHBhcnNlciB0byB0aGUgZW5kIG9mIHRoZSBmdW5jdGlvbi4KLSAgICAgICAgaWYgKGNv
bnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBjYWNoZWRJbmZvID0gVHJlZUJ1aWxkZXI6OkNh
blVzZUZ1bmN0aW9uQ2FjaGUgPyBmaW5kQ2FjaGVkRnVuY3Rpb25JbmZvKHBhcmFtZXRlcnNTdGFy
dCkgOiAwKSB7CisgICAgICAgIGlmIChjb25zdCBTb3VyY2VQcm92aWRlckNhY2hlSXRlbSogY2Fj
aGVkSW5mbyA9IFRyZWVCdWlsZGVyOjpDYW5Vc2VGdW5jdGlvbkNhY2hlID8gZmluZENhY2hlZEZ1
bmN0aW9uSW5mbyhwYXJhbWV0ZXJzU3RhcnQpIDogbnVsbHB0cikgewogICAgICAgICAgICAgLy8g
SWYgd2UncmUgaW4gYSBzdHJpY3QgY29udGV4dCwgdGhlIGNhY2hlZCBmdW5jdGlvbiBpbmZvIG11
c3Qgc2F5IGl0IHdhcyBzdHJpY3QgdG9vLgogICAgICAgICAgICAgQVNTRVJUKCFzdHJpY3RNb2Rl
KCkgfHwgY2FjaGVkSW5mby0+c3RyaWN0TW9kZSk7CiAgICAgICAgICAgICBKU1Rva2VuTG9jYXRp
b24gZW5kTG9jYXRpb247CkBAIC0zMTY3LDcgKzMxNjcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwcmVzc2lv
bk9yTAogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBjb25zdCBJZGVu
dGlmaWVyKiB1bnVzZWQgPSAwOworICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IG51bGxw
dHI7CiAgICAgU2NvcGVSZWYgbGFiZWxTY29wZSA9IGN1cnJlbnRTY29wZSgpOwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgbGFiZWxzLnNpemUoKTsgaSsrKQogICAgICAgICBwdXNoTGFiZWwo
bGFiZWxzW2ldLm1faWRlbnQsIGlzTG9vcCk7CkBAIC0zMjIyLDcgKzMyMjIsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSWZTdGF0ZW1lbnQoVAogICAgIGludCBlbmQgPSB0b2tlbkxpbmUoKTsKICAgICBoYW5kbGVQ
cm9kdWN0aW9uT3JGYWlsMihDTE9TRVBBUkVOLCAiKSIsICJlbmQiLCAiJ2lmJyBjb25kaXRpb24i
KTsKIAotICAgIGNvbnN0IElkZW50aWZpZXIqIHVudXNlZCA9IDA7CisgICAgY29uc3QgSWRlbnRp
ZmllciogdW51c2VkID0gbnVsbHB0cjsKICAgICBtX2ltbWVkaWF0ZVBhcmVudEFsbG93c0Z1bmN0
aW9uRGVjbGFyYXRpb25JblN0YXRlbWVudCA9IHRydWU7CiAgICAgVHJlZVN0YXRlbWVudCB0cnVl
QmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgIGZhaWxJZkZhbHNl
KHRydWVCbG9jaywgIkV4cGVjdGVkIGEgc3RhdGVtZW50IGFzIHRoZSBib2R5IG9mIGFuIGlmIGJs
b2NrIik7CkBAIC0zMjM5LDcgKzMyMzksNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+
IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0ZW1lbnQoVAogICAg
ICAgICBKU1Rva2VuTG9jYXRpb24gdGVtcExvY2F0aW9uID0gdG9rZW5Mb2NhdGlvbigpOwogICAg
ICAgICBuZXh0KCk7CiAgICAgICAgIGlmICghbWF0Y2goSUYpKSB7Ci0gICAgICAgICAgICBjb25z
dCBJZGVudGlmaWVyKiB1bnVzZWQgPSAwOworICAgICAgICAgICAgY29uc3QgSWRlbnRpZmllciog
dW51c2VkID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1faW1tZWRpYXRlUGFyZW50QWxsb3dzRnVu
Y3Rpb25EZWNsYXJhdGlvbkluU3RhdGVtZW50ID0gdHJ1ZTsKICAgICAgICAgICAgIFRyZWVTdGF0
ZW1lbnQgYmxvY2sgPSBwYXJzZVN0YXRlbWVudChjb250ZXh0LCB1bnVzZWQpOwogICAgICAgICAg
ICAgZmFpbElmRmFsc2UoYmxvY2ssICJFeHBlY3RlZCBhIHN0YXRlbWVudCBhcyB0aGUgYm9keSBv
ZiBhbiBlbHNlIGJsb2NrIik7CkBAIC0zMjU3LDcgKzMyNTcsNyBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlSWZTdGF0
ZW1lbnQoVAogICAgICAgICByZWNvcmRQYXVzZUxvY2F0aW9uKGNvbnRleHQuYnJlYWtwb2ludExv
Y2F0aW9uKGlubmVyQ29uZGl0aW9uKSk7CiAgICAgICAgIGludCBpbm5lckVuZCA9IHRva2VuTGlu
ZSgpOwogICAgICAgICBoYW5kbGVQcm9kdWN0aW9uT3JGYWlsMihDTE9TRVBBUkVOLCAiKSIsICJl
bmQiLCAiJ2lmJyBjb25kaXRpb24iKTsKLSAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51c2Vk
ID0gMDsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciogdW51c2VkID0gbnVsbHB0cjsKICAgICAg
ICAgbV9pbW1lZGlhdGVQYXJlbnRBbGxvd3NGdW5jdGlvbkRlY2xhcmF0aW9uSW5TdGF0ZW1lbnQg
PSB0cnVlOwogICAgICAgICBUcmVlU3RhdGVtZW50IGlubmVyVHJ1ZUJsb2NrID0gcGFyc2VTdGF0
ZW1lbnQoY29udGV4dCwgdW51c2VkKTsKICAgICAgICAgZmFpbElmRmFsc2UoaW5uZXJUcnVlQmxv
Y2ssICJFeHBlY3RlZCBhIHN0YXRlbWVudCBhcyB0aGUgYm9keSBvZiBhbiBpZiBibG9jayIpOwpA
QCAtMzg5MSw3ICszODkxLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFRyZWVCdWlsZGVyPiBUcmVl
RXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VBc3NpZ25tZW4KICAgICAgICAgaWYg
KHN0cmljdE1vZGUoKSAmJiBtX3BhcnNlclN0YXRlLmxhc3RJZGVudGlmaWVyICYmIGNvbnRleHQu
aXNSZXNvbHZlKGxocykpIHsKICAgICAgICAgICAgIGZhaWxJZlRydWVJZlN0cmljdChtX3ZtLnBy
b3BlcnR5TmFtZXMtPmV2YWwgPT0gKm1fcGFyc2VyU3RhdGUubGFzdElkZW50aWZpZXIsICJDYW5u
b3QgbW9kaWZ5ICdldmFsJyBpbiBzdHJpY3QgbW9kZSIpOwogICAgICAgICAgICAgZmFpbElmVHJ1
ZUlmU3RyaWN0KG1fdm0ucHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICptX3BhcnNlclN0YXRl
Lmxhc3RJZGVudGlmaWVyLCAiQ2Fubm90IG1vZGlmeSAnYXJndW1lbnRzJyBpbiBzdHJpY3QgbW9k
ZSIpOwotICAgICAgICAgICAgbV9wYXJzZXJTdGF0ZS5sYXN0SWRlbnRpZmllciA9IDA7CisgICAg
ICAgICAgICBtX3BhcnNlclN0YXRlLmxhc3RJZGVudGlmaWVyID0gbnVsbHB0cjsKICAgICAgICAg
fQogICAgICAgICBsaHMgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKGNvbnRleHQpOwogICAg
ICAgICBmYWlsSWZGYWxzZShsaHMsICJDYW5ub3QgcGFyc2UgdGhlIHJpZ2h0IGhhbmQgc2lkZSBv
ZiBhbiBhc3NpZ25tZW50IGV4cHJlc3Npb24iKTsKQEAgLTQyNTQsNyArNDI1NCw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRy
ZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVHJlZUJ1aWxk
ZXImIGNvbnRleHQsIGJvb2wgc3RyaWN0LCBQcm9wZXJ0eU5vZGU6OlR5cGUgdHlwZSwgdW5zaWdu
ZWQgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwKICAgICBDb25zdHJ1Y3RvcktpbmQgY29uc3Ry
dWN0b3JLaW5kLCBDbGFzc0VsZW1lbnRUYWcgdGFnKQogewotICAgIGNvbnN0IElkZW50aWZpZXIq
IHN0cmluZ1Byb3BlcnR5TmFtZSA9IDA7CisgICAgY29uc3QgSWRlbnRpZmllciogc3RyaW5nUHJv
cGVydHlOYW1lID0gbnVsbHB0cjsKICAgICBkb3VibGUgbnVtZXJpY1Byb3BlcnR5TmFtZSA9IDA7
CiAgICAgVHJlZUV4cHJlc3Npb24gY29tcHV0ZWRQcm9wZXJ0eU5hbWUgPSAwOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAxNjhiNmZmN2VmOGVjZWY1ZmQzMmM3MTU4
MmYwYjA0Zjc2OWRiMWNmLi41NGIzOTczMDllYTJmY2NmMzczMWZiZTk5OGRhYjU5OWM5YmJlMDE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTIyMCwxMiArMjIwLDEy
IEBAIHB1YmxpYzoKICAgICBTY29wZUxhYmVsSW5mbyogZ2V0TGFiZWwoY29uc3QgSWRlbnRpZmll
ciogbGFiZWwpCiAgICAgewogICAgICAgICBpZiAoIW1fbGFiZWxzKQotICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgZm9yIChpbnQgaSA9
IG1fbGFiZWxzLT5zaXplKCk7IGkgPiAwOyBpLS0pIHsKICAgICAgICAgICAgIGlmIChtX2xhYmVs
cy0+YXQoaSAtIDEpLnVpZCA9PSBsYWJlbC0+aW1wbCgpKQogICAgICAgICAgICAgICAgIHJldHVy
biAmbV9sYWJlbHMtPmF0KGkgLSAxKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gMDsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgdm9pZCBzZXRTb3VyY2VQYXJzZU1v
ZGUoU291cmNlUGFyc2VNb2RlIG1vZGUpCkBAIC05NzcsNyArOTc3LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgCiAgICAgICAgIHZvaWQgc2V0UG9wcGVkKCkKICAgICAgICAgewotICAgICAgICAgICAg
bV9wYXJzZXIgPSAwOworICAgICAgICAgICAgbV9wYXJzZXIgPSBudWxscHRyOwogICAgICAgICB9
CiAgICAgICAgIAogICAgIHByaXZhdGU6CkBAIC0xMzc3LDcgKzEzNzcsNyBAQCBwcml2YXRlOgog
ICAgIAogICAgIGNvbnN0IFNvdXJjZVByb3ZpZGVyQ2FjaGVJdGVtKiBmaW5kQ2FjaGVkRnVuY3Rp
b25JbmZvKGludCBvcGVuQnJhY2VQb3MpIAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZnVuY3Rp
b25DYWNoZSA/IG1fZnVuY3Rpb25DYWNoZS0+Z2V0KG9wZW5CcmFjZVBvcykgOiAwOworICAgICAg
ICByZXR1cm4gbV9mdW5jdGlvbkNhY2hlID8gbV9mdW5jdGlvbkNhY2hlLT5nZXQob3BlbkJyYWNl
UG9zKSA6IG51bGxwdHI7CiAgICAgfQogCiAgICAgUGFyc2VyKCk7CkBAIC0xNTgyLDEwICsxNTgy
LDEwIEBAIHByaXZhdGU6CiAgICAgU2NvcGVMYWJlbEluZm8qIGdldExhYmVsKGNvbnN0IElkZW50
aWZpZXIqIGxhYmVsKQogICAgIHsKICAgICAgICAgU2NvcGVSZWYgY3VycmVudCA9IGN1cnJlbnRT
Y29wZSgpOwotICAgICAgICBTY29wZUxhYmVsSW5mbyogcmVzdWx0ID0gMDsKKyAgICAgICAgU2Nv
cGVMYWJlbEluZm8qIHJlc3VsdCA9IG51bGxwdHI7CiAgICAgICAgIHdoaWxlICghKHJlc3VsdCA9
IGN1cnJlbnQtPmdldExhYmVsKGxhYmVsKSkpIHsKICAgICAgICAgICAgIGlmICghY3VycmVudC5o
YXNDb250YWluaW5nU2NvcGUoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LmNv
bnRhaW5pbmdTY29wZSgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC0x
NjIxLDcgKzE2MjEsNyBAQCBwcml2YXRlOgogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNlU2luZ2xlRnVuY3Rpb24oVHJlZUJ1aWxkZXImLCBP
cHRpb25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24pOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVNvdXJjZUVsZW1lbnRzIHBhcnNl
SW5zdGFuY2VGaWVsZEluaXRpYWxpemVyU291cmNlRWxlbWVudHMoVHJlZUJ1aWxkZXImLCBjb25z
dCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+Jik7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlU3RhdGVtZW50TGlzdEl0ZW0oVHJlZUJ1aWxkZXImLCBj
b25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJhbExl
bmd0aCk7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBh
cnNlU3RhdGVtZW50KFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllciomIGRpcmVjdGl2ZSwg
dW5zaWduZWQqIGRpcmVjdGl2ZUxpdGVyYWxMZW5ndGggPSAwKTsKKyAgICB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VTdGF0ZW1lbnQoVHJlZUJ1aWxkZXIm
LCBjb25zdCBJZGVudGlmaWVyKiYgZGlyZWN0aXZlLCB1bnNpZ25lZCogZGlyZWN0aXZlTGl0ZXJh
bExlbmd0aCA9IG51bGxwdHIpOwogICAgIGVudW0gY2xhc3MgRXhwb3J0VHlwZSB7IEV4cG9ydGVk
LCBOb3RFeHBvcnRlZCB9OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBwYXJzZUNsYXNzRGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImLCBFeHBvcnRUeXBlID0g
RXhwb3J0VHlwZTo6Tm90RXhwb3J0ZWQsIERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQgPSBEZWNs
YXJhdGlvbkRlZmF1bHRDb250ZXh0OjpTdGFuZGFyZCk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihUcmVlQnVp
bGRlciYsIEV4cG9ydFR5cGUgPSBFeHBvcnRUeXBlOjpOb3RFeHBvcnRlZCwgRGVjbGFyYXRpb25E
ZWZhdWx0Q29udGV4dCA9IERlY2xhcmF0aW9uRGVmYXVsdENvbnRleHQ6OlN0YW5kYXJkLCBPcHRp
b25hbDxpbnQ+IGZ1bmN0aW9uQ29uc3RydWN0b3JQYXJhbWV0ZXJzRW5kUG9zaXRpb24gPSBXVEY6
Om51bGxvcHQpOwpAQCAtMjAyNCw3ICsyMDI0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFBhcnNlZE5v
ZGU+IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZShQYXJzZXJFcnJvciYgZXJyb3IsIGNvbnN0IEkK
ICAgICAgICAgLy8gd2UgcmFuIG91dCBvZiBzdGFjayB3aGlsZSBwYXJzaW5nLiBJZiB3ZSBzZWUg
YW4gZXJyb3Igd2hpbGUgcGFyc2luZyBldmFsIG9yIHByb2dyYW0KICAgICAgICAgLy8gY29kZSB3
ZSBhc3N1bWUgdGhhdCBpdCB3YXMgYSBzeW50YXggZXJyb3Igc2luY2UgcnVubmluZyBvdXQgb2Yg
c3RhY2sgaXMgbXVjaCBsZXNzCiAgICAgICAgIC8vIGxpa2VseSwgYW5kIHdlIGFyZSBjdXJyZW50
bHkgdW5hYmxlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHR3byBjYXNlcy4KLSAgICAgICAg
aWYgKGlzRnVuY3Rpb25NZXRhZGF0YU5vZGUoc3RhdGljX2Nhc3Q8UGFyc2VkTm9kZSo+KDApKSB8
fCBtX2hhc1N0YWNrT3ZlcmZsb3cpCisgICAgICAgIGlmIChpc0Z1bmN0aW9uTWV0YWRhdGFOb2Rl
KHN0YXRpY19jYXN0PFBhcnNlZE5vZGUqPihudWxscHRyKSkgfHwgbV9oYXNTdGFja092ZXJmbG93
KQogICAgICAgICAgICAgZXJyb3IgPSBQYXJzZXJFcnJvcihQYXJzZXJFcnJvcjo6U3RhY2tPdmVy
ZmxvdywgUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yTm9uZSwgbV90b2tlbik7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgUGFyc2VyRXJyb3I6OlN5bnRheEVycm9yVHlwZSBlcnJvclR5cGUg
PSBQYXJzZXJFcnJvcjo6U3ludGF4RXJyb3JJcnJlY292ZXJhYmxlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRleCA0Yjk0NDUwNWUzMjc2MzUzNzUy
ZjI2MDg3Y2EzYjdhYTNlNjI5NjMwLi44YWM2NjQyZGFhNThkNjVhOTBhZjcyYWNiZjQ5MWI4NjU1
MGJjNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFy
ZW5hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNw
cApAQCAtMzcsOCArMzcsOCBAQCBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KElkZW50aWZpZXJBcmVuYSk7CiBERUZJTkVfQUxMT0NBVE9SX1dJVEhfSEVBUF9JREVOVElGSUVS
KFBhcnNlckFyZW5hKTsKIAogUGFyc2VyQXJlbmE6OlBhcnNlckFyZW5hKCkKLSAgICA6IG1fZnJl
ZWFibGVNZW1vcnkoMCkKLSAgICAsIG1fZnJlZWFibGVQb29sRW5kKDApCisgICAgOiBtX2ZyZWVh
YmxlTWVtb3J5KG51bGxwdHIpCisgICAgLCBtX2ZyZWVhYmxlUG9vbEVuZChudWxscHRyKQogewog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXggNGQ5
YzE5ZDBjZGI3MTdmNmI2MzI2MDA5OWZlZjZmOGE3MTE1YThlZi4uOGJiOWQ1ZWI5MDkyYjNjZTdj
MGRmNGJjZTFhZTcwNjZmZTlmZjA1NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuaApAQCAtNjAsOSArNjAsOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAg
ewogICAgICAgICAgICAgbV9pZGVudGlmaWVycy5jbGVhcigpOwogICAgICAgICAgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBNYXhpbXVtQ2FjaGFibGVDaGFyYWN0ZXI7IGkrKykKLSAgICAgICAgICAg
ICAgICBtX3Nob3J0SWRlbnRpZmllcnNbaV0gPSAwOworICAgICAgICAgICAgICAgIG1fc2hvcnRJ
ZGVudGlmaWVyc1tpXSA9IG51bGxwdHI7CiAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlcjsgaSsrKQotICAgICAgICAgICAgICAgIG1fcmVjZW50
SWRlbnRpZmllcnNbaV0gPSAwOworICAgICAgICAgICAgICAgIG1fcmVjZW50SWRlbnRpZmllcnNb
aV0gPSBudWxscHRyOwogICAgICAgICB9CiAKICAgICBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJGdW5jdGlvbkluZm8uaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyRnVuY3Rpb25JbmZvLmgKaW5kZXggYjlmZDY3OTU2
NzA4YWM2ZjllZGE5NTM1ZDQxYWJmY2ViNDliZWUzZi4uOGI4MmMzOGEwMWE4NzBkZDQ4MTIyYmI5
OWU3MGRmODZjNjk1ZmI0ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJGdW5jdGlvbkluZm8uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlckZ1bmN0aW9uSW5mby5oCkBAIC0yOSw3ICsyOSw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
CiB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+CiBzdHJ1Y3QgUGFyc2VyRnVuY3Rpb25JbmZv
IHsKLSAgICBjb25zdCBJZGVudGlmaWVyKiBuYW1lID0gMDsKKyAgICBjb25zdCBJZGVudGlmaWVy
KiBuYW1lID0gbnVsbHB0cjsKICAgICB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RnVuY3Rpb25Cb2R5
IGJvZHkgPSAwOwogICAgIHVuc2lnbmVkIHBhcmFtZXRlckNvdW50ID0gMDsKICAgICB1bnNpZ25l
ZCBmdW5jdGlvbkxlbmd0aCA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1N5bnRheENoZWNrZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3lu
dGF4Q2hlY2tlci5oCmluZGV4IGY5YmIwN2I0ZGQ0MDg5YzdiMWUzYTBmM2Y1OTU0MWIzMTdhNTJk
N2YuLmFhYjBiNzRkYWE4OTA2NDQ2ODBiY2JkMmYwODhlYWJkY2E5M2RkMDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvU3ludGF4Q2hlY2tlci5oCkBAIC05OCw3ICs5OCw3IEBA
IHB1YmxpYzoKICAgICB0eXBlZGVmIGludCBBcmd1bWVudHM7CiAgICAgdHlwZWRlZiBFeHByZXNz
aW9uVHlwZSBDb21tYTsKICAgICBzdHJ1Y3QgUHJvcGVydHkgewotICAgICAgICBBTFdBWVNfSU5M
SU5FIFByb3BlcnR5KHZvaWQqID0gMCkKKyAgICAgICAgQUxXQVlTX0lOTElORSBQcm9wZXJ0eSh2
b2lkKiA9IG51bGxwdHIpCiAgICAgICAgICAgICA6IHR5cGUoKFByb3BlcnR5Tm9kZTo6VHlwZSkw
KQogICAgICAgICB7CiAgICAgICAgIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAg
ICAgIHsKICAgICAgICAgfQogICAgICAgICBBTFdBWVNfSU5MSU5FIFByb3BlcnR5KFByb3BlcnR5
Tm9kZTo6VHlwZSB0eSkKLSAgICAgICAgICAgIDogbmFtZSgwKQorICAgICAgICAgICAgOiBuYW1l
KG51bGxwdHIpCiAgICAgICAgICAgICAsIHR5cGUodHkpCiAgICAgICAgIHsKICAgICAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9VbmxpbmtlZFNvdXJjZUNv
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVW5saW5rZWRTb3VyY2VDb2RlLmgK
aW5kZXggYmI3NzRhOWY3OTgzNTM1YTAwYWIzZjFlNTc0ZjBmNDMyZWUyNTk3Yy4uNzk3Y2M3NjFk
NWUxZWMyY2ZkNGE4ZGRkZjM4ZjllNWFhMjY3NzI4NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9VbmxpbmtlZFNvdXJjZUNvZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1VubGlua2VkU291cmNlQ29kZS5oCkBAIC00MCw3ICs0MCw3IEBAIG5h
bWVzcGFjZSBKU0MgewogCiAgICAgcHVibGljOgogICAgICAgICBVbmxpbmtlZFNvdXJjZUNvZGUo
KQotICAgICAgICAgICAgOiBtX3Byb3ZpZGVyKDApCisgICAgICAgICAgICA6IG1fcHJvdmlkZXIo
bnVsbHB0cikKICAgICAgICAgICAgICwgbV9zdGFydE9mZnNldCgwKQogICAgICAgICAgICAgLCBt
X2VuZE9mZnNldCgwKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcHJvZmlsZXIvUHJvZmlsZXJCeXRlY29kZVNlcXVlbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCmluZGV4IDhhODZj
MmY5MWE1ODQ5MjdkZWY0MTUzNjMzYTc0MGZjMmQxOTE2MDkuLmU3OGRkNzMzMmViZTdkMTU0MDMx
ZGQ1YmFlMDU0M2QyNjczNWIxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
cm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckJ5dGVjb2RlU2VxdWVuY2UuY3BwCkBAIC04MCw3ICs4
MCw3IEBAIHZvaWQgQnl0ZWNvZGVTZXF1ZW5jZTo6YWRkU2VxdWVuY2VQcm9wZXJ0aWVzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAg
ICBKU0FycmF5KiBoZWFkZXIgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgMCk7
CisgICAgSlNBcnJheSogaGVhZGVyID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3Qs
IG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faGVhZGVyLnNpemUoKTsgKytpKSB7CiAgICAgICAg
IGhlYWRlci0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpLCBqc1N0cmluZyh2bSwgU3Ry
aW5nOjpmcm9tVVRGOChtX2hlYWRlcltpXSkpKTsKQEAgLTg4LDcgKzg4LDcgQEAgdm9pZCBCeXRl
Y29kZVNlcXVlbmNlOjphZGRTZXF1ZW5jZVByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmoKICAgICB9CiAgICAgcmVzdWx0LT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmhlYWRlciwgaGVhZGVyKTsKICAgICAKLSAgICBKU0FycmF5KiBzZXF1ZW5jZSA9
IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCAwKTsKKyAgICBKU0FycmF5KiBzZXF1
ZW5jZSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX3NlcXVlbmNlLnNpemUoKTsgKytpKSB7CiAgICAgICAgIHNlcXVlbmNlLT5wdXRE
aXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGksIG1fc2VxdWVuY2VbaV0udG9KUyhnbG9iYWxPYmpl
Y3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckNvbXBpbGF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxl
ckNvbXBpbGF0aW9uLmNwcAppbmRleCA1NmQzOTUwYWViZDNjNzUxNjU0MjY0YzczOTZkMjA4ZjI0
YmI4OGU5Li41NzIyNzRiZWJiYzk5ZDJjMzRlZDI0NmMwM2MxMzIwZWU3MDlhMmJjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJDb21waWxhdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyQ29tcGlsYXRp
b24uY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgSlNWYWx1ZSBDb21waWxhdGlvbjo6dG9KUyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5ieXRlY29kZXNJRCwganNOdW1iZXIobV9ieXRlY29kZXMtPmlk
KCkpKTsKICAgICByZXN1bHQtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29tcGls
YXRpb25LaW5kLCBqc1N0cmluZyh2bSwgU3RyaW5nOjpmcm9tVVRGOCh0b0NTdHJpbmcobV9raW5k
KSkpKTsKICAgICAKLSAgICBKU0FycmF5KiBwcm9maWxlZEJ5dGVjb2RlcyA9IGNvbnN0cnVjdEVt
cHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCAwKTsKKyAgICBKU0FycmF5KiBwcm9maWxlZEJ5dGVjb2Rl
cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBtX3Byb2ZpbGVkQnl0ZWNvZGVzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGF1dG8gdmFsdWUg
PSBtX3Byb2ZpbGVkQnl0ZWNvZGVzW2ldLnRvSlMoZ2xvYmFsT2JqZWN0KTsKQEAgLTEzMSw3ICsx
MzEsNyBAQCBKU1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pTKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiAgICAgfQogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm9maWxlZEJ5dGVjb2RlcywgcHJvZmlsZWRCeXRlY29kZXMpOwogICAgIAotICAg
IEpTQXJyYXkqIGRlc2NyaXB0aW9ucyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0
LCAwKTsKKyAgICBKU0FycmF5KiBkZXNjcmlwdGlvbnMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGds
b2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9kZXNjcmlwdGlvbnMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1fZGVzY3JpcHRpb25zW2ldLnRvSlMoZ2xvYmFs
T2JqZWN0KTsKQEAgLTE0MSw3ICsxNDEsNyBAQCBKU1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pTKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgfQogICAgIHJlc3VsdC0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZXNjcmlwdGlvbnMsIGRlc2NyaXB0aW9ucyk7
CiAgICAgCi0gICAgSlNBcnJheSogY291bnRlcnMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2Jh
bE9iamVjdCwgMCk7CisgICAgSlNBcnJheSogY291bnRlcnMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5
KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICBmb3IgKGF1dG8gaXQgPSBtX2NvdW50ZXJzLmJlZ2luKCksIGVuZCA9IG1fY291
bnRlcnMuZW5kKCk7IGl0ICE9IGVuZDsgKytpdCkgewogICAgICAgICBKU09iamVjdCogY291bnRl
ckVudHJ5ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTE1NSw3ICsx
NTUsNyBAQCBKU1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pTKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpIGNvbnN0CiAgICAgfQogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jb3VudGVycywgY291bnRlcnMpOwogICAgIAotICAgIEpTQXJyYXkqIGV4aXRTaXRl
cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCAwKTsKKyAgICBKU0FycmF5KiBl
eGl0U2l0ZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV9vc3JFeGl0U2l0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgYXV0byB2YWx1
ZSA9IG1fb3NyRXhpdFNpdGVzW2ldLnRvSlMoZ2xvYmFsT2JqZWN0KTsKQEAgLTE2NSw3ICsxNjUs
NyBAQCBKU1ZhbHVlIENvbXBpbGF0aW9uOjp0b0pTKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpIGNvbnN0CiAgICAgfQogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5vc3JFeGl0U2l0ZXMsIGV4aXRTaXRlcyk7CiAgICAgCi0gICAgSlNBcnJheSogZXhpdHMg
PSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgMCk7CisgICAgSlNBcnJheSogZXhp
dHMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9vc3JFeGl0cy5zaXplKCk7ICsraSkgewogICAgICAgICBleGl0cy0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBpLCBtX29zckV4aXRzW2ldLnRvSlMoZ2xvYmFsT2JqZWN0KSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFz
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmlsZXJEYXRhYmFzZS5j
cHAKaW5kZXggZDQ1NjQwZTZmNmNlYTNlNmU1ZDE4MDBhNzJhMDZjYWYzZjdjNjUxMC4uZTlhNDc4
ZDVlMmVhMzE4NGI5Y2YzNGYzMzI0ZmNlYjUxOTdjODIxOSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlckRhdGFiYXNlLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBEYXRhYmFzZTo6RGF0YWJhc2UoVk0mIHZtKQogICAgIDogbV9kYXRhYmFzZUlEKCsrZGF0
YWJhc2VDb3VudGVyKQogICAgICwgbV92bSh2bSkKICAgICAsIG1fc2hvdWxkU2F2ZUF0RXhpdChm
YWxzZSkKLSAgICAsIG1fbmV4dFJlZ2lzdGVyZWREYXRhYmFzZSgwKQorICAgICwgbV9uZXh0UmVn
aXN0ZXJlZERhdGFiYXNlKG51bGxwdHIpCiB7CiB9CiAKQEAgLTEwMiw3ICsxMDIsNyBAQCBKU1Zh
bHVlIERhdGFiYXNlOjp0b0pTKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTT2JqZWN0KiBy
ZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIAotICAgIEpT
QXJyYXkqIGJ5dGVjb2RlcyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCAwKTsK
KyAgICBKU0FycmF5KiBieXRlY29kZXMgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVj
dCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBm
b3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ieXRlY29kZXMuc2l6ZSgpOyArK2kpIHsKICAgICAg
ICAgYXV0byB2YWx1ZSA9IG1fYnl0ZWNvZGVzW2ldLnRvSlMoZ2xvYmFsT2JqZWN0KTsKQEAgLTEx
Miw3ICsxMTIsNyBAQCBKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiAgICAgfQogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5ieXRlY29kZXMsIGJ5dGVjb2Rlcyk7CiAgICAgCi0gICAgSlNBcnJheSogY29t
cGlsYXRpb25zID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIDApOworICAgIEpT
QXJyYXkqIGNvbXBpbGF0aW9ucyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBu
dWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBtX2NvbXBpbGF0aW9ucy5zaXplKCk7ICsraSkgewogICAgICAg
ICBhdXRvIHZhbHVlID0gbV9jb21waWxhdGlvbnNbaV0tPnRvSlMoZ2xvYmFsT2JqZWN0KTsKQEAg
LTEyMiw3ICsxMjIsNyBAQCBKU1ZhbHVlIERhdGFiYXNlOjp0b0pTKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgfQogICAgIHJlc3VsdC0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb21waWxhdGlvbnMsIGNvbXBpbGF0aW9ucyk7CiAgICAgCi0gICAgSlNB
cnJheSogZXZlbnRzID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIDApOworICAg
IEpTQXJyYXkqIGV2ZW50cyA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxs
cHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtX2V2ZW50cy5zaXplKCk7ICsraSkgewogICAgICAgICBhdXRvIHZh
bHVlID0gbV9ldmVudHNbaV0udG9KUyhnbG9iYWxPYmplY3QpOwpAQCAtMTk5LDcgKzE5OSw3IEBA
IHZvaWQgRGF0YWJhc2U6OnJlbW92ZURhdGFiYXNlRnJvbUF0RXhpdCgpCiAgICAgICAgIGlmICgq
Y3VycmVudCAhPSB0aGlzKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICpjdXJyZW50
ID0gbV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNlOwotICAgICAgICBtX25leHRSZWdpc3RlcmVkRGF0
YWJhc2UgPSAwOworICAgICAgICBtX25leHRSZWdpc3RlcmVkRGF0YWJhc2UgPSBudWxscHRyOwog
ICAgICAgICBtX3Nob3VsZFNhdmVBdEV4aXQgPSBmYWxzZTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpAQCAtMjE3LDcgKzIxNyw3IEBAIERhdGFiYXNlKiBEYXRhYmFzZTo6cmVtb3ZlRmlyc3RBdEV4
aXREYXRhYmFzZSgpCiAgICAgRGF0YWJhc2UqIHJlc3VsdCA9IGZpcnN0RGF0YWJhc2U7CiAgICAg
aWYgKHJlc3VsdCkgewogICAgICAgICBmaXJzdERhdGFiYXNlID0gcmVzdWx0LT5tX25leHRSZWdp
c3RlcmVkRGF0YWJhc2U7Ci0gICAgICAgIHJlc3VsdC0+bV9uZXh0UmVnaXN0ZXJlZERhdGFiYXNl
ID0gMDsKKyAgICAgICAgcmVzdWx0LT5tX25leHRSZWdpc3RlcmVkRGF0YWJhc2UgPSBudWxscHRy
OwogICAgICAgICByZXN1bHQtPm1fc2hvdWxkU2F2ZUF0RXhpdCA9IGZhbHNlOwogICAgIH0KICAg
ICByZXR1cm4gcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2Zp
bGVyL1Byb2ZpbGVyT1NSRXhpdFNpdGUuY3BwCmluZGV4IDkyN2M5ZTIwYWU5YTNiNWE2MDllMzdj
YWVmN2JkYTE0NTU4ZWI5MjguLjU4MjcwNWNlMDQwODhjMmZhNTBkM2FiZDZmZGM3OTkyMzhiMjMy
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9T
UkV4aXRTaXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIvUHJvZmls
ZXJPU1JFeGl0U2l0ZS5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgSlNWYWx1ZSBPU1JFeGl0U2l0ZTo6
dG9KUyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7Ci0gICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxP
YmplY3QsIDApOworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xv
YmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2NvZGVBZGRyZXNzZXMuc2l6ZSgpOyAr
K2kpIHsKICAgICAgICAgcmVzdWx0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGksIGpz
U3RyaW5nKHZtLCB0b1N0cmluZyhSYXdQb2ludGVyKG1fY29kZUFkZHJlc3Nlc1tpXS5kYXRhTG9j
YXRpb24oKSkpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJPcmlnaW5TdGFjay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcHJvZmlsZXIv
UHJvZmlsZXJPcmlnaW5TdGFjay5jcHAKaW5kZXggMjIyMDk4ODk5ODlkYWViNDAzNjQxMjM0OGRk
ZjI4YzhkNjc3Zjg1YS4uNzZlMTJjMWZhZDg4MzVjYjIwNjI1NDlkOTBhYWU2OGU3MmE3ODVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Byb2ZpbGVyL1Byb2ZpbGVyT3JpZ2lu
U3RhY2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wcm9maWxlci9Qcm9maWxlck9y
aWdpblN0YWNrLmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTVmFsdWUgT3JpZ2luU3RhY2s6OnRv
SlMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwotICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2Jq
ZWN0LCAwKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2Jh
bE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
ICAgICAKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9zdGFjay5zaXplKCk7ICsraSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJnTGlzdC5oCmluZGV4IGVhNGE5ODUxOGJl
YTkzMzlhMTllOWE1NDQ0OTcxNmRmZGE2ODRhMTYuLjhjNjBmYmVhMjQ5ZTczYzczZTU4YzY2ZTEz
Y2YzODk2YmNkYjg0M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FyZ0xpc3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcmdMaXN0LmgK
QEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICA6IG1fc2l6ZSgwKQogICAgICAgICAs
IG1fY2FwYWNpdHkoaW5saW5lQ2FwYWNpdHkpCiAgICAgICAgICwgbV9idWZmZXIobV9pbmxpbmVC
dWZmZXIpCi0gICAgICAgICwgbV9tYXJrU2V0KDApCisgICAgICAgICwgbV9tYXJrU2V0KG51bGxw
dHIpCiAgICAgewogICAgIH0KIApAQCAtMTYyLDcgKzE2Miw3IEBAIHByaXZhdGU6CiAgICAgRW5j
b2RlZEpTVmFsdWUqIG1hbGxvY0Jhc2UoKQogICAgIHsKICAgICAgICAgaWYgKG1fYnVmZmVyID09
IG1faW5saW5lQnVmZmVyKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuICZzbG90Rm9yKDApOwogICAgIH0KIApAQCAtMTg4
LDcgKzE4OCw3IEBAIGNsYXNzIEFyZ0xpc3QgewogICAgIGZyaWVuZCBjbGFzcyBKSVQ7CiBwdWJs
aWM6CiAgICAgQXJnTGlzdCgpCi0gICAgICAgIDogbV9hcmdzKDApCisgICAgICAgIDogbV9hcmdz
KG51bGxwdHIpCiAgICAgICAgICwgbV9hcmdDb3VudCgwKQogICAgIHsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKaW5kZXggZTFk
NTBiNDc3YWVhM2UyOTYzZDEwNjMwNzBmOWNiZjM4MzllMGY4Zi4uNTAyMWI5MDc3ZDJjNjRiM2Uz
NGJiYTI1YzQ5ZDNhMWEwNjczZTViZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0FycmF5UHJvdG90eXBlLmNwcApAQCAtNzYsNyArNzYsNyBAQCBBcnJheVByb3RvdHlw
ZSogQXJyYXlQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0cgogCiAvLyBFQ01BIDE1LjQuNAogQXJyYXlQcm90b3R5cGU6OkFycmF5UHJvdG90
eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCi0gICAgOiBKU0FycmF5KHZtLCBzdHJ1
Y3R1cmUsIDApCisgICAgOiBKU0FycmF5KHZtLCBzdHJ1Y3R1cmUsIG51bGxwdHIpCiB7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbG9uZWRBcmd1bWVudHMuY3Bw
CmluZGV4IDg5NmVkODExNzNmYmI3Nzc4NjFiM2I5NTYxMTlmNGFkYTJhMWU1Y2MuLjQzNjE3NGY3
MmRlNWZiZDc1ZTRhNWEwMjgwYmYwNGVkNDZmMWIxNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Nsb25lZEFyZ3VtZW50cy5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ2xvbmVkQXJndW1lbnRzLmNwcApAQCAtNDYsNyArNDYsNyBAQCBD
bG9uZWRBcmd1bWVudHMqIENsb25lZEFyZ3VtZW50czo6Y3JlYXRlRW1wdHkoCiB7CiAgICAgdW5z
aWduZWQgdmVjdG9yTGVuZ3RoID0gbGVuZ3RoOwogICAgIGlmICh2ZWN0b3JMZW5ndGggPiBNQVhf
U1RPUkFHRV9WRUNUT1JfTEVOR1RIKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseTsKICAgICBpZiAoVU5MSUtFTFko
c3RydWN0dXJlLT5tYXlJbnRlcmNlcHRJbmRleGVkQWNjZXNzZXMoKSB8fCBzdHJ1Y3R1cmUtPnN0
b3JlZFByb3RvdHlwZU9iamVjdCgpLT5uZWVkc1Nsb3dQdXRJbmRleGluZyh2bSkpKSB7CkBAIC01
Niw5ICs1Niw5IEBAIENsb25lZEFyZ3VtZW50cyogQ2xvbmVkQXJndW1lbnRzOjpjcmVhdGVFbXB0
eSgKICAgICAgICAgSW5kZXhpbmdIZWFkZXIgaW5kZXhpbmdIZWFkZXI7CiAgICAgICAgIGluZGV4
aW5nSGVhZGVyLnNldFZlY3Rvckxlbmd0aCh2ZWN0b3JMZW5ndGgpOwogICAgICAgICBpbmRleGlu
Z0hlYWRlci5zZXRQdWJsaWNMZW5ndGgobGVuZ3RoKTsKLSAgICAgICAgYnV0dGVyZmx5ID0gQnV0
dGVyZmx5Ojp0cnlDcmVhdGUodm0sIDAsIDAsIHN0cnVjdHVyZS0+b3V0T2ZMaW5lQ2FwYWNpdHko
KSwgdHJ1ZSwgaW5kZXhpbmdIZWFkZXIsIHZlY3Rvckxlbmd0aCAqIHNpemVvZihFbmNvZGVkSlNW
YWx1ZSkpOworICAgICAgICBidXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OnRyeUNyZWF0ZSh2bSwgbnVs
bHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCB0cnVlLCBpbmRleGluZ0hl
YWRlciwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSk7CiAgICAgICAgIGlm
ICghYnV0dGVyZmx5KQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIAogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSBsZW5ndGg7IGkgPCB2ZWN0b3JM
ZW5ndGg7ICsraSkKICAgICAgICAgICAgIGJ1dHRlcmZseS0+Y29udGlndW91cygpLmF0VW5zYWZl
KGkpLmNsZWFyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9D
b21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
U2xvd1BhdGhzLmNwcAppbmRleCBiN2I4MDIwYTIwMDRkYmIyNmFkN2YwNTc5YjdkN2EyOWIxMzA3
ZDE3Li40YTk5YTcxNjg4OTQyOTllNjI3NDYzYTgyYzRkN2NjZmFkMzFmZjdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAgLTE4
Myw3ICsxODMsNyBAQCBTTE9XX1BBVEhfREVDTChzbG93X3BhdGhfY2FsbF9hcml0eUNoZWNrKQog
ICAgICAgICB0aHJvd0FyaXR5Q2hlY2tTdGFja092ZXJmbG93RXJyb3IoZ2xvYmFsT2JqZWN0LCB0
aHJvd1Njb3BlKTsKICAgICAgICAgUkVUVVJOX1RXTyhiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRp
Y19jYXN0PHVpbnRwdHJfdD4oMSkpLCBjYWxsRnJhbWUpOwogICAgIH0KLSAgICBSRVRVUk5fVFdP
KDAsIGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90PihzbG90c1RvQWRk
KSkpOworICAgIFJFVFVSTl9UV08obnVsbHB0ciwgYml0d2lzZV9jYXN0PHZvaWQqPihzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KHNsb3RzVG9BZGQpKSk7CiB9CiAKIFNMT1dfUEFUSF9ERUNMKHNsb3df
cGF0aF9jb25zdHJ1Y3RfYXJpdHlDaGVjaykKQEAgLTE5OCw3ICsxOTgsNyBAQCBTTE9XX1BBVEhf
REVDTChzbG93X3BhdGhfY29uc3RydWN0X2FyaXR5Q2hlY2spCiAgICAgICAgIHRocm93QXJpdHlD
aGVja1N0YWNrT3ZlcmZsb3dFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUpOwogICAgICAg
ICBSRVRVUk5fVFdPKGJpdHdpc2VfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8dWludHB0cl90Pigx
KSksIGNhbGxGcmFtZSk7CiAgICAgfQotICAgIFJFVFVSTl9UV08oMCwgYml0d2lzZV9jYXN0PHZv
aWQqPihzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KHNsb3RzVG9BZGQpKSk7CisgICAgUkVUVVJOX1RX
TyhudWxscHRyLCBiaXR3aXNlX2Nhc3Q8dm9pZCo+KHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oc2xv
dHNUb0FkZCkpKTsKIH0KIAogU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2NyZWF0ZV9kaXJlY3Rf
YXJndW1lbnRzKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
cGxldGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tcGxldGlvbi5oCmlu
ZGV4IDc1ZjUyMWRhODlmMjY4MDExMTM2NDc4MDhjMjkyYjMxZDFiOTFhZjkuLjU2OThhODU3OTdk
OGMxOWM4YWNiNzA4MTZhM2RhMTNlYzA1OWRjNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0NvbXBsZXRpb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Db21wbGV0aW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVk07CiBjbGFzcyBK
U0ludGVybmFsUHJvbWlzZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBjaGVja1N5bnRheChW
TSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBQYXJzZXJFcnJvciYpOwotSlNfRVhQT1JUX1BSSVZBVEUg
Ym9vbCBjaGVja1N5bnRheChKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1Zh
bHVlKiBleGNlcHRpb24gPSAwKTsKK0pTX0VYUE9SVF9QUklWQVRFIGJvb2wgY2hlY2tTeW50YXgo
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTb3VyY2VDb2RlJiwgSlNWYWx1ZSogZXhjZXB0aW9uID0g
bnVsbHB0cik7CiBKU19FWFBPUlRfUFJJVkFURSBib29sIGNoZWNrTW9kdWxlU3ludGF4KEpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYsIFBhcnNlckVycm9yJik7CiAKIEpTX0VYUE9S
VF9QUklWQVRFIFJlZlB0cjxDYWNoZWRCeXRlY29kZT4gZ2VuZXJhdGVQcm9ncmFtQnl0ZWNvZGUo
Vk0mLCBjb25zdCBTb3VyY2VDb2RlJiwgRmlsZVN5c3RlbTo6UGxhdGZvcm1GaWxlSGFuZGxlIGZk
LCBCeXRlY29kZUNhY2hlRXJyb3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0RhdGFWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRh
Vmlldy5oCmluZGV4IDRkMTZhNWI1NmIxYzM5ZGY0NTBhMmUwYTYxYjViNDRhNGViYjhjM2IuLmJk
MjhlNzFkYzQ2ZTI5OTA0NWJiMTE3Y2NiYjdlMTc0NGQzMDg5MjMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGFWaWV3LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0YVZpZXcuaApAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAgICAg
SlNBcnJheUJ1ZmZlclZpZXcqIHdyYXAoSlNHbG9iYWxPYmplY3QqLCBKU0dsb2JhbE9iamVjdCop
IG92ZXJyaWRlOwogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCBnZXQodW5z
aWduZWQgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gMCkKKyAgICBU
IGdldCh1bnNpZ25lZCBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9m
ZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpAQCAtNjIsNyArNjIsNyBAQCBwdWJs
aWM6CiAgICAgfQogICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgVCByZWFkKHVu
c2lnbmVkJiBvZmZzZXQsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSAwKQorICAg
IFQgcmVhZCh1bnNpZ25lZCYgb2Zmc2V0LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVz
ID0gbnVsbHB0cikKICAgICB7CiAgICAgICAgIFQgcmVzdWx0ID0gdGhpcy0+dGVtcGxhdGUgZ2V0
PFQ+KG9mZnNldCwgbGl0dGxlRW5kaWFuLCBzdGF0dXMpOwogICAgICAgICBpZiAoIXN0YXR1cyB8
fCAqc3RhdHVzKQpAQCAtNzEsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgfQogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgdm9pZCBzZXQodW5zaWduZWQgb2Zmc2V0LCBUIHZhbHVl
LCBib29sIGxpdHRsZUVuZGlhbiwgYm9vbCogc3RhdHVzID0gMCkKKyAgICB2b2lkIHNldCh1bnNp
Z25lZCBvZmZzZXQsIFQgdmFsdWUsIGJvb2wgbGl0dGxlRW5kaWFuLCBib29sKiBzdGF0dXMgPSBu
dWxscHRyKQogICAgIHsKICAgICAgICAgaWYgKHN0YXR1cykgewogICAgICAgICAgICAgaWYgKG9m
ZnNldCArIHNpemVvZihUKSA+IGJ5dGVMZW5ndGgoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCA3MDkwM2M1NGIyYjBiMDBmZWJm
NzM2YTViNTgwMjEwOGFhYTM2MzdlLi41OTdlMjk5OGNkNDBhMmIxYjM0NDdiNGNkMGRlYjE5ZWRj
NzUyNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90
eXBlLmNwcApAQCAtMTgzLDEzICsxODMsMTMgQEAgc3RhdGljIEpTQ2VsbCogZm9ybWF0TG9jYWxl
RGF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqLCBEYXRlSW4KICAg
ICBVRGF0ZUZvcm1hdFN0eWxlIGRhdGVTdHlsZSA9IChmb3JtYXQgIT0gTG9jYWxlVGltZSA/IFVE
QVRfTE9ORyA6IFVEQVRfTk9ORSk7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKLSAgICBVRGF0ZUZvcm1hdCogZGYgPSB1ZGF0X29wZW4odGltZVN0eWxlLCBkYXRlU3R5
bGUsIDAsIDAsIC0xLCAwLCAwLCAmc3RhdHVzKTsKKyAgICBVRGF0ZUZvcm1hdCogZGYgPSB1ZGF0
X29wZW4odGltZVN0eWxlLCBkYXRlU3R5bGUsIG51bGxwdHIsIG51bGxwdHIsIC0xLCBudWxscHRy
LCAwLCAmc3RhdHVzKTsKICAgICBpZiAoIWRmKQogICAgICAgICByZXR1cm4ganNFbXB0eVN0cmlu
Zyh2bSk7CiAKICAgICBVQ2hhciBidWZmZXJbMTI4XTsKICAgICBpbnQzMl90IGxlbmd0aDsKLSAg
ICBsZW5ndGggPSB1ZGF0X2Zvcm1hdChkZiwgdGltZUluTWlsbGlzZWNvbmRzLCBidWZmZXIsIDEy
OCwgMCwgJnN0YXR1cyk7CisgICAgbGVuZ3RoID0gdWRhdF9mb3JtYXQoZGYsIHRpbWVJbk1pbGxp
c2Vjb25kcywgYnVmZmVyLCAxMjgsIG51bGxwdHIsICZzdGF0dXMpOwogICAgIHVkYXRfY2xvc2Uo
ZGYpOwogICAgIGlmIChzdGF0dXMgIT0gVV9aRVJPX0VSUk9SKQogICAgICAgICByZXR1cm4ganNF
bXB0eVN0cmluZyh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9EaXJlY3RFdmFsRXhlY3V0YWJsZS5jcHAKaW5kZXggN2MxOWI3NWM2MmM4MDQxMzYyZGQ5ZWIx
MmVkYTU5NzkyNTExNWRmNS4uMGYzYzBjOTY3MTI3MjYxMmQ0MzBiNGMxNjcxNWIyODM1NTdjNTAx
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGlyZWN0RXZhbEV4
ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0RpcmVjdEV2
YWxFeGVjdXRhYmxlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBEaXJlY3RFdmFsRXhlY3V0YWJsZSog
RGlyZWN0RXZhbEV4ZWN1dGFibGU6OmNyZWF0ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogCiAgICAgaWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKICAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwotICAgICAg
ICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgYXV0byog
ZXhlY3V0YWJsZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPERpcmVjdEV2YWxFeGVjdXRh
YmxlPih2bS5oZWFwKSkgRGlyZWN0RXZhbEV4ZWN1dGFibGUoZ2xvYmFsT2JqZWN0LCBzb3VyY2Us
IGVjbWFNb2RlLmlzU3RyaWN0KCksIGRlcml2ZWRDb250ZXh0VHlwZSwgbmVlZHNDbGFzc0ZpZWxk
SW5pdGlhbGl6ZXIsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGlzSW5zaWRlT3JkaW5hcnlGdW5j
dGlvbiwgZXZhbENvbnRleHRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0R1bXBDb250ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0R1bXBDb250ZXh0LmNwcAppbmRleCBmMDdjMmIyNWQ1OGM0ZjQ3ZGVlYTY4Yjc2NTVhYmNhZjll
NGY5MDY0Li42MTU5ZjQ4ZmUyOTEyZjYxNDI3OTQ3YTQ2NjI5MDNlZmE0ZDllMTA3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EdW1wQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRHVtcENvbnRleHQuY3BwCkBAIC0yOSw3ICsy
OSw3IEBACiBuYW1lc3BhY2UgSlNDIHsKIAogRHVtcENvbnRleHQ6OkR1bXBDb250ZXh0KCkKLSAg
ICA6IGdyYXBoKDApCisgICAgOiBncmFwaChudWxscHRyKQogewogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCA2
YTAzYTVmZjQ5MWIxYTg3MDZlNDhiNDIzNDM1Yzg1MzdmMzdhN2EzLi41YjlmMjY1NTg1NjBmNDRk
OWRiN2M0MzBlMmMyMjQxY2QzMjJlOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgRnVu
Y3Rpb25Db2RlQmxvY2sqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6YmFzZWxpbmVDb2RlQmxvY2tGb3Io
Q29kZVNwZWNpYWxpemF0aW9uS2kKICAgICAgICAgZWRnZSA9IG1fY29kZUJsb2NrRm9yQ29uc3Ry
dWN0LmdldCgpOwogICAgIH0KICAgICBpZiAoIWVkZ2UpCi0gICAgICAgIHJldHVybiAwOworICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Db2Rl
QmxvY2sqPihlZGdlLT5jb2RlQmxvY2soKS0+YmFzZWxpbmVBbHRlcm5hdGl2ZSgpKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW5kaXJlY3RFdmFsRXhl
Y3V0YWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxF
eGVjdXRhYmxlLmNwcAppbmRleCAxNGY3ZmFiNWMzZDRlYWE4Nzk0MmJjZjMzMmE0NWYxYzUwNmRh
ZTdmLi5jMDYwZTcyODBhMTk4YmE1NzU3YWEwNDM2NjU2MGEwMDNlNDBlNjZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRhYmxlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbmRpcmVjdEV2YWxFeGVjdXRh
YmxlLmNwcApAQCAtNDIsNyArNDIsNyBAQCBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKiBJbmRpcmVj
dEV2YWxFeGVjdXRhYmxlOjpjcmVhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAg
aWYgKCFnbG9iYWxPYmplY3QtPmV2YWxFbmFibGVkKCkpIHsKICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXZhbEVycm9yKGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5ldmFsRGlzYWJsZWRFcnJvck1lc3NhZ2UoKSkpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgYXV0byogZXhlY3V0YWJs
ZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPEluZGlyZWN0RXZhbEV4ZWN1dGFibGU+KHZt
LmhlYXApKSBJbmRpcmVjdEV2YWxFeGVjdXRhYmxlKGdsb2JhbE9iamVjdCwgc291cmNlLCBkZXJp
dmVkQ29udGV4dFR5cGUsIGlzQXJyb3dGdW5jdGlvbkNvbnRleHQsIGV2YWxDb250ZXh0VHlwZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCmluZGV4IGJjZTM2NTVh
MzE5MmVhMjkwZmU3ZjA0MDgyNGEzODg2ZjZiMDQ4MzQuLmE4OTZkZTM5ZWFhNmUxNGZjODQxZTk3
NmNiNzBmYjk1ZjcwMDdkODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwCkBAIC0xMTc3LDcgKzExNzcsNyBAQCB2b2lkIEpTQXJyYXk6OmZpbGxBcmdMaXN0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcgogICAg
ICAgICByZXR1cm47CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoVW5kZWNpZGVkOiB7Ci0g
ICAgICAgIHZlY3RvciA9IDA7CisgICAgICAgIHZlY3RvciA9IG51bGxwdHI7CiAgICAgICAgIHZl
Y3RvckVuZCA9IDA7CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTExOTAsNyArMTE5MCw3IEBA
IHZvaWQgSlNBcnJheTo6ZmlsbEFyZ0xpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
TWFya2VkQXJndW1lbnRCdWZmZXImIGFyCiAgICAgfQogICAgICAgICAKICAgICBjYXNlIEFycmF5
V2l0aERvdWJsZTogewotICAgICAgICB2ZWN0b3IgPSAwOworICAgICAgICB2ZWN0b3IgPSBudWxs
cHRyOwogICAgICAgICB2ZWN0b3JFbmQgPSAwOwogICAgICAgICBmb3IgKDsgaSA8IGJ1dHRlcmZs
eS0+cHVibGljTGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgZG91YmxlIHYgPSBidXR0ZXJm
bHktPmNvbnRpZ3VvdXNEb3VibGUoKS5hdCh0aGlzLCBpKTsKQEAgLTEyNDksNyArMTI0OSw3IEBA
IHZvaWQgSlNBcnJheTo6Y29weVRvQXJndW1lbnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUqIGZpcnN0RWxlbWVuCiAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAg
Y2FzZSBBcnJheVdpdGhVbmRlY2lkZWQ6IHsKLSAgICAgICAgdmVjdG9yID0gMDsKKyAgICAgICAg
dmVjdG9yID0gbnVsbHB0cjsKICAgICAgICAgdmVjdG9yRW5kID0gMDsKICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMTI2Miw3ICsxMjYyLDcgQEAgdm9pZCBKU0FycmF5Ojpjb3B5VG9Bcmd1bWVu
dHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSogZmlyc3RFbGVtZW4KICAg
ICB9CiAgICAgICAgIAogICAgIGNhc2UgQXJyYXlXaXRoRG91YmxlOiB7Ci0gICAgICAgIHZlY3Rv
ciA9IDA7CisgICAgICAgIHZlY3RvciA9IG51bGxwdHI7CiAgICAgICAgIHZlY3RvckVuZCA9IDA7
CiAgICAgICAgIGZvciAoOyBpIDwgYnV0dGVyZmx5LT5wdWJsaWNMZW5ndGgoKTsgKytpKSB7CiAg
ICAgICAgICAgICBBU1NFUlQoaSA8IGJ1dHRlcmZseS0+dmVjdG9yTGVuZ3RoKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmlu
ZGV4IGJiMDljOGRhNzQxZGM1YmQ3OWUyN2ExMTQ0MmRhNWRjNzMyZDBlNmQuLmY2OTI0NzljZWU5
MzNiYTViZWY1ZGU5NDQ1Mzk5MjExYjQ5N2FmNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTU3LDkgKzU3LDkgQEAg
SlNBcnJheUJ1ZmZlclZpZXc6OkNvbnN0cnVjdGlvbkNvbnRleHQ6OkNvbnN0cnVjdGlvbkNvbnRl
eHQoCiBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9u
Q29udGV4dCgKICAgICBWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1aW50MzJfdCBsZW5n
dGgsIHVpbnQzMl90IGVsZW1lbnRTaXplLAogICAgIEluaXRpYWxpemF0aW9uTW9kZSBtb2RlKQot
ICAgIDogbV9zdHJ1Y3R1cmUoMCkKKyAgICA6IG1fc3RydWN0dXJlKG51bGxwdHIpCiAgICAgLCBt
X2xlbmd0aChsZW5ndGgpCi0gICAgLCBtX2J1dHRlcmZseSgwKQorICAgICwgbV9idXR0ZXJmbHko
bnVsbHB0cikKIHsKICAgICBpZiAobGVuZ3RoIDw9IGZhc3RTaXplTGltaXQpIHsKICAgICAgICAg
Ly8gQXR0ZW1wdCBHQyBhbGxvY2F0aW9uLgpAQCAtMTEwLDcgKzExMCw3IEBAIEpTQXJyYXlCdWZm
ZXJWaWV3OjpDb25zdHJ1Y3Rpb25Db250ZXh0OjpDb25zdHJ1Y3Rpb25Db250ZXh0KAogICAgIG1f
dmVjdG9yID0gVmVjdG9yVHlwZShzdGF0aWNfY2FzdDx1aW50OF90Kj4oYXJyYXlCdWZmZXItPmRh
dGEoKSkgKyBieXRlT2Zmc2V0LCBsZW5ndGgpOwogICAgIEluZGV4aW5nSGVhZGVyIGluZGV4aW5n
SGVhZGVyOwogICAgIGluZGV4aW5nSGVhZGVyLnNldEFycmF5QnVmZmVyKGFycmF5QnVmZmVyLmdl
dCgpKTsKLSAgICBtX2J1dHRlcmZseSA9IEJ1dHRlcmZseTo6Y3JlYXRlKHZtLCAwLCAwLCAwLCB0
cnVlLCBpbmRleGluZ0hlYWRlciwgMCk7CisgICAgbV9idXR0ZXJmbHkgPSBCdXR0ZXJmbHk6OmNy
ZWF0ZSh2bSwgbnVsbHB0ciwgMCwgMCwgdHJ1ZSwgaW5kZXhpbmdIZWFkZXIsIDApOwogfQogCiBK
U0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29udGV4dDo6Q29uc3RydWN0aW9uQ29udGV4
dCgKQEAgLTExOSw3ICsxMTksNyBAQCBKU0FycmF5QnVmZmVyVmlldzo6Q29uc3RydWN0aW9uQ29u
dGV4dDo6Q29uc3RydWN0aW9uQ29udGV4dCgKICAgICA6IG1fc3RydWN0dXJlKHN0cnVjdHVyZSkK
ICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKICAgICAsIG1fbW9kZShEYXRhVmlld01vZGUpCi0gICAg
LCBtX2J1dHRlcmZseSgwKQorICAgICwgbV9idXR0ZXJmbHkobnVsbHB0cikKIHsKICAgICBBU1NF
UlQoYXJyYXlCdWZmZXItPmRhdGEoKSA9PSByZW1vdmVBcnJheVB0clRhZyhhcnJheUJ1ZmZlci0+
ZGF0YSgpKSk7CiAgICAgbV92ZWN0b3IgPSBWZWN0b3JUeXBlKHN0YXRpY19jYXN0PHVpbnQ4X3Qq
PihhcnJheUJ1ZmZlci0+ZGF0YSgpKSArIGJ5dGVPZmZzZXQsIGxlbmd0aCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGU4OWEyMmNmMDZjODRi
MDlhNmFjYzkwMTA1MDQyNTgzOTYyM2ZkOGQuLmVhNmY0NmI0NTg3OTlkMzFmMTA3YWRjYTNhZGMy
M2YyMzNlYjBjZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
Q0pTVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFs
dWUuY3BwCkBAIC0yNTgsNyArMjU4LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZUJ5
SW5kZXgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgcHJvcGUKIAogdm9p
ZCBKU1ZhbHVlOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgZHVtcEluQ29u
dGV4dChvdXQsIDApOworICAgIGR1bXBJbkNvbnRleHQob3V0LCBudWxscHRyKTsKIH0KIAogdm9p
ZCBKU1ZhbHVlOjpkdW1wSW5Db250ZXh0KFByaW50U3RyZWFtJiBvdXQsIER1bXBDb250ZXh0KiBj
b250ZXh0KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWVJbmxpbmVzLmgKaW5kZXggYTBlYjAxMzA1YzIzMjM3NTM4MmFhMGFjOWI0N2U0OGE5ZjFm
NTBhNC4uZGRjMWYyNDc1MThiNGQzZGVmZmY2N2IwYjY4MTEwNGY2NDZlNTIwNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC03
MDAsNyArNzAwLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEJhc2U+IFN0cmluZyBIYW5kbGVDb252
ZXJ0ZXI8QmFzZSwgVW5rbm93bj46OmdldFN0cmluZyhKU0dsb2IKIAogaW5saW5lIEpTT2JqZWN0
KiBKU1ZhbHVlOjpnZXRPYmplY3QoKSBjb25zdAogewotICAgIHJldHVybiBpc0NlbGwoKSA/IGFz
Q2VsbCgpLT5nZXRPYmplY3QoKSA6IDA7CisgICAgcmV0dXJuIGlzQ2VsbCgpID8gYXNDZWxsKCkt
PmdldE9iamVjdCgpIDogbnVsbHB0cjsKIH0KIAogQUxXQVlTX0lOTElORSBib29sIEpTVmFsdWU6
OmdldFVJbnQzMih1aW50MzJfdCYgdikgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0NlbGwuY3BwCmluZGV4IDdkM2EyZDVkNzM5NmExMDY5NTMxOTRiN2ZmNzYyYjQ2ZTdkNWU4
NWIuLmU2YjJmYjZmMWY2ZjE1Njg3ZmU0MDZkMzM2MDMwODI0MTUzMWZhMmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcApAQCAtODcsMTIgKzg3LDEyIEBAIFN0cmlu
ZyBKU0NlbGw6OmdldFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAog
CiBKU09iamVjdCogSlNDZWxsOjpnZXRPYmplY3QoKQogewotICAgIHJldHVybiBpc09iamVjdCgp
ID8gYXNPYmplY3QodGhpcykgOiAwOworICAgIHJldHVybiBpc09iamVjdCgpID8gYXNPYmplY3Qo
dGhpcykgOiBudWxscHRyOwogfQogCiBjb25zdCBKU09iamVjdCogSlNDZWxsOjpnZXRPYmplY3Qo
KSBjb25zdAogewotICAgIHJldHVybiBpc09iamVjdCgpID8gc3RhdGljX2Nhc3Q8Y29uc3QgSlNP
YmplY3QqPih0aGlzKSA6IDA7CisgICAgcmV0dXJuIGlzT2JqZWN0KCkgPyBzdGF0aWNfY2FzdDxj
b25zdCBKU09iamVjdCo+KHRoaXMpIDogbnVsbHB0cjsKIH0KIAogQ2FsbERhdGEgSlNDZWxsOjpn
ZXRDYWxsRGF0YShKU0NlbGwqKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3LmNwcAppbmRleCAxYjI1NTIzYzk4ZmJiMDllMzdmOGE0NzQzMTliZjc2YzMyZDhhOGI4
Li4zYTY2ZjI1ZTM4NjQ0ZGRmM2EzZGE1NTczMTI5NjIyMDYzMmU2MWQxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtNzEsMTMgKzcxLDEzIEBA
IEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6
OmNyZWF0ZVVuaW5pdGlhbGl6ZWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCB1bnNpZ25l
ZCkKIHsKICAgICBVTlJFQUNIQUJMRV9GT1JfUExBVEZPUk0oKTsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAogSlNEYXRhVmlldyogSlNEYXRhVmlldzo6Y3JlYXRlKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgdW5zaWduZWQpCiB7CiAgICAgVU5SRUFDSEFCTEVf
Rk9SX1BMQVRGT1JNKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IGJvb2wgSlNEYXRhVmlldzo6c2V0KEpTR2xvYmFsT2JqZWN0KiwgdW5zaWduZWQsIEpTT2JqZWN0
KiwgdW5zaWduZWQsIHVuc2lnbmVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEZXN0cnVjdGlibGVPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGVzdHJ1Y3RpYmxlT2JqZWN0LmgKaW5kZXggZTQ1YjUyYWVmNmQ3NTFmMDNmOGI4
YTI0ZWIzMDZhOTIyMDgwM2M2ZS4uMGM4MDJjM2IxMWEwMTU0MDIzN2VjNWVjZGZiMWViNmJhNmRh
YTE4OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEZXN0cnVj
dGlibGVPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rlc3Ry
dWN0aWJsZU9iamVjdC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBDbGFz
c0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuIG1fY2xhc3NJbmZvOyB9CiAKIHByb3Rl
Y3RlZDoKLSAgICBKU0Rlc3RydWN0aWJsZU9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IDApCisgICAgSlNEZXN0cnVjdGlibGVPYmplY3Qo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgQnV0dGVyZmx5KiBidXR0ZXJmbHkgPSBudWxs
cHRyKQogICAgICAgICA6IEpTTm9uRmluYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5
KQogICAgICAgICAsIG1fY2xhc3NJbmZvKHN0cnVjdHVyZS0+Y2xhc3NJbmZvKCkpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCA5ZTM0
OTFmOWQ3YTEzOTM1NmQ5N2Y0MGJhNGM1ZjhkM2ExYWE1M2IzLi4xYzZlZjBkMDZjOWZiOTZhMGYx
ZmMzNDA1NTRmMzVjMzljNTMyMGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtMjYxLDcgKzI2MSw3IEBAIGNvbnN0IFN0cmluZyBKU0Z1bmN0
aW9uOjpjYWxjdWxhdGVkRGlzcGxheU5hbWUoVk0mIHZtKQogY29uc3QgU291cmNlQ29kZSogSlNG
dW5jdGlvbjo6c291cmNlQ29kZSgpIGNvbnN0CiB7CiAgICAgaWYgKGlzSG9zdE9yQnVpbHRpbkZ1
bmN0aW9uKCkpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICByZXR1cm4gJmpzRXhlY3V0YWJsZSgpLT5zb3VyY2UoKTsKIH0KICAgICAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA2NjUxYTAy
ZjcyZDIzNGM5MmI3NzE4NDkyMDdmNDMxZmQwMDI3YjIzLi42ZTY4NDk0OTlmMGI3MzZkZjdlNDg4
YWExZDk4ZjRkN2Q3ODhjOWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC00MjgsNyArNDI4LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZW5xdWV1ZUpvYihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKIH0KIAogSlNHbG9iYWxPYmplY3Q6OkpTR2xvYmFsT2JqZWN0KFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUsIGNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlKiBnbG9iYWxP
YmplY3RNZXRob2RUYWJsZSkKLSAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgMCkKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSwgbnVsbHB0cikKICAgICAsIG1fdm0oJnZtKQogICAgICwgbV9saW5r
VGltZUNvbnN0YW50cyhudW1iZXJPZkxpbmtUaW1lQ29uc3RhbnRzKQogICAgICwgbV9tYXNxdWVy
YWRlc0FzVW5kZWZpbmVkV2F0Y2hwb2ludChhZG9wdFJlZihuZXcgV2F0Y2hwb2ludFNldChJc1dh
dGNoZWQpKSkKQEAgLTUyMyw3ICs1MjMsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojppbml0KFZN
JiB2bSkKIAogICAgIEJhc2U6OnNldFN0cnVjdHVyZSh2bSwgU3RydWN0dXJlOjp0b0NhY2hlYWJs
ZURpY3Rpb25hcnlUcmFuc2l0aW9uKHZtLCBzdHJ1Y3R1cmUodm0pKSk7CiAKLSAgICBtX2RlYnVn
Z2VyID0gMDsKKyAgICBtX2RlYnVnZ2VyID0gbnVsbHB0cjsKIAogI2lmIEVOQUJMRShSRU1PVEVf
SU5TUEVDVE9SKQogICAgIG1faW5zcGVjdG9yQ29udHJvbGxlciA9IG1ha2VVbmlxdWU8SW5zcGVj
dG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI+KCp0aGlzKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDY2YTNjYmVl
NjM5NThhNGU4ZWVkMDM4YjUyMjExOWFhZTYyYmFmMTEuLmQyMTIxNWRlMTI4OGUzZDE3ZjM4MzMx
YzcxZDAyNjFjN2VjNzM4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtOTgxLDcgKzk4MSw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTVmFsdWUgcHJvdG90eXBlKQog
ICAgIHsKLSAgICAgICAgU3RydWN0dXJlKiByZXN1bHQgPSBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
MCwgcHJvdG90eXBlLCBUeXBlSW5mbyhHbG9iYWxPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7CisgICAgICAgIFN0cnVjdHVyZSogcmVzdWx0ID0gU3RydWN0dXJlOjpjcmVhdGUo
dm0sIG51bGxwdHIsIHByb3RvdHlwZSwgVHlwZUluZm8oR2xvYmFsT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOwogICAgICAgICByZXN1bHQtPnNldFRyYW5zaXRpb25XYXRjaHBv
aW50SXNMaWtlbHlUb0JlRmlyZWQodHJ1ZSk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAppbmRleCAy
ZGM5M2VlYmM4NTU4NzYyYTQ2ZmVjNDA2ZTM5OThjOTQ0ZTZlM2EwLi5mNmE1MzQ0MmUyYWQ1ZmFk
ZTliZDk2MjkwMzdkMDI4MDhhYTU0ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09OT2JqZWN0LmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIGlubGluZSBQcm9wZXJ0eU5h
bWVGb3JGdW5jdGlvbkNhbGw6OlByb3BlcnR5TmFtZUZvckZ1bmN0aW9uQ2FsbChjb25zdCBJZGVu
dGlmaWVyCiB9CiAKIGlubGluZSBQcm9wZXJ0eU5hbWVGb3JGdW5jdGlvbkNhbGw6OlByb3BlcnR5
TmFtZUZvckZ1bmN0aW9uQ2FsbCh1bnNpZ25lZCBudW1iZXIpCi0gICAgOiBtX2lkZW50aWZpZXIo
MCkKKyAgICA6IG1faWRlbnRpZmllcihudWxscHRyKQogICAgICwgbV9udW1iZXIobnVtYmVyKQog
ewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCmluZGV4IDNi
ODFlNmFjOGVmM2FhZTgwZjgzMzU1YTQxZWFlZDQxM2QxMTAyMmQuLjA2MmUzYjI2ZmU5NDVmM2Q1
ZjE2YjY4NWNiNmMxMzlhZTU1YWRkMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKQEAgLTE3MDQsNyArMTcwNCw3IEBAIEFycmF5U3RvcmFnZSogSlNPYmpl
Y3Q6OmVuc3VyZUFycmF5U3RvcmFnZVNsb3coVk0mIHZtKQogICAgICAgICAKICAgICBkZWZhdWx0
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogfQogCkBAIC0xNzM3LDcgKzE3Mzcs
NyBAQCBBcnJheVN0b3JhZ2UqIEpTT2JqZWN0OjplbnN1cmVBcnJheVN0b3JhZ2VFeGlzdHNBbmRF
bnRlckRpY3Rpb25hcnlJbmRleGluZ01vZGUoVgogICAgICAgICAKICAgICBkZWZhdWx0OgogICAg
ICAgICBDUkFTSCgpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U09iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAppbmRl
eCA0YzZmOTk1NWJlOWUyMmZlMDNjOTJiNmM0MGM1NzdiMTI0ZWQ3N2ZjLi5lZjE3N2U5YjZjZmM3
MWNjMTQ2NjgyMzcxY2Q1NmMxMzg2NTdlM2RmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT2JqZWN0LmgKQEAgLTk5NSw3ICs5OTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgICAg
ICByZXR1cm4gbV9idXR0ZXJmbHktPmFycmF5U3RvcmFnZSgpOwogICAgICAgICAgICAgICAgIAog
ICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC0xMTUxLDcgKzExNTEs
NyBAQCBwdWJsaWM6CiAgICAgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgSlNOb25GaW5h
bE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZs
eSA9IDApCisgICAgZXhwbGljaXQgSlNOb25GaW5hbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSog
c3RydWN0dXJlLCBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IG51bGxwdHIpCiAgICAgICAgIDogSlNP
YmplY3Qodm0sIHN0cnVjdHVyZSwgYnV0dGVyZmx5KQogICAgIHsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCmluZGV4IGIzYzI3MjAyMjgwNmI4MTE0MzU3
ZDgxZGU5ZjNiNWZjMTAzNTRkOWEuLjdjODQ3NTFmNmYzN2Y0ZTRjZWM5MTdlZTc4MmRmN2IwMmJk
OWEwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuY3BwCkBAIC02
NywxMSArNjcsMTEgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLAogICAgICAgICAgICAgICAgIEFT
U0VSVCghZW50cnkuaXNOdWxsKCkpOwogICAgICAgICAgICAgICAgIGlmIChlbnRyeS5pc1JlYWRP
bmx5KCkgJiYgZ2V0T3JQdXQgPT0gUHV0KSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtu
b3cgdGhlIHByb3BlcnR5IHdpbGwgYmUgYXQgdGhpcyBsZXhpY2FsIGVudmlyb25tZW50IHNjb3Bl
LCBidXQgd2UgZG9uJ3Qga25vdyBob3cgdG8gY2FjaGUgaXQuCi0gICAgICAgICAgICAgICAgICAg
IG9wID0gUmVzb2x2ZU9wKER5bmFtaWMsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgICAg
ICAgICBvcCA9IFJlc29sdmVPcChEeW5hbWljLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCAwKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICAgICAgb3AgPSBSZXNvbHZlT3AobWFrZVR5cGUoQ2xvc3VyZVZhciwg
bmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwgMCwgbGV4aWNhbEVudmlyb25tZW50LCBl
bnRyeS53YXRjaHBvaW50U2V0KCksIGVudHJ5LnNjb3BlT2Zmc2V0KCkub2Zmc2V0KCkpOworICAg
ICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKENsb3N1cmVWYXIsIG5lZWRzVmFy
SW5qZWN0aW9uQ2hlY2tzKSwgZGVwdGgsIG51bGxwdHIsIGxleGljYWxFbnZpcm9ubWVudCwgZW50
cnkud2F0Y2hwb2ludFNldCgpLCBlbnRyeS5zY29wZU9mZnNldCgpLm9mZnNldCgpKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtOTAs
NyArOTAsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsCiAgICAgICAgICAgICAgICAgQVNTRVJU
KGl0ZXIgIT0gc3ltYm9sVGFibGUtPmVuZChsb2NrZXIpKTsKICAgICAgICAgICAgICAgICBTeW1i
b2xUYWJsZUVudHJ5JiBlbnRyeSA9IGl0ZXItPnZhbHVlOwogICAgICAgICAgICAgICAgIEFTU0VS
VCghZW50cnkuaXNOdWxsKCkpOwotICAgICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VU
eXBlKE1vZHVsZVZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwgMCwgaW1wb3J0
ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hwb2ludFNldCgpLCBlbnRyeS5zY29wZU9mZnNldCgp
Lm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2FsTmFtZS5pbXBsKCkpOworICAgICAgICAgICAgICAg
IG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKE1vZHVsZVZhciwgbmVlZHNWYXJJbmplY3Rpb25DaGVj
a3MpLCBkZXB0aCwgbnVsbHB0ciwgaW1wb3J0ZWRFbnZpcm9ubWVudCwgZW50cnkud2F0Y2hwb2lu
dFNldCgpLCBlbnRyeS5zY29wZU9mZnNldCgpLm9mZnNldCgpLCByZXNvbHV0aW9uLmxvY2FsTmFt
ZS5pbXBsKCkpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQog
ICAgICAgICB9CkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0
QWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLAogICAg
ICAgICAgICAgQVNTRVJUKCFlbnRyeS5pc051bGwoKSk7CiAgICAgICAgICAgICBpZiAoZ2V0T3JQ
dXQgPT0gUHV0ICYmIGVudHJ5LmlzUmVhZE9ubHkoKSAmJiAhaXNJbml0aWFsaXphdGlvbihpbml0
aWFsaXphdGlvbk1vZGUpKSB7CiAgICAgICAgICAgICAgICAgLy8gV2Uga25vdyB0aGUgcHJvcGVy
dHkgd2lsbCBiZSBhdCBnbG9iYWwgbGV4aWNhbCBlbnZpcm9ubWVudCwgYnV0IHdlIGRvbid0IGtu
b3cgaG93IHRvIGNhY2hlIGl0LgotICAgICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKER5bmFt
aWMsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKER5bmFt
aWMsIDAsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIDApOwogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgfQogCkBAIC0xMjQsNyArMTI0LDcgQEAgc3RhdGljIGlu
bGluZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
U2NvcGUqIHNjb3BlLAogICAgICAgICAgICAgLy8gV2Ugc3RpbGwgbmVlZCB0byBtYWtlIHRoZSBz
bG93IHBhdGggY29ycmVjdCBmb3Igd2hlbiB3ZSBuZWVkIHRvIGZpcmUgYSB3YXRjaHBvaW50Lgog
ICAgICAgICAgICAgUmVzb2x2ZVR5cGUgcmVzb2x2ZVR5cGUgPSBpbml0aWFsaXphdGlvbk1vZGUg
PT0gSW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uID8gR2xvYmFsTGV4aWNh
bFZhciA6IG1ha2VUeXBlKEdsb2JhbExleGljYWxWYXIsIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tz
KTsKICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKAotICAgICAgICAgICAgICAgIHJlc29sdmVU
eXBlLCBkZXB0aCwgMCwgMCwgZW50cnkud2F0Y2hwb2ludFNldCgpLAorICAgICAgICAgICAgICAg
IHJlc29sdmVUeXBlLCBkZXB0aCwgbnVsbHB0ciwgbnVsbHB0ciwgZW50cnkud2F0Y2hwb2ludFNl
dCgpLAogICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQtPnZhcmlhYmxlQXQoZW50cnkuc2NvcGVPZmZzZXQoKSkuc2xvdCgp
KSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQpAQCAtMTQzLDEyICsxNDMs
MTIgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLAogICAgICAgICAgICAgICAgIEFTU0VSVCghZW50
cnkuaXNOdWxsKCkpOwogICAgICAgICAgICAgICAgIGlmIChnZXRPclB1dCA9PSBQdXQgJiYgZW50
cnkuaXNSZWFkT25seSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIHBy
b3BlcnR5IHdpbGwgYmUgYXQgZ2xvYmFsIHNjb3BlLCBidXQgd2UgZG9uJ3Qga25vdyBob3cgdG8g
Y2FjaGUgaXQuCi0gICAgICAgICAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKER5bmFtaWMsIDAs
IDAsIDAsIDAsIDApOworICAgICAgICAgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChEeW5hbWlj
LCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgb3AgPSBS
ZXNvbHZlT3AoCi0gICAgICAgICAgICAgICAgICAgIG1ha2VUeXBlKEdsb2JhbFZhciwgbmVlZHNW
YXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwgMCwgMCwgZW50cnkud2F0Y2hwb2ludFNldCgpLAor
ICAgICAgICAgICAgICAgICAgICBtYWtlVHlwZShHbG9iYWxWYXIsIG5lZWRzVmFySW5qZWN0aW9u
Q2hlY2tzKSwgZGVwdGgsIG51bGxwdHIsIG51bGxwdHIsIGVudHJ5LndhdGNocG9pbnRTZXQoKSwK
ICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGdsb2JhbE9i
amVjdC0+dmFyaWFibGVBdChlbnRyeS5zY29wZU9mZnNldCgpKS5zbG90KCkpKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTE1Nyw3ICsxNTcsNyBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgYWJzdHJhY3RBY2Nlc3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNTY29wZSogc2NvcGUsCiAgICAgICAgIFByb3BlcnR5U2xvdCBzbG90KGdsb2JhbE9i
amVjdCwgUHJvcGVydHlTbG90OjpJbnRlcm5hbE1ldGhvZFR5cGU6OlZNSW5xdWlyeSk7CiAgICAg
ICAgIGJvb2wgaGFzT3duUHJvcGVydHkgPSBnbG9iYWxPYmplY3QtPmdldE93blByb3BlcnR5U2xv
dChnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdCwgaWRlbnQsIHNsb3QpOwogICAgICAgICBpZiAo
IWhhc093blByb3BlcnR5KSB7Ci0gICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShV
bnJlc29sdmVkUHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgMCwgMCwgMCwgMCwg
MCk7CisgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlwZShVbnJlc29sdmVkUHJvcGVy
dHksIG5lZWRzVmFySW5qZWN0aW9uQ2hlY2tzKSwgMCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
ciwgMCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xNjcsNyAr
MTY3LDcgQEAgc3RhdGljIGlubGluZSBib29sIGFic3RyYWN0QWNjZXNzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTU2NvcGUqIHNjb3BlLAogICAgICAgICAgICAgfHwgKHN0cnVjdHVy
ZS0+aGFzUmVhZE9ubHlPckdldHRlclNldHRlclByb3BlcnRpZXNFeGNsdWRpbmdQcm90bygpICYm
IGdldE9yUHV0ID09IFB1dCkpIHsKICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIHByb3BlcnR5
IHdpbGwgYmUgYXQgZ2xvYmFsIHNjb3BlLCBidXQgd2UgZG9uJ3Qga25vdyBob3cgdG8gY2FjaGUg
aXQuCiAgICAgICAgICAgICBBU1NFUlQoIXNjb3BlLT5uZXh0KCkpOwotICAgICAgICAgICAgb3Ag
PSBSZXNvbHZlT3AobWFrZVR5cGUoR2xvYmFsUHJvcGVydHksIG5lZWRzVmFySW5qZWN0aW9uQ2hl
Y2tzKSwgMCwgMCwgMCwgMCwgMCk7CisgICAgICAgICAgICBvcCA9IFJlc29sdmVPcChtYWtlVHlw
ZShHbG9iYWxQcm9wZXJ0eSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCAwLCBudWxscHRyLCBu
dWxscHRyLCBudWxscHRyLCAwKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAKQEAgLTE4MSwxMyArMTgxLDEzIEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhYnN0cmFjdEFjY2Vz
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Njb3BlKiBzY29wZSwKICAgICAgICAg
ICAgIC8vIDIpIEhhdmUgdGhlIGludmFsaWRhdGlvbiBoYXBwZW4gYXQgcnVuLXRpbWUuIEFsbCB3
ZSBoYXZlIHRvIGRvIGlzIGxlYXZlIHRoZSBjb2RlCiAgICAgICAgICAgICAvLyAgICB1bmNhY2hl
ZC4gVGhlIG9ubHkgZG93bnNpZGUgaXMgc2xpZ2h0bHkgbW9yZSB3b3JrIHdoZW4gdGhpcyBkb2Vz
IGV4ZWN1dGUuCiAgICAgICAgICAgICAvLyBXZSBnbyB3aXRoIG9wdGlvbiAoMikgaGVyZSBiZWNh
dXNlIGl0IHNlZW1zIGxlc3MgZXZpbC4KLSAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VU
eXBlKEdsb2JhbFByb3BlcnR5LCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRoLCAwLCAw
LCAwLCAwKTsKKyAgICAgICAgICAgIG9wID0gUmVzb2x2ZU9wKG1ha2VUeXBlKEdsb2JhbFByb3Bl
cnR5LCBuZWVkc1ZhckluamVjdGlvbkNoZWNrcyksIGRlcHRoLCBudWxscHRyLCBudWxscHRyLCBu
dWxscHRyLCAwKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBvcCA9IFJlc29sdmVPcCht
YWtlVHlwZShHbG9iYWxQcm9wZXJ0eSwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3MpLCBkZXB0aCwg
c3RydWN0dXJlLCAwLCAwLCBzbG90LmNhY2hlZE9mZnNldCgpKTsKKyAgICAgICAgICAgIG9wID0g
UmVzb2x2ZU9wKG1ha2VUeXBlKEdsb2JhbFByb3BlcnR5LCBuZWVkc1ZhckluamVjdGlvbkNoZWNr
cyksIGRlcHRoLCBzdHJ1Y3R1cmUsIG51bGxwdHIsIG51bGxwdHIsIHNsb3QuY2FjaGVkT2Zmc2V0
KCkpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBvcCA9IFJlc29sdmVPcChE
eW5hbWljLCAwLCAwLCAwLCAwLCAwKTsKKyAgICBvcCA9IFJlc29sdmVPcChEeW5hbWljLCAwLCBu
dWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MzA1LDcgKzMwNSw3IEBAIFJlc29sdmVPcCBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IGRlcHRoT2ZmCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCi0gICAgUmVzb2x2ZU9wIG9wKER5bmFtaWMsIDAsIDAsIDAsIDAsIDApOworICAg
IFJlc29sdmVPcCBvcChEeW5hbWljLCAwLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCAwKTsK
ICAgICBpZiAodW5saW5rZWRUeXBlID09IER5bmFtaWMpCiAgICAgICAgIHJldHVybiBvcDsKIApA
QCAtMzEzLDcgKzMxMyw3IEBAIFJlc29sdmVPcCBKU1Njb3BlOjphYnN0cmFjdFJlc29sdmUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgc2l6ZV90IGRlcHRoT2ZmCiAgICAgc2l6ZV90IGRl
cHRoID0gZGVwdGhPZmZzZXQ7CiAgICAgZm9yICg7IHNjb3BlOyBzY29wZSA9IHNjb3BlLT5uZXh0
KCkpIHsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gYWJzdHJhY3RBY2Nlc3MoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgaWRlbnQsIGdldE9yUHV0LCBkZXB0aCwgbmVlZHNWYXJJbmplY3Rpb25DaGVja3Ms
IG9wLCBpbml0aWFsaXphdGlvbk1vZGUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIFJlc29sdmVPcChEeW5hbWljLCAwLCAwLCAwLCAwLCAwKSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgUmVzb2x2ZU9wKER5bmFtaWMsIDAsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIsIDApKTsKICAgICAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgKytkZXB0aDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTU2NvcGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTU2NvcGUuaAppbmRleCBhYzg2YzJmYTQwZDFlOWZmZTY5YTA2YTAwNTU1NTRkOTM3OTI3Yjll
Li44MjZhZDg3ZTg1ZGM1OTMwYTA3NWVkYmM5YjlhOTM1OWQyNjAyMWI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1Njb3BlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNTY29wZS5oCkBAIC0xMjcsNyArMTI3LDcgQEAgaW5saW5lIFNj
b3BlQ2hhaW5JdGVyYXRvciBKU1Njb3BlOjpiZWdpbigpCiAKIGlubGluZSBTY29wZUNoYWluSXRl
cmF0b3IgSlNTY29wZTo6ZW5kKCkKIHsgCi0gICAgcmV0dXJuIFNjb3BlQ2hhaW5JdGVyYXRvcigw
KTsgCisgICAgcmV0dXJuIFNjb3BlQ2hhaW5JdGVyYXRvcihudWxscHRyKTsgCiB9CiAKIGlubGlu
ZSBKU1Njb3BlKiBKU1Njb3BlOjpuZXh0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAKaW5kZXggNTM1MjM3MThkYzliOWQyMjEyYjhiODIxMTc2
MzY4ZjQ4NDIxODJhNC4uZGQ4MTcyMzNkOGIzMTIxNDQ2YjAxYjFiNThhZTMzZmY4NzA0MGZjMCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5jcHAK
QEAgLTgzMiw3ICs4MzIsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJz
ZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgIHN3aXRjaChzdGF0ZSkgewogICAg
ICAgICAgICAgc3RhcnRQYXJzZUFycmF5OgogICAgICAgICAgICAgY2FzZSBTdGFydFBhcnNlQXJy
YXk6IHsKLSAgICAgICAgICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJy
YXkobV9nbG9iYWxPYmplY3QsIDApOworICAgICAgICAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0g
Y29uc3RydWN0RW1wdHlBcnJheShtX2dsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgICAg
ICAgICBvYmplY3RTdGFjay5hcHBlbmRXaXRoQ3Jhc2hPbk92ZXJmbG93KGFycmF5KTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlv
bnNMaXN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCmlu
ZGV4IGY5YThiZDU1NzRjMTViNGI2YTgxZWMwYmRjZjIxYTEwYzYwMzZhYjUuLjI2YjYwMDgxN2Uz
MTdkYTljZmVkYmEyMzA4ZmFkNmQ0MGU5ZmY5MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT3B0aW9uc0xpc3QuaApAQCAtNTc0LDcgKzU3NCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIXZhbHVlKTsKIAogICAgICAgICBtX3N0YXRlID0gVW5pbml0aWFs
aXplZDsKLSAgICAgICAgbV9yYW5nZVN0cmluZyA9IDA7CisgICAgICAgIG1fcmFuZ2VTdHJpbmcg
PSBudWxscHRyOwogICAgICAgICBtX2xvd0xpbWl0ID0gMDsKICAgICAgICAgbV9oaWdoTGltaXQg
PSAwOwogICAgICAgICByZXR1cm4gKnRoaXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm9wZXJ0eURlc2NyaXB0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvUHJvcGVydHlEZXNjcmlwdG9yLmNwcAppbmRleCA0NDA2ZTgwYmNjMDA5MGFl
Njk4YTc5Y2ZjNDI3ZjA4N2E3MzZkZjcxLi5lODQ2M2NiZTNhMzdmZjI0ODI1Y2ViYmNhZjRmOTQ1
YmFjMjNjYTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9w
ZXJ0eURlc2NyaXB0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1By
b3BlcnR5RGVzY3JpcHRvci5jcHAKQEAgLTk1LDEzICs5NSwxMyBAQCBKU1ZhbHVlIFByb3BlcnR5
RGVzY3JpcHRvcjo6c2V0dGVyKCkgY29uc3QKIEpTT2JqZWN0KiBQcm9wZXJ0eURlc2NyaXB0b3I6
OmdldHRlck9iamVjdCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlzQWNjZXNzb3JEZXNjcmlwdG9y
KCkgJiYgZ2V0dGVyUHJlc2VudCgpKTsKLSAgICByZXR1cm4gbV9nZXR0ZXIuaXNPYmplY3QoKSA/
IGFzT2JqZWN0KG1fZ2V0dGVyKSA6IDA7CisgICAgcmV0dXJuIG1fZ2V0dGVyLmlzT2JqZWN0KCkg
PyBhc09iamVjdChtX2dldHRlcikgOiBudWxscHRyOwogfQogCiBKU09iamVjdCogUHJvcGVydHlE
ZXNjcmlwdG9yOjpzZXR0ZXJPYmplY3QoKSBjb25zdAogewogICAgIEFTU0VSVChpc0FjY2Vzc29y
RGVzY3JpcHRvcigpICYmIHNldHRlclByZXNlbnQoKSk7Ci0gICAgcmV0dXJuIG1fc2V0dGVyLmlz
T2JqZWN0KCkgPyBhc09iamVjdChtX3NldHRlcikgOiAwOworICAgIHJldHVybiBtX3NldHRlci5p
c09iamVjdCgpID8gYXNPYmplY3QobV9zZXR0ZXIpIDogbnVsbHB0cjsKIH0KIAogdm9pZCBQcm9w
ZXJ0eURlc2NyaXB0b3I6OnNldERlc2NyaXB0b3IoSlNWYWx1ZSB2YWx1ZSwgdW5zaWduZWQgYXR0
cmlidXRlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3Bl
cnR5TWFwSGFzaFRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eU1hcEhhc2hUYWJsZS5oCmluZGV4IDA5N2I1ZTliODgyNGE3OTI4NGQxNDBmYjYyMGNkMjI1Nzc4
ZWQyZmEuLjRkYmZhZTJhNTFhMGQ3NDIzYTcwMmIwOTg3MzdmMWFiODk5OTU3NjMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3BlcnR5TWFwSGFzaFRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlNYXBIYXNoVGFibGUu
aApAQCAtMjk5LDcgKzI5OSw3IEBAIGlubGluZSBQcm9wZXJ0eVRhYmxlOjpmaW5kX2l0ZXJhdG9y
IFByb3BlcnR5VGFibGU6OmZpbmQoY29uc3QgS2V5VHlwZSYga2V5KQogICAgIHdoaWxlICh0cnVl
KSB7CiAgICAgICAgIHVuc2lnbmVkIGVudHJ5SW5kZXggPSBtX2luZGV4W2hhc2ggJiBtX2luZGV4
TWFza107CiAgICAgICAgIGlmIChlbnRyeUluZGV4ID09IEVtcHR5RW50cnlJbmRleCkKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcigoVmFsdWVUeXBlKikwLCBoYXNoICYgbV9pbmRl
eE1hc2spOworICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKChWYWx1ZVR5cGUqKW51
bGxwdHIsIGhhc2ggJiBtX2luZGV4TWFzayk7CiAgICAgICAgIGlmIChrZXkgPT0gdGFibGUoKVtl
bnRyeUluZGV4IC0gMV0ua2V5KQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKCZ0
YWJsZSgpW2VudHJ5SW5kZXggLSAxXSwgaGFzaCAmIG1faW5kZXhNYXNrKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJvcGVydHlTbG90LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0eVNsb3QuaAppbmRleCA2NTk3OTg1MmQyZjFh
MzQ1NjUxNWVkZDkxNzNjZDFlMmVkYTExZjQ5Li44ZDllMTMyMjkxNTZhM2UwY2Q2NTc3YTM4NGEx
NjkyYmM3MTUzZjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Q
cm9wZXJ0eVNsb3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9wZXJ0
eVNsb3QuaApAQCAtMjM4LDcgKzIzOCw3IEBAIHB1YmxpYzoKICAgICAgICAgbV9kYXRhLnZhbHVl
ID0gSlNWYWx1ZTo6ZW5jb2RlKHZhbHVlKTsKICAgICAgICAgbV9hdHRyaWJ1dGVzID0gYXR0cmli
dXRlczsKIAotICAgICAgICBtX3Nsb3RCYXNlID0gMDsKKyAgICAgICAgbV9zbG90QmFzZSA9IG51
bGxwdHI7CiAgICAgICAgIG1fcHJvcGVydHlUeXBlID0gVHlwZVZhbHVlOwogCiAgICAgICAgIEFT
U0VSVChtX2NhY2hlYWJpbGl0eSA9PSBDYWNoaW5nRGlzYWxsb3dlZCk7CkBAIC0zNjEsNyArMzYx
LDcgQEAgcHVibGljOgogICAgICAgICBtX2RhdGEudmFsdWUgPSBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgICAgIG1fYXR0cmlidXRlcyA9IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtOwogCi0gICAgICAgIG1fc2xvdEJhc2UgPSAwOworICAgICAgICBtX3Nsb3RC
YXNlID0gbnVsbHB0cjsKICAgICAgICAgbV9wcm9wZXJ0eVR5cGUgPSBUeXBlVmFsdWU7CiAgICAg
fQogCkBAIC00MDEsNyArNDAxLDcgQEAgcHJpdmF0ZToKICAgICB1bmlvbiB7CiAgICAgICAgIERP
TUF0dHJpYnV0ZUFubm90YXRpb24gZG9tQXR0cmlidXRlOwogICAgICAgICBNb2R1bGVOYW1lc3Bh
Y2VTbG90IG1vZHVsZU5hbWVzcGFjZVNsb3Q7Ci0gICAgfSBtX2FkZGl0aW9uYWxEYXRhIHsgeyAw
LCAwIH0gfTsKKyAgICB9IG1fYWRkaXRpb25hbERhdGEgeyB7IG51bGxwdHIsIG51bGxwdHIgfSB9
OwogfTsKIAogQUxXQVlTX0lOTElORSBKU1ZhbHVlIFByb3BlcnR5U2xvdDo6Z2V0VmFsdWUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkgY29u
c3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1B1dFByb3BlcnR5
U2xvdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgK
aW5kZXggZmZmYzg1YWQwZjI4ZWFjZWUyMDhiOTdiNmNjMjdlYmUxOGRmNDI2ZS4uMWU4NjJiNjhm
OWUyZTU1ZDViYzNmODY2NzIyNWMzZDg0OGNjOWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUHV0UHJvcGVydHlTbG90LmgKQEAgLTQxLDcgKzQxLDcgQEAgcHVibGlj
OgogICAgIHR5cGVkZWYgYm9vbCAoKlB1dFZhbHVlRnVuYykoSlNHbG9iYWxPYmplY3QqLCBFbmNv
ZGVkSlNWYWx1ZSB0aGlzT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB2YWx1ZSk7CiAKICAgICBQdXRQ
cm9wZXJ0eVNsb3QoSlNWYWx1ZSB0aGlzVmFsdWUsIGJvb2wgaXNTdHJpY3RNb2RlID0gZmFsc2Us
IENvbnRleHQgY29udGV4dCA9IFVua25vd25Db250ZXh0LCBib29sIGlzSW5pdGlhbGl6YXRpb24g
PSBmYWxzZSkKLSAgICAgICAgOiBtX2Jhc2UoMCkKKyAgICAgICAgOiBtX2Jhc2UobnVsbHB0cikK
ICAgICAgICAgLCBtX3RoaXNWYWx1ZSh0aGlzVmFsdWUpCiAgICAgICAgICwgbV9vZmZzZXQoaW52
YWxpZE9mZnNldCkKICAgICAgICAgLCBtX2lzU3RyaWN0TW9kZShpc1N0cmljdE1vZGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBNYXRjaGVzQXJyYXku
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCmlu
ZGV4IGI0ZWNkYjc0YTIxMzBkMTE4ZGIyNTdjMzZjZTBkODg2NmViZjY2MGUuLjYzNjk0YjIzYjE0
ZDMzMmJmZDA3YzlkYTg5MDdkMDBlNjJjYjlkMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1JlZ0V4cE1hdGNoZXNBcnJheS5oCkBAIC0zOSw3ICszOSw3IEBAIEFM
V0FZU19JTkxJTkUgSlNBcnJheSogdHJ5Q3JlYXRlVW5pbml0aWFsaXplZFJlZ0V4cE1hdGNoZXNB
cnJheShPYmplY3RJbml0aWFsaXphCiAgICAgVk0mIHZtID0gc2NvcGUudm0oKTsKICAgICB1bnNp
Z25lZCB2ZWN0b3JMZW5ndGggPSBpbml0aWFsTGVuZ3RoOwogICAgIGlmICh2ZWN0b3JMZW5ndGgg
PiBNQVhfU1RPUkFHRV9WRUNUT1JfTEVOR1RIKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICBjb25zdCBib29sIGhhc0luZGV4aW5nSGVhZGVyID0gdHJ1
ZTsKICAgICBCdXR0ZXJmbHkqIGJ1dHRlcmZseSA9IEJ1dHRlcmZseTo6dHJ5Q3JlYXRlVW5pbml0
aWFsaXplZCh2bSwgbnVsbHB0ciwgMCwgc3RydWN0dXJlLT5vdXRPZkxpbmVDYXBhY2l0eSgpLCBo
YXNJbmRleGluZ0hlYWRlciwgdmVjdG9yTGVuZ3RoICogc2l6ZW9mKEVuY29kZWRKU1ZhbHVlKSwg
ZGVmZXJyYWxDb250ZXh0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCmluZGV4IGFhOTZiOTcwYmNhNDY4OTQ0YjIwM2QzMjIwMGMxZTVj
ZjYxOTZkM2UuLjczMzNlMWNmYzk5YzY2ZmE4ZDZmMDdjY2UxMDIxNDljZTU2MWQzODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApA
QCAtNjE4LDcgKzYxOCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJv
dG9GdW5jU3BsaXRGYXN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAKICAgICAvLyAxMS4g
TGV0IEEgYmUgQXJyYXlDcmVhdGUoMCkuCiAgICAgLy8gMTIuIExldCBsZW5ndGhBIGJlIDAuCi0g
ICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIDAp
OworICAgIEpTQXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0
LCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKICAgICB1bnNpZ25lZCByZXN1bHRMZW5ndGggPSAwOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCA4NDg3MTRkOTQ1
Mzk0NjZmNWRhMDMzM2M2ZWYwMzI0ZjkzYmZhMTY2Li5mOTNmZTNlYjJkMDk4YzRiYmM3NmY3ZDc5
ODQ0YjRlZTA4M2ViMzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTEyNTIsNyArMTI1Miw3IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jU3BsaXRGYXN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplCiAKICAgICAvLyA0LiBMZXQgQSBiZSBhIG5ldyBhcnJheSBjcmVhdGVkIGFzIGlm
IGJ5IHRoZSBleHByZXNzaW9uIG5ldyBBcnJheSgpCiAgICAgLy8gICAgd2hlcmUgQXJyYXkgaXMg
dGhlIHN0YW5kYXJkIGJ1aWx0LWluIGNvbnN0cnVjdG9yIHdpdGggdGhhdCBuYW1lLgotICAgIEpT
QXJyYXkqIHJlc3VsdCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCAwKTsKKyAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVs
bHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAKICAgICAvLyA1LiBMZXQgbGVuZ3RoQSBiZSAwLgpAQCAtMTM4Miw3ICsxMzgyLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNTdWJzdHIoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNW
YWx1ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUpOwogICAgIHVuc2lnbmVkIGxlbjsKLSAgICBKU1N0cmluZyoganNTdHJpbmcgPSAwOworICAg
IEpTU3RyaW5nKiBqc1N0cmluZyA9IG51bGxwdHI7CiAgICAgU3RyaW5nIHVTdHJpbmc7CiAgICAg
aWYgKHRoaXNWYWx1ZS5pc1N0cmluZygpKSB7CiAgICAgICAgIGpzU3RyaW5nID0gYXNTdHJpbmco
dGhpc1ZhbHVlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cnVjdHVyZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJ1Y3R1cmUuY3Bw
CmluZGV4IDljMmNlN2FmYWU2ZTM4ZTdhNjA4MDI2ZjUxNzcxMTBlM2M4NTU2MmUuLjA5ZDc1MjU0
YzZiMTMyOWZhNzk4ZDZmNzdmNWQ2MGM1ZGE0MWExZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvU3RydWN0dXJlLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIGlubGluZSBTdHJ1
Y3R1cmUqIFN0cnVjdHVyZVRyYW5zaXRpb25UYWJsZTo6Z2V0KFVuaXF1ZWRTdHJpbmdJbXBsKiBy
ZXAsIHVuc2lnbmVkCiB7CiAgICAgaWYgKGlzVXNpbmdTaW5nbGVTbG90KCkpIHsKICAgICAgICAg
U3RydWN0dXJlKiB0cmFuc2l0aW9uID0gc2luZ2xlVHJhbnNpdGlvbigpOwotICAgICAgICByZXR1
cm4gKHRyYW5zaXRpb24gJiYgdHJhbnNpdGlvbi0+bV90cmFuc2l0aW9uUHJvcGVydHlOYW1lID09
IHJlcCAmJiB0cmFuc2l0aW9uLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1dGVzKCkgPT0gYXR0
cmlidXRlcyAmJiB0cmFuc2l0aW9uLT5pc1Byb3BlcnR5RGVsZXRpb25UcmFuc2l0aW9uKCkgPT0g
IWlzQWRkaXRpb24pID8gdHJhbnNpdGlvbiA6IDA7CisgICAgICAgIHJldHVybiAodHJhbnNpdGlv
biAmJiB0cmFuc2l0aW9uLT5tX3RyYW5zaXRpb25Qcm9wZXJ0eU5hbWUgPT0gcmVwICYmIHRyYW5z
aXRpb24tPnRyYW5zaXRpb25Qcm9wZXJ0eUF0dHJpYnV0ZXMoKSA9PSBhdHRyaWJ1dGVzICYmIHRy
YW5zaXRpb24tPmlzUHJvcGVydHlEZWxldGlvblRyYW5zaXRpb24oKSA9PSAhaXNBZGRpdGlvbikg
PyB0cmFuc2l0aW9uIDogbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG1hcCgpLT5nZXQoU3Ry
dWN0dXJlVHJhbnNpdGlvblRhYmxlOjpIYXNoOjpLZXkocmVwLCBhdHRyaWJ1dGVzLCBpc0FkZGl0
aW9uKSk7CiB9CkBAIC0zMzIsNyArMzMyLDcgQEAgYm9vbCBTdHJ1Y3R1cmU6OmlzVmFsaWRQcm90
b3R5cGUoSlNWYWx1ZSBwcm90b3R5cGUpCiB2b2lkIFN0cnVjdHVyZTo6ZmluZFN0cnVjdHVyZXNB
bmRNYXBGb3JNYXRlcmlhbGl6YXRpb24oVmVjdG9yPFN0cnVjdHVyZSosIDg+JiBzdHJ1Y3R1cmVz
LCBTdHJ1Y3R1cmUqJiBzdHJ1Y3R1cmUsIFByb3BlcnR5VGFibGUqJiB0YWJsZSkKIHsKICAgICBB
U1NFUlQoc3RydWN0dXJlcy5pc0VtcHR5KCkpOwotICAgIHRhYmxlID0gMDsKKyAgICB0YWJsZSA9
IG51bGxwdHI7CiAKICAgICBmb3IgKHN0cnVjdHVyZSA9IHRoaXM7IHN0cnVjdHVyZTsgc3RydWN0
dXJlID0gc3RydWN0dXJlLT5wcmV2aW91c0lEKCkpIHsKICAgICAgICAgc3RydWN0dXJlLT5tX2xv
Y2subG9jaygpOwpAQCAtNDI1LDcgKzQyNSw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQ
cm9wZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlSW1wbChTdHJ1Y3R1cmUqIHN0CiAg
ICAgICAgIHJldHVybiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgfQogCi0gICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIFN0cnVjdHVyZSogU3RydWN0dXJlOjphZGRQcm9w
ZXJ0eVRyYW5zaXRpb25Ub0V4aXN0aW5nU3RydWN0dXJlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCB1bnNpZ25lZCBhdHRyaWJ1dGVzLCBQcm9wZXJ0eU9m
ZnNldCYgb2Zmc2V0KQpAQCAtNzM3LDcgKzczNyw3IEBAIFN0cnVjdHVyZSogU3RydWN0dXJlOjpu
b25Qcm9wZXJ0eVRyYW5zaXRpb25TbG93KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIE5v
CiAgICAgCiAgICAgU3RydWN0dXJlKiBleGlzdGluZ1RyYW5zaXRpb247CiAgICAgY29uc3RleHBy
IGJvb2wgaXNBZGRpdGlvbiA9IHRydWU7Ci0gICAgaWYgKCFzdHJ1Y3R1cmUtPmlzRGljdGlvbmFy
eSgpICYmIChleGlzdGluZ1RyYW5zaXRpb24gPSBzdHJ1Y3R1cmUtPm1fdHJhbnNpdGlvblRhYmxl
LmdldCgwLCBhdHRyaWJ1dGVzLCBpc0FkZGl0aW9uKSkpIHsKKyAgICBpZiAoIXN0cnVjdHVyZS0+
aXNEaWN0aW9uYXJ5KCkgJiYgKGV4aXN0aW5nVHJhbnNpdGlvbiA9IHN0cnVjdHVyZS0+bV90cmFu
c2l0aW9uVGFibGUuZ2V0KG51bGxwdHIsIGF0dHJpYnV0ZXMsIGlzQWRkaXRpb24pKSkgewogICAg
ICAgICBBU1NFUlQoZXhpc3RpbmdUcmFuc2l0aW9uLT50cmFuc2l0aW9uUHJvcGVydHlBdHRyaWJ1
dGVzKCkgPT0gYXR0cmlidXRlcyk7CiAgICAgICAgIEFTU0VSVChleGlzdGluZ1RyYW5zaXRpb24t
PmluZGV4aW5nTW9kZUluY2x1ZGluZ0hpc3RvcnkoKSA9PSBpbmRleGluZ01vZGVJbmNsdWRpbmdI
aXN0b3J5KTsKICAgICAgICAgcmV0dXJuIGV4aXN0aW5nVHJhbnNpdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cnVjdHVyZS5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKaW5kZXggNWJhM2Q5NzI0MzRkMTFjMGEwOTJi
ZWJmYTlhNzUyODBhMDIwNmRlNC4uZjY5NjQ4MGE3OTkyNDIwOWM0YjVkMWM3MjljZjliMmQyYzIw
Y2RhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJl
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RydWN0dXJlLmgKQEAgLTUz
MCw3ICs1MzAsNyBAQCBwdWJsaWM6CiAgICAgSlNTdHJpbmcqIG9iamVjdFRvU3RyaW5nVmFsdWUo
KQogICAgIHsKICAgICAgICAgaWYgKCFoYXNSYXJlRGF0YSgpKQotICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHJhcmVEYXRh
KCktPm9iamVjdFRvU3RyaW5nVmFsdWUoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCmluZGV4IDViMWJjYmNkYWMwOTc1
MmU4YzM3MjIyZjU5OTEyZjdmZWNmNzBjMDQuLjVjYzU4Y2E0MTE3NTVlYTBhNDNjYTQ2OThjODYy
N2RhNTAyODU3NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
c3RSdW5uZXJVdGlscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVz
dFJ1bm5lclV0aWxzLmNwcApAQCAtNTIsNyArNTIsNyBAQCBDb2RlQmxvY2sqIGdldFNvbWVCYXNl
bGluZUNvZGVCbG9ja0ZvckZ1bmN0aW9uKEpTVmFsdWUgdGhlRnVuY3Rpb25WYWx1ZSkKIHsKICAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBnZXRFeGVjdXRhYmxlRm9yRnVuY3Rp
b24odGhlRnVuY3Rpb25WYWx1ZSk7CiAgICAgaWYgKCFleGVjdXRhYmxlKQotICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCiAgICAgQ29kZUJsb2NrKiBiYXNl
bGluZUNvZGVCbG9jayA9IGV4ZWN1dGFibGUtPmJhc2VsaW5lQ29kZUJsb2NrRm9yKENvZGVGb3JD
YWxsKTsKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5
cGVkQXJyYXlUeXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVkQXJy
YXlUeXBlLmNwcAppbmRleCAwY2MzYzhkMTZjNmVhNWI0NTg1NTY3M2MwNDMwZTMyMGM5MmJkZjIx
Li44MDJkNDhhMmEwNDNiMWQ5ZjRiNmM2Nzk4OGQ1MWU1NmM0N2U2N2NiIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlZEFycmF5VHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZWRBcnJheVR5cGUuY3BwCkBAIC0zNiw3ICsz
Niw3IEBAIGNvbnN0IENsYXNzSW5mbyogY29uc3RydWN0b3JDbGFzc0luZm9Gb3JUeXBlKFR5cGVk
QXJyYXlUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBOb3RUeXBl
ZEFycmF5OgotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
Y2FzZSBUeXBlSW50ODoKICAgICAgICAgcmV0dXJuIEpTSW50OEFycmF5Q29uc3RydWN0b3I6Omlu
Zm8oKTsKICAgICBjYXNlIFR5cGVVaW50ODoKQEAgLTU5LDcgKzU5LDcgQEAgY29uc3QgQ2xhc3NJ
bmZvKiBjb25zdHJ1Y3RvckNsYXNzSW5mb0ZvclR5cGUoVHlwZWRBcnJheVR5cGUgdHlwZSkKICAg
ICAgICAgcmV0dXJuIEpTRGF0YVZpZXdDb25zdHJ1Y3Rvcjo6aW5mbygpOwogICAgIH0KICAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCA2MGUxYjg3NzI2MDNmYjRmZmY0YTgwNjMwZjJlOTZlMzJlZWU5MWZkLi45
ODBiNzgxODBiMzFiOTFiOGE4YTkzNWI3NmQzM2EwNTI1Y2MwNzJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0zOTgsNyArMzk4LDcgQEAgVk06OlZNKFZNVHlwZSB2bVR5
cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgICwgcHJvZ3JhbUV4ZWN1dGFibGVTcGFjZSBJU09f
U1VCU1BBQ0VfSU5JVChoZWFwLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBQ
cm9ncmFtRXhlY3V0YWJsZSkgLy8gSGFzaDoweDUyN2M3N2U3CiAgICAgLCB1bmxpbmtlZEZ1bmN0
aW9uRXhlY3V0YWJsZVNwYWNlIElTT19TVUJTUEFDRV9JTklUKGhlYXAsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlKSAvLyBIYXNo
OjB4ZjZiODI4ZDkKICAgICAsIHZtVHlwZSh2bVR5cGUpCi0gICAgLCBjbGllbnREYXRhKDApCisg
ICAgLCBjbGllbnREYXRhKG51bGxwdHIpCiAgICAgLCB0b3BFbnRyeUZyYW1lKG51bGxwdHIpCiAg
ICAgLCB0b3BDYWxsRnJhbWUoQ2FsbEZyYW1lOjpub0NhbGxlcigpKQogICAgICwgcHJvbWlzZVRp
bWVyKFByb21pc2VUaW1lcjo6Y3JlYXRlKCp0aGlzKSkKQEAgLTQxMCw4ICs0MTAsOCBAQCBWTTo6
Vk0oVk1UeXBlIHZtVHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAgICAgLCBzdHJpbmdDYWNoZSgq
dGhpcykKICAgICAsIHN5bWJvbEltcGxUb1N5bWJvbE1hcCgqdGhpcykKICAgICAsIHN0cnVjdHVy
ZUNhY2hlKCp0aGlzKQotICAgICwgaW50ZXJwcmV0ZXIoMCkKLSAgICAsIGVudHJ5U2NvcGUoMCkK
KyAgICAsIGludGVycHJldGVyKG51bGxwdHIpCisgICAgLCBlbnRyeVNjb3BlKG51bGxwdHIpCiAg
ICAgLCBtX3JlZ0V4cENhY2hlKG5ldyBSZWdFeHBDYWNoZSh0aGlzKSkKICAgICAsIG1fY29tcGFj
dFZhcmlhYmxlTWFwKGFkb3B0UmVmKCoobmV3IENvbXBhY3RWYXJpYWJsZU1hcCkpKQogI2lmIEVO
QUJMRShSRUdFWFBfVFJBQ0lORykKQEAgLTQyMCw3ICs0MjAsNyBAQCBWTTo6Vk0oVk1UeXBlIHZt
VHlwZSwgSGVhcFR5cGUgaGVhcFR5cGUpCiAjaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCiAgICAg
LCBtX2luaXRpYWxpemluZ09iamVjdENsYXNzKDApCiAjZW5kaWYKLSAgICAsIG1fc3RhY2tQb2lu
dGVyQXRWTUVudHJ5KDApCisgICAgLCBtX3N0YWNrUG9pbnRlckF0Vk1FbnRyeShudWxscHRyKQog
ICAgICwgbV9jb2RlQ2FjaGUobWFrZVVuaXF1ZTxDb2RlQ2FjaGU+KCkpCiAgICAgLCBtX2J1aWx0
aW5FeGVjdXRhYmxlcyhtYWtlVW5pcXVlPEJ1aWx0aW5FeGVjdXRhYmxlcz4oKnRoaXMpKQogICAg
ICwgbV90eXBlUHJvZmlsZXJFbmFibGVkQ291bnQoMCkKQEAgLTQ0MSw1NiArNDQxLDU2IEBAIFZN
OjpWTShWTVR5cGUgdm1UeXBlLCBIZWFwVHlwZSBoZWFwVHlwZSkKICAgICBKU0xvY2tIb2xkZXIg
bG9jayh0aGlzKTsKICAgICBBdG9tU3RyaW5nVGFibGUqIGV4aXN0aW5nRW50cnlBdG9tU3RyaW5n
VGFibGUgPSBUaHJlYWQ6OmN1cnJlbnQoKS5zZXRDdXJyZW50QXRvbVN0cmluZ1RhYmxlKG1fYXRv
bVN0cmluZ1RhYmxlKTsKICAgICBzdHJ1Y3R1cmVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTdHJ1Y3R1
cmU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcykpOwotICAgIHN0cnVjdHVyZVJhcmVEYXRhU3RydWN0
dXJlLnNldCgqdGhpcywgU3RydWN0dXJlUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKLSAgICBzdHJpbmdTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1N0cmluZzo6
Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHN0cnVjdHVyZVJhcmVE
YXRhU3RydWN0dXJlLnNldCgqdGhpcywgU3RydWN0dXJlUmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBzdHJpbmdTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU1N0cmluZzo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkp
OwogCiAgICAgc21hbGxTdHJpbmdzLmluaXRpYWxpemVDb21tb25TdHJpbmdzKCp0aGlzKTsKIAog
ICAgIHByb3BlcnR5TmFtZXMgPSBuZXcgQ29tbW9uSWRlbnRpZmllcnMoKnRoaXMpOwotICAgIHRl
cm1pbmF0ZWRFeGVjdXRpb25FcnJvclN0cnVjdHVyZS5zZXQoKnRoaXMsIFRlcm1pbmF0ZWRFeGVj
dXRpb25FcnJvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHBy
b3BlcnR5TmFtZUVudW1lcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb3BlcnR5TmFtZUVu
dW1lcmF0b3I6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBnZXR0
ZXJTZXR0ZXJTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBjdXN0b21HZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKLSAgICBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKLSAgICBzY29wZWRBcmd1bWVudHNUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7Ci0gICAgYXBpV3JhcHBlclN0cnVjdHVyZS5zZXQoKnRoaXMsIEpTQVBJVmFsdWVXcmFwcGVy
OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgbmF0aXZlRXhlY3V0
YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2ZUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVy
ZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQo
KnRoaXMsIEV2YWxFeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
KSk7Ci0gICAgcHJvZ3JhbUV4ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9ncmFtRXhl
Y3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIGZ1bmN0
aW9uRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAgIHRlcm1pbmF0ZWRFeGVjdXRp
b25FcnJvclN0cnVjdHVyZS5zZXQoKnRoaXMsIFRlcm1pbmF0ZWRFeGVjdXRpb25FcnJvcjo6Y3Jl
YXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIHByb3BlcnR5TmFt
ZUVudW1lcmF0b3JTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1Byb3BlcnR5TmFtZUVudW1lcmF0b3I6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBnZXR0ZXJT
ZXR0ZXJTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBjdXN0b21HZXR0ZXJTZXR0ZXJTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBDdXN0b21HZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
bnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBkb21BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXJTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBET01BdHRyaWJ1dGVHZXR0ZXJTZXR0ZXI6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBzY29wZWRBcmd1bWVudHNUYWJsZVN0cnVj
dHVyZS5zZXQoKnRoaXMsIFNjb3BlZEFyZ3VtZW50c1RhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisgICAgYXBpV3JhcHBlclN0cnVjdHVyZS5zZXQoKnRo
aXMsIEpTQVBJVmFsdWVXcmFwcGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpz
TnVsbCgpKSk7CisgICAgbmF0aXZlRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIE5hdGl2
ZUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsK
KyAgICBldmFsRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEV2YWxFeGVjdXRhYmxlOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisgICAgcHJvZ3JhbUV4
ZWN1dGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBQcm9ncmFtRXhlY3V0YWJsZTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIGZ1bmN0aW9uRXhlY3V0YWJs
ZVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uRXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJl
KCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAg
ICB3ZWJBc3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTV2ViQXNzZW1ibHlD
b2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKKyAgICB3ZWJB
c3NlbWJseUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKICNlbmRpZgot
ICAgIG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJv
Z3JhbUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAg
ICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKLSAgICBzeW1ib2xTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2w6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBzeW1ib2xUYWJsZVN0
cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbFRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAs
IGpzTnVsbCgpKSk7Ci0KLSAgICBpbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5k
ZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoSW50MzIpIC0gTnVtYmVyT2ZJ
bmRleGluZ1NoYXBlc10uc2V0KCp0aGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSwgQ29weU9uV3JpdGVBcnJheVdpdGhJbnQzMikpOwot
ICAgIGltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVyZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5
cGUoQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGUpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10u
c2V0KCp0aGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZseTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAw
LCBqc051bGwoKSwgQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGUpKTsKLSAgICBpbW11dGFibGVC
dXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRl
QXJyYXlXaXRoQ29udGlndW91cykgLSBOdW1iZXJPZkluZGV4aW5nU2hhcGVzXS5zZXQoKnRoaXMs
IEpTSW1tdXRhYmxlQnV0dGVyZmx5OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgp
LCBDb3B5T25Xcml0ZUFycmF5V2l0aENvbnRpZ3VvdXMpKTsKLQotICAgIHNvdXJjZUNvZGVTdHJ1
Y3R1cmUuc2V0KCp0aGlzLCBKU1NvdXJjZUNvZGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKLSAgICBzY3JpcHRGZXRjaGVyU3RydWN0dXJlLnNldCgqdGhpcywgSlNTY3Jp
cHRGZXRjaGVyOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgc2Ny
aXB0RmV0Y2hQYXJhbWV0ZXJzU3RydWN0dXJlLnNldCgqdGhpcywgSlNTY3JpcHRGZXRjaFBhcmFt
ZXRlcnM6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBzdHJ1Y3R1
cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0cnVjdHVy
ZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKLSAgICB0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwotICAgIHVubGlua2VkRnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJl
LnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKLSAgICB1bmxpbmtlZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1
cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgMCwganNOdWxsKCkpKTsKLSAgICB1bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywg
MCwganNOdWxsKCkpKTsKLSAgICB1bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNl
dCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlz
LCAwLCBqc051bGwoKSkpOwotICAgIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVj
dHVyZS5zZXQoKnRoaXMsIFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwotICAgIHByb3BlcnR5VGFibGVTdHJ1Y3R1cmUu
c2V0KCp0aGlzLCBQcm9wZXJ0eVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVs
bCgpKSk7Ci0gICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9u
UmFyZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBleGNl
cHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgqdGhp
cywgMCwganNOdWxsKCkpKTsKLSAgICBwcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhp
cywgUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkp
OwotICAgIG1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBNb2R1bGVQ
cm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0g
ICAgZXZhbENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEV2YWxDb2RlQmxvY2s6OmNyZWF0
ZVN0cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBmdW5jdGlvbkNvZGVCbG9ja1N0
cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRo
aXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgaGFzaE1hcEJ1Y2tldFNldFN0cnVjdHVyZS5zZXQoKnRo
aXMsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXk+OjpjcmVhdGVTdHJ1Y3R1cmUo
KnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0gICAgaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZS5zZXQo
KnRoaXMsIEhhc2hNYXBCdWNrZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46OmNyZWF0ZVN0
cnVjdHVyZSgqdGhpcywgMCwganNOdWxsKCkpKTsKLSAgICBiaWdJbnRTdHJ1Y3R1cmUuc2V0KCp0
aGlzLCBKU0JpZ0ludDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOworICAg
IG1vZHVsZVByb2dyYW1FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgTW9kdWxlUHJvZ3Jh
bUV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsK
KyAgICByZWdFeHBTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBSZWdFeHA6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBzeW1ib2xTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBTeW1ib2w6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAg
ICBzeW1ib2xUYWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFN5bWJvbFRhYmxlOjpjcmVhdGVTdHJ1
Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisKKyAgICBpbW11dGFibGVCdXR0ZXJm
bHlTdHJ1Y3R1cmVzW2FycmF5SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlX
aXRoSW50MzIpIC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uc2V0KCp0aGlzLCBKU0ltbXV0YWJs
ZUJ1dHRlcmZseTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSwgQ29w
eU9uV3JpdGVBcnJheVdpdGhJbnQzMikpOworICAgIGltbXV0YWJsZUJ1dHRlcmZseVN0cnVjdHVy
ZXNbYXJyYXlJbmRleEZyb21JbmRleGluZ1R5cGUoQ29weU9uV3JpdGVBcnJheVdpdGhEb3VibGUp
IC0gTnVtYmVyT2ZJbmRleGluZ1NoYXBlc10uc2V0KCp0aGlzLCBKU0ltbXV0YWJsZUJ1dHRlcmZs
eTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSwgQ29weU9uV3JpdGVB
cnJheVdpdGhEb3VibGUpKTsKKyAgICBpbW11dGFibGVCdXR0ZXJmbHlTdHJ1Y3R1cmVzW2FycmF5
SW5kZXhGcm9tSW5kZXhpbmdUeXBlKENvcHlPbldyaXRlQXJyYXlXaXRoQ29udGlndW91cykgLSBO
dW1iZXJPZkluZGV4aW5nU2hhcGVzXS5zZXQoKnRoaXMsIEpTSW1tdXRhYmxlQnV0dGVyZmx5Ojpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpLCBDb3B5T25Xcml0ZUFycmF5
V2l0aENvbnRpZ3VvdXMpKTsKKworICAgIHNvdXJjZUNvZGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBK
U1NvdXJjZUNvZGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsK
KyAgICBzY3JpcHRGZXRjaGVyU3RydWN0dXJlLnNldCgqdGhpcywgSlNTY3JpcHRGZXRjaGVyOjpj
cmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisgICAgc2NyaXB0RmV0
Y2hQYXJhbWV0ZXJzU3RydWN0dXJlLnNldCgqdGhpcywgSlNTY3JpcHRGZXRjaFBhcmFtZXRlcnM6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBzdHJ1Y3R1
cmVDaGFpblN0cnVjdHVyZS5zZXQoKnRoaXMsIFN0cnVjdHVyZUNoYWluOjpjcmVhdGVTdHJ1Y3R1
cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisgICAgc3BhcnNlQXJyYXlWYWx1ZU1hcFN0
cnVjdHVyZS5zZXQoKnRoaXMsIFNwYXJzZUFycmF5VmFsdWVNYXA6OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICB0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JT
dHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcjo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOworICAgIHVubGlua2VkRnVuY3Rpb25F
eGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5jdGlvbkV4ZWN1dGFibGU6
OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICB1bmxpbmtl
ZFByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZFByb2dyYW1Db2Rl
QmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICB1
bmxpbmtlZEV2YWxDb2RlQmxvY2tTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBVbmxpbmtlZEV2YWxDb2Rl
QmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICB1
bmxpbmtlZEZ1bmN0aW9uQ29kZUJsb2NrU3RydWN0dXJlLnNldCgqdGhpcywgVW5saW5rZWRGdW5j
dGlvbkNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkp
OworICAgIHVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMs
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBu
dWxscHRyLCBqc051bGwoKSkpOworICAgIHByb3BlcnR5VGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlz
LCBQcm9wZXJ0eVRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgp
KSk7CisgICAgZnVuY3Rpb25SYXJlRGF0YVN0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uUmFy
ZURhdGE6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBl
eGNlcHRpb25TdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGNlcHRpb246OmNyZWF0ZVN0cnVjdHVyZSgq
dGhpcywgbnVsbHB0ciwganNOdWxsKCkpKTsKKyAgICBwcm9ncmFtQ29kZUJsb2NrU3RydWN0dXJl
LnNldCgqdGhpcywgUHJvZ3JhbUNvZGVCbG9jazo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxs
cHRyLCBqc051bGwoKSkpOworICAgIG1vZHVsZVByb2dyYW1Db2RlQmxvY2tTdHJ1Y3R1cmUuc2V0
KCp0aGlzLCBNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51
bGxwdHIsIGpzTnVsbCgpKSk7CisgICAgZXZhbENvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMs
IEV2YWxDb2RlQmxvY2s6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVsbHB0ciwganNOdWxsKCkp
KTsKKyAgICBmdW5jdGlvbkNvZGVCbG9ja1N0cnVjdHVyZS5zZXQoKnRoaXMsIEZ1bmN0aW9uQ29k
ZUJsb2NrOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CisgICAg
aGFzaE1hcEJ1Y2tldFNldFN0cnVjdHVyZS5zZXQoKnRoaXMsIEhhc2hNYXBCdWNrZXQ8SGFzaE1h
cEJ1Y2tldERhdGFLZXk+OjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgp
KSk7CisgICAgaGFzaE1hcEJ1Y2tldE1hcFN0cnVjdHVyZS5zZXQoKnRoaXMsIEhhc2hNYXBCdWNr
ZXQ8SGFzaE1hcEJ1Y2tldERhdGFLZXlWYWx1ZT46OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgbnVs
bHB0ciwganNOdWxsKCkpKTsKKyAgICBiaWdJbnRTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBKU0JpZ0lu
dDo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCBudWxscHRyLCBqc051bGwoKSkpOwogICAgIGV4ZWN1
dGFibGVUb0NvZGVCbG9ja0VkZ2VTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBFeGVjdXRhYmxlVG9Db2Rl
QmxvY2tFZGdlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIG51bGxwdHIsIGpzTnVsbCgpKSk7CiAK
ICAgICAvLyBFYWdlcmx5IGluaXRpYWxpemUgY29uc3RhbnQgY2VsbHMgc2luY2UgdGhlIGNvbmN1
cnJlbnQgY29tcGlsZXIgY2FuIGFjY2VzcyB0aGVtLgpAQCAtODIzLDcgKzgyMyw3IEBAIE5hdGl2
ZUV4ZWN1dGFibGUqIFZNOjpnZXRIb3N0RnVuY3Rpb24oTmF0aXZlRnVuY3Rpb24gZnVuY3Rpb24s
IEludHJpbnNpYyBpbnRyaW5zCiAgICAgaWYgKGNhblVzZUpJVCgpKSB7CiAgICAgICAgIHJldHVy
biBqaXRTdHVicy0+aG9zdEZ1bmN0aW9uU3R1YigKICAgICAgICAgICAgICp0aGlzLCBmdW5jdGlv
biwgY29uc3RydWN0b3IsCi0gICAgICAgICAgICBpbnRyaW5zaWMgIT0gTm9JbnRyaW5zaWMgPyB0
aHVua0dlbmVyYXRvckZvckludHJpbnNpYyhpbnRyaW5zaWMpIDogMCwKKyAgICAgICAgICAgIGlu
dHJpbnNpYyAhPSBOb0ludHJpbnNpYyA/IHRodW5rR2VuZXJhdG9yRm9ySW50cmluc2ljKGludHJp
bnNpYykgOiBudWxscHRyLAogICAgICAgICAgICAgaW50cmluc2ljLCBzaWduYXR1cmUsIG5hbWUp
OwogICAgIH0KICNlbmRpZiAvLyBFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2F0Y2hkb2cuY3BwCmluZGV4IDk5NzFlYTEwOTU4NjExNzExNDkzNTcwMGQwM2U1ODI0
OTgwMTg3OGIuLjRmMmRlNjgwNzUyMWIzZWVhMTg5ZmI5YzczM2ExNzYzNjM4MTA3ZDMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNoZG9nLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XYXRjaGRvZy5jcHAKQEAgLTM3LDkgKzM3LDkg
QEAgV2F0Y2hkb2c6OldhdGNoZG9nKFZNKiB2bSkKICAgICAsIG1fdGltZUxpbWl0KG5vVGltZUxp
bWl0KQogICAgICwgbV9jcHVEZWFkbGluZShub1RpbWVMaW1pdCkKICAgICAsIG1fZGVhZGxpbmUo
TW9ub3RvbmljVGltZTo6aW5maW5pdHkoKSkKLSAgICAsIG1fY2FsbGJhY2soMCkKLSAgICAsIG1f
Y2FsbGJhY2tEYXRhMSgwKQotICAgICwgbV9jYWxsYmFja0RhdGEyKDApCisgICAgLCBtX2NhbGxi
YWNrKG51bGxwdHIpCisgICAgLCBtX2NhbGxiYWNrRGF0YTEobnVsbHB0cikKKyAgICAsIG1fY2Fs
bGJhY2tEYXRhMihudWxscHRyKQogICAgICwgbV90aW1lclF1ZXVlKFdvcmtRdWV1ZTo6Y3JlYXRl
KCJqc2Mud2F0Y2hkb2cucXVldWUiLCBXb3JrUXVldWU6OlR5cGU6OlNlcmlhbCwgV29ya1F1ZXVl
OjpRT1M6OlV0aWxpdHkpKQogewogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvV2F0Y2hkb2cuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dhdGNo
ZG9nLmgKaW5kZXggYTMxZTRlZWM1MjI0M2UxMDM0MDc4MWM3ZDVkZjBkODUxNjE3NTkyOC4uNjE1
ZDc2MTBiMDJmNWFkNTc0MDIwMjQwMGJjNTgyY2IxNTE5MWM3OCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2F0Y2hkb2cuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XYXRjaGRvZy5oCkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHdpbGxEZXN0cm95Vk0oVk0qKTsKIAogICAgIHR5cGVkZWYgYm9vbCAoKlNob3VsZFRlcm1p
bmF0ZUNhbGxiYWNrKShKU0dsb2JhbE9iamVjdCosIHZvaWQqIGRhdGExLCB2b2lkKiBkYXRhMik7
Ci0gICAgdm9pZCBzZXRUaW1lTGltaXQoU2Vjb25kcyBsaW1pdCwgU2hvdWxkVGVybWluYXRlQ2Fs
bGJhY2sgPSAwLCB2b2lkKiBkYXRhMSA9IDAsIHZvaWQqIGRhdGEyID0gMCk7CisgICAgdm9pZCBz
ZXRUaW1lTGltaXQoU2Vjb25kcyBsaW1pdCwgU2hvdWxkVGVybWluYXRlQ2FsbGJhY2sgPSBudWxs
cHRyLCB2b2lkKiBkYXRhMSA9IG51bGxwdHIsIHZvaWQqIGRhdGEyID0gbnVsbHB0cik7CiAKICAg
ICBib29sIHNob3VsZFRlcm1pbmF0ZShKU0dsb2JhbE9iamVjdCopOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Xcml0ZUJhcnJpZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmllci5oCmluZGV4IDcwN2UyMGI2ZTVhYzNmNmJi
YmM5N2M5NTVkZDFlMDE3ZjYwZDIyMDIuLjNkYmJlYjBhZWU3NDE0YTY5ZmY1OGQ5Mjg5OGZhYTg2
MjU5Y2VjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRl
QmFycmllci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dyaXRlQmFycmll
ci5oCkBAIC0xOTUsNyArMTk1LDcgQEAgY2xhc3MgV3JpdGVCYXJyaWVyIDogcHVibGljIFdyaXRl
QmFycmllckJhc2U8VCwgVHJhaXRzPiB7CiBwdWJsaWM6CiAgICAgV3JpdGVCYXJyaWVyKCkKICAg
ICB7Ci0gICAgICAgIHRoaXMtPnNldFdpdGhvdXRXcml0ZUJhcnJpZXIoMCk7CisgICAgICAgIHRo
aXMtPnNldFdpdGhvdXRXcml0ZUJhcnJpZXIobnVsbHB0cik7CiAgICAgfQogCiAgICAgV3JpdGVC
YXJyaWVyKFZNJiB2bSwgY29uc3QgSlNDZWxsKiBvd25lciwgVCogdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdGVzdFJlZ0V4cC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvdGVzdFJlZ0V4cC5jcHAKaW5kZXggYjJkYjY2ZDgxNDczOGMyZDdlNDVlZTY4NjFmYzRi
OWZlOTAzNmM1Ni4uYTk3ZjdlY2YzY2Y4ZGRkNTk2ODgzZjRiZDYwNmMxN2IxYjFlYjNmOSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RSZWdFeHAuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS90ZXN0UmVnRXhwLmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTVmFs
dWUgcHJvdG90eXBlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCAwLCBwcm90b3R5cGUsIFR5cGVJbmZvKEdsb2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKKyAgICAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBudWxscHRy
LCBwcm90b3R5cGUsIFR5cGVJbmZvKEdsb2JhbE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdzKSwg
aW5mbygpKTsKICAgICB9CiAKIHByaXZhdGU6CkBAIC0zMjAsMTIgKzMyMCwxMiBAQCBzdGF0aWMg
UmVnRXhwKiBwYXJzZVJlZ0V4cExpbmUoVk0mIHZtLCBjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0
aCwgY29uc3QgY2hhcioqCiAgICAgU3RyaW5nQnVpbGRlciBwYXR0ZXJuOwogCiAgICAgaWYgKGxp
bmVbMF0gIT0gJy8nKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBpbnQgaSA9IHNjYW5TdHJpbmcobGluZSArIDEsIGxpbmVMZW5ndGggLSAxLCBwYXR0
ZXJuLCAnLycpICsgMTsKIAogICAgIGlmICgoaSA+PSBsaW5lTGVuZ3RoKSB8fCAobGluZVtpXSAh
PSAnLycpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICArK2k7CiAKQEAgLTM0OSwxOSArMzQ5LDE5IEBAIHN0YXRpYyBSZWdFeHBUZXN0KiBwYXJzZVRl
c3RMaW5lKGNoYXIqIGxpbmUsIGludCBsaW5lTGVuZ3RoKQogICAgIFN0cmluZ0J1aWxkZXIgc3Vi
amVjdFN0cmluZzsKICAgICAKICAgICBpZiAoKGxpbmVbMF0gIT0gJyAnKSB8fCAobGluZVsxXSAh
PSAnIicpKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBpbnQgaSA9IHNjYW5TdHJpbmcobGluZSArIDIsIGxpbmVMZW5ndGggLSAyLCBzdWJqZWN0U3Ry
aW5nLCAnIicpICsgMjsKIAogICAgIGlmICgoaSA+PSAobGluZUxlbmd0aCAtIDIpKSB8fCAobGlu
ZVtpXSAhPSAnIicpIHx8IChsaW5lW2krMV0gIT0gJywnKSB8fCAobGluZVtpKzJdICE9ICcgJykp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGkgKz0g
MzsKICAgICAKICAgICBpbnQgb2Zmc2V0OwogICAgIAogICAgIGlmIChzc2NhbmYobGluZSArIGks
ICIlZCwgIiwgJm9mZnNldCkgIT0gMSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgd2hpbGUgKGxpbmVbaV0gJiYgbGluZVtpXSAhPSAnICcpCiAgICAg
ICAgICsraTsKQEAgLTM3MSw3ICszNzEsNyBAQCBzdGF0aWMgUmVnRXhwVGVzdCogcGFyc2VUZXN0
TGluZShjaGFyKiBsaW5lLCBpbnQgbGluZUxlbmd0aCkKICAgICBpbnQgbWF0Y2hSZXN1bHQ7CiAg
ICAgCiAgICAgaWYgKHNzY2FuZihsaW5lICsgaSwgIiVkLCAiLCAmbWF0Y2hSZXN1bHQpICE9IDEp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICB3
aGlsZSAobGluZVtpXSAmJiBsaW5lW2ldICE9ICcgJykKICAgICAgICAgKytpOwpAQCAtMzc5LDcg
KzM3OSw3IEBAIHN0YXRpYyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxpbmUsIGlu
dCBsaW5lTGVuZ3RoKQogICAgICsraTsKICAgICAKICAgICBpZiAobGluZVtpKytdICE9ICcoJykK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaW50IHN0
YXJ0LCBlbmQ7CiAgICAgCkBAIC0zOTIsNyArMzkyLDcgQEAgc3RhdGljIFJlZ0V4cFRlc3QqIHBh
cnNlVGVzdExpbmUoY2hhciogbGluZSwgaW50IGxpbmVMZW5ndGgpCiAgICAgd2hpbGUgKGxpbmVb
aV0gJiYgbGluZVtpXSAhPSAnKScpIHsKICAgICAgICAgaWYgKHNzY2FuZihsaW5lICsgaSwgIiVk
LCAlZCIsICZzdGFydCwgJmVuZCkgIT0gMikgewogICAgICAgICAgICAgZGVsZXRlIHJlc3VsdDsK
LSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
ICAgIH0KIAogICAgICAgICByZXN1bHQtPmV4cGVjdFZlY3Rvci5hcHBlbmQoc3RhcnQpOwpAQCAt
NDA4LDcgKzQwOCw3IEBAIHN0YXRpYyBSZWdFeHBUZXN0KiBwYXJzZVRlc3RMaW5lKGNoYXIqIGxp
bmUsIGludCBsaW5lTGVuZ3RoKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGlmICghbGlu
ZVtpXSB8fCAobGluZVtpXSAhPSAnLCcpKSB7CiAgICAgICAgICAgICBkZWxldGUgcmVzdWx0Owot
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQogICAgICAgICBpKys7CiAgICAgfQpAQCAtNDM2LDkgKzQzNiw5IEBAIHN0YXRpYyBib29s
IHJ1bkZyb21GaWxlcyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFN0
cmluZz4mIGZpbGVzCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICAg
ICAgCi0gICAgICAgIFJlZ0V4cCogcmVnZXhwID0gMDsKKyAgICAgICAgUmVnRXhwKiByZWdleHAg
PSBudWxscHRyOwogICAgICAgICBzaXplX3QgbGluZUxlbmd0aCA9IDA7Ci0gICAgICAgIGNoYXIq
IGxpbmVQdHIgPSAwOworICAgICAgICBjaGFyKiBsaW5lUHRyID0gbnVsbHB0cjsKICAgICAgICAg
dW5zaWduZWQgaW50IGxpbmVOdW1iZXIgPSAwOwogICAgICAgICBjb25zdCBjaGFyKiByZWdleHBF
cnJvciA9IG51bGxwdHI7CiAKQEAgLTQ3NCw3ICs0NzQsNyBAQCBzdGF0aWMgYm9vbCBydW5Gcm9t
RmlsZXMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBm
aWxlcwogICAgICAgICAgICAgICAgICAgICBkZWxldGUgcmVnRXhwVGVzdDsKICAgICAgICAgICAg
IH0gZWxzZSBpZiAobGluZVB0clswXSA9PSAnLScpIHsKICAgICAgICAgICAgICAgICB0ZXN0cysr
OwotICAgICAgICAgICAgICAgIHJlZ2V4cCA9IDA7IC8vIFJlc2V0IHRoZSBsaXZlIHJlZ2V4cCB0
byBhdm9pZCBjb25mdXNpbmcgb3RoZXIgc3Vic2VxdWVudCB0ZXN0cworICAgICAgICAgICAgICAg
IHJlZ2V4cCA9IG51bGxwdHI7IC8vIFJlc2V0IHRoZSBsaXZlIHJlZ2V4cCB0byBhdm9pZCBjb25m
dXNpbmcgb3RoZXIgc3Vic2VxdWVudCB0ZXN0cwogICAgICAgICAgICAgICAgIGJvb2wgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gcGFyc2VSZWdFeHBMaW5lKHZtLCBsaW5lUHRyICsgMSwgbGluZUxlbmd0
aCAtIDEsICZyZWdleHBFcnJvcik7CiAgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3NmdWxseVBh
cnNlZCkgewogICAgICAgICAgICAgICAgICAgICBmYWlsdXJlcysrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IGY5YjMyNzE5NThiNWVlMTEyMDU1NDgy
YzBmY2Y2Zjk1YzgxNDUzMjUuLmFkZDliMTZkZGM2OGZmZmY4ZGE5M2JlNzIyMGVkNDM3YmY5NmE1
NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAgLTYz
NCw3ICs2MzQsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgUnVudGltZUFycmF5KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQotICAgICAg
ICA6IEpTQXJyYXkoZ2xvYmFsT2JqZWN0LT52bSgpLCBzdHJ1Y3R1cmUsIDApCisgICAgICAgIDog
SlNBcnJheShnbG9iYWxPYmplY3QtPnZtKCksIHN0cnVjdHVyZSwgbnVsbHB0cikKICAgICB7CiAg
ICAgICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgfQpAQCAtMTQzMCw3
ICsxNDMwLDcgQEAgY29uc3QgQ2xhc3NJbmZvIE9iamVjdERvaW5nU2lkZUVmZmVjdFB1dFdpdGhv
dXRDb3JyZWN0U2xvdFN0YXR1czo6c19pbmZvID0geyAiT2IKIEVsZW1lbnRIYW5kbGVPd25lciog
RWxlbWVudDo6aGFuZGxlT3duZXIoKQogewogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0
U2NvcGU7Ci0gICAgc3RhdGljIEVsZW1lbnRIYW5kbGVPd25lciogb3duZXIgPSAwOworICAgIHN0
YXRpYyBFbGVtZW50SGFuZGxlT3duZXIqIG93bmVyID0gbnVsbHB0cjsKICAgICBpZiAoIW93bmVy
KQogICAgICAgICBvd25lciA9IG5ldyBFbGVtZW50SGFuZGxlT3duZXIoKTsKICAgICByZXR1cm4g
b3duZXI7CkBAIC0yNTYwLDcgKzI1NjAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBmdW5jdGlvblNoYWRvd0NoaWNrZW5GdW5jdGlvbnNPblN0YWNrKEpTR2xvYgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNoYWRvd0NoaWNrZW4tPmZ1bmN0aW9uc09uU3Rh
Y2soZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUpKTsKICAgICB9CiAKLSAgICBKU0FycmF5KiByZXN1
bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgMCk7CisgICAgSlNBcnJheSog
cmVzdWx0ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgU3RhY2tWaXNpdG9yOjp2aXNp
dChjYWxsRnJhbWUsIHZtLCBbJl0gKFN0YWNrVmlzaXRvciYgdmlzaXRvcikgLT4gU3RhY2tWaXNp
dG9yOjpTdGF0dXMgewogICAgICAgICBEb2xsYXJWTUFzc2VydFNjb3BlIGFzc2VydFNjb3BlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbVNsb3dQYXRocy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtU2xvd1BhdGhzLmNwcAppbmRleCA3MTQy
NTQ3ZmM2OGQ2MjQ4ZGIzMWFkNjY0OTFmM2Y3MTUwYTIwN2Y1Li4yZmU1ODI3ODdkNzVhODgyNWRm
MTY4N2IxYWMxNjY2YTM5MjgwMzZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtU2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9X
YXNtU2xvd1BhdGhzLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIFdBU01fU0xPV19QQVRIX0RFQ0wo
cHJvbG9ndWVfb3NyKQogICAgIGlmICghaml0Q29tcGlsZUFuZFNldEhldXJpc3RpY3MoY2FsbGVl
LCBjb2RlQmxvY2ssIGluc3RhbmNlKSkKICAgICAgICAgV0FTTV9SRVRVUk5fVFdPKG51bGxwdHIs
IG51bGxwdHIpOwogCi0gICAgV0FTTV9SRVRVUk5fVFdPKGNhbGxlZS0+cmVwbGFjZW1lbnQoKS0+
ZW50cnlwb2ludCgpLmV4ZWN1dGFibGVBZGRyZXNzKCksIDApOworICAgIFdBU01fUkVUVVJOX1RX
TyhjYWxsZWUtPnJlcGxhY2VtZW50KCktPmVudHJ5cG9pbnQoKS5leGVjdXRhYmxlQWRkcmVzcygp
LCBudWxscHRyKTsKIH0KIAogV0FTTV9TTE9XX1BBVEhfREVDTChsb29wX29zcikKQEAgLTE3OSw3
ICsxNzksNyBAQCBXQVNNX1NMT1dfUEFUSF9ERUNMKGxvb3Bfb3NyKQogCiAgICAgaWYgKCFPcHRp
b25zOjp1c2VXZWJBc3NlbWJseU9TUigpIHx8ICFPcHRpb25zOjp1c2VXYXNtTExJbnRMb29wT1NS
KCkgfHwgIXNob3VsZEpJVChjb2RlQmxvY2ssIFJlcXVpcmVkV2FzbUpJVDo6T01HKSkgewogICAg
ICAgICBzbG93X3BhdGhfd2FzbV9wcm9sb2d1ZV9vc3IoY2FsbEZyYW1lLCBwYywgaW5zdGFuY2Up
OwotICAgICAgICBXQVNNX1JFVFVSTl9UV08oMCwgMCk7CisgICAgICAgIFdBU01fUkVUVVJOX1RX
TyhudWxscHRyLCBudWxscHRyKTsKICAgICB9CiAKICAgICBkYXRhTG9nTG5JZihPcHRpb25zOjp2
ZXJib3NlT1NSKCksICpjYWxsZWUsICI6IEVudGVyZWQgbG9vcF9vc3Igd2l0aCB0aWVyVXBDb3Vu
dGVyID0gIiwgY29kZUJsb2NrLT50aWVyVXBDb3VudGVyKCkpOwpAQCAtMTg5LDE5ICsxODksMTkg
QEAgV0FTTV9TTE9XX1BBVEhfREVDTChsb29wX29zcikKIAogICAgIGlmICghdGllclVwQ291bnRl
ci5jaGVja0lmT3B0aW1pemF0aW9uVGhyZXNob2xkUmVhY2hlZCgpKSB7CiAgICAgICAgIGRhdGFM
b2dMbklmKE9wdGlvbnM6OnZlcmJvc2VPU1IoKSwgIiAgICBKSVQgdGhyZXNob2xkIHNob3VsZCBi
ZSBsaWZ0ZWQuIik7Ci0gICAgICAgIFdBU01fUkVUVVJOX1RXTygwLCAwKTsKKyAgICAgICAgV0FT
TV9SRVRVUk5fVFdPKG51bGxwdHIsIG51bGxwdHIpOwogICAgIH0KIAogICAgIGNvbnN0IGF1dG8g
ZG9PU1JFbnRyeSA9IFsmXSB7CiAgICAgICAgIFdhc206Ok9NR0Zvck9TUkVudHJ5Q2FsbGVlKiBv
c3JFbnRyeUNhbGxlZSA9IGNhbGxlZS0+b3NyRW50cnlDYWxsZWUoKTsKICAgICAgICAgaWYgKG9z
ckVudHJ5Q2FsbGVlLT5sb29wSW5kZXgoKSAhPSBvc3JFbnRyeURhdGEubG9vcEluZGV4KQotICAg
ICAgICAgICAgV0FTTV9SRVRVUk5fVFdPKDAsIDApOworICAgICAgICAgICAgV0FTTV9SRVRVUk5f
VFdPKG51bGxwdHIsIG51bGxwdHIpOwogCiAgICAgICAgIHNpemVfdCBvc3JFbnRyeVNjcmF0Y2hC
dWZmZXJTaXplID0gb3NyRW50cnlDYWxsZWUtPm9zckVudHJ5U2NyYXRjaEJ1ZmZlclNpemUoKTsK
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3NyRW50cnlTY3JhdGNoQnVmZmVyU2l6ZSA9PSBvc3JF
bnRyeURhdGEudmFsdWVzLnNpemUoKSk7CiAgICAgICAgIHVpbnQ2NF90KiBidWZmZXIgPSBpbnN0
YW5jZS0+Y29udGV4dCgpLT5zY3JhdGNoQnVmZmVyRm9yU2l6ZShvc3JFbnRyeVNjcmF0Y2hCdWZm
ZXJTaXplKTsKICAgICAgICAgaWYgKCFidWZmZXIpCi0gICAgICAgICAgICBXQVNNX1JFVFVSTl9U
V08oMCwgMCk7CisgICAgICAgICAgICBXQVNNX1JFVFVSTl9UV08obnVsbHB0ciwgbnVsbHB0cik7
CiAKICAgICAgICAgdWludDMyX3QgaW5kZXggPSAwOwogICAgICAgICBmb3IgKFZpcnR1YWxSZWdp
c3RlciByZWcgOiBvc3JFbnRyeURhdGEudmFsdWVzKQpAQCAtMjQxLDcgKzI0MSw3IEBAIFdBU01f
U0xPV19QQVRIX0RFQ0wobG9vcF9vc3IpCiAgICAgaWYgKGNhbGxlZS0+b3NyRW50cnlDYWxsZWUo
KSkKICAgICAgICAgcmV0dXJuIGRvT1NSRW50cnkoKTsKIAotICAgIFdBU01fUkVUVVJOX1RXTygw
LCAwKTsKKyAgICBXQVNNX1JFVFVSTl9UV08obnVsbHB0ciwgbnVsbHB0cik7CiB9CiAKIFdBU01f
U0xPV19QQVRIX0RFQ0woZXBpbG9ndWVfb3NyKQpAQCAtNDQ4LDcgKzQ0OCw3IEBAIFdBU01fU0xP
V19QQVRIX0RFQ0woc2V0X2dsb2JhbF9yZWZfcG9ydGFibGVfYmluZGluZykKIGV4dGVybiAiQyIg
U2xvd1BhdGhSZXR1cm5UeXBlIHNsb3dfcGF0aF93YXNtX3Rocm93X2V4Y2VwdGlvbihDYWxsRnJh
bWUqIGNhbGxGcmFtZSwgY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCBXYXNtOjpJbnN0YW5jZSogaW5z
dGFuY2UsIFdhc206OkV4Y2VwdGlvblR5cGUgZXhjZXB0aW9uVHlwZSkKIHsKICAgICBVTlVTRURf
UEFSQU0ocGMpOwotICAgIFdBU01fUkVUVVJOX1RXTyhvcGVyYXRpb25XYXNtVG9KU0V4Y2VwdGlv
bihjYWxsRnJhbWUsIGV4Y2VwdGlvblR5cGUsIGluc3RhbmNlKSwgMCk7CisgICAgV0FTTV9SRVRV
Uk5fVFdPKG9wZXJhdGlvbldhc21Ub0pTRXhjZXB0aW9uKGNhbGxGcmFtZSwgZXhjZXB0aW9uVHlw
ZSwgaW5zdGFuY2UpLCBudWxscHRyKTsKIH0KIAogZXh0ZXJuICJDIiBTbG93UGF0aFJldHVyblR5
cGUgc2xvd19wYXRoX3dhc21fcG9wY291bnQoY29uc3QgSW5zdHJ1Y3Rpb24qIHBjLCB1aW50MzJf
dCB4KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJl
c3Npb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmgK
aW5kZXggNzQ3M2JhYThjNTEwYjYwMWVlNDJiYjM2YmZhYTY0Y2NmYzA0MWQyNC4uOTBiYmFmYjE5
M2Y0MWQ0ZmZmZjUwNTE5ZjQ0ZDE0Y2VkNzEzZGQ5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvUmVndWxhckV4cHJlc3Npb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUveWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oCkBAIC00Miw3ICs0Miw3IEBAIHB1YmxpYzoK
ICAgICBSZWd1bGFyRXhwcmVzc2lvbihjb25zdCBSZWd1bGFyRXhwcmVzc2lvbiYpOwogICAgIFJl
Z3VsYXJFeHByZXNzaW9uJiBvcGVyYXRvcj0oY29uc3QgUmVndWxhckV4cHJlc3Npb24mKTsKIAot
ICAgIGludCBtYXRjaChjb25zdCBTdHJpbmcmLCBpbnQgc3RhcnRGcm9tID0gMCwgaW50KiBtYXRj
aExlbmd0aCA9IDApIGNvbnN0OworICAgIGludCBtYXRjaChjb25zdCBTdHJpbmcmLCBpbnQgc3Rh
cnRGcm9tID0gMCwgaW50KiBtYXRjaExlbmd0aCA9IG51bGxwdHIpIGNvbnN0OwogICAgIGludCBz
ZWFyY2hSZXYoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAKICAgICBpbnQgbWF0Y2hlZExlbmd0aCgp
IGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVy
cHJldGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJJbnRlcnByZXRlci5j
cHAKaW5kZXggOTk0YTYyMzAzNzRkOTQ3ODYyNDk1ZTBhNTkxYzkyNjY4NTYwZjczNS4uMjMxNWRl
MGQwNGQ0Mzk0ZWJhNDc3YTIwNjFhYTc2NWViNTYyY2VmMyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckludGVycHJldGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySW50ZXJwcmV0ZXIuY3BwCkBAIC0xMDE3LDcgKzEwMTcsNyBAQCBw
dWJsaWM6CiAgICAgICAgIEJ5dGVEaXNqdW5jdGlvbiogZGlzanVuY3Rpb25Cb2R5ID0gdGVybS5h
dG9tLnBhcmVudGhlc2VzRGlzanVuY3Rpb247CiAKICAgICAgICAgYmFja1RyYWNrLT5tYXRjaEFt
b3VudCA9IDA7Ci0gICAgICAgIGJhY2tUcmFjay0+bGFzdENvbnRleHQgPSAwOworICAgICAgICBi
YWNrVHJhY2stPmxhc3RDb250ZXh0ID0gbnVsbHB0cjsKIAogICAgICAgICBBU1NFUlQodGVybS5h
dG9tLnF1YW50aXR5VHlwZSAhPSBRdWFudGlmaWVyRml4ZWRDb3VudCB8fCB0ZXJtLmF0b20ucXVh
bnRpdHlNaW5Db3VudCA9PSB0ZXJtLmF0b20ucXVhbnRpdHlNYXhDb3VudCk7CiAKQEAgLTExMDks
NyArMTEwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgY2FzZSBRdWFudGlmaWVyRml4ZWRDb3VudDog
ewogICAgICAgICAgICAgQVNTRVJUKGJhY2tUcmFjay0+bWF0Y2hBbW91bnQgPT0gdGVybS5hdG9t
LnF1YW50aXR5TWF4Q291bnQpOwogCi0gICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9u
Q29udGV4dCogY29udGV4dCA9IDA7CisgICAgICAgICAgICBQYXJlbnRoZXNlc0Rpc2p1bmN0aW9u
Q29udGV4dCogY29udGV4dCA9IG51bGxwdHI7CiAgICAgICAgICAgICBKU1JlZ0V4cFJlc3VsdCBy
ZXN1bHQgPSBwYXJlbnRoZXNlc0RvQmFja3RyYWNrKHRlcm0sIGJhY2tUcmFjayk7CiAKICAgICAg
ICAgICAgIGlmIChyZXN1bHQgIT0gSlNSZWdFeHBNYXRjaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lh
cnIvWWFyckpJVC5jcHAKaW5kZXggOGIyYTI1M2U2OTAyYjc5NjExMWY4YmFiMjY4YmUxZTEyZGU3
MjFjYy4uNmViOGExNmY5YjdkYmRiMGZiMjdkY2NhODM0NDc5NmY5OTE0OTczYiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3lhcnIvWWFyckpJVC5jcHAKQEAgLTM1MTAsNyArMzUxMCw3IEBAIGNsYXNz
IFlhcnJHZW5lcmF0b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJs
ZXIgewogICAgICAgICBZYXJyT3AmIGxhc3RPcCA9IG1fb3BzLmxhc3QoKTsKICAgICAgICAgQVNT
RVJUKGxhc3RPcC5tX29wID09IGFsdGVybmF0aXZlTmV4dE9wQ29kZSk7CiAgICAgICAgIGxhc3RP
cC5tX29wID0gYWx0ZXJuYXRpdmVFbmRPcENvZGU7Ci0gICAgICAgIGxhc3RPcC5tX2FsdGVybmF0
aXZlID0gMDsKKyAgICAgICAgbGFzdE9wLm1fYWx0ZXJuYXRpdmUgPSBudWxscHRyOwogICAgICAg
ICBsYXN0T3AubV9uZXh0T3AgPSBub3RGb3VuZDsKIAogICAgICAgICBzaXplX3QgcGFyZW5FbmQg
PSBtX29wcy5zaXplKCk7CkBAIC0zNTY2LDcgKzM1NjYsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9y
IDogcHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAg
WWFyck9wJiBsYXN0T3AgPSBtX29wcy5sYXN0KCk7CiAgICAgICAgIEFTU0VSVChsYXN0T3AubV9v
cCA9PSBPcFNpbXBsZU5lc3RlZEFsdGVybmF0aXZlTmV4dCk7CiAgICAgICAgIGxhc3RPcC5tX29w
ID0gT3BTaW1wbGVOZXN0ZWRBbHRlcm5hdGl2ZUVuZDsKLSAgICAgICAgbGFzdE9wLm1fYWx0ZXJu
YXRpdmUgPSAwOworICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IG51bGxwdHI7CiAgICAg
ICAgIGxhc3RPcC5tX25leHRPcCA9IG5vdEZvdW5kOwogCiAgICAgICAgIHNpemVfdCBwYXJlbkVu
ZCA9IG1fb3BzLnNpemUoKTsKQEAgLTM2NTQsNyArMzY1NCw3IEBAIGNsYXNzIFlhcnJHZW5lcmF0
b3IgOiBwdWJsaWMgWWFyckpJVEluZm8sIHByaXZhdGUgTWFjcm9Bc3NlbWJsZXIgewogCiAgICAg
ICAgICAgICBBU1NFUlQobGFzdE9wLm1fb3AgPT0gT3BCb2R5QWx0ZXJuYXRpdmVOZXh0KTsKICAg
ICAgICAgICAgIGxhc3RPcC5tX29wID0gT3BCb2R5QWx0ZXJuYXRpdmVFbmQ7Ci0gICAgICAgICAg
ICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IDA7CisgICAgICAgICAgICBsYXN0T3AubV9hbHRlcm5h
dGl2ZSA9IG51bGxwdHI7CiAgICAgICAgICAgICBsYXN0T3AubV9uZXh0T3AgPSBub3RGb3VuZDsK
ICAgICAgICAgfQogCkBAIC0zNjg4LDcgKzM2ODgsNyBAQCBjbGFzcyBZYXJyR2VuZXJhdG9yIDog
cHVibGljIFlhcnJKSVRJbmZvLCBwcml2YXRlIE1hY3JvQXNzZW1ibGVyIHsKICAgICAgICAgWWFy
ck9wJiBsYXN0T3AgPSBtX29wcy5sYXN0KCk7CiAgICAgICAgIEFTU0VSVChsYXN0T3AubV9vcCA9
PSBPcEJvZHlBbHRlcm5hdGl2ZU5leHQpOwogICAgICAgICBsYXN0T3AubV9vcCA9IE9wQm9keUFs
dGVybmF0aXZlRW5kOwotICAgICAgICBsYXN0T3AubV9hbHRlcm5hdGl2ZSA9IDA7CisgICAgICAg
IGxhc3RPcC5tX2FsdGVybmF0aXZlID0gbnVsbHB0cjsKICAgICAgICAgbGFzdE9wLm1fbmV4dE9w
ID0gcmVwZWF0TG9vcDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJKSVQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJKSVQuaApp
bmRleCAwOTZkNDBlZmQ4YmY4ODA3M2NkNWFjYmYyNzNkYTlkMzczNzgwN2I5Li42NjQyOGUwNjYz
ZjMzMjA5MTc3ODFkYmI5ZDBjNzMwZDJiNmQ2ODViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUveWFyci9ZYXJySklULmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3lhcnIv
WWFyckpJVC5oCkBAIC0xMjEsMTMgKzEyMSwxMyBAQCBwdWJsaWM6CiAgICAgTWF0Y2hSZXN1bHQg
ZXhlY3V0ZShjb25zdCBMQ2hhciogaW5wdXQsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5n
dGgsIE1hdGNoaW5nQ29udGV4dEhvbGRlciYgbWF0Y2hpbmdDb250ZXh0KQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGhhczhCaXRDb2RlTWF0Y2hPbmx5KCkpOwotICAgICAgICByZXR1cm4gTWF0Y2hS
ZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJVENvZGVNYXRjaE9ubHk4LCBZYXJyTWF0Y2hP
bmx5OEJpdFB0clRhZz4obV9tYXRjaE9ubHk4LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShp
bnB1dCwgc3RhcnQsIGxlbmd0aCwgMCwgbWF0Y2hpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVy
biBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlvblB0cjxZYXJySklUQ29kZU1hdGNoT25seTgsIFlh
cnJNYXRjaE9ubHk4Qml0UHRyVGFnPihtX21hdGNoT25seTguY29kZSgpLmV4ZWN1dGFibGVBZGRy
ZXNzKCkpKGlucHV0LCBzdGFydCwgbGVuZ3RoLCBudWxscHRyLCBtYXRjaGluZ0NvbnRleHQpKTsK
ICAgICB9CiAKICAgICBNYXRjaFJlc3VsdCBleGVjdXRlKGNvbnN0IFVDaGFyKiBpbnB1dCwgdW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCwgTWF0Y2hpbmdDb250ZXh0SG9sZGVyJiBtYXRj
aGluZ0NvbnRleHQpCiAgICAgewogICAgICAgICBBU1NFUlQoaGFzMTZCaXRDb2RlTWF0Y2hPbmx5
KCkpOwotICAgICAgICByZXR1cm4gTWF0Y2hSZXN1bHQodW50YWdDRnVuY3Rpb25QdHI8WWFyckpJ
VENvZGVNYXRjaE9ubHkxNiwgWWFyck1hdGNoT25seTE2Qml0UHRyVGFnPihtX21hdGNoT25seTE2
LmNvZGUoKS5leGVjdXRhYmxlQWRkcmVzcygpKShpbnB1dCwgc3RhcnQsIGxlbmd0aCwgMCwgbWF0
Y2hpbmdDb250ZXh0KSk7CisgICAgICAgIHJldHVybiBNYXRjaFJlc3VsdCh1bnRhZ0NGdW5jdGlv
blB0cjxZYXJySklUQ29kZU1hdGNoT25seTE2LCBZYXJyTWF0Y2hPbmx5MTZCaXRQdHJUYWc+KG1f
bWF0Y2hPbmx5MTYuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpKGlucHV0LCBzdGFydCwgbGVu
Z3RoLCBudWxscHRyLCBtYXRjaGluZ0NvbnRleHQpKTsKICAgICB9CiAKICNpZiBFTkFCTEUoUkVH
RVhQX1RSQUNJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJy
UGF0dGVybi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5jcHAK
aW5kZXggZDBhYzM5ODUzOTY1MTAwN2VmY2RiNzBkZDU4OWRmMDBlZWM5YWUwYS4uZDQxZmExM2Rh
ZmQyOWIxMjczYzYwM2I1YzMwNTM4NmJkMWI2MDEwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3lhcnIvWWFyclBhdHRlcm4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS95YXJyL1lhcnJQYXR0ZXJuLmNwcApAQCAtNjg2LDcgKzY4Niw3IEBAIHB1YmxpYzoKICAgICB7
CiAgICAgICAgIGlmIChVTkxJS0VMWSghaXNTYWZlVG9SZWN1cnNlKCkpKSB7CiAgICAgICAgICAg
ICBtX2Vycm9yID0gRXJyb3JDb2RlOjpQYXR0ZXJuVG9vTGFyZ2U7Ci0gICAgICAgICAgICByZXR1
cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKICAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPFBhdHRlcm5EaXNqdW5jdGlvbj4gbmV3RGlzanVuY3Rpb247CkBAIC03
MDUsMTIgKzcwNSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlm
IChoYXNFcnJvcihlcnJvcigpKSkgewotICAgICAgICAgICAgbmV3RGlzanVuY3Rpb24gPSAwOwot
ICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBuZXdEaXNqdW5jdGlvbiA9IG51bGxw
dHI7CisgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQogCiAgICAgICAgIGlm
ICghbmV3RGlzanVuY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogCiAgICAgICAgIFBhdHRlcm5EaXNqdW5jdGlvbiogY29waWVkRGlzanVu
Y3Rpb24gPSBuZXdEaXNqdW5jdGlvbi5nZXQoKTsKICAgICAgICAgbV9wYXR0ZXJuLm1fZGlzanVu
Y3Rpb25zLmFwcGVuZChXVEZNb3ZlKG5ld0Rpc2p1bmN0aW9uKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3lhcnIvWWFyclBhdHRlcm4uaAppbmRleCBlYzE0YWYyNGJlNjhlYmRlZDc0ODBlMDlmM2U2
NjNmODEzYWFiMzc4Li5lYTU3MmI3Mzg4OGViNWU1MGYwZTYyNWM4Mzg1MmI0Njg2MzkxNTM2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUveWFyci9ZYXJyUGF0dGVybi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS95YXJyL1lhcnJQYXR0ZXJuLmgKQEAgLTgyLDcgKzgyLDcg
QEAgcHVibGljOgogICAgIC8vIHRoZXkgbWF5IGhhdmUgYW4gb3B0aW9uYWwgbV90YWJsZSBmb3Ig
ZmFzdGVyIGxvb2t1cHMgKHdoaWNoIG11c3QgbWF0Y2ggdGhlCiAgICAgLy8gc3BlY2lmaWVkIG1h
dGNoZXMgYW5kIHJhbmdlcykKICAgICBDaGFyYWN0ZXJDbGFzcygpCi0gICAgICAgIDogbV90YWJs
ZSgwKQorICAgICAgICA6IG1fdGFibGUobnVsbHB0cikKICAgICAgICAgLCBtX2NoYXJhY3Rlcldp
ZHRocyhDaGFyYWN0ZXJDbGFzc1dpZHRoczo6VW5rbm93bikKICAgICAgICAgLCBtX2FueUNoYXJh
Y3RlcihmYWxzZSkKICAgICB7CkBAIC05OSw3ICs5OSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBt
X3JhbmdlcyhyYW5nZXMpCiAgICAgICAgICwgbV9tYXRjaGVzVW5pY29kZShtYXRjaGVzVW5pY29k
ZSkKICAgICAgICAgLCBtX3Jhbmdlc1VuaWNvZGUocmFuZ2VzVW5pY29kZSkKLSAgICAgICAgLCBt
X3RhYmxlKDApCisgICAgICAgICwgbV90YWJsZShudWxscHRyKQogICAgICAgICAsIG1fY2hhcmFj
dGVyV2lkdGhzKHdpZHRocykKICAgICAgICAgLCBtX3RhYmxlSW52ZXJ0ZWQoZmFsc2UpCiAgICAg
ICAgICwgbV9hbnlDaGFyYWN0ZXIoZmFsc2UpCkBAIC0zMzgsNyArMzM4LDcgQEAgcHVibGljOgog
c3RydWN0IFBhdHRlcm5EaXNqdW5jdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6Ci0gICAgUGF0dGVybkRpc2p1bmN0aW9uKFBhdHRlcm5BbHRlcm5hdGl2ZSogcGFy
ZW50ID0gMCkKKyAgICBQYXR0ZXJuRGlzanVuY3Rpb24oUGF0dGVybkFsdGVybmF0aXZlKiBwYXJl
bnQgPSBudWxscHRyKQogICAgICAgICA6IG1fcGFyZW50KHBhcmVudCkKICAgICAgICAgLCBtX2hh
c0ZpeGVkU2l6ZShmYWxzZSkKICAgICB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>