<?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>188325</bug_id>
          
          <creation_ts>2018-08-03 18:08:13 -0700</creation_ts>
          <short_desc>Make BlendMode an enum class</short_desc>
          <delta_ts>2018-08-06 16:10:40 -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="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1447853</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-03 18:08:13 -0700</bug_when>
    <thetext>Make BlendMode an enum class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447856</commentid>
    <comment_count>1</comment_count>
      <attachid>346571</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-03 18:10:09 -0700</bug_when>
    <thetext>Created attachment 346571
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447861</commentid>
    <comment_count>2</comment_count>
      <attachid>346574</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-03 18:34:37 -0700</bug_when>
    <thetext>Created attachment 346574
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1447880</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-08-03 20:34:33 -0700</bug_when>
    <thetext>I did this in bug 188147 but it broke SVG animation tests. How does yours not?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448160</commentid>
    <comment_count>4</comment_count>
      <attachid>346574</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-06 10:51:52 -0700</bug_when>
    <thetext>Comment on attachment 346574
Patch

¯\_(ツ)_/¯</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448175</commentid>
    <comment_count>5</comment_count>
      <attachid>346574</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-06 11:19:51 -0700</bug_when>
    <thetext>Comment on attachment 346574
Patch

Clearing flags on attachment: 346574

Committed r234610: &lt;https://trac.webkit.org/changeset/234610&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448176</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-08-06 11:19:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448178</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-08-06 11:31:09 -0700</bug_when>
    <thetext>*** Bug 188147 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1448273</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-08-06 16:10:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/42985608&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346571</attachid>
            <date>2018-08-03 18:10:09 -0700</date>
            <delta_ts>2018-08-03 18:34:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188325-20180803181008.patch</filename>
            <type>text/plain</type>
            <size>56338</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDE4LTA4LTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBCbGVu
ZE1vZGUgYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4MzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgQmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2VGcm9tUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zOjpJbWFnZVBhaW50aW5nT3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
ZHVtcFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQmxlbmRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpjb21w
b3NpdGVPcGVyYXRvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNb2RlTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FG
aWx0ZXJzQ29jb2EubW06CisgICAgICAgIChQbGF0Zm9ybUNBRmlsdGVyczo6c2V0QmxlbmRpbmdG
aWx0ZXJzT25MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0Q0dCbGVuZE1vZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseU5FT04pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OlJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1
cGRhdGVCbGVuZE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQmxlbmRN
b2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGxMYXllcjo6RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxM
YXllcjo6aGFzT3BhcXVlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aW5pdGlhbEZpbGxCbGVu
ZE1vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEJsZW5kTW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aGFzQmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpibGVuZE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxCbGVuZE1vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbnVtZXJh
dGlvblZhbHVlRm9yVGFyZ2V0QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxl
bmRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxCbGVuZE1vZGU+OjpoaWdoZXN0RW51bVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEJsZW5kTW9kZT46OnRvU3RyaW5n
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRy
YXcpOgorCiAyMDE4LTA4LTAyICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4K
IAogICAgICAgICBUZXh0IHNlbGVjdGlvbiBjb2xvciBpcyBoYXJkIHRvIHNlZSBpbiBkYXJrIG1v
ZGUgd2ViIHZpZXdzLgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVl
TWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAzLDU4ICsz
OTAzLDU4IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MKIHsKICAg
ICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAoYmxlbmRN
b2RlKSB7Ci0gICAgY2FzZSBCbGVuZE1vZGVOb3JtYWw6CisgICAgY2FzZSBCbGVuZE1vZGU6Ok5v
cm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6CisgICAgY2FzZSBCbGVuZE1vZGU6
Ok11bHRpcGx5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU11bHRpcGx5Owog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZVNjcmVlbjoKKyAgICBjYXNlIEJsZW5k
TW9kZTo6U2NyZWVuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNjcmVlbjsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVPdmVybGF5OgorICAgIGNhc2UgQmxl
bmRNb2RlOjpPdmVybGF5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU92ZXJs
YXk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlRGFya2VuOgorICAgIGNhc2Ug
QmxlbmRNb2RlOjpEYXJrZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlRGFy
a2VuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUxpZ2h0ZW46CisgICAgY2Fz
ZSBCbGVuZE1vZGU6OkxpZ2h0ZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVl
TGlnaHRlbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVDb2xvckRvZGdlOgor
ICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvckRvZGdlOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQg
PSBDU1NWYWx1ZUNvbG9yRG9kZ2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2Rl
Q29sb3JCdXJuOgorICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvckJ1cm46CiAgICAgICAgIG1fdmFs
dWUudmFsdWVJRCA9IENTU1ZhbHVlQ29sb3JCdXJuOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEJsZW5kTW9kZUhhcmRMaWdodDoKKyAgICBjYXNlIEJsZW5kTW9kZTo6SGFyZExpZ2h0OgogICAg
ICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhhcmRMaWdodDsKICAgICAgICAgYnJlYWs7
Ci0gICAgY2FzZSBCbGVuZE1vZGVTb2Z0TGlnaHQ6CisgICAgY2FzZSBCbGVuZE1vZGU6OlNvZnRM
aWdodDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTb2Z0TGlnaHQ7CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlRGlmZmVyZW5jZToKKyAgICBjYXNlIEJsZW5k
TW9kZTo6RGlmZmVyZW5jZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVEaWZm
ZXJlbmNlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUV4Y2x1c2lvbjoKKyAg
ICBjYXNlIEJsZW5kTW9kZTo6RXhjbHVzaW9uOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBD
U1NWYWx1ZUV4Y2x1c2lvbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVIdWU6
CisgICAgY2FzZSBCbGVuZE1vZGU6Okh1ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NT
VmFsdWVIdWU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlU2F0dXJhdGlvbjoK
KyAgICBjYXNlIEJsZW5kTW9kZTo6U2F0dXJhdGlvbjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVTYXR1cmF0aW9uOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9k
ZUNvbG9yOgorICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvcjoKICAgICAgICAgbV92YWx1ZS52YWx1
ZUlEID0gQ1NTVmFsdWVDb2xvcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVM
dW1pbm9zaXR5OgorICAgIGNhc2UgQmxlbmRNb2RlOjpMdW1pbm9zaXR5OgogICAgICAgICBtX3Zh
bHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx1bWlub3NpdHk7CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQmxlbmRNb2RlUGx1c0RhcmtlcjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6UGx1c0RhcmtlcjoK
ICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQbHVzRGFya2VyOwogICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZVBsdXNMaWdodGVyOgorICAgIGNhc2UgQmxlbmRNb2Rl
OjpQbHVzTGlnaHRlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQbHVzTGln
aHRlcjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzk2Niw0NyArMzk2Niw0NyBAQCB0ZW1w
bGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2ggKG1fdmFs
dWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgIHJldHVybiBC
bGVuZE1vZGVOb3JtYWw7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6Ok5vcm1hbDsKICAgICBj
YXNlIENTU1ZhbHVlTXVsdGlwbHk6Ci0gICAgICAgIHJldHVybiBCbGVuZE1vZGVNdWx0aXBseTsK
KyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6TXVsdGlwbHk7CiAgICAgY2FzZSBDU1NWYWx1ZVNj
cmVlbjoKLSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZVNjcmVlbjsKKyAgICAgICAgcmV0dXJuIEJs
ZW5kTW9kZTo6U2NyZWVuOwogICAgIGNhc2UgQ1NTVmFsdWVPdmVybGF5OgotICAgICAgICByZXR1
cm4gQmxlbmRNb2RlT3ZlcmxheTsKKyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6T3ZlcmxheTsK
ICAgICBjYXNlIENTU1ZhbHVlRGFya2VuOgotICAgICAgICByZXR1cm4gQmxlbmRNb2RlRGFya2Vu
OworICAgICAgICByZXR1cm4gQmxlbmRNb2RlOjpEYXJrZW47CiAgICAgY2FzZSBDU1NWYWx1ZUxp
Z2h0ZW46Ci0gICAgICAgIHJldHVybiBCbGVuZE1vZGVMaWdodGVuOworICAgICAgICByZXR1cm4g
QmxlbmRNb2RlOjpMaWdodGVuOwogICAgIGNhc2UgQ1NTVmFsdWVDb2xvckRvZGdlOgotICAgICAg
ICByZXR1cm4gQmxlbmRNb2RlQ29sb3JEb2RnZTsKKyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6
Q29sb3JEb2RnZTsKICAgICBjYXNlIENTU1ZhbHVlQ29sb3JCdXJuOgotICAgICAgICByZXR1cm4g
QmxlbmRNb2RlQ29sb3JCdXJuOworICAgICAgICByZXR1cm4gQmxlbmRNb2RlOjpDb2xvckJ1cm47
CiAgICAgY2FzZSBDU1NWYWx1ZUhhcmRMaWdodDoKLSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZUhh
cmRMaWdodDsKKyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6SGFyZExpZ2h0OwogICAgIGNhc2Ug
Q1NTVmFsdWVTb2Z0TGlnaHQ6Ci0gICAgICAgIHJldHVybiBCbGVuZE1vZGVTb2Z0TGlnaHQ7Cisg
ICAgICAgIHJldHVybiBCbGVuZE1vZGU6OlNvZnRMaWdodDsKICAgICBjYXNlIENTU1ZhbHVlRGlm
ZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZURpZmZlcmVuY2U7CisgICAgICAgIHJl
dHVybiBCbGVuZE1vZGU6OkRpZmZlcmVuY2U7CiAgICAgY2FzZSBDU1NWYWx1ZUV4Y2x1c2lvbjoK
LSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZUV4Y2x1c2lvbjsKKyAgICAgICAgcmV0dXJuIEJsZW5k
TW9kZTo6RXhjbHVzaW9uOwogICAgIGNhc2UgQ1NTVmFsdWVIdWU6Ci0gICAgICAgIHJldHVybiBC
bGVuZE1vZGVIdWU7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6Okh1ZTsKICAgICBjYXNlIENT
U1ZhbHVlU2F0dXJhdGlvbjoKLSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZVNhdHVyYXRpb247Cisg
ICAgICAgIHJldHVybiBCbGVuZE1vZGU6OlNhdHVyYXRpb247CiAgICAgY2FzZSBDU1NWYWx1ZUNv
bG9yOgotICAgICAgICByZXR1cm4gQmxlbmRNb2RlQ29sb3I7CisgICAgICAgIHJldHVybiBCbGVu
ZE1vZGU6OkNvbG9yOwogICAgIGNhc2UgQ1NTVmFsdWVMdW1pbm9zaXR5OgotICAgICAgICByZXR1
cm4gQmxlbmRNb2RlTHVtaW5vc2l0eTsKKyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6THVtaW5v
c2l0eTsKICAgICBjYXNlIENTU1ZhbHVlUGx1c0RhcmtlcjoKLSAgICAgICAgcmV0dXJuIEJsZW5k
TW9kZVBsdXNEYXJrZXI7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6OlBsdXNEYXJrZXI7CiAg
ICAgY2FzZSBDU1NWYWx1ZVBsdXNMaWdodGVyOgotICAgICAgICByZXR1cm4gQmxlbmRNb2RlUGx1
c0xpZ2h0ZXI7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6OlBsdXNMaWdodGVyOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBCbGVuZE1vZGVOb3JtYWw7CisgICAgcmV0dXJuIEJsZW5kTW9kZTo6Tm9y
bWFsOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJpbWl0
aXZlVmFsdWUoSXNvbGF0aW9uIGlzb2xhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcgKzIyMSw3
IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY28KICAgICAgICAgICAg
IHRyZWVTY29wZSgpLmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKCptX3BhcnNlZFVzZW1hcC5pbXBs
KCksICp0aGlzKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29tcG9zaXRlQXR0cikgewogICAg
ICAgICAvLyBGSVhNRTogaW1hZ2VzIGRvbid0IHN1cHBvcnQgYmxlbmQgbW9kZXMgaW4gdGhlaXIg
Y29tcG9zaXRpbmcgYXR0cmlidXRlLgotICAgICAgICBCbGVuZE1vZGUgYmxlbmRPcCA9IEJsZW5k
TW9kZU5vcm1hbDsKKyAgICAgICAgQmxlbmRNb2RlIGJsZW5kT3AgPSBCbGVuZE1vZGU6Ok5vcm1h
bDsKICAgICAgICAgaWYgKCFwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0b3IodmFsdWUsIG1f
Y29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kT3ApKQogICAgICAgICAgICAgbV9jb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09OVFJPTFMp
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlOjpTdGF0ZTo6U3RhCiAgICAgLCBzaGFkb3dDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpCiAg
ICAgLCBnbG9iYWxBbHBoYSgxKQogICAgICwgZ2xvYmFsQ29tcG9zaXRlKENvbXBvc2l0ZVNvdXJj
ZU92ZXIpCi0gICAgLCBnbG9iYWxCbGVuZChCbGVuZE1vZGVOb3JtYWwpCisgICAgLCBnbG9iYWxC
bGVuZChCbGVuZE1vZGU6Ok5vcm1hbCkKICAgICAsIGhhc0ludmVydGlibGVUcmFuc2Zvcm0odHJ1
ZSkKICAgICAsIGxpbmVEYXNoT2Zmc2V0KDApCiAgICAgLCBpbWFnZVNtb290aGluZ0VuYWJsZWQo
dHJ1ZSkKQEAgLTc3NCw3ICs3NzQsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6Z2xvCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldEdsb2JhbENv
bXBvc2l0ZU9wZXJhdGlvbihjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHsKICAgICBDb21wb3Np
dGVPcGVyYXRvciBvcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgQmxlbmRNb2RlIGJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbDsKKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRN
b2RlOjpOb3JtYWw7CiAgICAgaWYgKCFwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0b3Iob3Bl
cmF0aW9uLCBvcCwgYmxlbmRNb2RlKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgoc3RhdGUo
KS5nbG9iYWxDb21wb3NpdGUgPT0gb3ApICYmIChzdGF0ZSgpLmdsb2JhbEJsZW5kID09IGJsZW5k
TW9kZSkpCkBAIC0xNzE0LDEwICsxNzE0LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6ZHJhd0lt
YWdlRnJvbVJlY3QoSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBmbG9hdCBzeCwgZmxv
YXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9hdCBkdywg
ZmxvYXQgZGgsIGNvbnN0IFN0cmluZyYgY29tcG9zaXRlT3BlcmF0aW9uKQogewogICAgIENvbXBv
c2l0ZU9wZXJhdG9yIG9wOwotICAgIGF1dG8gYmxlbmRPcCA9IEJsZW5kTW9kZU5vcm1hbDsKLSAg
ICBpZiAoIXBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRpb24s
IG9wLCBibGVuZE9wKSB8fCBibGVuZE9wICE9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICBhdXRvIGJs
ZW5kT3AgPSBCbGVuZE1vZGU6Ok5vcm1hbDsKKyAgICBpZiAoIXBhcnNlQ29tcG9zaXRlQW5kQmxl
bmRPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRpb24sIG9wLCBibGVuZE9wKSB8fCBibGVuZE9wICE9
IEJsZW5kTW9kZTo6Tm9ybWFsKQogICAgICAgICBvcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0g
ICAgZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgRmxvYXRSZWN0IHsgc3gsIHN5LCBzdywgc2ggfSwg
RmxvYXRSZWN0IHsgZHgsIGR5LCBkdywgZGggfSwgb3AsIEJsZW5kTW9kZU5vcm1hbCk7CisgICAg
ZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgRmxvYXRSZWN0IHsgc3gsIHN5LCBzdywgc2ggfSwgRmxv
YXRSZWN0IHsgZHgsIGR5LCBkdywgZGggfSwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIH0KIAog
dm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhckNhbnZhcygpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJKHJldmlz
aW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcElt
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwgPSB0cnVl
KTsKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IEZs
b2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQmLCBjb25z
dCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2Us
IGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9
IEJsZW5kTW9kZU5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKICNpZiBQTEFURk9S
TShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhpY3NDb250
ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNTaXplLCBD
b21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZpc2lvbiAy
MzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRl
eHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0cnVjdCBHcmFwaGljc0Nv
bnRleHRTdGF0ZSB7CiAKICAgICBmbG9hdCBhbHBoYSB7IDEgfTsKICAgICBDb21wb3NpdGVPcGVy
YXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBvc2l0ZVNvdXJjZU92ZXIgfTsKLSAgICBCbGVu
ZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9ybWFsIH07CisgICAgQmxlbmRNb2RlIGJsZW5k
TW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25EZWZhdWx0IH07CiAKICAgICBi
b29sIHNob3VsZEFudGlhbGlhcyA6IDE7CkBAIC0xOTgsNyArMTk4LDcgQEAgc3RydWN0IEdyYXBo
aWNzQ29udGV4dFN0YXRlIHsKIH07CiAKIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7Ci0g
ICAgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxlbmRNb2Rl
Tm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpTeW5jaHJv
bm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24g
PSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgSW50ZXJwb2xhdGlvblF1YWxpdHkgaW50
ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCkKKyAgICBJbWFnZVBhaW50
aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0
ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVj
b2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCksIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25R
dWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVy
YXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUp
CiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQpAQCAtMjA3LDcgKzIwNyw3
IEBAIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7CiAgICAgewogICAgIH0KIAotICAgIElt
YWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlv
bkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVhbGl0eSA9
IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9u
b3VzKQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
biBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0
aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3NpdGVPcGVyYXRvciBjb21w
b3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUg
PSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihjb21wb3Np
dGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAgICAgICwg
bV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0cnVjdCBJ
bWFnZVBhaW50aW5nT3B0aW9ucyB7CiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFpbnRpbmdP
cHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5LCBJbWFnZU9y
aWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9
IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3Vz
KQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9s
YXRpb25RdWFsaXR5LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNj
cmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVu
ZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihj
b21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAg
ICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQpAQCAtMzI2LDcgKzMyNiw3IEBAIHB1
YmxpYzoKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25zdCB7IHJl
dHVybiBtX3N0YXRlOyB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkgfHwgVVNFKENB
SVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2
ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmll
bnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBk
cmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNpemUmIHNl
bGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0aW9uKCkp
OwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKQEAgLTM2NCw4ICszNjQs
OCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9h
dFJlY3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IENvbG9yJik7CiAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJlY3QmLCBH
cmFkaWVudCYpOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29s
b3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKLSAg
ICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29uc3QgQ29s
b3ImLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJlY3QoY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2Rl
ID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNvbnN0IEZs
b2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9y
bWFsKTsKICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImKTsK
IAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwpA
QCAtMzg0LDcgKzM4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZlcihJbWFn
ZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdlUGFpbnRp
bmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogICAgIHZvaWQgZHJhd0ltYWdl
QnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFp
bnRpbmdPcHRpb25zKCkpOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7Cisg
ICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxv
YXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0
b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZl
cj4sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0
aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKICAgICB2b2lkIGRyYXdDb25zdW1pbmdJ
bWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9hdFJlY3Qm
IGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5n
T3B0aW9ucygpKTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBbHBo
YShmbG9hdCk7CiAgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRlLmFscGhh
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21w
b3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwogICAgIENvbXBvc2l0ZU9wZXJhdG9yIGNvbXBv
c2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlT3BlcmF0b3I7
IH0KICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9z
dGF0ZS5ibGVuZE1vZGU7IH0KIApAQCAtNjE0LDcgKzYxNCw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKICAgICB2b2lkIHNldFBsYXRmb3JtQWxwaGEoZmxv
YXQpOwotICAgIHZvaWQgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBzZXRQbGF0Zm9y
bUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRN
b2RlOjpOb3JtYWwpOwogCiAgICAgdm9pZCBiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIo
ZmxvYXQgb3BhY2l0eSk7CiAgICAgdm9pZCBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJ
bXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0SW1wbC5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc0LDcgKzc0LDcgQEAgcHVibGljOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQogICAgIHZp
cnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBG
bG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdlT3JpZW50
YXRpb24pID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0
U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5v
cm1hbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZs
b2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3Bh
Y2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0JiwgZmxvYXQg
Ym9yZGVyVGhpY2tuZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lKGNvbnN0IEZs
b2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAJKHJldmlzaW9uIDIz
NDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBHcmFwaGljc0xheWVy
OjpkdW1wUHJvcGVydGllcyhUZXh0UwogICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIihvcGFjaXR5
ICIgPDwgbV9vcGFjaXR5IDw8ICIpXG4iOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykK
LSAgICBpZiAobV9ibGVuZE1vZGUgIT0gQmxlbmRNb2RlTm9ybWFsKQorICAgIGlmIChtX2JsZW5k
TW9kZSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCkKICAgICAgICAgdHMgPDwgaW5kZW50IDw8ICIoYmxl
bmRNb2RlICIgPDwgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1f
YmxlbmRNb2RlKSA8PCAiKVxuIjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyMzQ1MTQpCisr
KyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJKHdvcmtp
bmcgY29weSkKQEAgLTY0OCw3ICs2NDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRmlsdGVyT3BlcmF0
aW9ucyBtX2JhY2tkcm9wRmlsdGVyczsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0g
ICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9ybWFsIH07CisgICAgQmxlbmRN
b2RlIG1fYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwgfTsKICNlbmRpZgogCiAgICAgY29u
c3QgVHlwZSBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc1R5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTcyLDEzICs3MiwxMyBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgYmxlbmRPcGVyYXRv
ck5hCiAgICAgInBsdXMtbGlnaHRlciIKIH07CiBjb25zdCBpbnQgbnVtQ29tcG9zaXRlT3BlcmF0
b3JOYW1lcyA9IFdURl9BUlJBWV9MRU5HVEgoY29tcG9zaXRlT3BlcmF0b3JOYW1lcyk7Ci1jb25z
dCBpbnQgbnVtQmxlbmRPcGVyYXRvck5hbWVzID0gV1RGX0FSUkFZX0xFTkdUSChibGVuZE9wZXJh
dG9yTmFtZXMpOworY29uc3QgdW5zaWduZWQgbnVtQmxlbmRPcGVyYXRvck5hbWVzID0gV1RGX0FS
UkFZX0xFTkdUSChibGVuZE9wZXJhdG9yTmFtZXMpOwogCiBib29sIHBhcnNlQmxlbmRNb2RlKGNv
bnN0IFN0cmluZyYgcywgQmxlbmRNb2RlJiBibGVuZE1vZGUpCiB7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBudW1CbGVuZE9wZXJhdG9yTmFtZXM7IGkrKykgeworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBudW1CbGVuZE9wZXJhdG9yTmFtZXM7IGkrKykgewogICAgICAgICBpZiAocyA9
PSBibGVuZE9wZXJhdG9yTmFtZXNbaV0pIHsKLSAgICAgICAgICAgIGJsZW5kTW9kZSA9IHN0YXRp
Y19jYXN0PEJsZW5kTW9kZT4oaSArIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBibGVu
ZE1vZGUgPSBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KGkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
QmxlbmRNb2RlOjpOb3JtYWwpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9
CiAgICAgfQpAQCAtOTEsNyArOTEsNyBAQCBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVy
YXRvcihjb25zCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db21wb3NpdGVPcGVyYXRvck5h
bWVzOyBpKyspIHsKICAgICAgICAgaWYgKHMgPT0gY29tcG9zaXRlT3BlcmF0b3JOYW1lc1tpXSkg
ewogICAgICAgICAgICAgb3AgPSBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4oaSk7Ci0g
ICAgICAgICAgICBibGVuZE9wID0gQmxlbmRNb2RlTm9ybWFsOworICAgICAgICAgICAgYmxlbmRP
cCA9IEJsZW5kTW9kZTo6Tm9ybWFsOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KICAgICB9CkBAIC0xMTEsMjMgKzExMSwyMyBAQCBTdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JO
YW1lKENvbXBvc2l0ZU9wCiB7CiAgICAgQVNTRVJUKG9wID49IDApOwogICAgIEFTU0VSVChvcCA8
IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpOwotICAgIEFTU0VSVChibGVuZE9wID49IEJsZW5k
TW9kZU5vcm1hbCk7Ci0gICAgQVNTRVJUKGJsZW5kT3AgPD0gbnVtQmxlbmRPcGVyYXRvck5hbWVz
KTsKLSAgICBpZiAoYmxlbmRPcCA+IEJsZW5kTW9kZU5vcm1hbCkKLSAgICAgICAgcmV0dXJuIGJs
ZW5kT3BlcmF0b3JOYW1lc1tibGVuZE9wIC0gQmxlbmRNb2RlTm9ybWFsXTsKKyAgICBBU1NFUlQo
YmxlbmRPcCA+PSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgQVNTRVJUKHN0YXRpY19jYXN0PHVu
c2lnbmVkPihibGVuZE9wKSA8PSBudW1CbGVuZE9wZXJhdG9yTmFtZXMpOworICAgIGlmIChibGVu
ZE9wID4gQmxlbmRNb2RlOjpOb3JtYWwpCisgICAgICAgIHJldHVybiBibGVuZE9wZXJhdG9yTmFt
ZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJsZW5kT3ApIC0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KEJsZW5kTW9kZTo6Tm9ybWFsKV07CiAgICAgcmV0dXJuIGNvbXBvc2l0ZU9wZXJhdG9yTmFtZXNb
b3BdOwogfQogCiBTdHJpbmcgYmxlbmRNb2RlTmFtZShCbGVuZE1vZGUgYmxlbmRPcCkKIHsKLSAg
ICBBU1NFUlQoYmxlbmRPcCA+PSBCbGVuZE1vZGVOb3JtYWwpOwotICAgIEFTU0VSVChibGVuZE9w
IDw9IEJsZW5kTW9kZVBsdXNMaWdodGVyKTsKLSAgICByZXR1cm4gYmxlbmRPcGVyYXRvck5hbWVz
W2JsZW5kT3AgLSBCbGVuZE1vZGVOb3JtYWxdOworICAgIEFTU0VSVChibGVuZE9wID49IEJsZW5k
TW9kZTo6Tm9ybWFsKTsKKyAgICBBU1NFUlQoYmxlbmRPcCA8PSBCbGVuZE1vZGU6OlBsdXNMaWdo
dGVyKTsKKyAgICByZXR1cm4gYmxlbmRPcGVyYXRvck5hbWVzW3N0YXRpY19jYXN0PHVuc2lnbmVk
PihibGVuZE9wKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihCbGVuZE1vZGU6Ok5vcm1hbCldOwog
fQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDb21wb3NpdGVPcGVy
YXRvciBvcCkKIHsKLSAgICByZXR1cm4gdHMgPDwgY29tcG9zaXRlT3BlcmF0b3JOYW1lKG9wLCBC
bGVuZE1vZGVOb3JtYWwpOworICAgIHJldHVybiB0cyA8PCBjb21wb3NpdGVPcGVyYXRvck5hbWUo
b3AsIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgQmxlbmRNb2RlIGJsZW5kTW9kZSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHJldmlzaW9uIDIzNDUxNCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAkod29y
a2luZyBjb3B5KQpAQCAtNTEsMjUgKzUxLDI1IEBAIGVudW0gQ29tcG9zaXRlT3BlcmF0b3Igewog
ICAgIENvbXBvc2l0ZURpZmZlcmVuY2UKIH07CiAKLWVudW0gQmxlbmRNb2RlIHsKLSAgICBCbGVu
ZE1vZGVOb3JtYWwgPSAxLCAvLyBTdGFydCB3aXRoIDEgdG8gbWF0Y2ggU1ZHJ3MgYmxlbmRtb2Rl
IGVudW1lcmF0aW9uLgotICAgIEJsZW5kTW9kZU11bHRpcGx5LAotICAgIEJsZW5kTW9kZVNjcmVl
biwKLSAgICBCbGVuZE1vZGVEYXJrZW4sCi0gICAgQmxlbmRNb2RlTGlnaHRlbiwKLSAgICBCbGVu
ZE1vZGVPdmVybGF5LAotICAgIEJsZW5kTW9kZUNvbG9yRG9kZ2UsCi0gICAgQmxlbmRNb2RlQ29s
b3JCdXJuLAotICAgIEJsZW5kTW9kZUhhcmRMaWdodCwKLSAgICBCbGVuZE1vZGVTb2Z0TGlnaHQs
Ci0gICAgQmxlbmRNb2RlRGlmZmVyZW5jZSwKLSAgICBCbGVuZE1vZGVFeGNsdXNpb24sCi0gICAg
QmxlbmRNb2RlSHVlLAotICAgIEJsZW5kTW9kZVNhdHVyYXRpb24sCi0gICAgQmxlbmRNb2RlQ29s
b3IsCi0gICAgQmxlbmRNb2RlTHVtaW5vc2l0eSwKLSAgICBCbGVuZE1vZGVQbHVzRGFya2VyLAot
ICAgIEJsZW5kTW9kZVBsdXNMaWdodGVyCitlbnVtIGNsYXNzIEJsZW5kTW9kZSB7CisgICAgTm9y
bWFsID0gMSwgLy8gU3RhcnQgd2l0aCAxIHRvIG1hdGNoIFNWRydzIGJsZW5kbW9kZSBlbnVtZXJh
dGlvbi4KKyAgICBNdWx0aXBseSwKKyAgICBTY3JlZW4sCisgICAgRGFya2VuLAorICAgIExpZ2h0
ZW4sCisgICAgT3ZlcmxheSwKKyAgICBDb2xvckRvZGdlLAorICAgIENvbG9yQnVybiwKKyAgICBI
YXJkTGlnaHQsCisgICAgU29mdExpZ2h0LAorICAgIERpZmZlcmVuY2UsCisgICAgRXhjbHVzaW9u
LAorICAgIEh1ZSwKKyAgICBTYXR1cmF0aW9uLAorICAgIENvbG9yLAorICAgIEx1bWlub3NpdHks
CisgICAgUGx1c0RhcmtlciwKKyAgICBQbHVzTGlnaHRlcgogfTsKIAogZW51bSBHcmFkaWVudFNw
cmVhZE1ldGhvZCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1h
Z2UuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBJbWFnZURy
YXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgICAgICB2aXNpYmxlU3Jj
UmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUuaGVpZ2h0
KCkpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoMSk7CiAgICAgICAgICAg
ICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2FsZS5oZWln
aHQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlzaWJsZVNy
Y1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWwsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmllbnRhdGlv
bkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3Qs
IHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogICAgICAgICB9CiAgICAgICAgIGlmIChzaXpl
KCkuaGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RSZWN0KS53
aWR0aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVjdCB2aXNp
YmxlU3JjUmVjdDsKQEAgLTIwNCw3ICsyMDQsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRy
YXdUaWxlZChHcmFwaGljCiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKDApOwogICAg
ICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAvIHNjYWxl
LndpZHRoKCkpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KDEpOwotICAg
ICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwg
QmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNpYmxlU3Jj
UmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRp
b25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2LDcgKzIz
Niw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAgICAgICAg
ICAgICAgICBGbG9hdFJlY3QgZnJvbVJlY3QodG9GbG9hdFBvaW50KGN1cnJlbnRUaWxlUmVjdC5s
b2NhdGlvbigpIC0gb25lVGlsZVJlY3QubG9jYXRpb24oKSksIGN1cnJlbnRUaWxlUmVjdC5zaXpl
KCkpOwogICAgICAgICAgICAgICAgIGZyb21SZWN0LnNjYWxlKDEgLyBzY2FsZS53aWR0aCgpLCAx
IC8gc2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJhdyhjdHh0
LCB0b1JlY3QsIGZyb21SZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01vZGUsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBk
cmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwgZGVjb2Rp
bmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAgICAgICAg
aWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykKICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB0b1ggKz0gY3Vy
cmVudFRpbGVSZWN0LndpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBAQCBwdWJs
aWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRl
eHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3Qs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAgY29uc3Qg
RmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3Bl
cmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgIGNvbnN0IEZsb2F0
UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9y
LCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAKICNpZiAhQVNTRVJUX0RJU0FCTEVE
CiAgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSB7IHJldHVybiB0cnVlOyB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVyLmgJKHJl
dmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdl
QnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxMCArMTQ0LDEwIEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBmbHVzaENvbnRleHQoKSBjb25zdDsKICNlbmRpZgogICAgIAotICAgIHZvaWQgZHJh
dyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0
b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOwot
ICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBk
ZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNp
emUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRl
c3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0x
KSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBC
bGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAotICAgIHN0YXRpYyB2b2lkIGRyYXdDb25zdW1p
bmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0JiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxvYXRSZWN0
KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3Zlciwg
QmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3Q29uc3Vt
aW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYsIGNvbnN0
IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZsb2F0UmVj
dCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIs
IEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAogICAgIGlubGluZSB2b2lkIGdlbmVy
aWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1D
QUZpbHRlcnNDb2NvYS5tbQkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNTU2LDUyICs1NTYsNTIgQEAgdm9pZCBQbGF0Zm9ybUNBRmlsdGVyczo6c2V0
QmxlbmRpbmdGaWx0ZQogICAgIENBRmlsdGVyKiBmaWx0ZXIgPSBuaWw7CiAKICAgICBzd2l0Y2gg
KGJsZW5kTW9kZSkgewotICAgIGNhc2UgQmxlbmRNb2RlTm9ybWFsOgorICAgIGNhc2UgQmxlbmRN
b2RlOjpOb3JtYWw6CiAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2V0IGFuIGFjdHVhbCBmaWx0ZXIg
b2JqZWN0IGluIHRoaXMgY2FzZS4KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVP
dmVybGF5OgorICAgIGNhc2UgQmxlbmRNb2RlOjpPdmVybGF5OgogICAgICAgICBmaWx0ZXIgPSBb
Q0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyT3ZlcmxheUJsZW5kTW9kZV07CiAgICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlQ29sb3JEb2RnZToKKyAgICBjYXNlIEJsZW5k
TW9kZTo6Q29sb3JEb2RnZToKICAgICAgICAgZmlsdGVyID0gW0NBRmlsdGVyIGZpbHRlcldpdGhU
eXBlOmtDQUZpbHRlckNvbG9yRG9kZ2VCbGVuZE1vZGVdOwogICAgICAgICBicmVhazsKLSAgICBj
YXNlIEJsZW5kTW9kZUNvbG9yQnVybjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6Q29sb3JCdXJuOgog
ICAgICAgICBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyQ29sb3JC
dXJuQmxlbmRNb2RlXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVEYXJrZW46
CisgICAgY2FzZSBCbGVuZE1vZGU6OkRhcmtlbjoKICAgICAgICAgZmlsdGVyID0gW0NBRmlsdGVy
IGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckRhcmtlbkJsZW5kTW9kZV07CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQmxlbmRNb2RlRGlmZmVyZW5jZToKKyAgICBjYXNlIEJsZW5kTW9kZTo6RGlm
ZmVyZW5jZToKICAgICAgICAgZmlsdGVyID0gW0NBRmlsdGVyIGZpbHRlcldpdGhUeXBlOmtDQUZp
bHRlckRpZmZlcmVuY2VCbGVuZE1vZGVdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5k
TW9kZUV4Y2x1c2lvbjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6RXhjbHVzaW9uOgogICAgICAgICBm
aWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyRXhjbHVzaW9uQmxlbmRN
b2RlXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVIYXJkTGlnaHQ6CisgICAg
Y2FzZSBCbGVuZE1vZGU6OkhhcmRMaWdodDoKICAgICAgICAgZmlsdGVyID0gW0NBRmlsdGVyIGZp
bHRlcldpdGhUeXBlOmtDQUZpbHRlckhhcmRMaWdodEJsZW5kTW9kZV07CiAgICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6CisgICAgY2FzZSBCbGVuZE1vZGU6Ok11bHRp
cGx5OgogICAgICAgICBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVy
TXVsdGlwbHlCbGVuZE1vZGVdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUxp
Z2h0ZW46CisgICAgY2FzZSBCbGVuZE1vZGU6OkxpZ2h0ZW46CiAgICAgICAgIGZpbHRlciA9IFtD
QUZpbHRlciBmaWx0ZXJXaXRoVHlwZTprQ0FGaWx0ZXJMaWdodGVuQmxlbmRNb2RlXTsKICAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVTb2Z0TGlnaHQ6CisgICAgY2FzZSBCbGVuZE1v
ZGU6OlNvZnRMaWdodDoKICAgICAgICAgZmlsdGVyID0gW0NBRmlsdGVyIGZpbHRlcldpdGhUeXBl
OmtDQUZpbHRlclNvZnRMaWdodEJsZW5kTW9kZV07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
QmxlbmRNb2RlU2NyZWVuOgorICAgIGNhc2UgQmxlbmRNb2RlOjpTY3JlZW46CiAgICAgICAgIGZp
bHRlciA9IFtDQUZpbHRlciBmaWx0ZXJXaXRoVHlwZTprQ0FGaWx0ZXJTY3JlZW5CbGVuZE1vZGVd
OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZVBsdXNEYXJrZXI6CisgICAgY2Fz
ZSBCbGVuZE1vZGU6OlBsdXNEYXJrZXI6CiAgICAgICAgIGZpbHRlciA9IFtDQUZpbHRlciBmaWx0
ZXJXaXRoVHlwZTprQ0FGaWx0ZXJQbHVzRF07CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxl
bmRNb2RlUGx1c0xpZ2h0ZXI6CisgICAgY2FzZSBCbGVuZE1vZGU6OlBsdXNMaWdodGVyOgogICAg
ICAgICBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyUGx1c0xdOwog
ICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUh1ZToKLSAgICBjYXNlIEJsZW5kTW9k
ZVNhdHVyYXRpb246Ci0gICAgY2FzZSBCbGVuZE1vZGVDb2xvcjoKLSAgICBjYXNlIEJsZW5kTW9k
ZUx1bWlub3NpdHk6CisgICAgY2FzZSBCbGVuZE1vZGU6Okh1ZToKKyAgICBjYXNlIEJsZW5kTW9k
ZTo6U2F0dXJhdGlvbjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6Q29sb3I6CisgICAgY2FzZSBCbGVu
ZE1vZGU6Okx1bWlub3NpdHk6CiAgICAgICAgIC8vIEZJWE1FOiBDQSBkb2VzJ3Qgc3VwcG9ydCBu
b24tc2VwYXJhYmxlIGJsZW5kIG1vZGVzIG9uIGNvbXBvc2l0aW5nIGZpbHRlcnMuCiAgICAgICAg
IGJyZWFrOwogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jZy9HcmFwaGljc0NvbnRleHRDRy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCShyZXZpc2lvbiAy
MzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0Nv
bnRleHRDRy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1OCw3ICsxNTgsNyBAQCBzdGF0aWMgSW50
ZXJwb2xhdGlvblF1YWxpdHkgY29udmVydEludGVyCiBzdGF0aWMgQ0dCbGVuZE1vZGUgc2VsZWN0
Q0dCbGVuZE1vZGUoQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9k
ZSBibGVuZE1vZGUpCiB7CiAgICAgc3dpdGNoIChibGVuZE1vZGUpIHsKLSAgICBjYXNlIEJsZW5k
TW9kZU5vcm1hbDoKKyAgICBjYXNlIEJsZW5kTW9kZTo6Tm9ybWFsOgogICAgICAgICBzd2l0Y2gg
KGNvbXBvc2l0ZU9wZXJhdG9yKSB7CiAgICAgICAgIGNhc2UgQ29tcG9zaXRlQ2xlYXI6CiAgICAg
ICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ2xlYXI7CkBAIC0xOTAsMzkgKzE5MCwzOSBAQCBz
dGF0aWMgQ0dCbGVuZE1vZGUgc2VsZWN0Q0dCbGVuZE1vZGUoQ29tCiAgICAgICAgICAgICByZXR1
cm4ga0NHQmxlbmRNb2RlRGlmZmVyZW5jZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEJsZW5kTW9kZU11bHRpcGx5OgorICAgIGNhc2UgQmxlbmRNb2RlOjpNdWx0aXBseToK
ICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZU11bHRpcGx5OwotICAgIGNhc2UgQmxlbmRNb2Rl
U2NyZWVuOgorICAgIGNhc2UgQmxlbmRNb2RlOjpTY3JlZW46CiAgICAgICAgIHJldHVybiBrQ0dC
bGVuZE1vZGVTY3JlZW47Ci0gICAgY2FzZSBCbGVuZE1vZGVPdmVybGF5OgorICAgIGNhc2UgQmxl
bmRNb2RlOjpPdmVybGF5OgogICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlT3ZlcmxheTsKLSAg
ICBjYXNlIEJsZW5kTW9kZURhcmtlbjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6RGFya2VuOgogICAg
ICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRGFya2VuOwotICAgIGNhc2UgQmxlbmRNb2RlTGlnaHRl
bjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6TGlnaHRlbjoKICAgICAgICAgcmV0dXJuIGtDR0JsZW5k
TW9kZUxpZ2h0ZW47Ci0gICAgY2FzZSBCbGVuZE1vZGVDb2xvckRvZGdlOgorICAgIGNhc2UgQmxl
bmRNb2RlOjpDb2xvckRvZGdlOgogICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ29sb3JEb2Rn
ZTsKLSAgICBjYXNlIEJsZW5kTW9kZUNvbG9yQnVybjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6Q29s
b3JCdXJuOgogICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ29sb3JCdXJuOwotICAgIGNhc2Ug
QmxlbmRNb2RlSGFyZExpZ2h0OgorICAgIGNhc2UgQmxlbmRNb2RlOjpIYXJkTGlnaHQ6CiAgICAg
ICAgIHJldHVybiBrQ0dCbGVuZE1vZGVIYXJkTGlnaHQ7Ci0gICAgY2FzZSBCbGVuZE1vZGVTb2Z0
TGlnaHQ6CisgICAgY2FzZSBCbGVuZE1vZGU6OlNvZnRMaWdodDoKICAgICAgICAgcmV0dXJuIGtD
R0JsZW5kTW9kZVNvZnRMaWdodDsKLSAgICBjYXNlIEJsZW5kTW9kZURpZmZlcmVuY2U6CisgICAg
Y2FzZSBCbGVuZE1vZGU6OkRpZmZlcmVuY2U6CiAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVE
aWZmZXJlbmNlOwotICAgIGNhc2UgQmxlbmRNb2RlRXhjbHVzaW9uOgorICAgIGNhc2UgQmxlbmRN
b2RlOjpFeGNsdXNpb246CiAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVFeGNsdXNpb247Ci0g
ICAgY2FzZSBCbGVuZE1vZGVIdWU6CisgICAgY2FzZSBCbGVuZE1vZGU6Okh1ZToKICAgICAgICAg
cmV0dXJuIGtDR0JsZW5kTW9kZUh1ZTsKLSAgICBjYXNlIEJsZW5kTW9kZVNhdHVyYXRpb246Cisg
ICAgY2FzZSBCbGVuZE1vZGU6OlNhdHVyYXRpb246CiAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1v
ZGVTYXR1cmF0aW9uOwotICAgIGNhc2UgQmxlbmRNb2RlQ29sb3I6CisgICAgY2FzZSBCbGVuZE1v
ZGU6OkNvbG9yOgogICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlQ29sb3I7Ci0gICAgY2FzZSBC
bGVuZE1vZGVMdW1pbm9zaXR5OgorICAgIGNhc2UgQmxlbmRNb2RlOjpMdW1pbm9zaXR5OgogICAg
ICAgICByZXR1cm4ga0NHQmxlbmRNb2RlTHVtaW5vc2l0eTsKLSAgICBjYXNlIEJsZW5kTW9kZVBs
dXNEYXJrZXI6CisgICAgY2FzZSBCbGVuZE1vZGU6OlBsdXNEYXJrZXI6CiAgICAgICAgIHJldHVy
biBrQ0dCbGVuZE1vZGVQbHVzRGFya2VyOwotICAgIGNhc2UgQmxlbmRNb2RlUGx1c0xpZ2h0ZXI6
CisgICAgY2FzZSBCbGVuZE1vZGU6OlBsdXNMaWdodGVyOgogICAgICAgICByZXR1cm4ga0NHQmxl
bmRNb2RlUGx1c0xpZ2h0ZXI7CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5FT04uaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jcHUvYXJtL2ZpbHRlcnMvRkVCbGVuZE5F
T04uaAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Mywx
OSArMTYzLDE5IEBAIHZvaWQgRkVCbGVuZDo6cGxhdGZvcm1BcHBseU5FT04odW5zaWduZWQKIAog
ICAgICAgICB1aW50MTZ4OF90IHJlc3VsdDsKICAgICAgICAgc3dpdGNoIChtX21vZGUpIHsKLSAg
ICAgICAgY2FzZSBCbGVuZE1vZGVOb3JtYWw6CisgICAgICAgIGNhc2UgQmxlbmRNb2RlOjpOb3Jt
YWw6CiAgICAgICAgICAgICByZXN1bHQgPSBGRUJsZW5kVXRpbGl0aWVzTkVPTjo6bm9ybWFsKGRv
dWJibGVQaXhlbEEsIGRvdWJibGVQaXhlbEIsIGFscGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3Qy
NTUsIHNpeHRlZW5Db25zdE9uZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBC
bGVuZE1vZGVNdWx0aXBseToKKyAgICAgICAgY2FzZSBCbGVuZE1vZGU6Ok11bHRpcGx5OgogICAg
ICAgICAgICAgcmVzdWx0ID0gRkVCbGVuZFV0aWxpdGllc05FT046Om11bHRpcGx5KGRvdWJibGVQ
aXhlbEEsIGRvdWJibGVQaXhlbEIsIGFscGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3QyNTUsIHNp
eHRlZW5Db25zdE9uZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1v
ZGVTY3JlZW46CisgICAgICAgIGNhc2UgQmxlbmRNb2RlOjpTY3JlZW46CiAgICAgICAgICAgICBy
ZXN1bHQgPSBGRUJsZW5kVXRpbGl0aWVzTkVPTjo6c2NyZWVuKGRvdWJibGVQaXhlbEEsIGRvdWJi
bGVQaXhlbEIsIGFscGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25zdE9u
ZSk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVEYXJrZW46Cisg
ICAgICAgIGNhc2UgQmxlbmRNb2RlOjpEYXJrZW46CiAgICAgICAgICAgICByZXN1bHQgPSBGRUJs
ZW5kVXRpbGl0aWVzTkVPTjo6ZGFya2VuKGRvdWJibGVQaXhlbEEsIGRvdWJibGVQaXhlbEIsIGFs
cGhhQSwgYWxwaGFCLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25zdE9uZSk7CiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVMaWdodGVuOgorICAgICAgICBjYXNl
IEJsZW5kTW9kZTo6TGlnaHRlbjoKICAgICAgICAgICAgIHJlc3VsdCA9IEZFQmxlbmRVdGlsaXRp
ZXNORU9OOjpsaWdodGVuKGRvdWJibGVQaXhlbEEsIGRvdWJibGVQaXhlbEIsIGFscGhhQSwgYWxw
aGFCLCBzaXh0ZWVuQ29uc3QyNTUsIHNpeHRlZW5Db25zdE9uZSk7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgZGVmYXVsdDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMu
aAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0SXRlbXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjg1LDcg
KzY4NSw3IEBAIHB1YmxpYzoKICAgICBGbG9hdFNpemUgc3BhY2luZygpIGNvbnN0IHsgcmV0dXJu
IG1fc3BhY2luZzsgfQogCiBwcml2YXRlOgotICAgIERyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3Qg
RmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBz
cGFjaW5nLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsK
KyAgICBEcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAogICAgIHZvaWQgYXBwbHkoR3JhcGhp
Y3NDb250ZXh0JikgY29uc3Qgb3ZlcnJpZGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3Bs
YXlMaXN0UmVjb3JkZXIuaAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogI2lmIFVTRShDRykgfHwgVVNFKENB
SVJPKQogICAgIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0IE5hdGl2ZUltYWdlUHRyJiwgY29u
c3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3Qg
RmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlLCBJbWFnZU9y
aWVudGF0aW9uKSBvdmVycmlkZTsKICNlbmRpZgotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2Um
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9h
dFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVO
b3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNp
bmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCkgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGRyYXdSZWN0KGNvbnN0IEZsb2F0UmVjdCYsIGZsb2F0IGJvcmRl
clRoaWNrbmVzcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50
JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJyaWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwCShyZXZpc2lvbiAy
MzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxl
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIFRleHRTdHJlYW0mIEZFQmxl
bmQ6OmV4dGVybmFsUmVwcmVzZW50YXQKIHsKICAgICB0cyA8PCBpbmRlbnQgPDwgIltmZUJsZW5k
IjsKICAgICBGaWx0ZXJFZmZlY3Q6OmV4dGVybmFsUmVwcmVzZW50YXRpb24odHMsIHJlcHJlc2Vu
dGF0aW9uKTsKLSAgICB0cyA8PCAiIG1vZGU9XCIiIDw8IChtX21vZGUgPT0gQmxlbmRNb2RlTm9y
bWFsID8gIm5vcm1hbCIgOiBjb21wb3NpdGVPcGVyYXRvck5hbWUoQ29tcG9zaXRlU291cmNlT3Zl
ciwgbV9tb2RlKSkgPDwgIlwiXVxuIjsKKyAgICB0cyA8PCAiIG1vZGU9XCIiIDw8IChtX21vZGUg
PT0gQmxlbmRNb2RlOjpOb3JtYWwgPyAibm9ybWFsIiA6IGNvbXBvc2l0ZU9wZXJhdG9yTmFtZShD
b21wb3NpdGVTb3VyY2VPdmVyLCBtX21vZGUpKSA8PCAiXCJdXG4iOwogCiAgICAgVGV4dFN0cmVh
bTo6SW5kZW50U2NvcGUgaW5kZW50U2NvcGUodHMpOwogICAgIGlucHV0RWZmZWN0KDApLT5leHRl
cm5hbFJlcHJlc2VudGF0aW9uKHRzLCByZXByZXNlbnRhdGlvbik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODEsNyAr
MTU4MSw3IEBAIHZvaWQgUmVuZGVyQm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGEKICAgICBm
b3IgKGF1dG8qIGxheWVyID0gJmZpbGxMYXllcjsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm5leHQo
KSkgewogICAgICAgICBsYXllcnMuYXBwZW5kKGxheWVyKTsKIAotICAgICAgICBpZiAobGF5ZXIt
PmJsZW5kTW9kZSgpICE9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICAgICAgaWYgKGxheWVyLT5ibGVu
ZE1vZGUoKSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCkKICAgICAgICAgICAgIHNob3VsZERyYXdCYWNr
Z3JvdW5kSW5TZXBhcmF0ZUJ1ZmZlciA9IHRydWU7CiAKICAgICAgICAgLy8gU3RvcCB0cmF2ZXJz
YWwgd2hlbiBhbiBvcGFxdWUgbGF5ZXIgaXMgZW5jb3VudGVyZWQuCkBAIC0xNTkzLDcgKzE1OTMs
NyBAQCB2b2lkIFJlbmRlckJveDo6cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhCiAgICAgICAgIC8v
IGFuZCBwYXNzIGl0IGRvd24uCiAKICAgICAgICAgLy8gVGhlIGNsaXBPY2NsdWRlc05leHRMYXll
cnMgY29uZGl0aW9uIG11c3QgYmUgZXZhbHVhdGVkIGZpcnN0IHRvIGF2b2lkIHNob3J0LWNpcmN1
aXRpbmcuCi0gICAgICAgIGlmIChsYXllci0+Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhsYXllciA9
PSAmZmlsbExheWVyKSAmJiBsYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGxheWVyLT5p
bWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGxheWVy
LT5oYXNSZXBlYXRYWSgpICYmIGxheWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwp
CisgICAgICAgIGlmIChsYXllci0+Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhsYXllciA9PSAmZmls
bExheWVyKSAmJiBsYXllci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGxheWVyLT5pbWFnZSgp
LT5jYW5SZW5kZXIodGhpcywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGxheWVyLT5oYXNS
ZXBlYXRYWSgpICYmIGxheWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGU6Ok5vcm1hbCkKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVySW1hZ2UuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVySW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MTcsNyArNjE3LDcgQEAg
SW1hZ2VEcmF3UmVzdWx0IFJlbmRlckltYWdlOjpwYWludEludG9SZQogCiAgICAgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdElt
YWdlT3JpZW50YXRpb24oKSwgc3R5bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogICAgIGF1dG8g
ZGVjb2RpbmdNb2RlID0gZGVjb2RpbmdNb2RlRm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFpbnRJbmZv
KTsKLSAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgq
aW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRN
b2RlTm9ybWFsLCBkZWNvZGluZ01vZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9s
YXRpb24pKTsKKyAgICBhdXRvIGRyYXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJ
bWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwg
QmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9kZSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwg
aW50ZXJwb2xhdGlvbikpOwogICAgIGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6
RGlkUmVxdWVzdERlY29kaW5nKQogICAgICAgICBpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2Uo
KS0+YWRkQ2xpZW50V2FpdGluZ0ZvckFzeW5jRGVjb2RpbmcoKnRoaXMpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMxMyw3ICszMTMsNyBAQCBSZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJN
b2RlCiAjZW5kaWYKICAgICAsIG1faGFzRmlsdGVySW5mbyhmYWxzZSkKICNpZiBFTkFCTEUoQ1NT
X0NPTVBPU0lUSU5HKQotICAgICwgbV9ibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQorICAgICwg
bV9ibGVuZE1vZGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEJsZW5kTW9kZTo6Tm9ybWFsKSkKICAg
ICAsIG1faGFzTm90SXNvbGF0ZWRDb21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50cyhmYWxzZSkK
ICAgICAsIG1faGFzTm90SXNvbGF0ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKGZhbHNlKQogICAgICwg
bV9oYXNOb3RJc29sYXRlZEJsZW5kaW5nRGVzY2VuZGFudHNTdGF0dXNEaXJ0eShmYWxzZSkKQEAg
LTkyNiw3ICs5MjYsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpwb3NpdGlvbk5ld2x5Q3JlYXRlZE92
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUJsZW5kTW9kZSgpCiB7Ci0gICAgYm9vbCBoYWRC
bGVuZE1vZGUgPSBtX2JsZW5kTW9kZSAhPSBCbGVuZE1vZGVOb3JtYWw7CisgICAgYm9vbCBoYWRC
bGVuZE1vZGUgPSBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKSAhPSBCbGVuZE1v
ZGU6Ok5vcm1hbDsKICAgICBpZiAocGFyZW50KCkgJiYgaGFkQmxlbmRNb2RlICE9IGhhc0JsZW5k
TW9kZSgpKSB7CiAgICAgICAgIGlmIChoYXNCbGVuZE1vZGUoKSkKICAgICAgICAgICAgIHBhcmVu
dCgpLT51cGRhdGVBbmNlc3RvckNoYWluSGFzQmxlbmRpbmdEZXNjZW5kYW50cygpOwpAQCAtOTM1
LDggKzkzNSw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZUJsZW5kTW9kZSgpCiAgICAgfQog
CiAgICAgQmxlbmRNb2RlIG5ld0JsZW5kTW9kZSA9IHJlbmRlcmVyKCkuc3R5bGUoKS5ibGVuZE1v
ZGUoKTsKLSAgICBpZiAobmV3QmxlbmRNb2RlICE9IG1fYmxlbmRNb2RlKQotICAgICAgICBtX2Js
ZW5kTW9kZSA9IG5ld0JsZW5kTW9kZTsKKyAgICBpZiAobmV3QmxlbmRNb2RlICE9IHN0YXRpY19j
YXN0PEJsZW5kTW9kZT4obV9ibGVuZE1vZGUpKQorICAgICAgICBtX2JsZW5kTW9kZSA9IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihuZXdCbGVuZE1vZGUpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1
cGRhdGVBbmNlc3RvckNoYWluSGFzQmxlbmRpbmdEZXNjZW5kYW50cygpCkBAIC0xODI3LDcgKzE4
MjcsNyBAQCB2b2lkIFJlbmRlckxheWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyCiAKICNpZiBF
TkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgICAgICBpZiAodXNlc0NvbXBvc2l0ZU9wZXJhdGlv
bikKLSAgICAgICAgICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnRleHQuY29t
cG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBjb250ZXh0
LnNldENvbXBvc2l0ZU9wZXJhdGlvbihjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVu
ZE1vZGU6Ok5vcm1hbCk7CiAjZW5kaWYKIAogI2lmZGVmIFJFVkVBTF9UUkFOU1BBUkVOQ1lfTEFZ
RVJTCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNr
aW5nLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckxheWVyQmFja2luZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU0MCw3ICs1NDAsNyBAQCB2
b2lkIFJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQmxlbmRNb2RlCiAgICAgLy8gRklYTUU6IHdo
ZXJlIGlzIHRoZSBibGVuZCBtb2RlIHVwZGF0ZWQgd2hlbiBtX2FuY2VzdG9yQ2xpcHBpbmdMYXll
cnMgY29tZSBhbmQgZ28/CiAgICAgaWYgKG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyKSB7CiAgICAg
ICAgIG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyLT5zZXRCbGVuZE1vZGUoc3R5bGUuYmxlbmRNb2Rl
KCkpOwotICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEJsZW5kTW9kZShCbGVuZE1vZGVOb3Jt
YWwpOworICAgICAgICBtX2dyYXBoaWNzTGF5ZXItPnNldEJsZW5kTW9kZShCbGVuZE1vZGU6Ok5v
cm1hbCk7CiAgICAgfSBlbHNlCiAgICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0QmxlbmRNb2Rl
KHN0eWxlLmJsZW5kTW9kZSgpKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dHlsZS9GaWxsTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9GaWxsTGF5ZXIuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyAr
NTQsNyBAQCBGaWxsTGF5ZXI6OkZpbGxMYXllcihGaWxsTGF5ZXJUeXBlIHR5cGUpCiAgICAgLCBt
X3JlcGVhdFkoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBl
YXRZKHR5cGUpKSkKICAgICAsIG1fY29tcG9zaXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21w
b3NpdGUodHlwZSkpCiAgICAgLCBtX3NpemVUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWxs
U2l6ZVR5cGU6Ok5vbmUpKQotICAgICwgbV9ibGVuZE1vZGUoRmlsbExheWVyOjppbml0aWFsRmls
bEJsZW5kTW9kZSh0eXBlKSkKKyAgICAsIG1fYmxlbmRNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVk
PihGaWxsTGF5ZXI6OmluaXRpYWxGaWxsQmxlbmRNb2RlKHR5cGUpKSkKICAgICAsIG1fbWFza1Nv
dXJjZVR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxNYXNr
U291cmNlVHlwZSh0eXBlKSkpCiAgICAgLCBtX2ltYWdlU2V0KGZhbHNlKQogICAgICwgbV9hdHRh
Y2htZW50U2V0KGZhbHNlKQpAQCAtMzU3LDcgKzM1Nyw3IEBAIGJvb2wgRmlsbExheWVyOjpoYXNP
cGFxdWVJbWFnZShjb25zdCBSZW4KICAgICBpZiAobV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlQ2xl
YXIgfHwgbV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlQ29weSkKICAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICByZXR1cm4gbV9ibGVuZE1vZGUgPT0gQmxlbmRNb2RlTm9ybWFsICYmIG1fY29tcG9z
aXRlID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgbV9pbWFnZS0+a25vd25Ub0JlT3BhcXVlKCZy
ZW5kZXJlcik7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9ibGVuZE1vZGUp
ID09IEJsZW5kTW9kZTo6Tm9ybWFsICYmIG1fY29tcG9zaXRlID09IENvbXBvc2l0ZVNvdXJjZU92
ZXIgJiYgbV9pbWFnZS0+a25vd25Ub0JlT3BhcXVlKCZyZW5kZXJlcik7CiB9CiAKIGJvb2wgRmls
bExheWVyOjpoYXNSZXBlYXRYWSgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvRmlsbExheWVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL0ZpbGxMYXllci5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsx
NjIsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIEZpbGxSZXBlYXQgaW5pdGlhbEZpbGxSZXBlYXRY
KEZpbGxMYXllclR5cGUpIHsgcmV0dXJuIEZpbGxSZXBlYXQ6OlJlcGVhdDsgfQogICAgIHN0YXRp
YyBGaWxsUmVwZWF0IGluaXRpYWxGaWxsUmVwZWF0WShGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiBG
aWxsUmVwZWF0OjpSZXBlYXQ7IH0KICAgICBzdGF0aWMgQ29tcG9zaXRlT3BlcmF0b3IgaW5pdGlh
bEZpbGxDb21wb3NpdGUoRmlsbExheWVyVHlwZSkgeyByZXR1cm4gQ29tcG9zaXRlU291cmNlT3Zl
cjsgfQotICAgIHN0YXRpYyBCbGVuZE1vZGUgaW5pdGlhbEZpbGxCbGVuZE1vZGUoRmlsbExheWVy
VHlwZSkgeyByZXR1cm4gQmxlbmRNb2RlTm9ybWFsOyB9CisgICAgc3RhdGljIEJsZW5kTW9kZSBp
bml0aWFsRmlsbEJsZW5kTW9kZShGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiBCbGVuZE1vZGU6Ok5v
cm1hbDsgfQogICAgIHN0YXRpYyBGaWxsU2l6ZSBpbml0aWFsRmlsbFNpemUoRmlsbExheWVyVHlw
ZSkgeyByZXR1cm4geyB9OyB9CiAgICAgc3RhdGljIExlbmd0aCBpbml0aWFsRmlsbFhQb3NpdGlv
bihGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiBMZW5ndGgoMC4wZiwgUGVyY2VudCk7IH0KICAgICBz
dGF0aWMgTGVuZ3RoIGluaXRpYWxGaWxsWVBvc2l0aW9uKEZpbGxMYXllclR5cGUpIHsgcmV0dXJu
IExlbmd0aCgwLjBmLCBQZXJjZW50KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjYs
MTQgKzc2NiwxNCBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAg
IEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1v
ZGU+KG1fcmFyZU5vbkluaGVyaXRlZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSk7IH0KLSAgICB2
b2lkIHNldEJsZW5kTW9kZShCbGVuZE1vZGUgbW9kZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVy
aXRlZERhdGEsIGVmZmVjdGl2ZUJsZW5kTW9kZSwgbW9kZSk7IH0KLSAgICBib29sIGhhc0JsZW5k
TW9kZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9yYXJlTm9uSW5o
ZXJpdGVkRGF0YS0+ZWZmZWN0aXZlQmxlbmRNb2RlKSAhPSBCbGVuZE1vZGVOb3JtYWw7IH0KKyAg
ICB2b2lkIHNldEJsZW5kTW9kZShCbGVuZE1vZGUgbW9kZSkgeyBTRVRfVkFSKG1fcmFyZU5vbklu
aGVyaXRlZERhdGEsIGVmZmVjdGl2ZUJsZW5kTW9kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1v
ZGUpKTsgfQorICAgIGJvb2wgaGFzQmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8QmxlbmRNb2RlPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVCbGVuZE1vZGUp
ICE9IEJsZW5kTW9kZTo6Tm9ybWFsOyB9CiAKICAgICBJc29sYXRpb24gaXNvbGF0aW9uKCkgY29u
c3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SXNvbGF0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRh
LT5pc29sYXRpb24pOyB9CiAgICAgdm9pZCBzZXRJc29sYXRpb24oSXNvbGF0aW9uIGlzb2xhdGlv
bikgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGlzb2xhdGlvbiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KGlzb2xhdGlvbikpOyB9CiAgICAgYm9vbCBoYXNJc29sYXRpb24oKSBjb25z
dCB7IHJldHVybiBpc29sYXRpb24oKSAhPSBJc29sYXRpb246OkF1dG87IH0KICNlbHNlCi0gICAg
QmxlbmRNb2RlIGJsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJuIEJsZW5kTW9kZU5vcm1hbDsgfQor
ICAgIEJsZW5kTW9kZSBibGVuZE1vZGUoKSBjb25zdCB7IHJldHVybiBCbGVuZE1vZGU6Ok5vcm1h
bDsgfQogICAgIGJvb2wgaGFzQmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAog
ICAgIElzb2xhdGlvbiBpc29sYXRpb24oKSBjb25zdCB7IHJldHVybiBJc29sYXRpb246OkF1dG87
IH0KQEAgLTE2NzEsNyArMTY3MSw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKENT
U19DT01QT1NJVElORykKLSAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVuZE1vZGUoKSB7
IHJldHVybiBCbGVuZE1vZGVOb3JtYWw7IH0KKyAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxC
bGVuZE1vZGUoKSB7IHJldHVybiBCbGVuZE1vZGU6Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBJc29s
YXRpb24gaW5pdGlhbElzb2xhdGlvbigpIHsgcmV0dXJuIElzb2xhdGlvbjo6QXV0bzsgfQogI2Vu
ZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBTdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhOjpTdHlsZVJhcmVOb25JCiAgICAgLCB0ZXh0RGVjb3JhdGlvblN0eWxlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihSZW5kZXJTdHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSkp
CiAgICAgLCBhc3BlY3RSYXRpb1R5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxl
Ojppbml0aWFsQXNwZWN0UmF0aW9UeXBlKCkpKQogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcp
Ci0gICAgLCBlZmZlY3RpdmVCbGVuZE1vZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCbGVuZE1vZGUo
KSkKKyAgICAsIGVmZmVjdGl2ZUJsZW5kTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVy
U3R5bGU6OmluaXRpYWxCbGVuZE1vZGUoKSkpCiAgICAgLCBpc29sYXRpb24oc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsSXNvbGF0aW9uKCkpKQogI2VuZGlmCiAjaWYg
RU5BQkxFKEFQUExFX1BBWSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyaW5nQ29udGV4dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJl
cGFyZVRvUmVuZGUKICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5UcmFu
c3BhcmVuY3lMYXllcihvcGFjaXR5KTsKIAogICAgICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSkK
LSAgICAgICAgICAgICAgICBtX3BhaW50SW5mby0+Y29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJh
dGlvbihtX3BhaW50SW5mby0+Y29udGV4dCgpLmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1v
ZGVOb3JtYWwpOworICAgICAgICAgICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0Q29t
cG9zaXRlT3BlcmF0aW9uKG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9u
KCksIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8
PSBFbmRPcGFjaXR5TGF5ZXI7CiAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODcsOSArODcsOSBAQCBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGVudW1lcmF0aW9uVmFsdWVG
CiAgICAgfQogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgewotICAg
ICAgICBCbGVuZE1vZGUgbW9kZSA9IEJsZW5kTW9kZU5vcm1hbDsKKyAgICAgICAgQmxlbmRNb2Rl
IG1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbDsKICAgICAgICAgcGFyc2VCbGVuZE1vZGUodmFsdWUs
IG1vZGUpOwotICAgICAgICByZXR1cm4gbW9kZTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihtb2RlKTsKICAgICB9CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpz
dGl0Y2hUaWxlc0F0dHIpCiAgICAgICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTdGl0
Y2hPcHRpb25zPjo6ZnJvbVN0cmluZyh2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcg
QEAgRU5EX1JFR0lTVEVSX0FOSU1BVEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFQmxlbmRF
bGVtZW50OjpTVkdGRUJsZW5kRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBE
b2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXModGFnTmFtZSwgZG9jdW1lbnQpCi0gICAgLCBtX21vZGUoQmxlbmRNb2RlTm9ybWFsKQor
ICAgICwgbV9tb2RlKEJsZW5kTW9kZTo6Tm9ybWFsKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1l
KFNWR05hbWVzOjpmZUJsZW5kVGFnKSk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNG
b3JTVkdGRUJsZW5kRWxlbWVudCgpOwpAQCAtNjAsNyArNjAsNyBAQCBSZWY8U1ZHRkVCbGVuZEVs
ZW1lbnQ+IFNWR0ZFQmxlbmRFbGVtZW50CiB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZh
bHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgewotICAgICAgICBC
bGVuZE1vZGUgbW9kZSA9IEJsZW5kTW9kZU5vcm1hbDsKKyAgICAgICAgQmxlbmRNb2RlIG1vZGUg
PSBCbGVuZE1vZGU6Ok5vcm1hbDsKICAgICAgICAgaWYgKHBhcnNlQmxlbmRNb2RlKHZhbHVlLCBt
b2RlKSkKICAgICAgICAgICAgIHNldE1vZGVCYXNlVmFsdWUobW9kZSk7CiAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lvbiAy
MzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjksMTEgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxh
dGU8Pgogc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPEJsZW5kTW9kZT4gewotICAgIHN0YXRpYyB1
bnNpZ25lZCBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gQmxlbmRNb2RlTHVtaW5vc2l0eTsg
fQorICAgIHN0YXRpYyB1bnNpZ25lZCBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEJsZW5kTW9kZTo6THVtaW5vc2l0eSk7IH0KIAogICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoQmxlbmRNb2RlIHR5cGUpCiAgICAgewotICAgICAgICBpZiAodHlwZSA8
IEJsZW5kTW9kZVBsdXNEYXJrZXIpCisgICAgICAgIGlmICh0eXBlIDwgQmxlbmRNb2RlOjpQbHVz
RGFya2VyKQogICAgICAgICAgICAgcmV0dXJuIGJsZW5kTW9kZU5hbWUodHlwZSk7CiAKICAgICAg
ICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9TVkdJbWFnZS5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9n
cmFwaGljcy9TVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBO
YXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgaWYgKCFidWZmZXIp
IC8vIGZhaWxlZCB0byBhbGxvY2F0ZSBpbWFnZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAot
ICAgIGRyYXcoYnVmZmVyLT5jb250ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCBy
ZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsK
IAogICAgIC8vIEZJWE1FOiBXSyhCdWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJh
Y2tpbmdTdG9yZSBoZXJlLgogICAgIHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2lu
Z1N0b3JlKS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0MCw3ICsyNDAsNyBA
QCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAKICAgICBHcmFwaGlj
c0NvbnRleHQgbG9jYWxDb250ZXh0KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKIAotICAgIGRy
YXcobG9jYWxDb250ZXh0LCByZWN0KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxl
bmRNb2RlTm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9u
RGVzY3JpcHRpb24oKSk7CisgICAgZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBD
b21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5j
aHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogCiAgICAgQ09NUHRyPElE
MkQxQml0bWFwPiBuYXRpdmVJbWFnZTsKICAgICBociA9IG5hdGl2ZUltYWdlVGFyZ2V0LT5HZXRC
aXRtYXAoJm5hdGl2ZUltYWdlKTsKQEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIFNWR0ltYWdlOjpk
cmF3UGF0dGVybkZvckNvbnRhaW5lcihHCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVy
PiBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZElu
dFNpemUoaW1hZ2VCdWZmZXJTaXplLnNpemUoKSksIDEsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0
KTsKICAgICBpZiAoIWJ1ZmZlcikgLy8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAg
ICAgcmV0dXJuOwotICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRh
aW5lclNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJT
aXplLCB6b29tZWRDb250YWluZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVO
b3JtYWwpOworICAgIGRyYXdGb3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5l
clNpemUsIGNvbnRhaW5lclpvb20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXpl
LCB6b29tZWRDb250YWluZXJSZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5v
cm1hbCk7CiAgICAgaWYgKGNvbnRleHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVm
ZmVyLT5jb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKQEAgLTI5OSwxMCArMjk5LDEwIEBAIElt
YWdlRHJhd1Jlc3VsdCBTVkdJbWFnZTo6ZHJhdyhHcmFwaGljc0MKICAgICBjb250ZXh0LmNsaXAo
ZW5jbG9zaW5nSW50UmVjdChkc3RSZWN0KSk7CiAKICAgICBmbG9hdCBhbHBoYSA9IGNvbnRleHQu
YWxwaGEoKTsKLSAgICBib29sIGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9
IGNvbXBvc2l0ZU9wICE9IENvbXBvc2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5k
TW9kZU5vcm1hbCB8fCBhbHBoYSA8IDE7CisgICAgYm9vbCBjb21wb3NpdGluZ1JlcXVpcmVzVHJh
bnNwYXJlbmN5TGF5ZXIgPSBjb21wb3NpdGVPcCAhPSBDb21wb3NpdGVTb3VyY2VPdmVyIHx8IGJs
ZW5kTW9kZSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCB8fCBhbHBoYSA8IDE7CiAgICAgaWYgKGNvbXBv
c2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllcikgewogICAgICAgICBjb250ZXh0LmJlZ2lu
VHJhbnNwYXJlbmN5TGF5ZXIoYWxwaGEpOwotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICBj
b250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGU6Ok5vcm1hbCk7CiAgICAgfQogCiAgICAgRmxvYXRTaXplIHNjYWxlKGRzdFJlY3Quc2l6ZSgp
IC8gc3JjUmVjdC5zaXplKCkpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDU2OCkKKysrIFNv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIw
MTgtMDgtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKwor
ICAgICAgICBNYWtlIEJsZW5kTW9kZSBhbiBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODgzMjUKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyk6CisKIDIw
MTgtMDgtMDMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBGaXggc3BlbGxpbmcgb2YgIm92ZXJyaWRkZW4iCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uLm1tCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0
L1NoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0JKHdv
cmtpbmcgY29weSkKQEAgLTkzLDcgKzkzLDcgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
OkxheWVyUHJvcGVydAogICAgICwgY3VzdG9tQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0
b21BcHBlYXJhbmNlOjpOb25lKQogICAgICwgbWluaWZpY2F0aW9uRmlsdGVyKFBsYXRmb3JtQ0FM
YXllcjo6RmlsdGVyVHlwZTo6TGluZWFyKQogICAgICwgbWFnbmlmaWNhdGlvbkZpbHRlcihQbGF0
Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGU6OkxpbmVhcikKLSAgICAsIGJsZW5kTW9kZShCbGVuZE1v
ZGVOb3JtYWwpCisgICAgLCBibGVuZE1vZGUoQmxlbmRNb2RlOjpOb3JtYWwpCiAgICAgLCB3aW5k
UnVsZShXaW5kUnVsZTo6Tm9uWmVybykKICAgICAsIGhpZGRlbihmYWxzZSkKICAgICAsIGJhY2tp
bmdTdG9yZUF0dGFjaGVkKHRydWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>346574</attachid>
            <date>2018-08-03 18:34:37 -0700</date>
            <delta_ts>2018-08-06 11:19:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-188325-20180803183436.patch</filename>
            <type>text/plain</type>
            <size>76153</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg3IEBACisyMDE4LTA4LTAzICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgTWFrZSBCbGVu
ZE1vZGUgYW4gZW51bSBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4MzI1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlTWFwcGluZ3MuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NQcmltaXRpdmVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6b3BlcmF0b3IgQmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxJbWFn
ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
REJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFz
ZTo6U3RhdGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OnNldEdsb2JhbENvbXBvc2l0ZU9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3Jl
OjpDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpkcmF3SW1hZ2VGcm9tUmVjdCk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlUGFp
bnRpbmdPcHRpb25zOjpJbWFnZVBhaW50aW5nT3B0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6
ZHVtcFByb3BlcnRpZXMgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzTGF5ZXIuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlQmxlbmRNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
OnBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcik6CisgICAgICAgIChXZWJDb3JlOjpjb21w
b3NpdGVPcGVyYXRvck5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRNb2RlTmFtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9HcmFwaGljc1R5cGVzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmRyYXdUaWxlZCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1
ZmZlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FG
aWx0ZXJzQ29jb2EubW06CisgICAgICAgIChQbGF0Zm9ybUNBRmlsdGVyczo6c2V0QmxlbmRpbmdG
aWx0ZXJzT25MYXllcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0Q0dCbGVuZE1vZGUpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVycy9GRUJsZW5kTkVPTi5oOgor
ICAgICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6cGxhdGZvcm1BcHBseU5FT04pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZGlzcGxheWxpc3RzL0Rpc3BsYXlMaXN0UmVjb3JkZXIu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQmxlbmQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RkVCbGVuZDo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbiBjb25zdCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJCb3g6OnBhaW50RmlsbExheWVycyk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckltYWdl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckltYWdlOjpwYWludEludG9SZWN0KToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyTGF5ZXI6OlJlbmRlckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1
cGRhdGVCbGVuZE1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmJlZ2luVHJh
bnNwYXJlbmN5TGF5ZXJzKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQmFja2luZzo6dXBkYXRlQmxlbmRN
b2RlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZpbGxMYXllcjo6RmlsbExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxM
YXllcjo6aGFzT3BhcXVlSW1hZ2UgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9G
aWxsTGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGxMYXllcjo6aW5pdGlhbEZpbGxCbGVu
ZE1vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldEJsZW5kTW9kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTdHlsZTo6aGFzQmxlbmRNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN0eWxlOjpibGVuZE1vZGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5
bGU6OmluaXRpYWxCbGVuZE1vZGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbklu
aGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAqIHJlbmRl
cmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJTVkdDb250ZW50KToKKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjplbnVtZXJh
dGlvblZhbHVlRm9yVGFyZ2V0QXR0cmlidXRlKToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OlNWR0ZFQmxl
bmRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVtZW50Lmg6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQcm9wZXJ0eVRyYWl0czxCbGVuZE1vZGU+OjpoaWdoZXN0RW51bVZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1Byb3BlcnR5VHJhaXRzPEJsZW5kTW9kZT46OnRvU3RyaW5n
KToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHSW1hZ2U6Om5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ltYWdlOjpuYXRpdmVJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZTo6
ZHJhd1BhdHRlcm5Gb3JDb250YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2U6OmRy
YXcpOgorCiAyMDE4LTA4LTAzICBCZW4gUmljaGFyZHMgIDxiZW50b25fcmljaGFyZHNAYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlIHNob3VsZCBjYWNoZSB0aGUgY29tcGlsZWQgc2FuZGJveCBwcm9m
aWxlIGluIGEgZGF0YSB2YXVsdApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2
ZVZhbHVlTWFwcGluZ3MuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJp
bWl0aXZlVmFsdWVNYXBwaW5ncy5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWVNYXBwaW5ncy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOTAz
LDU4ICszOTAzLDU4IEBAIHRlbXBsYXRlPD4gaW5saW5lIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1MK
IHsKICAgICBtX3ByaW1pdGl2ZVVuaXRUeXBlID0gQ1NTX1ZBTFVFX0lEOwogICAgIHN3aXRjaCAo
YmxlbmRNb2RlKSB7Ci0gICAgY2FzZSBCbGVuZE1vZGVOb3JtYWw6CisgICAgY2FzZSBCbGVuZE1v
ZGU6Ok5vcm1hbDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVOb3JtYWw7CiAg
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6CisgICAgY2FzZSBCbGVu
ZE1vZGU6Ok11bHRpcGx5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZU11bHRp
cGx5OwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZVNjcmVlbjoKKyAgICBjYXNl
IEJsZW5kTW9kZTo6U2NyZWVuOgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZVNj
cmVlbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVPdmVybGF5OgorICAgIGNh
c2UgQmxlbmRNb2RlOjpPdmVybGF5OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1
ZU92ZXJsYXk7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlRGFya2VuOgorICAg
IGNhc2UgQmxlbmRNb2RlOjpEYXJrZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENTU1Zh
bHVlRGFya2VuOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUxpZ2h0ZW46Cisg
ICAgY2FzZSBCbGVuZE1vZGU6OkxpZ2h0ZW46CiAgICAgICAgIG1fdmFsdWUudmFsdWVJRCA9IENT
U1ZhbHVlTGlnaHRlbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVDb2xvckRv
ZGdlOgorICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvckRvZGdlOgogICAgICAgICBtX3ZhbHVlLnZh
bHVlSUQgPSBDU1NWYWx1ZUNvbG9yRG9kZ2U7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxl
bmRNb2RlQ29sb3JCdXJuOgorICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvckJ1cm46CiAgICAgICAg
IG1fdmFsdWUudmFsdWVJRCA9IENTU1ZhbHVlQ29sb3JCdXJuOwogICAgICAgICBicmVhazsKLSAg
ICBjYXNlIEJsZW5kTW9kZUhhcmRMaWdodDoKKyAgICBjYXNlIEJsZW5kTW9kZTo6SGFyZExpZ2h0
OgogICAgICAgICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUhhcmRMaWdodDsKICAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVTb2Z0TGlnaHQ6CisgICAgY2FzZSBCbGVuZE1vZGU6
OlNvZnRMaWdodDoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVTb2Z0TGlnaHQ7
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlRGlmZmVyZW5jZToKKyAgICBjYXNl
IEJsZW5kTW9kZTo6RGlmZmVyZW5jZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFs
dWVEaWZmZXJlbmNlOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUV4Y2x1c2lv
bjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6RXhjbHVzaW9uOgogICAgICAgICBtX3ZhbHVlLnZhbHVl
SUQgPSBDU1NWYWx1ZUV4Y2x1c2lvbjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1v
ZGVIdWU6CisgICAgY2FzZSBCbGVuZE1vZGU6Okh1ZToKICAgICAgICAgbV92YWx1ZS52YWx1ZUlE
ID0gQ1NTVmFsdWVIdWU7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlU2F0dXJh
dGlvbjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6U2F0dXJhdGlvbjoKICAgICAgICAgbV92YWx1ZS52
YWx1ZUlEID0gQ1NTVmFsdWVTYXR1cmF0aW9uOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJs
ZW5kTW9kZUNvbG9yOgorICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvcjoKICAgICAgICAgbV92YWx1
ZS52YWx1ZUlEID0gQ1NTVmFsdWVDb2xvcjsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVu
ZE1vZGVMdW1pbm9zaXR5OgorICAgIGNhc2UgQmxlbmRNb2RlOjpMdW1pbm9zaXR5OgogICAgICAg
ICBtX3ZhbHVlLnZhbHVlSUQgPSBDU1NWYWx1ZUx1bWlub3NpdHk7CiAgICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQmxlbmRNb2RlUGx1c0RhcmtlcjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6UGx1c0Rh
cmtlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQbHVzRGFya2VyOwogICAg
ICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZVBsdXNMaWdodGVyOgorICAgIGNhc2UgQmxl
bmRNb2RlOjpQbHVzTGlnaHRlcjoKICAgICAgICAgbV92YWx1ZS52YWx1ZUlEID0gQ1NTVmFsdWVQ
bHVzTGlnaHRlcjsKICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMzk2Niw0NyArMzk2Niw0NyBA
QCB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6b3BlCiAKICAgICBzd2l0Y2gg
KG1fdmFsdWUudmFsdWVJRCkgewogICAgIGNhc2UgQ1NTVmFsdWVOb3JtYWw6Ci0gICAgICAgIHJl
dHVybiBCbGVuZE1vZGVOb3JtYWw7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6Ok5vcm1hbDsK
ICAgICBjYXNlIENTU1ZhbHVlTXVsdGlwbHk6Ci0gICAgICAgIHJldHVybiBCbGVuZE1vZGVNdWx0
aXBseTsKKyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6TXVsdGlwbHk7CiAgICAgY2FzZSBDU1NW
YWx1ZVNjcmVlbjoKLSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZVNjcmVlbjsKKyAgICAgICAgcmV0
dXJuIEJsZW5kTW9kZTo6U2NyZWVuOwogICAgIGNhc2UgQ1NTVmFsdWVPdmVybGF5OgotICAgICAg
ICByZXR1cm4gQmxlbmRNb2RlT3ZlcmxheTsKKyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6T3Zl
cmxheTsKICAgICBjYXNlIENTU1ZhbHVlRGFya2VuOgotICAgICAgICByZXR1cm4gQmxlbmRNb2Rl
RGFya2VuOworICAgICAgICByZXR1cm4gQmxlbmRNb2RlOjpEYXJrZW47CiAgICAgY2FzZSBDU1NW
YWx1ZUxpZ2h0ZW46Ci0gICAgICAgIHJldHVybiBCbGVuZE1vZGVMaWdodGVuOworICAgICAgICBy
ZXR1cm4gQmxlbmRNb2RlOjpMaWdodGVuOwogICAgIGNhc2UgQ1NTVmFsdWVDb2xvckRvZGdlOgot
ICAgICAgICByZXR1cm4gQmxlbmRNb2RlQ29sb3JEb2RnZTsKKyAgICAgICAgcmV0dXJuIEJsZW5k
TW9kZTo6Q29sb3JEb2RnZTsKICAgICBjYXNlIENTU1ZhbHVlQ29sb3JCdXJuOgotICAgICAgICBy
ZXR1cm4gQmxlbmRNb2RlQ29sb3JCdXJuOworICAgICAgICByZXR1cm4gQmxlbmRNb2RlOjpDb2xv
ckJ1cm47CiAgICAgY2FzZSBDU1NWYWx1ZUhhcmRMaWdodDoKLSAgICAgICAgcmV0dXJuIEJsZW5k
TW9kZUhhcmRMaWdodDsKKyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6SGFyZExpZ2h0OwogICAg
IGNhc2UgQ1NTVmFsdWVTb2Z0TGlnaHQ6Ci0gICAgICAgIHJldHVybiBCbGVuZE1vZGVTb2Z0TGln
aHQ7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6OlNvZnRMaWdodDsKICAgICBjYXNlIENTU1Zh
bHVlRGlmZmVyZW5jZToKLSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZURpZmZlcmVuY2U7CisgICAg
ICAgIHJldHVybiBCbGVuZE1vZGU6OkRpZmZlcmVuY2U7CiAgICAgY2FzZSBDU1NWYWx1ZUV4Y2x1
c2lvbjoKLSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZUV4Y2x1c2lvbjsKKyAgICAgICAgcmV0dXJu
IEJsZW5kTW9kZTo6RXhjbHVzaW9uOwogICAgIGNhc2UgQ1NTVmFsdWVIdWU6Ci0gICAgICAgIHJl
dHVybiBCbGVuZE1vZGVIdWU7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6Okh1ZTsKICAgICBj
YXNlIENTU1ZhbHVlU2F0dXJhdGlvbjoKLSAgICAgICAgcmV0dXJuIEJsZW5kTW9kZVNhdHVyYXRp
b247CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6OlNhdHVyYXRpb247CiAgICAgY2FzZSBDU1NW
YWx1ZUNvbG9yOgotICAgICAgICByZXR1cm4gQmxlbmRNb2RlQ29sb3I7CisgICAgICAgIHJldHVy
biBCbGVuZE1vZGU6OkNvbG9yOwogICAgIGNhc2UgQ1NTVmFsdWVMdW1pbm9zaXR5OgotICAgICAg
ICByZXR1cm4gQmxlbmRNb2RlTHVtaW5vc2l0eTsKKyAgICAgICAgcmV0dXJuIEJsZW5kTW9kZTo6
THVtaW5vc2l0eTsKICAgICBjYXNlIENTU1ZhbHVlUGx1c0RhcmtlcjoKLSAgICAgICAgcmV0dXJu
IEJsZW5kTW9kZVBsdXNEYXJrZXI7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6OlBsdXNEYXJr
ZXI7CiAgICAgY2FzZSBDU1NWYWx1ZVBsdXNMaWdodGVyOgotICAgICAgICByZXR1cm4gQmxlbmRN
b2RlUGx1c0xpZ2h0ZXI7CisgICAgICAgIHJldHVybiBCbGVuZE1vZGU6OlBsdXNMaWdodGVyOwog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KIAogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBCbGVuZE1vZGVOb3JtYWw7CisgICAgcmV0dXJuIEJsZW5kTW9k
ZTo6Tm9ybWFsOwogfQogCiB0ZW1wbGF0ZTw+IGlubGluZSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoSXNvbGF0aW9uIGlzb2xhdGlvbikKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDcg
KzIyMSw3IEBAIHZvaWQgSFRNTEltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY28KICAgICAg
ICAgICAgIHRyZWVTY29wZSgpLmFkZEltYWdlRWxlbWVudEJ5VXNlbWFwKCptX3BhcnNlZFVzZW1h
cC5pbXBsKCksICp0aGlzKTsKICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gY29tcG9zaXRlQXR0cikg
ewogICAgICAgICAvLyBGSVhNRTogaW1hZ2VzIGRvbid0IHN1cHBvcnQgYmxlbmQgbW9kZXMgaW4g
dGhlaXIgY29tcG9zaXRpbmcgYXR0cmlidXRlLgotICAgICAgICBCbGVuZE1vZGUgYmxlbmRPcCA9
IEJsZW5kTW9kZU5vcm1hbDsKKyAgICAgICAgQmxlbmRNb2RlIGJsZW5kT3AgPSBCbGVuZE1vZGU6
Ok5vcm1hbDsKICAgICAgICAgaWYgKCFwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0b3IodmFs
dWUsIG1fY29tcG9zaXRlT3BlcmF0b3IsIGJsZW5kT3ApKQogICAgICAgICAgICAgbV9jb21wb3Np
dGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfQ09O
VFJPTFMpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTE5OSw3ICsxOTksNyBAQCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpTdGF0ZTo6U3RhCiAgICAgLCBzaGFkb3dDb2xvcihDb2xvcjo6dHJhbnNwYXJl
bnQpCiAgICAgLCBnbG9iYWxBbHBoYSgxKQogICAgICwgZ2xvYmFsQ29tcG9zaXRlKENvbXBvc2l0
ZVNvdXJjZU92ZXIpCi0gICAgLCBnbG9iYWxCbGVuZChCbGVuZE1vZGVOb3JtYWwpCisgICAgLCBn
bG9iYWxCbGVuZChCbGVuZE1vZGU6Ok5vcm1hbCkKICAgICAsIGhhc0ludmVydGlibGVUcmFuc2Zv
cm0odHJ1ZSkKICAgICAsIGxpbmVEYXNoT2Zmc2V0KDApCiAgICAgLCBpbWFnZVNtb290aGluZ0Vu
YWJsZWQodHJ1ZSkKQEAgLTc3NCw3ICs3NzQsNyBAQCBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZTo6Z2xvCiB2b2lkIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OnNldEds
b2JhbENvbXBvc2l0ZU9wZXJhdGlvbihjb25zdCBTdHJpbmcmIG9wZXJhdGlvbikKIHsKICAgICBD
b21wb3NpdGVPcGVyYXRvciBvcCA9IENvbXBvc2l0ZVNvdXJjZU92ZXI7Ci0gICAgQmxlbmRNb2Rl
IGJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbDsKKyAgICBCbGVuZE1vZGUgYmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWw7CiAgICAgaWYgKCFwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0
b3Iob3BlcmF0aW9uLCBvcCwgYmxlbmRNb2RlKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICgo
c3RhdGUoKS5nbG9iYWxDb21wb3NpdGUgPT0gb3ApICYmIChzdGF0ZSgpLmdsb2JhbEJsZW5kID09
IGJsZW5kTW9kZSkpCkBAIC0xNzE0LDEwICsxNzE0LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IENh
bnZhc1JlbmRlcmluZ0NvbnRleHQKIHZvaWQgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6
ZHJhd0ltYWdlRnJvbVJlY3QoSFRNTEltYWdlRWxlbWVudCYgaW1hZ2VFbGVtZW50LCBmbG9hdCBz
eCwgZmxvYXQgc3ksIGZsb2F0IHN3LCBmbG9hdCBzaCwgZmxvYXQgZHgsIGZsb2F0IGR5LCBmbG9h
dCBkdywgZmxvYXQgZGgsIGNvbnN0IFN0cmluZyYgY29tcG9zaXRlT3BlcmF0aW9uKQogewogICAg
IENvbXBvc2l0ZU9wZXJhdG9yIG9wOwotICAgIGF1dG8gYmxlbmRPcCA9IEJsZW5kTW9kZU5vcm1h
bDsKLSAgICBpZiAoIXBhcnNlQ29tcG9zaXRlQW5kQmxlbmRPcGVyYXRvcihjb21wb3NpdGVPcGVy
YXRpb24sIG9wLCBibGVuZE9wKSB8fCBibGVuZE9wICE9IEJsZW5kTW9kZU5vcm1hbCkKKyAgICBh
dXRvIGJsZW5kT3AgPSBCbGVuZE1vZGU6Ok5vcm1hbDsKKyAgICBpZiAoIXBhcnNlQ29tcG9zaXRl
QW5kQmxlbmRPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRpb24sIG9wLCBibGVuZE9wKSB8fCBibGVu
ZE9wICE9IEJsZW5kTW9kZTo6Tm9ybWFsKQogICAgICAgICBvcCA9IENvbXBvc2l0ZVNvdXJjZU92
ZXI7Ci0gICAgZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgRmxvYXRSZWN0IHsgc3gsIHN5LCBzdywg
c2ggfSwgRmxvYXRSZWN0IHsgZHgsIGR5LCBkdywgZGggfSwgb3AsIEJsZW5kTW9kZU5vcm1hbCk7
CisgICAgZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgRmxvYXRSZWN0IHsgc3gsIHN5LCBzdywgc2gg
fSwgRmxvYXRSZWN0IHsgZHgsIGR5LCBkdywgZGggfSwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsKTsK
IH0KIAogdm9pZCBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpjbGVhckNhbnZhcygpCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgJ
KHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Jp
dG1hcEltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBkZXN0cm95RGVjb2RlZERhdGFJZk5lY2Vzc2FyeShib29sIGRlc3Ryb3lBbGwg
PSB0cnVlKTsKIAogICAgIEltYWdlRHJhd1Jlc3VsdCBkcmF3KEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZsb2F0UmVjdCYgZHN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlLCBEZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0NvbnRleHQm
LCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QsIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYg
cGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5k
TW9kZSA9IEJsZW5kTW9kZU5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVybihH
cmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJl
Y3QmIHNyY1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKSBvdmVycmlkZTsKICNpZiBQ
TEFURk9STShXSU4pCiAgICAgdm9pZCBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoR3JhcGhp
Y3NDb250ZXh0JiwgY29uc3QgRmxvYXRSZWN0JiBkc3RSZWN0LCBjb25zdCBJbnRTaXplJiBzcmNT
aXplLCBDb21wb3NpdGVPcGVyYXRvcikgb3ZlcnJpZGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dC5oCShyZXZp
c2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGlj
c0NvbnRleHQuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0cnVjdCBHcmFw
aGljc0NvbnRleHRTdGF0ZSB7CiAKICAgICBmbG9hdCBhbHBoYSB7IDEgfTsKICAgICBDb21wb3Np
dGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciB7IENvbXBvc2l0ZVNvdXJjZU92ZXIgfTsKLSAg
ICBCbGVuZE1vZGUgYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9ybWFsIH07CisgICAgQmxlbmRNb2Rl
IGJsZW5kTW9kZSB7IEJsZW5kTW9kZTo6Tm9ybWFsIH07CiAgICAgSW50ZXJwb2xhdGlvblF1YWxp
dHkgaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSB7IEludGVycG9sYXRpb25EZWZhdWx0IH07CiAK
ICAgICBib29sIHNob3VsZEFudGlhbGlhcyA6IDE7CkBAIC0xOTgsNyArMTk4LDcgQEAgc3RydWN0
IEdyYXBoaWNzQ29udGV4dFN0YXRlIHsKIH07CiAKIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9u
cyB7Ci0gICAgSW1hZ2VQYWludGluZ09wdGlvbnMoQ29tcG9zaXRlT3BlcmF0b3IgY29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgYmxlbmRNb2RlID0gQmxl
bmRNb2RlTm9ybWFsLCBEZWNvZGluZ01vZGUgZGVjb2RpbmdNb2RlID0gRGVjb2RpbmdNb2RlOjpT
eW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9yaWVudGF0aW9uRGVzY3Jp
cHRpb24gPSBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSwgSW50ZXJwb2xhdGlvblF1YWxp
dHkgaW50ZXJwb2xhdGlvblF1YWxpdHkgPSBJbnRlcnBvbGF0aW9uRGVmYXVsdCkKKyAgICBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENv
bXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMs
IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uID0gSW1h
Z2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCksIEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9s
YXRpb25RdWFsaXR5ID0gSW50ZXJwb2xhdGlvbkRlZmF1bHQpCiAgICAgICAgIDogbV9jb21wb3Np
dGVPcGVyYXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVu
ZE1vZGUpCiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQpAQCAtMjA3LDcg
KzIwNyw3IEBAIHN0cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7CiAgICAgewogICAgIH0KIAot
ICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbiBvcmll
bnRhdGlvbkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRlcnBvbGF0aW9uUXVh
bGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVP
cGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVu
ZE1vZGVOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5
bmNocm9ub3VzKQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbiBvcmllbnRhdGlvbkRlc2NyaXB0aW9uLCBJbnRlcnBvbGF0aW9uUXVhbGl0eSBpbnRl
cnBvbGF0aW9uUXVhbGl0eSA9IEludGVycG9sYXRpb25EZWZhdWx0LCBDb21wb3NpdGVPcGVyYXRv
ciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVu
ZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9kZSA9IERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXMpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVyYXRvcihj
b21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUpCiAgICAg
ICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQpAQCAtMjE2LDcgKzIxNiw3IEBAIHN0
cnVjdCBJbWFnZVBhaW50aW5nT3B0aW9ucyB7CiAgICAgewogICAgIH0KIAotICAgIEltYWdlUGFp
bnRpbmdPcHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGludGVycG9sYXRpb25RdWFsaXR5LCBJ
bWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRpb25EZXNjcmlwdGlvbiA9IEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVPcGVyYXRvciBjb21wb3NpdGVPcGVy
YXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSBibGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwsIERlY29kaW5nTW9kZSBkZWNvZGluZ01vZGUgPSBEZWNvZGluZ01vZGU6OlN5bmNo
cm9ub3VzKQorICAgIEltYWdlUGFpbnRpbmdPcHRpb25zKEludGVycG9sYXRpb25RdWFsaXR5IGlu
dGVycG9sYXRpb25RdWFsaXR5LCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24gb3JpZW50YXRp
b25EZXNjcmlwdGlvbiA9IEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpLCBDb21wb3NpdGVP
cGVyYXRvciBjb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9k
ZSBibGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlIGRlY29kaW5nTW9k
ZSA9IERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMpCiAgICAgICAgIDogbV9jb21wb3NpdGVPcGVy
YXRvcihjb21wb3NpdGVPcGVyYXRvcikKICAgICAgICAgLCBtX2JsZW5kTW9kZShibGVuZE1vZGUp
CiAgICAgICAgICwgbV9kZWNvZGluZ01vZGUoZGVjb2RpbmdNb2RlKQpAQCAtMzI2LDcgKzMyNiw3
IEBAIHB1YmxpYzoKICAgICBjb25zdCBHcmFwaGljc0NvbnRleHRTdGF0ZSYgc3RhdGUoKSBjb25z
dCB7IHJldHVybiBtX3N0YXRlOyB9CiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkgfHwg
VVNFKENBSVJPKQotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZHJhd05hdGl2ZUltYWdlKGNvbnN0
IE5hdGl2ZUltYWdlUHRyJiwgY29uc3QgRmxvYXRTaXplJiBzZWxmU2l6ZSwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBDb21wb3NpdGVPcGVyYXRv
ciA9IENvbXBvc2l0ZVNvdXJjZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCwgSW1h
Z2VPcmllbnRhdGlvbiA9IEltYWdlT3JpZW50YXRpb24oKSk7CisgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBjb25zdCBGbG9hdFNp
emUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3Qm
IHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRN
b2RlID0gQmxlbmRNb2RlOjpOb3JtYWwsIEltYWdlT3JpZW50YXRpb24gPSBJbWFnZU9yaWVudGF0
aW9uKCkpOwogI2VuZGlmCiAKICNpZiBVU0UoQ0cpIHx8IFVTRShESVJFQ1QyRCkKQEAgLTM2NCw4
ICszNjQsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBmaWxsUmVjdChjb25z
dCBGbG9hdFJlY3QmKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGZpbGxSZWN0KGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IENvbG9yJik7CiAgICAgdm9pZCBmaWxsUmVjdChjb25zdCBGbG9hdFJl
Y3QmLCBHcmFkaWVudCYpOwotICAgIHZvaWQgZmlsbFJlY3QoY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFs
KTsKLSAgICB2b2lkIGZpbGxSb3VuZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiwgY29u
c3QgQ29sb3ImLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3JtYWwpOworICAgIHZvaWQgZmlsbFJl
Y3QoY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgQ29sb3ImLCBDb21wb3NpdGVPcGVyYXRvciwgQmxl
bmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOworICAgIHZvaWQgZmlsbFJvdW5kZWRSZWN0KGNv
bnN0IEZsb2F0Um91bmRlZFJlY3QmLCBjb25zdCBDb2xvciYsIEJsZW5kTW9kZSA9IEJsZW5kTW9k
ZTo6Tm9ybWFsKTsKICAgICB2b2lkIGZpbGxSZWN0V2l0aFJvdW5kZWRIb2xlKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29s
b3ImKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2xlYXJSZWN0KGNvbnN0IEZsb2F0UmVj
dCYpOwpAQCAtMzg0LDcgKzM4NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGRyYXdJbWFnZUJ1ZmZl
cihJbWFnZUJ1ZmZlciYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdGluYXRpb24sIGNvbnN0IEltYWdl
UGFpbnRpbmdPcHRpb25zJiA9IEltYWdlUGFpbnRpbmdPcHRpb25zKCkpOwogICAgIHZvaWQgZHJh
d0ltYWdlQnVmZmVyKEltYWdlQnVmZmVyJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0aW5hdGlvbiwg
Y29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEltYWdlUGFpbnRpbmdPcHRpb25zJiA9IElt
YWdlUGFpbnRpbmdPcHRpb25zKCkpOwogCi0gICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1h
bCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZHJhd0NvbnN1bWluZ0ltYWdlQnVmZmVyKHN0ZDo6dW5pcXVlX3B0cjxJbWFn
ZUJ1ZmZlcj4sIGNvbnN0IEZsb2F0UG9pbnQmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50
aW5nT3B0aW9ucyYgPSBJbWFnZVBhaW50aW5nT3B0aW9ucygpKTsKICAgICB2b2lkIGRyYXdDb25z
dW1pbmdJbWFnZUJ1ZmZlcihzdGQ6OnVuaXF1ZV9wdHI8SW1hZ2VCdWZmZXI+LCBjb25zdCBGbG9h
dFJlY3QmIGRlc3RpbmF0aW9uLCBjb25zdCBJbWFnZVBhaW50aW5nT3B0aW9ucyYgPSBJbWFnZVBh
aW50aW5nT3B0aW9ucygpKTsKQEAgLTQ1Niw3ICs0NTYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRBbHBoYShmbG9hdCk7CiAgICAgZmxvYXQgYWxwaGEoKSBjb25zdCB7IHJldHVybiBtX3N0YXRl
LmFscGhhOyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlv
bihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRv
ciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpOwogICAgIENvbXBvc2l0ZU9wZXJhdG9y
IGNvbXBvc2l0ZU9wZXJhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc3RhdGUuY29tcG9zaXRlT3Bl
cmF0b3I7IH0KICAgICBCbGVuZE1vZGUgYmxlbmRNb2RlT3BlcmF0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9zdGF0ZS5ibGVuZE1vZGU7IH0KIApAQCAtNjE0LDcgKzYxNCw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBjbGVhclBsYXRmb3JtU2hhZG93KCk7CiAKICAgICB2b2lkIHNldFBsYXRmb3JtQWxw
aGEoZmxvYXQpOwotICAgIHZvaWQgc2V0UGxhdGZvcm1Db21wb3NpdGVPcGVyYXRpb24oQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgdm9pZCBzZXRQ
bGF0Zm9ybUNvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0g
QmxlbmRNb2RlOjpOb3JtYWwpOwogCiAgICAgdm9pZCBiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5
TGF5ZXIoZmxvYXQgb3BhY2l0eSk7CiAgICAgdm9pZCBlbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxh
eWVyKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvR3JhcGhpY3NDb250ZXh0SW1wbC5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHRJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogI2lmIFVTRShDRykgfHwgVVNFKENBSVJPKQog
ICAgIHZpcnR1YWwgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgTmF0aXZlSW1hZ2VQdHImLCBj
b25zdCBGbG9hdFNpemUmIHNlbGZTaXplLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb24pID0gMDsKICNlbmRpZgotICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJ
bWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0
IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5k
TW9kZU5vcm1hbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihJbWFnZSYsIGNv
bnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6
ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9y
bWFsKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlY3QoY29uc3QgRmxvYXRSZWN0Jiwg
ZmxvYXQgYm9yZGVyVGhpY2tuZXNzKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRyYXdMaW5lKGNv
bnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFBvaW50JikgPSAwOwpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5jcHAJKHJldmlz
aW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
TGF5ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjEsNyArNzYxLDcgQEAgdm9pZCBHcmFwaGlj
c0xheWVyOjpkdW1wUHJvcGVydGllcyhUZXh0UwogICAgICAgICB0cyA8PCBpbmRlbnQgPDwgIihv
cGFjaXR5ICIgPDwgbV9vcGFjaXR5IDw8ICIpXG4iOwogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJ
VElORykKLSAgICBpZiAobV9ibGVuZE1vZGUgIT0gQmxlbmRNb2RlTm9ybWFsKQorICAgIGlmICht
X2JsZW5kTW9kZSAhPSBCbGVuZE1vZGU6Ok5vcm1hbCkKICAgICAgICAgdHMgPDwgaW5kZW50IDw8
ICIoYmxlbmRNb2RlICIgPDwgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZVNvdXJjZU92
ZXIsIG1fYmxlbmRNb2RlKSA8PCAiKVxuIjsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCShyZXZpc2lvbiAyMzQ1
MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTY0OCw3ICs2NDgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgRmlsdGVy
T3BlcmF0aW9ucyBtX2JhY2tkcm9wRmlsdGVyczsKIAogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJ
TkcpCi0gICAgQmxlbmRNb2RlIG1fYmxlbmRNb2RlIHsgQmxlbmRNb2RlTm9ybWFsIH07CisgICAg
QmxlbmRNb2RlIG1fYmxlbmRNb2RlIHsgQmxlbmRNb2RlOjpOb3JtYWwgfTsKICNlbmRpZgogCiAg
ICAgY29uc3QgVHlwZSBtX3R5cGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc1R5cGVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTcyLDEzICs3MiwxMyBAQCBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgYmxlbmRP
cGVyYXRvck5hCiAgICAgInBsdXMtbGlnaHRlciIKIH07CiBjb25zdCBpbnQgbnVtQ29tcG9zaXRl
T3BlcmF0b3JOYW1lcyA9IFdURl9BUlJBWV9MRU5HVEgoY29tcG9zaXRlT3BlcmF0b3JOYW1lcyk7
Ci1jb25zdCBpbnQgbnVtQmxlbmRPcGVyYXRvck5hbWVzID0gV1RGX0FSUkFZX0xFTkdUSChibGVu
ZE9wZXJhdG9yTmFtZXMpOworY29uc3QgdW5zaWduZWQgbnVtQmxlbmRPcGVyYXRvck5hbWVzID0g
V1RGX0FSUkFZX0xFTkdUSChibGVuZE9wZXJhdG9yTmFtZXMpOwogCiBib29sIHBhcnNlQmxlbmRN
b2RlKGNvbnN0IFN0cmluZyYgcywgQmxlbmRNb2RlJiBibGVuZE1vZGUpCiB7Ci0gICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBudW1CbGVuZE9wZXJhdG9yTmFtZXM7IGkrKykgeworICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBudW1CbGVuZE9wZXJhdG9yTmFtZXM7IGkrKykgewogICAgICAgICBp
ZiAocyA9PSBibGVuZE9wZXJhdG9yTmFtZXNbaV0pIHsKLSAgICAgICAgICAgIGJsZW5kTW9kZSA9
IHN0YXRpY19jYXN0PEJsZW5kTW9kZT4oaSArIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAg
ICBibGVuZE1vZGUgPSBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KGkgKyBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oQmxlbmRNb2RlOjpOb3JtYWwpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtOTEsNyArOTEsNyBAQCBib29sIHBhcnNlQ29tcG9zaXRlQW5kQmxl
bmRPcGVyYXRvcihjb25zCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db21wb3NpdGVPcGVy
YXRvck5hbWVzOyBpKyspIHsKICAgICAgICAgaWYgKHMgPT0gY29tcG9zaXRlT3BlcmF0b3JOYW1l
c1tpXSkgewogICAgICAgICAgICAgb3AgPSBzdGF0aWNfY2FzdDxDb21wb3NpdGVPcGVyYXRvcj4o
aSk7Ci0gICAgICAgICAgICBibGVuZE9wID0gQmxlbmRNb2RlTm9ybWFsOworICAgICAgICAgICAg
YmxlbmRPcCA9IEJsZW5kTW9kZTo6Tm9ybWFsOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xMTEsMjMgKzExMSwyMyBAQCBTdHJpbmcgY29tcG9zaXRlT3Bl
cmF0b3JOYW1lKENvbXBvc2l0ZU9wCiB7CiAgICAgQVNTRVJUKG9wID49IDApOwogICAgIEFTU0VS
VChvcCA8IG51bUNvbXBvc2l0ZU9wZXJhdG9yTmFtZXMpOwotICAgIEFTU0VSVChibGVuZE9wID49
IEJsZW5kTW9kZU5vcm1hbCk7Ci0gICAgQVNTRVJUKGJsZW5kT3AgPD0gbnVtQmxlbmRPcGVyYXRv
ck5hbWVzKTsKLSAgICBpZiAoYmxlbmRPcCA+IEJsZW5kTW9kZU5vcm1hbCkKLSAgICAgICAgcmV0
dXJuIGJsZW5kT3BlcmF0b3JOYW1lc1tibGVuZE9wIC0gQmxlbmRNb2RlTm9ybWFsXTsKKyAgICBB
U1NFUlQoYmxlbmRPcCA+PSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgQVNTRVJUKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihibGVuZE9wKSA8PSBudW1CbGVuZE9wZXJhdG9yTmFtZXMpOworICAgIGlm
IChibGVuZE9wID4gQmxlbmRNb2RlOjpOb3JtYWwpCisgICAgICAgIHJldHVybiBibGVuZE9wZXJh
dG9yTmFtZXNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGJsZW5kT3ApIC0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEJsZW5kTW9kZTo6Tm9ybWFsKV07CiAgICAgcmV0dXJuIGNvbXBvc2l0ZU9wZXJhdG9y
TmFtZXNbb3BdOwogfQogCiBTdHJpbmcgYmxlbmRNb2RlTmFtZShCbGVuZE1vZGUgYmxlbmRPcCkK
IHsKLSAgICBBU1NFUlQoYmxlbmRPcCA+PSBCbGVuZE1vZGVOb3JtYWwpOwotICAgIEFTU0VSVChi
bGVuZE9wIDw9IEJsZW5kTW9kZVBsdXNMaWdodGVyKTsKLSAgICByZXR1cm4gYmxlbmRPcGVyYXRv
ck5hbWVzW2JsZW5kT3AgLSBCbGVuZE1vZGVOb3JtYWxdOworICAgIEFTU0VSVChibGVuZE9wID49
IEJsZW5kTW9kZTo6Tm9ybWFsKTsKKyAgICBBU1NFUlQoYmxlbmRPcCA8PSBCbGVuZE1vZGU6OlBs
dXNMaWdodGVyKTsKKyAgICByZXR1cm4gYmxlbmRPcGVyYXRvck5hbWVzW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihibGVuZE9wKSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihCbGVuZE1vZGU6Ok5vcm1h
bCldOwogfQogCiBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBDb21wb3Np
dGVPcGVyYXRvciBvcCkKIHsKLSAgICByZXR1cm4gdHMgPDwgY29tcG9zaXRlT3BlcmF0b3JOYW1l
KG9wLCBCbGVuZE1vZGVOb3JtYWwpOworICAgIHJldHVybiB0cyA8PCBjb21wb3NpdGVPcGVyYXRv
ck5hbWUob3AsIEJsZW5kTW9kZTo6Tm9ybWFsKTsKIH0KIAogVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgQmxlbmRNb2RlIGJsZW5kTW9kZSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgJKHJldmlzaW9uIDIz
NDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMu
aAkod29ya2luZyBjb3B5KQpAQCAtNTEsMjUgKzUxLDI1IEBAIGVudW0gQ29tcG9zaXRlT3BlcmF0
b3IgewogICAgIENvbXBvc2l0ZURpZmZlcmVuY2UKIH07CiAKLWVudW0gQmxlbmRNb2RlIHsKLSAg
ICBCbGVuZE1vZGVOb3JtYWwgPSAxLCAvLyBTdGFydCB3aXRoIDEgdG8gbWF0Y2ggU1ZHJ3MgYmxl
bmRtb2RlIGVudW1lcmF0aW9uLgotICAgIEJsZW5kTW9kZU11bHRpcGx5LAotICAgIEJsZW5kTW9k
ZVNjcmVlbiwKLSAgICBCbGVuZE1vZGVEYXJrZW4sCi0gICAgQmxlbmRNb2RlTGlnaHRlbiwKLSAg
ICBCbGVuZE1vZGVPdmVybGF5LAotICAgIEJsZW5kTW9kZUNvbG9yRG9kZ2UsCi0gICAgQmxlbmRN
b2RlQ29sb3JCdXJuLAotICAgIEJsZW5kTW9kZUhhcmRMaWdodCwKLSAgICBCbGVuZE1vZGVTb2Z0
TGlnaHQsCi0gICAgQmxlbmRNb2RlRGlmZmVyZW5jZSwKLSAgICBCbGVuZE1vZGVFeGNsdXNpb24s
Ci0gICAgQmxlbmRNb2RlSHVlLAotICAgIEJsZW5kTW9kZVNhdHVyYXRpb24sCi0gICAgQmxlbmRN
b2RlQ29sb3IsCi0gICAgQmxlbmRNb2RlTHVtaW5vc2l0eSwKLSAgICBCbGVuZE1vZGVQbHVzRGFy
a2VyLAotICAgIEJsZW5kTW9kZVBsdXNMaWdodGVyCitlbnVtIGNsYXNzIEJsZW5kTW9kZSB7Cisg
ICAgTm9ybWFsID0gMSwgLy8gU3RhcnQgd2l0aCAxIHRvIG1hdGNoIFNWRydzIGJsZW5kbW9kZSBl
bnVtZXJhdGlvbi4KKyAgICBNdWx0aXBseSwKKyAgICBTY3JlZW4sCisgICAgRGFya2VuLAorICAg
IExpZ2h0ZW4sCisgICAgT3ZlcmxheSwKKyAgICBDb2xvckRvZGdlLAorICAgIENvbG9yQnVybiwK
KyAgICBIYXJkTGlnaHQsCisgICAgU29mdExpZ2h0LAorICAgIERpZmZlcmVuY2UsCisgICAgRXhj
bHVzaW9uLAorICAgIEh1ZSwKKyAgICBTYXR1cmF0aW9uLAorICAgIENvbG9yLAorICAgIEx1bWlu
b3NpdHksCisgICAgUGx1c0RhcmtlciwKKyAgICBQbHVzTGlnaHRlcgogfTsKIAogZW51bSBHcmFk
aWVudFNwcmVhZE1ldGhvZCB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9JbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Niw3ICsxOTYsNyBAQCBJ
bWFnZURyYXdSZXN1bHQgSW1hZ2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgICAgICB2aXNp
YmxlU3JjUmVjdC5zZXRZKChkZXN0UmVjdC55KCkgLSBvbmVUaWxlUmVjdC55KCkpIC8gc2NhbGUu
aGVpZ2h0KCkpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoMSk7CiAgICAg
ICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRIZWlnaHQoZGVzdFJlY3QuaGVpZ2h0KCkgLyBzY2Fs
ZS5oZWlnaHQoKSk7Ci0gICAgICAgICAgICByZXR1cm4gZHJhdyhjdHh0LCBkZXN0UmVjdCwgdmlz
aWJsZVNyY1JlY3QsIG9wLCBCbGVuZE1vZGVOb3JtYWwsIGRlY29kaW5nTW9kZSwgSW1hZ2VPcmll
bnRhdGlvbkRlc2NyaXB0aW9uKCkpOworICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVz
dFJlY3QsIHZpc2libGVTcmNSZWN0LCBvcCwgQmxlbmRNb2RlOjpOb3JtYWwsIGRlY29kaW5nTW9k
ZSwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogICAgICAgICB9CiAgICAgICAgIGlm
IChzaXplKCkuaGVpZ2h0KCkgPT0gMSAmJiBpbnRlcnNlY3Rpb24ob25lVGlsZVJlY3QsIGRlc3RS
ZWN0KS53aWR0aCgpID09IGRlc3RSZWN0LndpZHRoKCkpIHsKICAgICAgICAgICAgIEZsb2F0UmVj
dCB2aXNpYmxlU3JjUmVjdDsKQEAgLTIwNCw3ICsyMDQsNyBAQCBJbWFnZURyYXdSZXN1bHQgSW1h
Z2U6OmRyYXdUaWxlZChHcmFwaGljCiAgICAgICAgICAgICB2aXNpYmxlU3JjUmVjdC5zZXRZKDAp
OwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0V2lkdGgoZGVzdFJlY3Qud2lkdGgoKSAv
IHNjYWxlLndpZHRoKCkpOwogICAgICAgICAgICAgdmlzaWJsZVNyY1JlY3Quc2V0SGVpZ2h0KDEp
OwotICAgICAgICAgICAgcmV0dXJuIGRyYXcoY3R4dCwgZGVzdFJlY3QsIHZpc2libGVTcmNSZWN0
LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybiBkcmF3KGN0eHQsIGRlc3RSZWN0LCB2aXNp
YmxlU3JjUmVjdCwgb3AsIEJsZW5kTW9kZTo6Tm9ybWFsLCBkZWNvZGluZ01vZGUsIEltYWdlT3Jp
ZW50YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgfQogICAgIH0KICNlbmRpZgpAQCAtMjM2
LDcgKzIzNiw3IEBAIEltYWdlRHJhd1Jlc3VsdCBJbWFnZTo6ZHJhd1RpbGVkKEdyYXBoaWMKICAg
ICAgICAgICAgICAgICBGbG9hdFJlY3QgZnJvbVJlY3QodG9GbG9hdFBvaW50KGN1cnJlbnRUaWxl
UmVjdC5sb2NhdGlvbigpIC0gb25lVGlsZVJlY3QubG9jYXRpb24oKSksIGN1cnJlbnRUaWxlUmVj
dC5zaXplKCkpOwogICAgICAgICAgICAgICAgIGZyb21SZWN0LnNjYWxlKDEgLyBzY2FsZS53aWR0
aCgpLCAxIC8gc2NhbGUuaGVpZ2h0KCkpOwogCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHJh
dyhjdHh0LCB0b1JlY3QsIGZyb21SZWN0LCBvcCwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01v
ZGUsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgICAgICAgICByZXN1
bHQgPSBkcmF3KGN0eHQsIHRvUmVjdCwgZnJvbVJlY3QsIG9wLCBCbGVuZE1vZGU6Ok5vcm1hbCwg
ZGVjb2RpbmdNb2RlLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdCA9PSBJbWFnZURyYXdSZXN1bHQ6OkRpZFJlcXVlc3REZWNvZGluZykK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgICAgICAgICB0b1gg
Kz0gY3VycmVudFRpbGVSZWN0LndpZHRoKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3NCw3ICsxNzQsNyBA
QCBwdWJsaWM6CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3UGF0dGVybihHcmFwaGlj
c0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNy
Y1JlY3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwKLSAgICAgICAg
Y29uc3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9z
aXRlT3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgIGNvbnN0
IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9w
ZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAKICNpZiAhQVNTRVJUX0RJ
U0FCTEVECiAgICAgdmlydHVhbCBib29sIG5vdFNvbGlkQ29sb3IoKSB7IHJldHVybiB0cnVlOyB9
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZUJ1ZmZlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlQnVmZmVy
LmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0ltYWdlQnVmZmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NCwxMCArMTQ0LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBmbHVzaENvbnRleHQoKSBjb25zdDsKICNlbmRpZgogICAgIAotICAgIHZv
aWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwgLTEsIC0xKSwgQ29tcG9zaXRl
T3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGUgPSBCbGVuZE1vZGVOb3Jt
YWwpOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oR3JhcGhpY3NDb250ZXh0JiwgY29uc3QgRmxvYXRS
ZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mIHBhdHRlcm5UcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25zdCBG
bG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVuZE1v
ZGVOb3JtYWwpOworICAgIHZvaWQgZHJhdyhHcmFwaGljc0NvbnRleHQmLCBjb25zdCBGbG9hdFJl
Y3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QgPSBGbG9hdFJlY3QoMCwgMCwg
LTEsIC0xKSwgQ29tcG9zaXRlT3BlcmF0b3IgPSBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1v
ZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbCk7CisgICAgdm9pZCBkcmF3UGF0dGVybihHcmFwaGljc0Nv
bnRleHQmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgcGF0dGVyblRyYW5zZm9ybSwgY29uc3QgRmxvYXRQ
b2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRlT3BlcmF0b3Is
IEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAotICAgIHN0YXRpYyB2b2lkIGRyYXdD
b25zdW1pbmcoc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiwgR3JhcGhpY3NDb250ZXh0Jiwg
Y29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0ID0gRmxv
YXRSZWN0KDAsIDAsIC0xLCAtMSksIENvbXBvc2l0ZU9wZXJhdG9yID0gQ29tcG9zaXRlU291cmNl
T3ZlciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKTsKKyAgICBzdGF0aWMgdm9pZCBkcmF3
Q29uc3VtaW5nKHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIEdyYXBoaWNzQ29udGV4dCYs
IGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCA9IEZs
b2F0UmVjdCgwLCAwLCAtMSwgLTEpLCBDb21wb3NpdGVPcGVyYXRvciA9IENvbXBvc2l0ZVNvdXJj
ZU92ZXIsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZTo6Tm9ybWFsKTsKIAogICAgIGlubGluZSB2b2lk
IGdlbmVyaWNDb252ZXJ0VG9MdW1pbmFuY2VNYXNrKCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL2NvY29hL1BsYXRmb3JtQ0FGaWx0ZXJzQ29jb2EubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxh
dGZvcm1DQUZpbHRlcnNDb2NvYS5tbQkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvY29jb2EvUGxhdGZvcm1DQUZpbHRlcnNDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTU2LDUyICs1NTYsNTIgQEAgdm9pZCBQbGF0Zm9ybUNBRmlsdGVy
czo6c2V0QmxlbmRpbmdGaWx0ZQogICAgIENBRmlsdGVyKiBmaWx0ZXIgPSBuaWw7CiAKICAgICBz
d2l0Y2ggKGJsZW5kTW9kZSkgewotICAgIGNhc2UgQmxlbmRNb2RlTm9ybWFsOgorICAgIGNhc2Ug
QmxlbmRNb2RlOjpOb3JtYWw6CiAgICAgICAgIC8vIE5vIG5lZWQgdG8gc2V0IGFuIGFjdHVhbCBm
aWx0ZXIgb2JqZWN0IGluIHRoaXMgY2FzZS4KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVu
ZE1vZGVPdmVybGF5OgorICAgIGNhc2UgQmxlbmRNb2RlOjpPdmVybGF5OgogICAgICAgICBmaWx0
ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyT3ZlcmxheUJsZW5kTW9kZV07
CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlQ29sb3JEb2RnZToKKyAgICBjYXNl
IEJsZW5kTW9kZTo6Q29sb3JEb2RnZToKICAgICAgICAgZmlsdGVyID0gW0NBRmlsdGVyIGZpbHRl
cldpdGhUeXBlOmtDQUZpbHRlckNvbG9yRG9kZ2VCbGVuZE1vZGVdOwogICAgICAgICBicmVhazsK
LSAgICBjYXNlIEJsZW5kTW9kZUNvbG9yQnVybjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6Q29sb3JC
dXJuOgogICAgICAgICBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVy
Q29sb3JCdXJuQmxlbmRNb2RlXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVE
YXJrZW46CisgICAgY2FzZSBCbGVuZE1vZGU6OkRhcmtlbjoKICAgICAgICAgZmlsdGVyID0gW0NB
RmlsdGVyIGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckRhcmtlbkJsZW5kTW9kZV07CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlRGlmZmVyZW5jZToKKyAgICBjYXNlIEJsZW5kTW9k
ZTo6RGlmZmVyZW5jZToKICAgICAgICAgZmlsdGVyID0gW0NBRmlsdGVyIGZpbHRlcldpdGhUeXBl
OmtDQUZpbHRlckRpZmZlcmVuY2VCbGVuZE1vZGVdOwogICAgICAgICBicmVhazsKLSAgICBjYXNl
IEJsZW5kTW9kZUV4Y2x1c2lvbjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6RXhjbHVzaW9uOgogICAg
ICAgICBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyRXhjbHVzaW9u
QmxlbmRNb2RlXTsKICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVIYXJkTGlnaHQ6
CisgICAgY2FzZSBCbGVuZE1vZGU6OkhhcmRMaWdodDoKICAgICAgICAgZmlsdGVyID0gW0NBRmls
dGVyIGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckhhcmRMaWdodEJsZW5kTW9kZV07CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6CisgICAgY2FzZSBCbGVuZE1vZGU6
Ok11bHRpcGx5OgogICAgICAgICBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NB
RmlsdGVyTXVsdGlwbHlCbGVuZE1vZGVdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5k
TW9kZUxpZ2h0ZW46CisgICAgY2FzZSBCbGVuZE1vZGU6OkxpZ2h0ZW46CiAgICAgICAgIGZpbHRl
ciA9IFtDQUZpbHRlciBmaWx0ZXJXaXRoVHlwZTprQ0FGaWx0ZXJMaWdodGVuQmxlbmRNb2RlXTsK
ICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVTb2Z0TGlnaHQ6CisgICAgY2FzZSBC
bGVuZE1vZGU6OlNvZnRMaWdodDoKICAgICAgICAgZmlsdGVyID0gW0NBRmlsdGVyIGZpbHRlcldp
dGhUeXBlOmtDQUZpbHRlclNvZnRMaWdodEJsZW5kTW9kZV07CiAgICAgICAgIGJyZWFrOwotICAg
IGNhc2UgQmxlbmRNb2RlU2NyZWVuOgorICAgIGNhc2UgQmxlbmRNb2RlOjpTY3JlZW46CiAgICAg
ICAgIGZpbHRlciA9IFtDQUZpbHRlciBmaWx0ZXJXaXRoVHlwZTprQ0FGaWx0ZXJTY3JlZW5CbGVu
ZE1vZGVdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZVBsdXNEYXJrZXI6Cisg
ICAgY2FzZSBCbGVuZE1vZGU6OlBsdXNEYXJrZXI6CiAgICAgICAgIGZpbHRlciA9IFtDQUZpbHRl
ciBmaWx0ZXJXaXRoVHlwZTprQ0FGaWx0ZXJQbHVzRF07CiAgICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQmxlbmRNb2RlUGx1c0xpZ2h0ZXI6CisgICAgY2FzZSBCbGVuZE1vZGU6OlBsdXNMaWdodGVy
OgogICAgICAgICBmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmlsdGVyV2l0aFR5cGU6a0NBRmlsdGVyUGx1
c0xdOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUh1ZToKLSAgICBjYXNlIEJs
ZW5kTW9kZVNhdHVyYXRpb246Ci0gICAgY2FzZSBCbGVuZE1vZGVDb2xvcjoKLSAgICBjYXNlIEJs
ZW5kTW9kZUx1bWlub3NpdHk6CisgICAgY2FzZSBCbGVuZE1vZGU6Okh1ZToKKyAgICBjYXNlIEJs
ZW5kTW9kZTo6U2F0dXJhdGlvbjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6Q29sb3I6CisgICAgY2Fz
ZSBCbGVuZE1vZGU6Okx1bWlub3NpdHk6CiAgICAgICAgIC8vIEZJWE1FOiBDQSBkb2VzJ3Qgc3Vw
cG9ydCBub24tc2VwYXJhYmxlIGJsZW5kIG1vZGVzIG9uIGNvbXBvc2l0aW5nIGZpbHRlcnMuCiAg
ICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jYWlyby9DYWlyb09wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvT3BlcmF0aW9ucy5jcHAJKHJl
dmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJv
L0NhaXJvT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw4ICsxNzgsNyBAQCBz
dGF0aWMgdm9pZCBkcmF3U2hhZG93TGF5ZXJCdWZmZXIoUGxhdGZvCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvIHN1cmZhY2UgPSBpbWFnZS0+bmF0aXZlSW1hZ2VGb3JDdXJyZW50RnJh
bWUoKSkgewotICAgICAgICBkcmF3TmF0aXZlSW1hZ2UocGxhdGZvcm1Db250ZXh0LCBzdXJmYWNl
LmdldCgpLCBGbG9hdFJlY3Qocm91bmRlZEludFBvaW50KGxheWVyT3JpZ2luKSwgbGF5ZXJTaXpl
KSwgRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgbGF5ZXJTaXplKSwKLSAgICAgICAgICAgIHNoYWRv
d1N0YXRlLmdsb2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwsIEltYWdlT3Jp
ZW50YXRpb24oKSwKKyAgICAgICAgZHJhd05hdGl2ZUltYWdlKHBsYXRmb3JtQ29udGV4dCwgc3Vy
ZmFjZS5nZXQoKSwgRmxvYXRSZWN0KHJvdW5kZWRJbnRQb2ludChsYXllck9yaWdpbiksIGxheWVy
U2l6ZSksIEZsb2F0UmVjdChGbG9hdFBvaW50KCksIGxheWVyU2l6ZSksIHNoYWRvd1N0YXRlLmds
b2JhbENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlv
bigpLAogICAgICAgICAgICAgSW50ZXJwb2xhdGlvbkRlZmF1bHQsIHNoYWRvd1N0YXRlLmdsb2Jh
bEFscGhhLCBTaGFkb3dTdGF0ZSgpKTsKICAgICB9CiB9CkBAIC04MzcsOCArODM2LDggQEAgdm9p
ZCBkcmF3TmF0aXZlSW1hZ2UoUGxhdGZvcm1Db250ZXh0Q2FpcgogICAgIHBsYXRmb3JtQ29udGV4
dC5zYXZlKCk7CiAKICAgICAvLyBTZXQgdGhlIGNvbXBvc2l0aW5nIG9wZXJhdGlvbi4KLSAgICBp
ZiAoY29tcG9zaXRlT3BlcmF0b3IgPT0gQ29tcG9zaXRlU291cmNlT3ZlciAmJiBibGVuZE1vZGUg
PT0gQmxlbmRNb2RlTm9ybWFsICYmICFjYWlyb1N1cmZhY2VIYXNBbHBoYShzdXJmYWNlKSkKLSAg
ICAgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0
LCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwpOworICAgIGlmIChjb21wb3NpdGVPcGVy
YXRvciA9PSBDb21wb3NpdGVTb3VyY2VPdmVyICYmIGJsZW5kTW9kZSA9PSBCbGVuZE1vZGU6Ok5v
cm1hbCAmJiAhY2Fpcm9TdXJmYWNlSGFzQWxwaGEoc3VyZmFjZSkpCisgICAgICAgIENhaXJvOjpT
dGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgQ29tcG9zaXRlQ29w
eSwgQmxlbmRNb2RlOjpOb3JtYWwpOwogICAgIGVsc2UKICAgICAgICAgQ2Fpcm86OlN0YXRlOjpz
ZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBjb21wb3NpdGVPcGVyYXRvciwg
YmxlbmRNb2RlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fp
cm8vQ2Fpcm9VdGlsaXRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmNwcAkocmV2aXNpb24gMjM0NTE0KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQsMzcgKzE2NCwzNyBAQCBzdGF0aWMgY2Fpcm9fb3Bl
cmF0b3JfdCB0b0NhaXJvQ29tcG9zaXRlCiBjYWlyb19vcGVyYXRvcl90IHRvQ2Fpcm9PcGVyYXRv
cihDb21wb3NpdGVPcGVyYXRvciBvcCwgQmxlbmRNb2RlIGJsZW5kT3ApCiB7CiAgICAgc3dpdGNo
IChibGVuZE9wKSB7Ci0gICAgY2FzZSBCbGVuZE1vZGVOb3JtYWw6CisgICAgY2FzZSBCbGVuZE1v
ZGU6Ok5vcm1hbDoKICAgICAgICAgcmV0dXJuIHRvQ2Fpcm9Db21wb3NpdGVPcGVyYXRvcihvcCk7
Ci0gICAgY2FzZSBCbGVuZE1vZGVNdWx0aXBseToKKyAgICBjYXNlIEJsZW5kTW9kZTo6TXVsdGlw
bHk6CiAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9NVUxUSVBMWTsKLSAgICBjYXNlIEJs
ZW5kTW9kZVNjcmVlbjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6U2NyZWVuOgogICAgICAgICByZXR1
cm4gQ0FJUk9fT1BFUkFUT1JfU0NSRUVOOwotICAgIGNhc2UgQmxlbmRNb2RlT3ZlcmxheToKKyAg
ICBjYXNlIEJsZW5kTW9kZTo6T3ZlcmxheToKICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9S
X09WRVJMQVk7Ci0gICAgY2FzZSBCbGVuZE1vZGVEYXJrZW46CisgICAgY2FzZSBCbGVuZE1vZGU6
OkRhcmtlbjoKICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0RBUktFTjsKLSAgICBjYXNl
IEJsZW5kTW9kZUxpZ2h0ZW46CisgICAgY2FzZSBCbGVuZE1vZGU6OkxpZ2h0ZW46CiAgICAgICAg
IHJldHVybiBDQUlST19PUEVSQVRPUl9MSUdIVEVOOwotICAgIGNhc2UgQmxlbmRNb2RlQ29sb3JE
b2RnZToKKyAgICBjYXNlIEJsZW5kTW9kZTo6Q29sb3JEb2RnZToKICAgICAgICAgcmV0dXJuIENB
SVJPX09QRVJBVE9SX0NPTE9SX0RPREdFOwotICAgIGNhc2UgQmxlbmRNb2RlQ29sb3JCdXJuOgor
ICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvckJ1cm46CiAgICAgICAgIHJldHVybiBDQUlST19PUEVS
QVRPUl9DT0xPUl9CVVJOOwotICAgIGNhc2UgQmxlbmRNb2RlSGFyZExpZ2h0OgorICAgIGNhc2Ug
QmxlbmRNb2RlOjpIYXJkTGlnaHQ6CiAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9IQVJE
X0xJR0hUOwotICAgIGNhc2UgQmxlbmRNb2RlU29mdExpZ2h0OgorICAgIGNhc2UgQmxlbmRNb2Rl
OjpTb2Z0TGlnaHQ6CiAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9TT0ZUX0xJR0hUOwot
ICAgIGNhc2UgQmxlbmRNb2RlRGlmZmVyZW5jZToKKyAgICBjYXNlIEJsZW5kTW9kZTo6RGlmZmVy
ZW5jZToKICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0RJRkZFUkVOQ0U7Ci0gICAgY2Fz
ZSBCbGVuZE1vZGVFeGNsdXNpb246CisgICAgY2FzZSBCbGVuZE1vZGU6OkV4Y2x1c2lvbjoKICAg
ICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0VYQ0xVU0lPTjsKLSAgICBjYXNlIEJsZW5kTW9k
ZUh1ZToKKyAgICBjYXNlIEJsZW5kTW9kZTo6SHVlOgogICAgICAgICByZXR1cm4gQ0FJUk9fT1BF
UkFUT1JfSFNMX0hVRTsKLSAgICBjYXNlIEJsZW5kTW9kZVNhdHVyYXRpb246CisgICAgY2FzZSBC
bGVuZE1vZGU6OlNhdHVyYXRpb246CiAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9IU0xf
U0FUVVJBVElPTjsKLSAgICBjYXNlIEJsZW5kTW9kZUNvbG9yOgorICAgIGNhc2UgQmxlbmRNb2Rl
OjpDb2xvcjoKICAgICAgICAgcmV0dXJuIENBSVJPX09QRVJBVE9SX0hTTF9DT0xPUjsKLSAgICBj
YXNlIEJsZW5kTW9kZUx1bWlub3NpdHk6CisgICAgY2FzZSBCbGVuZE1vZGU6Okx1bWlub3NpdHk6
CiAgICAgICAgIHJldHVybiBDQUlST19PUEVSQVRPUl9IU0xfTFVNSU5PU0lUWTsKICAgICBkZWZh
dWx0OgogICAgICAgICByZXR1cm4gQ0FJUk9fT1BFUkFUT1JfT1ZFUjsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0NhaXJvVXRpbGl0aWVzLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vQ2Fpcm9VdGlsaXRp
ZXMuaAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vQ2Fpcm9VdGlsaXRpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtODAsNyArODAsNyBA
QCB2b2lkIGFwcGVuZFBhdGhUb0NhaXJvQ29udGV4dChjYWlyb190KiB0CiB2b2lkIHNldFBhdGhP
bkNhaXJvQ29udGV4dChjYWlyb190KiB0bywgY2Fpcm9fdCogZnJvbSk7CiB2b2lkIGFwcGVuZFdl
YkNvcmVQYXRoVG9DYWlyb0NvbnRleHQoY2Fpcm9fdCogY29udGV4dCwgY29uc3QgUGF0aCYgcGF0
aCk7CiB2b2lkIGFwcGVuZFJlZ2lvblRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqLCBjb25zdCBjYWly
b19yZWdpb25fdCopOwotY2Fpcm9fb3BlcmF0b3JfdCB0b0NhaXJvT3BlcmF0b3IoQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CitjYWlyb19vcGVyYXRvcl90
IHRvQ2Fpcm9PcGVyYXRvcihDb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2Rl
OjpOb3JtYWwpOwogdm9pZCBkcmF3UGF0dGVyblRvQ2Fpcm9Db250ZXh0KGNhaXJvX3QqIGNyLCBj
YWlyb19zdXJmYWNlX3QqIGltYWdlLCBjb25zdCBJbnRTaXplJiBpbWFnZVNpemUsIGNvbnN0IEZs
b2F0UmVjdCYgdGlsZVJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBwYXR0ZXJuVHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwaGFz
ZSwgY2Fpcm9fb3BlcmF0b3JfdCBvcCwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCk7CiBSZWZQ
dHI8Y2Fpcm9fc3VyZmFjZV90PiBjb3B5Q2Fpcm9JbWFnZVN1cmZhY2UoY2Fpcm9fc3VyZmFjZV90
Kik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HcmFwaGlj
c0NvbnRleHRJbXBsQ2Fpcm8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxDYWlyby5jcHAJKHJldmlzaW9u
IDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBo
aWNzQ29udGV4dEltcGxDYWlyby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw3ICsxNjQsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dEltcGxDYWlybzo6ZmlsbFJlY3QoCiAKICAgICBDYWlybzo6
U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BsYXRmb3JtQ29udGV4dCwgY29tcG9zaXRl
T3BlcmF0b3IsIGJsZW5kTW9kZSk7CiAgICAgQ2Fpcm86OmZpbGxSZWN0KG1fcGxhdGZvcm1Db250
ZXh0LCByZWN0LCBjb2xvciwgQ2Fpcm86OlNoYWRvd1N0YXRlKHN0YXRlKSk7Ci0gICAgQ2Fpcm86
OlN0YXRlOjpzZXRDb21wb3NpdGVPcGVyYXRpb24obV9wbGF0Zm9ybUNvbnRleHQsIHByZXZpb3Vz
T3BlcmF0b3IsIEJsZW5kTW9kZU5vcm1hbCk7CisgICAgQ2Fpcm86OlN0YXRlOjpzZXRDb21wb3Np
dGVPcGVyYXRpb24obV9wbGF0Zm9ybUNvbnRleHQsIHByZXZpb3VzT3BlcmF0b3IsIEJsZW5kTW9k
ZTo6Tm9ybWFsKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHRJbXBsQ2Fpcm86OmZpbGxSb3Vu
ZGVkUmVjdChjb25zdCBGbG9hdFJvdW5kZWRSZWN0JiByZWN0LCBjb25zdCBDb2xvciYgY29sb3Is
IEJsZW5kTW9kZSBibGVuZE1vZGUpCkBAIC0xODAsNyArMTgwLDcgQEAgdm9pZCBHcmFwaGljc0Nv
bnRleHRJbXBsQ2Fpcm86OmZpbGxSb3VuZAogICAgIGVsc2UKICAgICAgICAgQ2Fpcm86OmZpbGxS
ZWN0KG1fcGxhdGZvcm1Db250ZXh0LCByZWN0LnJlY3QoKSwgY29sb3IsIHNoYWRvd1N0YXRlKTsK
IAotICAgIENhaXJvOjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGxhdGZvcm1Db250
ZXh0LCBwcmV2aW91c09wZXJhdG9yLCBCbGVuZE1vZGVOb3JtYWwpOworICAgIENhaXJvOjpTdGF0
ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGxhdGZvcm1Db250ZXh0LCBwcmV2aW91c09wZXJh
dG9yLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0SW1wbENh
aXJvOjpmaWxsUmVjdFdpdGhSb3VuZGVkSG9sZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsIGNvbnN0
IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRIb2xlUmVjdCwgY29uc3QgQ29sb3ImKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1w
bENhaXJvLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2Fpcm8vR3JhcGhpY3NDb250ZXh0SW1wbENhaXJvLmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0dyYXBoaWNzQ29udGV4dEltcGxD
YWlyby5oCSh3b3JraW5nIGNvcHkpCkBAIC03NSw3ICs3NSw3IEBAIHB1YmxpYzoKICAgICBJbWFn
ZURyYXdSZXN1bHQgZHJhd1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25z
dCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICBJbWFnZURyYXdSZXN1bHQgZHJh
d1RpbGVkSW1hZ2UoSW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBj
b25zdCBGbG9hdFNpemUmLCBJbWFnZTo6VGlsZVJ1bGUsIEltYWdlOjpUaWxlUnVsZSwgY29uc3Qg
SW1hZ2VQYWludGluZ09wdGlvbnMmKSBvdmVycmlkZTsKICAgICB2b2lkIGRyYXdOYXRpdmVJbWFn
ZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEZsb2F0UmVjdCYsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUsIEltYWdl
T3JpZW50YXRpb24pIG92ZXJyaWRlOwotICAgIHZvaWQgZHJhd1BhdHRlcm4oSW1hZ2UmLCBjb25z
dCBGbG9hdFJlY3QmLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRTaXplJiwgQ29tcG9zaXRlT3BlcmF0b3IsIEJs
ZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCkgb3ZlcnJpZGU7CisgICAgdm9pZCBkcmF3UGF0dGVy
bihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmLCBjb25zdCBGbG9hdFNpemUmLCBDb21wb3Np
dGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCkgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkcmF3TGluZShjb25zdCBGbG9hdFBvaW50JiwgY29uc3QgRmxvYXRQb2ludCYpIG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3ND
b250ZXh0Q0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dENHLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0Q0cuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTgsNyArMTU4LDcgQEAgc3RhdGljIEludGVycG9sYXRpb25RdWFsaXR5
IGNvbnZlcnRJbnRlcgogc3RhdGljIENHQmxlbmRNb2RlIHNlbGVjdENHQmxlbmRNb2RlKENvbXBv
c2l0ZU9wZXJhdG9yIGNvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgYmxlbmRNb2RlKQogewog
ICAgIHN3aXRjaCAoYmxlbmRNb2RlKSB7Ci0gICAgY2FzZSBCbGVuZE1vZGVOb3JtYWw6CisgICAg
Y2FzZSBCbGVuZE1vZGU6Ok5vcm1hbDoKICAgICAgICAgc3dpdGNoIChjb21wb3NpdGVPcGVyYXRv
cikgewogICAgICAgICBjYXNlIENvbXBvc2l0ZUNsZWFyOgogICAgICAgICAgICAgcmV0dXJuIGtD
R0JsZW5kTW9kZUNsZWFyOwpAQCAtMTkwLDM5ICsxOTAsMzkgQEAgc3RhdGljIENHQmxlbmRNb2Rl
IHNlbGVjdENHQmxlbmRNb2RlKENvbQogICAgICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZURp
ZmZlcmVuY2U7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVN
dWx0aXBseToKKyAgICBjYXNlIEJsZW5kTW9kZTo6TXVsdGlwbHk6CiAgICAgICAgIHJldHVybiBr
Q0dCbGVuZE1vZGVNdWx0aXBseTsKLSAgICBjYXNlIEJsZW5kTW9kZVNjcmVlbjoKKyAgICBjYXNl
IEJsZW5kTW9kZTo6U2NyZWVuOgogICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlU2NyZWVuOwot
ICAgIGNhc2UgQmxlbmRNb2RlT3ZlcmxheToKKyAgICBjYXNlIEJsZW5kTW9kZTo6T3ZlcmxheToK
ICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZU92ZXJsYXk7Ci0gICAgY2FzZSBCbGVuZE1vZGVE
YXJrZW46CisgICAgY2FzZSBCbGVuZE1vZGU6OkRhcmtlbjoKICAgICAgICAgcmV0dXJuIGtDR0Js
ZW5kTW9kZURhcmtlbjsKLSAgICBjYXNlIEJsZW5kTW9kZUxpZ2h0ZW46CisgICAgY2FzZSBCbGVu
ZE1vZGU6OkxpZ2h0ZW46CiAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVMaWdodGVuOwotICAg
IGNhc2UgQmxlbmRNb2RlQ29sb3JEb2RnZToKKyAgICBjYXNlIEJsZW5kTW9kZTo6Q29sb3JEb2Rn
ZToKICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZUNvbG9yRG9kZ2U7Ci0gICAgY2FzZSBCbGVu
ZE1vZGVDb2xvckJ1cm46CisgICAgY2FzZSBCbGVuZE1vZGU6OkNvbG9yQnVybjoKICAgICAgICAg
cmV0dXJuIGtDR0JsZW5kTW9kZUNvbG9yQnVybjsKLSAgICBjYXNlIEJsZW5kTW9kZUhhcmRMaWdo
dDoKKyAgICBjYXNlIEJsZW5kTW9kZTo6SGFyZExpZ2h0OgogICAgICAgICByZXR1cm4ga0NHQmxl
bmRNb2RlSGFyZExpZ2h0OwotICAgIGNhc2UgQmxlbmRNb2RlU29mdExpZ2h0OgorICAgIGNhc2Ug
QmxlbmRNb2RlOjpTb2Z0TGlnaHQ6CiAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1vZGVTb2Z0TGln
aHQ7Ci0gICAgY2FzZSBCbGVuZE1vZGVEaWZmZXJlbmNlOgorICAgIGNhc2UgQmxlbmRNb2RlOjpE
aWZmZXJlbmNlOgogICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRGlmZmVyZW5jZTsKLSAgICBj
YXNlIEJsZW5kTW9kZUV4Y2x1c2lvbjoKKyAgICBjYXNlIEJsZW5kTW9kZTo6RXhjbHVzaW9uOgog
ICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlRXhjbHVzaW9uOwotICAgIGNhc2UgQmxlbmRNb2Rl
SHVlOgorICAgIGNhc2UgQmxlbmRNb2RlOjpIdWU6CiAgICAgICAgIHJldHVybiBrQ0dCbGVuZE1v
ZGVIdWU7Ci0gICAgY2FzZSBCbGVuZE1vZGVTYXR1cmF0aW9uOgorICAgIGNhc2UgQmxlbmRNb2Rl
OjpTYXR1cmF0aW9uOgogICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlU2F0dXJhdGlvbjsKLSAg
ICBjYXNlIEJsZW5kTW9kZUNvbG9yOgorICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvcjoKICAgICAg
ICAgcmV0dXJuIGtDR0JsZW5kTW9kZUNvbG9yOwotICAgIGNhc2UgQmxlbmRNb2RlTHVtaW5vc2l0
eToKKyAgICBjYXNlIEJsZW5kTW9kZTo6THVtaW5vc2l0eToKICAgICAgICAgcmV0dXJuIGtDR0Js
ZW5kTW9kZUx1bWlub3NpdHk7Ci0gICAgY2FzZSBCbGVuZE1vZGVQbHVzRGFya2VyOgorICAgIGNh
c2UgQmxlbmRNb2RlOjpQbHVzRGFya2VyOgogICAgICAgICByZXR1cm4ga0NHQmxlbmRNb2RlUGx1
c0RhcmtlcjsKLSAgICBjYXNlIEJsZW5kTW9kZVBsdXNMaWdodGVyOgorICAgIGNhc2UgQmxlbmRN
b2RlOjpQbHVzTGlnaHRlcjoKICAgICAgICAgcmV0dXJuIGtDR0JsZW5kTW9kZVBsdXNMaWdodGVy
OwogICAgIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY3B1L2Fy
bS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY3B1L2FybS9maWx0ZXJzL0ZFQmxlbmRORU9OLmgJKHJldmlzaW9uIDIz
NDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NwdS9hcm0vZmlsdGVy
cy9GRUJsZW5kTkVPTi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjMsMTkgKzE2MywxOSBAQCB2b2lk
IEZFQmxlbmQ6OnBsYXRmb3JtQXBwbHlORU9OKHVuc2lnbmVkCiAKICAgICAgICAgdWludDE2eDhf
dCByZXN1bHQ7CiAgICAgICAgIHN3aXRjaCAobV9tb2RlKSB7Ci0gICAgICAgIGNhc2UgQmxlbmRN
b2RlTm9ybWFsOgorICAgICAgICBjYXNlIEJsZW5kTW9kZTo6Tm9ybWFsOgogICAgICAgICAgICAg
cmVzdWx0ID0gRkVCbGVuZFV0aWxpdGllc05FT046Om5vcm1hbChkb3ViYmxlUGl4ZWxBLCBkb3Vi
YmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RP
bmUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6
CisgICAgICAgIGNhc2UgQmxlbmRNb2RlOjpNdWx0aXBseToKICAgICAgICAgICAgIHJlc3VsdCA9
IEZFQmxlbmRVdGlsaXRpZXNORU9OOjptdWx0aXBseShkb3ViYmxlUGl4ZWxBLCBkb3ViYmxlUGl4
ZWxCLCBhbHBoYUEsIGFscGhhQiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlU2NyZWVuOgorICAgICAg
ICBjYXNlIEJsZW5kTW9kZTo6U2NyZWVuOgogICAgICAgICAgICAgcmVzdWx0ID0gRkVCbGVuZFV0
aWxpdGllc05FT046OnNjcmVlbihkb3ViYmxlUGl4ZWxBLCBkb3ViYmxlUGl4ZWxCLCBhbHBoYUEs
IGFscGhhQiwgc2l4dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlRGFya2VuOgorICAgICAgICBjYXNlIEJsZW5k
TW9kZTo6RGFya2VuOgogICAgICAgICAgICAgcmVzdWx0ID0gRkVCbGVuZFV0aWxpdGllc05FT046
OmRhcmtlbihkb3ViYmxlUGl4ZWxBLCBkb3ViYmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwgc2l4
dGVlbkNvbnN0MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQmxlbmRNb2RlTGlnaHRlbjoKKyAgICAgICAgY2FzZSBCbGVuZE1vZGU6OkxpZ2h0
ZW46CiAgICAgICAgICAgICByZXN1bHQgPSBGRUJsZW5kVXRpbGl0aWVzTkVPTjo6bGlnaHRlbihk
b3ViYmxlUGl4ZWxBLCBkb3ViYmxlUGl4ZWxCLCBhbHBoYUEsIGFscGhhQiwgc2l4dGVlbkNvbnN0
MjU1LCBzaXh0ZWVuQ29uc3RPbmUpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNwbGF5bGlzdHMv
RGlzcGxheUxpc3RJdGVtcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdEl0ZW1zLmgJKHJldmlzaW9uIDIzNDUx
NCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNw
bGF5TGlzdEl0ZW1zLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4NSw3ICs2ODUsNyBAQCBwdWJsaWM6
CiAgICAgRmxvYXRTaXplIHNwYWNpbmcoKSBjb25zdCB7IHJldHVybiBtX3NwYWNpbmc7IH0KIAog
cHJpdmF0ZToKLSAgICBEcmF3UGF0dGVybihJbWFnZSYsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29u
c3QgRmxvYXRQb2ludCYgcGhhc2UsIGNvbnN0IEZsb2F0U2l6ZSYgc3BhY2luZywgQ29tcG9zaXRl
T3BlcmF0b3IsIEJsZW5kTW9kZSA9IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgRHJhd1BhdHRlcm4o
SW1hZ2UmLCBjb25zdCBGbG9hdFJlY3QmIGRlc3RSZWN0LCBjb25zdCBGbG9hdFJlY3QmIHNyY1Jl
Y3QsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UG9pbnQmIHBoYXNlLCBjb25z
dCBGbG9hdFNpemUmIHNwYWNpbmcsIENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUgPSBCbGVu
ZE1vZGU6Ok5vcm1hbCk7CiAKICAgICB2b2lkIGFwcGx5KEdyYXBoaWNzQ29udGV4dCYpIGNvbnN0
IG92ZXJyaWRlOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9kaXNw
bGF5bGlzdHMvRGlzcGxheUxpc3RSZWNvcmRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rpc3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJ
KHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Rp
c3BsYXlsaXN0cy9EaXNwbGF5TGlzdFJlY29yZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDcg
KzkzLDcgQEAgcHJpdmF0ZToKICNpZiBVU0UoQ0cpIHx8IFVTRShDQUlSTykKICAgICB2b2lkIGRy
YXdOYXRpdmVJbWFnZShjb25zdCBOYXRpdmVJbWFnZVB0ciYsIGNvbnN0IEZsb2F0U2l6ZSYgc2Vs
ZlNpemUsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdFJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVj
dCwgQ29tcG9zaXRlT3BlcmF0b3IsIEJsZW5kTW9kZSwgSW1hZ2VPcmllbnRhdGlvbikgb3ZlcnJp
ZGU7CiAjZW5kaWYKLSAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0
JiBkZXN0UmVjdCwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mLCBjb25zdCBGbG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBD
b21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlTm9ybWFsKSBvdmVycmlkZTsK
KyAgICB2b2lkIGRyYXdQYXR0ZXJuKEltYWdlJiwgY29uc3QgRmxvYXRSZWN0JiBkZXN0UmVjdCwg
Y29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBG
bG9hdFBvaW50JiBwaGFzZSwgY29uc3QgRmxvYXRTaXplJiBzcGFjaW5nLCBDb21wb3NpdGVPcGVy
YXRvciwgQmxlbmRNb2RlID0gQmxlbmRNb2RlOjpOb3JtYWwpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBkcmF3UmVjdChjb25zdCBGbG9hdFJlY3QmLCBmbG9hdCBib3JkZXJUaGlja25lc3MpIG92ZXJy
aWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgRmxvYXRQb2ludCYsIGNvbnN0IEZsb2F0UG9p
bnQmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzgsNyArNzgsNyBAQCBUZXh0U3RyZWFtJiBGRUJsZW5kOjpleHRlcm5hbFJlcHJl
c2VudGF0CiB7CiAgICAgdHMgPDwgaW5kZW50IDw8ICJbZmVCbGVuZCI7CiAgICAgRmlsdGVyRWZm
ZWN0OjpleHRlcm5hbFJlcHJlc2VudGF0aW9uKHRzLCByZXByZXNlbnRhdGlvbik7Ci0gICAgdHMg
PDwgIiBtb2RlPVwiIiA8PCAobV9tb2RlID09IEJsZW5kTW9kZU5vcm1hbCA/ICJub3JtYWwiIDog
Y29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZVNvdXJjZU92ZXIsIG1fbW9kZSkpIDw8ICJc
Il1cbiI7CisgICAgdHMgPDwgIiBtb2RlPVwiIiA8PCAobV9tb2RlID09IEJsZW5kTW9kZTo6Tm9y
bWFsID8gIm5vcm1hbCIgOiBjb21wb3NpdGVPcGVyYXRvck5hbWUoQ29tcG9zaXRlU291cmNlT3Zl
ciwgbV9tb2RlKSkgPDwgIlwiXVxuIjsKIAogICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGlu
ZGVudFNjb3BlKHRzKTsKICAgICBpbnB1dEVmZmVjdCgwKS0+ZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bih0cywgcmVwcmVzZW50YXRpb24pOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWly
by9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDUsNyArMzA1LDcg
QEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUmVjdChjbwogCiAgICAgICAgICAg
ICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGFy
ZzwyPigpLCBhcmc8Mz4oKSk7CiAgICAgICAgICAgICBDYWlybzo6ZmlsbFJlY3QocGxhdGZvcm1D
b250ZXh0LCBhcmc8MD4oKSwgYXJnPDE+KCksIGFyZzw0PigpKTsKLSAgICAgICAgICAgIENhaXJv
OjpTdGF0ZTo6c2V0Q29tcG9zaXRlT3BlcmF0aW9uKHBsYXRmb3JtQ29udGV4dCwgYXJnPDU+KCks
IEJsZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0
ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRleHQsIGFyZzw1PigpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7
CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMpIG92ZXJyaWRl
CkBAIC0zMzUsNyArMzM1LDcgQEAgdm9pZCBDYWlyb09wZXJhdGlvblJlY29yZGVyOjpmaWxsUm91
bmRlZAogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIENhaXJvOjpmaWxsUmVjdChw
bGF0Zm9ybUNvbnRleHQsIHJlY3QucmVjdCgpLCBhcmc8MT4oKSwgYXJnPDQ+KCkpOwogCi0gICAg
ICAgICAgICBDYWlybzo6U3RhdGU6OnNldENvbXBvc2l0ZU9wZXJhdGlvbihwbGF0Zm9ybUNvbnRl
eHQsIGFyZzwyPigpLCBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICAgICAgQ2Fpcm86OlN0YXRl
OjpzZXRDb21wb3NpdGVPcGVyYXRpb24ocGxhdGZvcm1Db250ZXh0LCBhcmc8Mj4oKSwgQmxlbmRN
b2RlOjpOb3JtYWwpOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkdW1wKFRleHRTdHJlYW0m
IHRzKSBvdmVycmlkZQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmlj
b3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25SZWNvcmRlci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvY2Fpcm8vTmljb3NpYUNh
aXJvT3BlcmF0aW9uUmVjb3JkZXIuaAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS9jYWlyby9OaWNvc2lhQ2Fpcm9PcGVyYXRpb25S
ZWNvcmRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHByaXZhdGU6CiAgICAg
V2ViQ29yZTo6SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNv
bnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0U2l6ZSYsIGNvbnN0
IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7CiAgICAgV2ViQ29yZTo6
SW1hZ2VEcmF3UmVzdWx0IGRyYXdUaWxlZEltYWdlKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6SW1hZ2U6OlRpbGVSdWxlLCBXZWJDb3JlOjpJbWFnZTo6
VGlsZVJ1bGUsIGNvbnN0IFdlYkNvcmU6OkltYWdlUGFpbnRpbmdPcHRpb25zJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBkcmF3TmF0aXZlSW1hZ2UoY29uc3QgV2ViQ29yZTo6TmF0aXZlSW1hZ2VQdHIm
LCBjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBXZWJDb3JlOjpDb21wb3NpdGVPcGVyYXRvciwgV2Vi
Q29yZTo6QmxlbmRNb2RlLCBXZWJDb3JlOjpJbWFnZU9yaWVudGF0aW9uKSBvdmVycmlkZTsKLSAg
ICB2b2lkIGRyYXdQYXR0ZXJuKFdlYkNvcmU6OkltYWdlJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6QWZmaW5lVHJh
bnNmb3JtJiwgY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0
U2l6ZSYsIFdlYkNvcmU6OkNvbXBvc2l0ZU9wZXJhdG9yLCBXZWJDb3JlOjpCbGVuZE1vZGUgPSBX
ZWJDb3JlOjpCbGVuZE1vZGVOb3JtYWwpIG92ZXJyaWRlOworICAgIHZvaWQgZHJhd1BhdHRlcm4o
V2ViQ29yZTo6SW1hZ2UmLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFBvaW50JiwgY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJiwgV2ViQ29yZTo6Q29t
cG9zaXRlT3BlcmF0b3IsIFdlYkNvcmU6OkJsZW5kTW9kZSA9IFdlYkNvcmU6OkJsZW5kTW9kZTo6
Tm9ybWFsKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZHJhd1JlY3QoY29uc3QgV2ViQ29yZTo6Rmxv
YXRSZWN0JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZvaWQgZHJhd0xpbmUoY29uc3QgV2ViQ29y
ZTo6RmxvYXRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmKSBvdmVycmlkZTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9HcmFwaGljc0NvbnRleHRE
aXJlY3QyRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVjdDJELmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0dyYXBoaWNzQ29udGV4dERpcmVj
dDJELmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg4MSw1NyArMTg4MSw1NyBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDo6c2V0UGxhdGZvcm1Db21wb3NpCiAgICAgRDJEMV9CTEVORF9NT0RFIHRhcmdl
dEJsZW5kTW9kZSA9IEQyRDFfQkxFTkRfTU9ERV9TQ1JFRU47CiAgICAgRDJEMV9DT01QT1NJVEVf
TU9ERSB0YXJnZXRDb21wb3NpdGVNb2RlID0gRDJEMV9DT01QT1NJVEVfTU9ERV9TT1VSQ0VfQVRP
UDsgLy8gPz8/CiAKLSAgICBpZiAoYmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1hbCkgeworICAg
IGlmIChibGVuZE1vZGUgIT0gQmxlbmRNb2RlOjpOb3JtYWwpIHsKICAgICAgICAgc3dpdGNoIChi
bGVuZE1vZGUpIHsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVNdWx0aXBseToKKyAgICAgICAgY2Fz
ZSBCbGVuZE1vZGU6Ok11bHRpcGx5OgogICAgICAgICAgICAgdGFyZ2V0QmxlbmRNb2RlID0gRDJE
MV9CTEVORF9NT0RFX01VTFRJUExZOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
QmxlbmRNb2RlU2NyZWVuOgorICAgICAgICBjYXNlIEJsZW5kTW9kZTo6U2NyZWVuOgogICAgICAg
ICAgICAgdGFyZ2V0QmxlbmRNb2RlID0gRDJEMV9CTEVORF9NT0RFX1NDUkVFTjsKICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZU92ZXJsYXk6CisgICAgICAgIGNhc2Ug
QmxlbmRNb2RlOjpPdmVybGF5OgogICAgICAgICAgICAgdGFyZ2V0QmxlbmRNb2RlID0gRDJEMV9C
TEVORF9NT0RFX09WRVJMQVk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVu
ZE1vZGVEYXJrZW46CisgICAgICAgIGNhc2UgQmxlbmRNb2RlOjpEYXJrZW46CiAgICAgICAgICAg
ICB0YXJnZXRCbGVuZE1vZGUgPSBEMkQxX0JMRU5EX01PREVfREFSS0VOOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlTGlnaHRlbjoKKyAgICAgICAgY2FzZSBCbGVu
ZE1vZGU6OkxpZ2h0ZW46CiAgICAgICAgICAgICB0YXJnZXRCbGVuZE1vZGUgPSBEMkQxX0JMRU5E
X01PREVfTElHSFRFTjsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9k
ZUNvbG9yRG9kZ2U6CisgICAgICAgIGNhc2UgQmxlbmRNb2RlOjpDb2xvckRvZGdlOgogICAgICAg
ICAgICAgdGFyZ2V0QmxlbmRNb2RlID0gRDJEMV9CTEVORF9NT0RFX0NPTE9SX0RPREdFOwogICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlQ29sb3JCdXJuOgorICAgICAg
ICBjYXNlIEJsZW5kTW9kZTo6Q29sb3JCdXJuOgogICAgICAgICAgICAgdGFyZ2V0QmxlbmRNb2Rl
ID0gRDJEMV9CTEVORF9NT0RFX0NPTE9SX0JVUk47CiAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBCbGVuZE1vZGVIYXJkTGlnaHQ6CisgICAgICAgIGNhc2UgQmxlbmRNb2RlOjpIYXJk
TGlnaHQ6CiAgICAgICAgICAgICB0YXJnZXRCbGVuZE1vZGUgPSBEMkQxX0JMRU5EX01PREVfSEFS
RF9MSUdIVDsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZVNvZnRM
aWdodDoKKyAgICAgICAgY2FzZSBCbGVuZE1vZGU6OlNvZnRMaWdodDoKICAgICAgICAgICAgIHRh
cmdldEJsZW5kTW9kZSA9IEQyRDFfQkxFTkRfTU9ERV9TT0ZUX0xJR0hUOwogICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlRGlmZmVyZW5jZToKKyAgICAgICAgY2FzZSBC
bGVuZE1vZGU6OkRpZmZlcmVuY2U6CiAgICAgICAgICAgICB0YXJnZXRCbGVuZE1vZGUgPSBEMkQx
X0JMRU5EX01PREVfRElGRkVSRU5DRTsKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNl
IEJsZW5kTW9kZUV4Y2x1c2lvbjoKKyAgICAgICAgY2FzZSBCbGVuZE1vZGU6OkV4Y2x1c2lvbjoK
ICAgICAgICAgICAgIHRhcmdldEJsZW5kTW9kZSA9IEQyRDFfQkxFTkRfTU9ERV9FWENMVVNJT047
CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVuZE1vZGVIdWU6CisgICAgICAg
IGNhc2UgQmxlbmRNb2RlOjpIdWU6CiAgICAgICAgICAgICB0YXJnZXRCbGVuZE1vZGUgPSBEMkQx
X0JMRU5EX01PREVfSFVFOwogICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRN
b2RlU2F0dXJhdGlvbjoKKyAgICAgICAgY2FzZSBCbGVuZE1vZGU6OlNhdHVyYXRpb246CiAgICAg
ICAgICAgICB0YXJnZXRCbGVuZE1vZGUgPSBEMkQxX0JMRU5EX01PREVfU0FUVVJBVElPTjsKICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEJsZW5kTW9kZUNvbG9yOgorICAgICAgICBj
YXNlIEJsZW5kTW9kZTo6Q29sb3I6CiAgICAgICAgICAgICB0YXJnZXRCbGVuZE1vZGUgPSBEMkQx
X0JMRU5EX01PREVfQ09MT1I7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBCbGVu
ZE1vZGVMdW1pbm9zaXR5OgorICAgICAgICBjYXNlIEJsZW5kTW9kZTo6THVtaW5vc2l0eToKICAg
ICAgICAgICAgIHRhcmdldEJsZW5kTW9kZSA9IEQyRDFfQkxFTkRfTU9ERV9MVU1JTk9TSVRZOwog
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlUGx1c0RhcmtlcjoKKyAg
ICAgICAgY2FzZSBCbGVuZE1vZGU6OlBsdXNEYXJrZXI6CiAgICAgICAgICAgICB0YXJnZXRCbGVu
ZE1vZGUgPSBEMkQxX0JMRU5EX01PREVfREFSS0VSX0NPTE9SOwogICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGNhc2UgQmxlbmRNb2RlUGx1c0xpZ2h0ZXI6CisgICAgICAgIGNhc2UgQmxlbmRN
b2RlOjpQbHVzTGlnaHRlcjoKICAgICAgICAgICAgIHRhcmdldEJsZW5kTW9kZSA9IEQyRDFfQkxF
TkRfTU9ERV9MSUdIVEVSX0NPTE9SOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dp
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ltYWdlQ0dXaW4uY3BwCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDR1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcg
Kzc5LDcgQEAgYm9vbCBCaXRtYXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlm
IChzaXplKQogICAgICAgICBkcmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVj
dCgwLjBmLCAwLjBmLCBibXBJbmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwg
Q29tcG9zaXRlQ29weSk7CiAgICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4w
ZiwgMC4wZiwgYm1wSW5mby5ibVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3Np
dGVDb3B5LCBCbGVuZE1vZGVOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdl
T3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAu
MGYsIDAuMGYsIGJtcEluZm8uYm1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgw
LjBmLCAwLjBmLCBpbWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9z
aXRlQ29weSwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIElt
YWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBD
R0NvbnRleHRSZWxlYXNlKGNnQ29udGV4dCk7CkBAIC05NSw3ICs5NSw3IEBAIHZvaWQgQml0bWFw
SW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAgICAgICAgaWYgKGltYWdlICYmIENHSW1h
Z2VHZXRIZWlnaHQoaW1hZ2UpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQo
KSkgJiYgQ0dJbWFnZUdldFdpZHRoKGltYWdlKSA9PSBzdGF0aWNfY2FzdDxzaXplX3Q+KHNyY1Np
emUud2lkdGgoKSkpIHsKICAgICAgICAgICAgIHNpemVfdCBjdXJyZW50RnJhbWUgPSBtX2N1cnJl
bnRGcmFtZTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gaTsKLSAgICAgICAgICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUud2lkdGgoKSwg
c3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGVOb3JtYWwsIERlY29kaW5n
TW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKKyAgICAg
ICAgICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIHNyY1NpemUu
d2lkdGgoKSwgc3JjU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOwogICAgICAgICAgICAgbV9jdXJyZW50RnJhbWUgPSBjdXJyZW50RnJhbWU7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTEwMyw3ICsxMDMsNyBAQCB2b2lkIEJpdG1hcElt
YWdlOjpkcmF3RnJhbWVNYXRjaGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29y
cmVjdCBzaXplIHdhcyBmb3VuZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFt
ZQogICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRy
YXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgp
LCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsLCBEZWNv
ZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7Cisg
ICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgaW1hZ2VTaXplLndp
ZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVuZE1vZGU6Ok5vcm1h
bCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy93aW4vSW1hZ2VDYWlyb1dpbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlQ2Fpcm9XaW4uY3BwCShyZXZp
c2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vSW1h
Z2VDYWlyb1dpbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDcgKzgxLDcgQEAgYm9vbCBCaXRt
YXBJbWFnZTo6Z2V0SEJJVE1BUE9mU2l6ZShIQklUTQogICAgIGlmIChzaXplKQogICAgICAgICBk
cmF3RnJhbWVNYXRjaGluZ1NvdXJjZVNpemUoZ2MsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBibXBJ
bmZvLmJtV2lkdGgsIGJtcEluZm8uYm1IZWlnaHQpLCAqc2l6ZSwgQ29tcG9zaXRlQ29weSk7CiAg
ICAgZWxzZQotICAgICAgICBkcmF3KGdjLCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwgYm1wSW5mby5i
bVdpZHRoLCBibXBJbmZvLmJtSGVpZ2h0KSwgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6
ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBDb21wb3NpdGVDb3B5LCBCbGVuZE1vZGVO
b3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlw
dGlvbigpKTsKKyAgICAgICAgZHJhdyhnYywgRmxvYXRSZWN0KDAuMGYsIDAuMGYsIGJtcEluZm8u
Ym1XaWR0aCwgYm1wSW5mby5ibUhlaWdodCksIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBpbWFnZVNp
emUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgQ29tcG9zaXRlQ29weSwgQmxlbmRNb2Rl
OjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNj
cmlwdGlvbigpKTsKIAogICAgIC8vIERvIGNsZWFudXAKICAgICBjYWlyb19kZXN0cm95KHRhcmdl
dFJlZik7CkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0
Y2hpbmdTb3VyYwogICAgICAgICBpZiAoY2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfaGVpZ2h0KHN1
cmZhY2UuZ2V0KCkpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS5oZWlnaHQoKSkgJiYg
Y2Fpcm9faW1hZ2Vfc3VyZmFjZV9nZXRfd2lkdGgoc3VyZmFjZS5nZXQoKSkgPT0gc3RhdGljX2Nh
c3Q8c2l6ZV90PihzcmNTaXplLndpZHRoKCkpKSB7CiAgICAgICAgICAgICBzaXplX3QgY3VycmVu
dEZyYW1lID0gbV9jdXJyZW50RnJhbWU7CiAgICAgICAgICAgICBtX2N1cnJlbnRGcmFtZSA9IGk7
Ci0gICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBz
cmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2Rl
Tm9ybWFsLCBEZWNvZGluZ01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSk7CisgICAgICAgICAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBm
LCAwLjBmLCBzcmNTaXplLndpZHRoKCksIHNyY1NpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIG1fY3VycmVudEZyYW1lID0gY3VycmVu
dEZyYW1lOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMDgsNyArMTA4LDcg
QEAgdm9pZCBCaXRtYXBJbWFnZTo6ZHJhd0ZyYW1lTWF0Y2hpbmdTb3VyYwogCiAgICAgLy8gTm8g
aW1hZ2Ugb2YgdGhlIGNvcnJlY3Qgc2l6ZSB3YXMgZm91bmQsIGZhbGxiYWNrIHRvIGRyYXdpbmcg
dGhlIGN1cnJlbnQgZnJhbWUKICAgICBGbG9hdFNpemUgaW1hZ2VTaXplID0gQml0bWFwSW1hZ2U6
OnNpemUoKTsKLSAgICBkcmF3KGN0eHQsIGRzdFJlY3QsIEZsb2F0UmVjdCgwLjBmLCAwLjBmLCBp
bWFnZVNpemUud2lkdGgoKSwgaW1hZ2VTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5k
TW9kZU5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRhdGlvbkRl
c2NyaXB0aW9uKCkpOworICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwgRmxvYXRSZWN0KDAuMGYsIDAu
MGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0KCkpLCBjb21wb3NpdGVPcCwg
QmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50
YXRpb25EZXNjcmlwdGlvbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9JbWFnZURp
cmVjdDJELmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ltYWdlRGlyZWN0MkQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04MSw3ICs4
MSw3IEBAIHZvaWQgQml0bWFwSW1hZ2U6OmRyYXdGcmFtZU1hdGNoaW5nU291cmMKICAgICAgICAg
aWYgKGltYWdlICYmIGNsYW1wVG88c2l6ZV90PihpbWFnZVNpemUuaGVpZ2h0KSA9PSBzdGF0aWNf
Y2FzdDxzaXplX3Q+KHNyY1NpemUuaGVpZ2h0KCkpICYmIGNsYW1wVG88c2l6ZV90PihpbWFnZVNp
emUud2lkdGgpID09IHN0YXRpY19jYXN0PHNpemVfdD4oc3JjU2l6ZS53aWR0aCgpKSkgewogICAg
ICAgICAgICAgc2l6ZV90IGN1cnJlbnRGcmFtZSA9IG1fY3VycmVudEZyYW1lOwogICAgICAgICAg
ICAgbV9jdXJyZW50RnJhbWUgPSBpOwotICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBG
bG9hdFJlY3QoMC4wZiwgMC4wZiwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwg
Y29tcG9zaXRlT3AsIEJsZW5kTW9kZU5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9u
KCkpOworICAgICAgICAgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4w
Ziwgc3JjU2l6ZS53aWR0aCgpLCBzcmNTaXplLmhlaWdodCgpKSwgY29tcG9zaXRlT3AsIEJsZW5k
TW9kZTo6Tm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CiAgICAgICAgICAg
ICBtX2N1cnJlbnRGcmFtZSA9IGN1cnJlbnRGcmFtZTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQpAQCAtODksNyArODksNyBAQCB2b2lkIEJpdG1hcEltYWdlOjpkcmF3RnJhbWVNYXRj
aGluZ1NvdXJjCiAKICAgICAvLyBObyBpbWFnZSBvZiB0aGUgY29ycmVjdCBzaXplIHdhcyBmb3Vu
ZCwgZmFsbGJhY2sgdG8gZHJhd2luZyB0aGUgY3VycmVudCBmcmFtZQogICAgIEZsb2F0U2l6ZSBp
bWFnZVNpemUgPSBCaXRtYXBJbWFnZTo6c2l6ZSgpOwotICAgIGRyYXcoY3R4dCwgZHN0UmVjdCwg
RmxvYXRSZWN0KDAuMGYsIDAuMGYsIGltYWdlU2l6ZS53aWR0aCgpLCBpbWFnZVNpemUuaGVpZ2h0
KCkpLCBjb21wb3NpdGVPcCwgQmxlbmRNb2RlTm9ybWFsLCBJbWFnZU9yaWVudGF0aW9uRGVzY3Jp
cHRpb24oKSk7CisgICAgZHJhdyhjdHh0LCBkc3RSZWN0LCBGbG9hdFJlY3QoMC4wZiwgMC4wZiwg
aW1hZ2VTaXplLndpZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSksIGNvbXBvc2l0ZU9wLCBCbGVu
ZE1vZGU6Ok5vcm1hbCwgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uKCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1ODEsNyArMTU4MSw3IEBAIHZvaWQgUmVuZGVy
Qm94OjpwYWludEZpbGxMYXllcnMoY29uc3QgUGEKICAgICBmb3IgKGF1dG8qIGxheWVyID0gJmZp
bGxMYXllcjsgbGF5ZXI7IGxheWVyID0gbGF5ZXItPm5leHQoKSkgewogICAgICAgICBsYXllcnMu
YXBwZW5kKGxheWVyKTsKIAotICAgICAgICBpZiAobGF5ZXItPmJsZW5kTW9kZSgpICE9IEJsZW5k
TW9kZU5vcm1hbCkKKyAgICAgICAgaWYgKGxheWVyLT5ibGVuZE1vZGUoKSAhPSBCbGVuZE1vZGU6
Ok5vcm1hbCkKICAgICAgICAgICAgIHNob3VsZERyYXdCYWNrZ3JvdW5kSW5TZXBhcmF0ZUJ1ZmZl
ciA9IHRydWU7CiAKICAgICAgICAgLy8gU3RvcCB0cmF2ZXJzYWwgd2hlbiBhbiBvcGFxdWUgbGF5
ZXIgaXMgZW5jb3VudGVyZWQuCkBAIC0xNTkzLDcgKzE1OTMsNyBAQCB2b2lkIFJlbmRlckJveDo6
cGFpbnRGaWxsTGF5ZXJzKGNvbnN0IFBhCiAgICAgICAgIC8vIGFuZCBwYXNzIGl0IGRvd24uCiAK
ICAgICAgICAgLy8gVGhlIGNsaXBPY2NsdWRlc05leHRMYXllcnMgY29uZGl0aW9uIG11c3QgYmUg
ZXZhbHVhdGVkIGZpcnN0IHRvIGF2b2lkIHNob3J0LWNpcmN1aXRpbmcuCi0gICAgICAgIGlmIChs
YXllci0+Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhsYXllciA9PSAmZmlsbExheWVyKSAmJiBsYXll
ci0+aGFzT3BhcXVlSW1hZ2UoKnRoaXMpICYmIGxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhp
cywgc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGxheWVyLT5oYXNSZXBlYXRYWSgpICYmIGxh
eWVyLT5ibGVuZE1vZGUoKSA9PSBCbGVuZE1vZGVOb3JtYWwpCisgICAgICAgIGlmIChsYXllci0+
Y2xpcE9jY2x1ZGVzTmV4dExheWVycyhsYXllciA9PSAmZmlsbExheWVyKSAmJiBsYXllci0+aGFz
T3BhcXVlSW1hZ2UoKnRoaXMpICYmIGxheWVyLT5pbWFnZSgpLT5jYW5SZW5kZXIodGhpcywgc3R5
bGUoKS5lZmZlY3RpdmVab29tKCkpICYmIGxheWVyLT5oYXNSZXBlYXRYWSgpICYmIGxheWVyLT5i
bGVuZE1vZGUoKSA9PSBCbGVuZE1vZGU6Ok5vcm1hbCkKICAgICAgICAgICAgIGJyZWFrOwogICAg
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckltYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3BwCShyZXZp
c2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVySW1hZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC02MTcsNyArNjE3LDcgQEAgSW1hZ2VEcmF3UmVzdWx0IFJlbmRl
ckltYWdlOjpwYWludEludG9SZQogCiAgICAgSW1hZ2VPcmllbnRhdGlvbkRlc2NyaXB0aW9uIG9y
aWVudGF0aW9uRGVzY3JpcHRpb24oc2hvdWxkUmVzcGVjdEltYWdlT3JpZW50YXRpb24oKSwgc3R5
bGUoKS5pbWFnZU9yaWVudGF0aW9uKCkpOwogICAgIGF1dG8gZGVjb2RpbmdNb2RlID0gZGVjb2Rp
bmdNb2RlRm9ySW1hZ2VEcmF3KCppbWFnZSwgcGFpbnRJbmZvKTsKLSAgICBhdXRvIGRyYXdSZXN1
bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFnZVBhaW50
aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlTm9ybWFsLCBkZWNvZGluZ01v
ZGUsIG9yaWVudGF0aW9uRGVzY3JpcHRpb24sIGludGVycG9sYXRpb24pKTsKKyAgICBhdXRvIGRy
YXdSZXN1bHQgPSBwYWludEluZm8uY29udGV4dCgpLmRyYXdJbWFnZSgqaW1nLCByZWN0LCBJbWFn
ZVBhaW50aW5nT3B0aW9ucyhjb21wb3NpdGVPcGVyYXRvciwgQmxlbmRNb2RlOjpOb3JtYWwsIGRl
Y29kaW5nTW9kZSwgb3JpZW50YXRpb25EZXNjcmlwdGlvbiwgaW50ZXJwb2xhdGlvbikpOwogICAg
IGlmIChkcmF3UmVzdWx0ID09IEltYWdlRHJhd1Jlc3VsdDo6RGlkUmVxdWVzdERlY29kaW5nKQog
ICAgICAgICBpbWFnZVJlc291cmNlKCkuY2FjaGVkSW1hZ2UoKS0+YWRkQ2xpZW50V2FpdGluZ0Zv
ckFzeW5jRGVjb2RpbmcoKnRoaXMpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJMYXllci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMyw3ICszMTMsNyBAQCBS
ZW5kZXJMYXllcjo6UmVuZGVyTGF5ZXIoUmVuZGVyTGF5ZXJNb2RlCiAjZW5kaWYKICAgICAsIG1f
aGFzRmlsdGVySW5mbyhmYWxzZSkKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQotICAgICwg
bV9ibGVuZE1vZGUoQmxlbmRNb2RlTm9ybWFsKQorICAgICwgbV9ibGVuZE1vZGUoc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEJsZW5kTW9kZTo6Tm9ybWFsKSkKICAgICAsIG1faGFzTm90SXNvbGF0ZWRD
b21wb3NpdGVkQmxlbmRpbmdEZXNjZW5kYW50cyhmYWxzZSkKICAgICAsIG1faGFzTm90SXNvbGF0
ZWRCbGVuZGluZ0Rlc2NlbmRhbnRzKGZhbHNlKQogICAgICwgbV9oYXNOb3RJc29sYXRlZEJsZW5k
aW5nRGVzY2VuZGFudHNTdGF0dXNEaXJ0eShmYWxzZSkKQEAgLTkyNiw3ICs5MjYsNyBAQCB2b2lk
IFJlbmRlckxheWVyOjpwb3NpdGlvbk5ld2x5Q3JlYXRlZE92CiAKIHZvaWQgUmVuZGVyTGF5ZXI6
OnVwZGF0ZUJsZW5kTW9kZSgpCiB7Ci0gICAgYm9vbCBoYWRCbGVuZE1vZGUgPSBtX2JsZW5kTW9k
ZSAhPSBCbGVuZE1vZGVOb3JtYWw7CisgICAgYm9vbCBoYWRCbGVuZE1vZGUgPSBzdGF0aWNfY2Fz
dDxCbGVuZE1vZGU+KG1fYmxlbmRNb2RlKSAhPSBCbGVuZE1vZGU6Ok5vcm1hbDsKICAgICBpZiAo
cGFyZW50KCkgJiYgaGFkQmxlbmRNb2RlICE9IGhhc0JsZW5kTW9kZSgpKSB7CiAgICAgICAgIGlm
IChoYXNCbGVuZE1vZGUoKSkKICAgICAgICAgICAgIHBhcmVudCgpLT51cGRhdGVBbmNlc3RvckNo
YWluSGFzQmxlbmRpbmdEZXNjZW5kYW50cygpOwpAQCAtOTM1LDggKzkzNSw4IEBAIHZvaWQgUmVu
ZGVyTGF5ZXI6OnVwZGF0ZUJsZW5kTW9kZSgpCiAgICAgfQogCiAgICAgQmxlbmRNb2RlIG5ld0Js
ZW5kTW9kZSA9IHJlbmRlcmVyKCkuc3R5bGUoKS5ibGVuZE1vZGUoKTsKLSAgICBpZiAobmV3Qmxl
bmRNb2RlICE9IG1fYmxlbmRNb2RlKQotICAgICAgICBtX2JsZW5kTW9kZSA9IG5ld0JsZW5kTW9k
ZTsKKyAgICBpZiAobmV3QmxlbmRNb2RlICE9IHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9ibGVu
ZE1vZGUpKQorICAgICAgICBtX2JsZW5kTW9kZSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihuZXdC
bGVuZE1vZGUpOwogfQogCiB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVBbmNlc3RvckNoYWluSGFz
QmxlbmRpbmdEZXNjZW5kYW50cygpCkBAIC0xODI3LDcgKzE4MjcsNyBAQCB2b2lkIFJlbmRlckxh
eWVyOjpiZWdpblRyYW5zcGFyZW5jeUxheWVyCiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5H
KQogICAgICAgICBpZiAodXNlc0NvbXBvc2l0ZU9wZXJhdGlvbikKLSAgICAgICAgICAgIGNvbnRl
eHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKGNvbnRleHQuY29tcG9zaXRlT3BlcmF0aW9uKCksIEJs
ZW5kTW9kZU5vcm1hbCk7CisgICAgICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlv
bihjb250ZXh0LmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAjZW5k
aWYKIAogI2lmZGVmIFJFVkVBTF9UUkFOU1BBUkVOQ1lfTEFZRVJTCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAkocmV2aXNpb24gMjM0
NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTU0MCw3ICs1NDAsNyBAQCB2b2lkIFJlbmRlckxheWVyQmFja2lu
Zzo6dXBkYXRlQmxlbmRNb2RlCiAgICAgLy8gRklYTUU6IHdoZXJlIGlzIHRoZSBibGVuZCBtb2Rl
IHVwZGF0ZWQgd2hlbiBtX2FuY2VzdG9yQ2xpcHBpbmdMYXllcnMgY29tZSBhbmQgZ28/CiAgICAg
aWYgKG1fYW5jZXN0b3JDbGlwcGluZ0xheWVyKSB7CiAgICAgICAgIG1fYW5jZXN0b3JDbGlwcGlu
Z0xheWVyLT5zZXRCbGVuZE1vZGUoc3R5bGUuYmxlbmRNb2RlKCkpOwotICAgICAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldEJsZW5kTW9kZShCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICBtX2dyYXBo
aWNzTGF5ZXItPnNldEJsZW5kTW9kZShCbGVuZE1vZGU6Ok5vcm1hbCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIG1fZ3JhcGhpY3NMYXllci0+c2V0QmxlbmRNb2RlKHN0eWxlLmJsZW5kTW9kZSgpKTsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9GaWxsTGF5ZXIuY3Bw
CShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQCBGaWxsTGF5ZXI6OkZp
bGxMYXllcihGaWxsTGF5ZXJUeXBlIHR5cGUpCiAgICAgLCBtX3JlcGVhdFkoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxSZXBlYXRZKHR5cGUpKSkKICAgICAsIG1f
Y29tcG9zaXRlKEZpbGxMYXllcjo6aW5pdGlhbEZpbGxDb21wb3NpdGUodHlwZSkpCiAgICAgLCBt
X3NpemVUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWxsU2l6ZVR5cGU6Ok5vbmUpKQotICAg
ICwgbV9ibGVuZE1vZGUoRmlsbExheWVyOjppbml0aWFsRmlsbEJsZW5kTW9kZSh0eXBlKSkKKyAg
ICAsIG1fYmxlbmRNb2RlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihGaWxsTGF5ZXI6OmluaXRpYWxG
aWxsQmxlbmRNb2RlKHR5cGUpKSkKICAgICAsIG1fbWFza1NvdXJjZVR5cGUoc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEZpbGxMYXllcjo6aW5pdGlhbEZpbGxNYXNrU291cmNlVHlwZSh0eXBlKSkpCiAg
ICAgLCBtX2ltYWdlU2V0KGZhbHNlKQogICAgICwgbV9hdHRhY2htZW50U2V0KGZhbHNlKQpAQCAt
MzU3LDcgKzM1Nyw3IEBAIGJvb2wgRmlsbExheWVyOjpoYXNPcGFxdWVJbWFnZShjb25zdCBSZW4K
ICAgICBpZiAobV9jb21wb3NpdGUgPT0gQ29tcG9zaXRlQ2xlYXIgfHwgbV9jb21wb3NpdGUgPT0g
Q29tcG9zaXRlQ29weSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gbV9ibGVu
ZE1vZGUgPT0gQmxlbmRNb2RlTm9ybWFsICYmIG1fY29tcG9zaXRlID09IENvbXBvc2l0ZVNvdXJj
ZU92ZXIgJiYgbV9pbWFnZS0+a25vd25Ub0JlT3BhcXVlKCZyZW5kZXJlcik7CisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9ibGVuZE1vZGUpID09IEJsZW5kTW9kZTo6Tm9ybWFs
ICYmIG1fY29tcG9zaXRlID09IENvbXBvc2l0ZVNvdXJjZU92ZXIgJiYgbV9pbWFnZS0+a25vd25U
b0JlT3BhcXVlKCZyZW5kZXJlcik7CiB9CiAKIGJvb2wgRmlsbExheWVyOjpoYXNSZXBlYXRYWSgp
IGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmlsbExheWVyLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0ZpbGxMYXllci5o
CShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvRmls
bExheWVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw3ICsxNjIsNyBAQCBwdWJsaWM6CiAgICAg
c3RhdGljIEZpbGxSZXBlYXQgaW5pdGlhbEZpbGxSZXBlYXRYKEZpbGxMYXllclR5cGUpIHsgcmV0
dXJuIEZpbGxSZXBlYXQ6OlJlcGVhdDsgfQogICAgIHN0YXRpYyBGaWxsUmVwZWF0IGluaXRpYWxG
aWxsUmVwZWF0WShGaWxsTGF5ZXJUeXBlKSB7IHJldHVybiBGaWxsUmVwZWF0OjpSZXBlYXQ7IH0K
ICAgICBzdGF0aWMgQ29tcG9zaXRlT3BlcmF0b3IgaW5pdGlhbEZpbGxDb21wb3NpdGUoRmlsbExh
eWVyVHlwZSkgeyByZXR1cm4gQ29tcG9zaXRlU291cmNlT3ZlcjsgfQotICAgIHN0YXRpYyBCbGVu
ZE1vZGUgaW5pdGlhbEZpbGxCbGVuZE1vZGUoRmlsbExheWVyVHlwZSkgeyByZXR1cm4gQmxlbmRN
b2RlTm9ybWFsOyB9CisgICAgc3RhdGljIEJsZW5kTW9kZSBpbml0aWFsRmlsbEJsZW5kTW9kZShG
aWxsTGF5ZXJUeXBlKSB7IHJldHVybiBCbGVuZE1vZGU6Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBG
aWxsU2l6ZSBpbml0aWFsRmlsbFNpemUoRmlsbExheWVyVHlwZSkgeyByZXR1cm4geyB9OyB9CiAg
ICAgc3RhdGljIExlbmd0aCBpbml0aWFsRmlsbFhQb3NpdGlvbihGaWxsTGF5ZXJUeXBlKSB7IHJl
dHVybiBMZW5ndGgoMC4wZiwgUGVyY2VudCk7IH0KICAgICBzdGF0aWMgTGVuZ3RoIGluaXRpYWxG
aWxsWVBvc2l0aW9uKEZpbGxMYXllclR5cGUpIHsgcmV0dXJuIExlbmd0aCgwLjBmLCBQZXJjZW50
KTsgfQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmgJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NjYsMTQgKzc2NiwxNCBAQCBwdWJsaWM6
CiAKICNpZiBFTkFCTEUoQ1NTX0NPTVBPU0lUSU5HKQogICAgIEJsZW5kTW9kZSBibGVuZE1vZGUo
KSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxCbGVuZE1vZGU+KG1fcmFyZU5vbkluaGVyaXRl
ZERhdGEtPmVmZmVjdGl2ZUJsZW5kTW9kZSk7IH0KLSAgICB2b2lkIHNldEJsZW5kTW9kZShCbGVu
ZE1vZGUgbW9kZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGVmZmVjdGl2ZUJs
ZW5kTW9kZSwgbW9kZSk7IH0KLSAgICBib29sIGhhc0JsZW5kTW9kZSgpIGNvbnN0IHsgcmV0dXJu
IHN0YXRpY19jYXN0PEJsZW5kTW9kZT4obV9yYXJlTm9uSW5oZXJpdGVkRGF0YS0+ZWZmZWN0aXZl
QmxlbmRNb2RlKSAhPSBCbGVuZE1vZGVOb3JtYWw7IH0KKyAgICB2b2lkIHNldEJsZW5kTW9kZShC
bGVuZE1vZGUgbW9kZSkgeyBTRVRfVkFSKG1fcmFyZU5vbkluaGVyaXRlZERhdGEsIGVmZmVjdGl2
ZUJsZW5kTW9kZSwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1vZGUpKTsgfQorICAgIGJvb2wgaGFz
QmxlbmRNb2RlKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QmxlbmRNb2RlPihtX3JhcmVO
b25Jbmhlcml0ZWREYXRhLT5lZmZlY3RpdmVCbGVuZE1vZGUpICE9IEJsZW5kTW9kZTo6Tm9ybWFs
OyB9CiAKICAgICBJc29sYXRpb24gaXNvbGF0aW9uKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nh
c3Q8SXNvbGF0aW9uPihtX3JhcmVOb25Jbmhlcml0ZWREYXRhLT5pc29sYXRpb24pOyB9CiAgICAg
dm9pZCBzZXRJc29sYXRpb24oSXNvbGF0aW9uIGlzb2xhdGlvbikgeyBTRVRfVkFSKG1fcmFyZU5v
bkluaGVyaXRlZERhdGEsIGlzb2xhdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGlzb2xhdGlv
bikpOyB9CiAgICAgYm9vbCBoYXNJc29sYXRpb24oKSBjb25zdCB7IHJldHVybiBpc29sYXRpb24o
KSAhPSBJc29sYXRpb246OkF1dG87IH0KICNlbHNlCi0gICAgQmxlbmRNb2RlIGJsZW5kTW9kZSgp
IGNvbnN0IHsgcmV0dXJuIEJsZW5kTW9kZU5vcm1hbDsgfQorICAgIEJsZW5kTW9kZSBibGVuZE1v
ZGUoKSBjb25zdCB7IHJldHVybiBCbGVuZE1vZGU6Ok5vcm1hbDsgfQogICAgIGJvb2wgaGFzQmxl
bmRNb2RlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIElzb2xhdGlvbiBpc29sYXRp
b24oKSBjb25zdCB7IHJldHVybiBJc29sYXRpb246OkF1dG87IH0KQEAgLTE2NzEsNyArMTY3MSw3
IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKLSAgICBz
dGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVuZE1vZGUoKSB7IHJldHVybiBCbGVuZE1vZGVOb3Jt
YWw7IH0KKyAgICBzdGF0aWMgQmxlbmRNb2RlIGluaXRpYWxCbGVuZE1vZGUoKSB7IHJldHVybiBC
bGVuZE1vZGU6Ok5vcm1hbDsgfQogICAgIHN0YXRpYyBJc29sYXRpb24gaW5pdGlhbElzb2xhdGlv
bigpIHsgcmV0dXJuIElzb2xhdGlvbjo6QXV0bzsgfQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YS5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtOTEsNyArOTEsNyBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25J
CiAgICAgLCB0ZXh0RGVjb3JhdGlvblN0eWxlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihSZW5kZXJT
dHlsZTo6aW5pdGlhbFRleHREZWNvcmF0aW9uU3R5bGUoKSkpCiAgICAgLCBhc3BlY3RSYXRpb1R5
cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxlOjppbml0aWFsQXNwZWN0UmF0aW9U
eXBlKCkpKQogI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCi0gICAgLCBlZmZlY3RpdmVCbGVu
ZE1vZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxCbGVuZE1vZGUoKSkKKyAgICAsIGVmZmVjdGl2ZUJs
ZW5kTW9kZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVuZGVyU3R5bGU6OmluaXRpYWxCbGVuZE1v
ZGUoKSkpCiAgICAgLCBpc29sYXRpb24oc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbmRlclN0eWxl
Ojppbml0aWFsSXNvbGF0aW9uKCkpKQogI2VuZGlmCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29udGV4dC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcAkocmV2aXNpb24gMjM0NTE0KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIyLDcgKzEy
Miw3IEBAIHZvaWQgU1ZHUmVuZGVyaW5nQ29udGV4dDo6cHJlcGFyZVRvUmVuZGUKICAgICAgICAg
ICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuYmVnaW5UcmFuc3BhcmVuY3lMYXllcihvcGFjaXR5
KTsKIAogICAgICAgICAgICAgaWYgKGhhc0JsZW5kTW9kZSkKLSAgICAgICAgICAgICAgICBtX3Bh
aW50SW5mby0+Y29udGV4dCgpLnNldENvbXBvc2l0ZU9wZXJhdGlvbihtX3BhaW50SW5mby0+Y29u
dGV4dCgpLmNvbXBvc2l0ZU9wZXJhdGlvbigpLCBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICAg
ICAgICAgIG1fcGFpbnRJbmZvLT5jb250ZXh0KCkuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKG1fcGFp
bnRJbmZvLT5jb250ZXh0KCkuY29tcG9zaXRlT3BlcmF0aW9uKCksIEJsZW5kTW9kZTo6Tm9ybWFs
KTsKIAogICAgICAgICAgICAgbV9yZW5kZXJpbmdGbGFncyB8PSBFbmRPcGFjaXR5TGF5ZXI7CiAg
ICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJh
dGlvbi5jcHAJKHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEVudW1lcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODcsOSArODcsOSBAQCBzdGF0
aWMgaW5saW5lIHVuc2lnbmVkIGVudW1lcmF0aW9uVmFsdWVGCiAgICAgfQogCiAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgewotICAgICAgICBCbGVuZE1vZGUgbW9kZSA9
IEJsZW5kTW9kZU5vcm1hbDsKKyAgICAgICAgQmxlbmRNb2RlIG1vZGUgPSBCbGVuZE1vZGU6Ok5v
cm1hbDsKICAgICAgICAgcGFyc2VCbGVuZE1vZGUodmFsdWUsIG1vZGUpOwotICAgICAgICByZXR1
cm4gbW9kZTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtb2RlKTsKICAg
ICB9CiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGl0Y2hUaWxlc0F0dHIpCiAgICAg
ICAgIHJldHVybiBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTdGl0Y2hPcHRpb25zPjo6ZnJvbVN0cmlu
Zyh2YWx1ZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDcgKzQ2LDcgQEAgRU5EX1JFR0lTVEVSX0FOSU1B
VEVEX1BST1BFUlRJRVMKIAogaW5saW5lIFNWR0ZFQmxlbmRFbGVtZW50OjpTVkdGRUJsZW5kRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW1lbnQpCiAg
ICAgOiBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXModGFnTmFtZSwgZG9jdW1l
bnQpCi0gICAgLCBtX21vZGUoQmxlbmRNb2RlTm9ybWFsKQorICAgICwgbV9tb2RlKEJsZW5kTW9k
ZTo6Tm9ybWFsKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKFNWR05hbWVzOjpmZUJsZW5kVGFn
KSk7CiAgICAgcmVnaXN0ZXJBbmltYXRlZFByb3BlcnRpZXNGb3JTVkdGRUJsZW5kRWxlbWVudCgp
OwpAQCAtNjAsNyArNjAsNyBAQCBSZWY8U1ZHRkVCbGVuZEVsZW1lbnQ+IFNWR0ZFQmxlbmRFbGVt
ZW50CiB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjptb2RlQXR0cikgewotICAgICAgICBCbGVuZE1vZGUgbW9kZSA9IEJsZW5k
TW9kZU5vcm1hbDsKKyAgICAgICAgQmxlbmRNb2RlIG1vZGUgPSBCbGVuZE1vZGU6Ok5vcm1hbDsK
ICAgICAgICAgaWYgKHBhcnNlQmxlbmRNb2RlKHZhbHVlLCBtb2RlKSkKICAgICAgICAgICAgIHNl
dE1vZGVCYXNlVmFsdWUobW9kZSk7CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5oCShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5
LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdGVtcGxhdGU8Pgogc3RydWN0IFNWR1Byb3Bl
cnR5VHJhaXRzPEJsZW5kTW9kZT4gewotICAgIHN0YXRpYyB1bnNpZ25lZCBoaWdoZXN0RW51bVZh
bHVlKCkgeyByZXR1cm4gQmxlbmRNb2RlTHVtaW5vc2l0eTsgfQorICAgIHN0YXRpYyB1bnNpZ25l
ZCBoaWdoZXN0RW51bVZhbHVlKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEJsZW5k
TW9kZTo6THVtaW5vc2l0eSk7IH0KIAogICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoQmxlbmRN
b2RlIHR5cGUpCiAgICAgewotICAgICAgICBpZiAodHlwZSA8IEJsZW5kTW9kZVBsdXNEYXJrZXIp
CisgICAgICAgIGlmICh0eXBlIDwgQmxlbmRNb2RlOjpQbHVzRGFya2VyKQogICAgICAgICAgICAg
cmV0dXJuIGJsZW5kTW9kZU5hbWUodHlwZSk7CiAKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5n
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJKHJldmlz
aW9uIDIzNDUxNCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9TVkdJbWFnZS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTIxNiw3ICsyMTYsNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJbWFn
ZTo6bmF0aXZlSW1hZ2VGb3JDCiAgICAgaWYgKCFidWZmZXIpIC8vIGZhaWxlZCB0byBhbGxvY2F0
ZSBpbWFnZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGRyYXcoYnVmZmVyLT5jb250
ZXh0KCksIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3Jt
YWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25vdXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlv
bigpKTsKKyAgICBkcmF3KGJ1ZmZlci0+Y29udGV4dCgpLCByZWN0KCksIHJlY3QoKSwgQ29tcG9z
aXRlU291cmNlT3ZlciwgQmxlbmRNb2RlOjpOb3JtYWwsIERlY29kaW5nTW9kZTo6U3luY2hyb25v
dXMsIEltYWdlT3JpZW50YXRpb25EZXNjcmlwdGlvbigpKTsKIAogICAgIC8vIEZJWE1FOiBXSyhC
dWcgMTEzNjU3KTogV2Ugc2hvdWxkIHVzZSBEb250Q29weUJhY2tpbmdTdG9yZSBoZXJlLgogICAg
IHJldHVybiBidWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKQEAgLTI0MCw3ICsyNDAsNyBAQCBOYXRpdmVJbWFnZVB0ciBTVkdJ
bWFnZTo6bmF0aXZlSW1hZ2UoY29uCiAKICAgICBHcmFwaGljc0NvbnRleHQgbG9jYWxDb250ZXh0
KG5hdGl2ZUltYWdlVGFyZ2V0LmdldCgpKTsKIAotICAgIGRyYXcobG9jYWxDb250ZXh0LCByZWN0
KCksIHJlY3QoKSwgQ29tcG9zaXRlU291cmNlT3ZlciwgQmxlbmRNb2RlTm9ybWFsLCBEZWNvZGlu
Z01vZGU6OlN5bmNocm9ub3VzLCBJbWFnZU9yaWVudGF0aW9uRGVzY3JpcHRpb24oKSk7CisgICAg
ZHJhdyhsb2NhbENvbnRleHQsIHJlY3QoKSwgcmVjdCgpLCBDb21wb3NpdGVTb3VyY2VPdmVyLCBC
bGVuZE1vZGU6Ok5vcm1hbCwgRGVjb2RpbmdNb2RlOjpTeW5jaHJvbm91cywgSW1hZ2VPcmllbnRh
dGlvbkRlc2NyaXB0aW9uKCkpOwogCiAgICAgQ09NUHRyPElEMkQxQml0bWFwPiBuYXRpdmVJbWFn
ZTsKICAgICBociA9IG5hdGl2ZUltYWdlVGFyZ2V0LT5HZXRCaXRtYXAoJm5hdGl2ZUltYWdlKTsK
QEAgLTI2OCw3ICsyNjgsNyBAQCB2b2lkIFNWR0ltYWdlOjpkcmF3UGF0dGVybkZvckNvbnRhaW5l
cihHCiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlQ29tcGF0aWJsZUJ1ZmZlcihleHBhbmRlZEludFNpemUoaW1hZ2VCdWZmZXJTaXpl
LnNpemUoKSksIDEsIENvbG9yU3BhY2VTUkdCLCBjb250ZXh0KTsKICAgICBpZiAoIWJ1ZmZlcikg
Ly8gRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlci4KICAgICAgICAgcmV0dXJuOwotICAgIGRyYXdG
b3JDb250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpv
b20sIGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJS
ZWN0LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOworICAgIGRyYXdGb3JD
b250YWluZXIoYnVmZmVyLT5jb250ZXh0KCksIGNvbnRhaW5lclNpemUsIGNvbnRhaW5lclpvb20s
IGluaXRpYWxGcmFnbWVudFVSTCwgaW1hZ2VCdWZmZXJTaXplLCB6b29tZWRDb250YWluZXJSZWN0
LCBDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAgICAgaWYgKGNvbnRl
eHQuZHJhd0x1bWluYW5jZU1hc2soKSkKICAgICAgICAgYnVmZmVyLT5jb252ZXJ0VG9MdW1pbmFu
Y2VNYXNrKCk7CiAKQEAgLTI5OSwxMCArMjk5LDEwIEBAIEltYWdlRHJhd1Jlc3VsdCBTVkdJbWFn
ZTo6ZHJhdyhHcmFwaGljc0MKICAgICBjb250ZXh0LmNsaXAoZW5jbG9zaW5nSW50UmVjdChkc3RS
ZWN0KSk7CiAKICAgICBmbG9hdCBhbHBoYSA9IGNvbnRleHQuYWxwaGEoKTsKLSAgICBib29sIGNv
bXBvc2l0aW5nUmVxdWlyZXNUcmFuc3BhcmVuY3lMYXllciA9IGNvbXBvc2l0ZU9wICE9IENvbXBv
c2l0ZVNvdXJjZU92ZXIgfHwgYmxlbmRNb2RlICE9IEJsZW5kTW9kZU5vcm1hbCB8fCBhbHBoYSA8
IDE7CisgICAgYm9vbCBjb21wb3NpdGluZ1JlcXVpcmVzVHJhbnNwYXJlbmN5TGF5ZXIgPSBjb21w
b3NpdGVPcCAhPSBDb21wb3NpdGVTb3VyY2VPdmVyIHx8IGJsZW5kTW9kZSAhPSBCbGVuZE1vZGU6
Ok5vcm1hbCB8fCBhbHBoYSA8IDE7CiAgICAgaWYgKGNvbXBvc2l0aW5nUmVxdWlyZXNUcmFuc3Bh
cmVuY3lMYXllcikgewogICAgICAgICBjb250ZXh0LmJlZ2luVHJhbnNwYXJlbmN5TGF5ZXIoYWxw
aGEpOwotICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9wZXJhdGlvbihDb21wb3NpdGVTb3Vy
Y2VPdmVyLCBCbGVuZE1vZGVOb3JtYWwpOworICAgICAgICBjb250ZXh0LnNldENvbXBvc2l0ZU9w
ZXJhdGlvbihDb21wb3NpdGVTb3VyY2VPdmVyLCBCbGVuZE1vZGU6Ok5vcm1hbCk7CiAgICAgfQog
CiAgICAgRmxvYXRTaXplIHNjYWxlKGRzdFJlY3Quc2l6ZSgpIC8gc3JjUmVjdC5zaXplKCkpOwpJ
bmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzNDU2OCkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTgtMDgtMDMgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBNYWtlIEJsZW5kTW9k
ZSBhbiBlbnVtIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODgzMjUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIFNoYXJlZC9SZW1vdGVMYXllclRyZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW06CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpMYXll
clByb3BlcnRpZXM6OkxheWVyUHJvcGVydGllcyk6CisKIDIwMTgtMDgtMDMgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBGaXggc3BlbGxpbmcg
b2YgIm92ZXJyaWRkZW4iCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvUmVtb3RlTGF5ZXJUcmVlL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1t
CShyZXZpc2lvbiAyMzQ1MTQpCisrKyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9SZW1vdGVMYXllclRy
ZWUvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTkzLDcg
KzkzLDcgQEAgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydAogICAgICwg
Y3VzdG9tQXBwZWFyYW5jZShHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpOb25lKQog
ICAgICwgbWluaWZpY2F0aW9uRmlsdGVyKFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVyVHlwZTo6TGlu
ZWFyKQogICAgICwgbWFnbmlmaWNhdGlvbkZpbHRlcihQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5
cGU6OkxpbmVhcikKLSAgICAsIGJsZW5kTW9kZShCbGVuZE1vZGVOb3JtYWwpCisgICAgLCBibGVu
ZE1vZGUoQmxlbmRNb2RlOjpOb3JtYWwpCiAgICAgLCB3aW5kUnVsZShXaW5kUnVsZTo6Tm9uWmVy
bykKICAgICAsIGhpZGRlbihmYWxzZSkKICAgICAsIGJhY2tpbmdTdG9yZUF0dGFjaGVkKHRydWUp
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>