<?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>102669</bug_id>
          
          <creation_ts>2012-11-19 03:40:01 -0800</creation_ts>
          <short_desc>[Shadow DOM] implement a new style resolver for shadow dom trees</short_desc>
          <delta_ts>2015-09-16 14:13:13 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>97282</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Takashi Sakamoto">tasak</reporter>
          <assigned_to name="Takashi Sakamoto">tasak</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>syoichi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>770562</commentid>
    <comment_count>0</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-19 03:40:01 -0800</bug_when>
    <thetext>Currently updating any styles in shadow dom trees causes full style update. However, the update doesn&apos;t affect document tree. So we should update only the affected shadow dom trees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770570</commentid>
    <comment_count>1</comment_count>
      <attachid>174942</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-19 04:00:53 -0800</bug_when>
    <thetext>Created attachment 174942
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770579</commentid>
    <comment_count>2</comment_count>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-19 04:07:26 -0800</bug_when>
    <thetext>This WIP patch contains:
(1) add ShadowStyleSheetCollection and move all styles in shadow dom trees from DocumentStyleSheetCollection to ShadowStyleSheetCollection.
(2) update HTMLStyleElement and StyleElement to provide treescope information for ShadowStyleSheetCollection.
(3) add StyleShadowResolver and make StyleResolver to invoke the resolver.
(4) use ShadowStyleSheetCollection to update RuleSets in shadow dom trees instead of all RuleSets.

This WIP patch also makes document.stylesheet not to include styles in shadow dom trees.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770588</commentid>
    <comment_count>3</comment_count>
      <attachid>174942</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-19 04:15:34 -0800</bug_when>
    <thetext>Comment on attachment 174942
WIP

Attachment 174942 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14907183</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>770633</commentid>
    <comment_count>4</comment_count>
      <attachid>174942</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-11-19 05:22:48 -0800</bug_when>
    <thetext>Comment on attachment 174942
WIP

Attachment 174942 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14907207</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772610</commentid>
    <comment_count>5</comment_count>
      <attachid>175372</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-21 01:31:15 -0800</bug_when>
    <thetext>Created attachment 175372
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772643</commentid>
    <comment_count>6</comment_count>
      <attachid>175372</attachid>
    <who name="EFL EWS Bot">eflews.bot</who>
    <bug_when>2012-11-21 01:50:56 -0800</bug_when>
    <thetext>Comment on attachment 175372
WIP

Attachment 175372 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14894915</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>772711</commentid>
    <comment_count>7</comment_count>
      <attachid>175395</attachid>
    <who name="Takashi Sakamoto">tasak</who>
    <bug_when>2012-11-21 02:48:27 -0800</bug_when>
    <thetext>Created attachment 175395
WIP</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>174942</attachid>
            <date>2012-11-19 04:00:53 -0800</date>
            <delta_ts>2012-11-21 01:31:11 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-102669-20121119205843.patch</filename>
            <type>text/plain</type>
            <size>90969</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBlOTkzODMwNjJiZDQwZmVlMjA4MTQ0MGFiNDk5NjM0ODE2YTA3ZmIyLi5h
ZTllZGQyNzNhOTg5ODE5N2RjODEwNWMxZjljNGI1NWM0MDE5N2RiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTA3IEBACisyMDEyLTExLTE5ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xl
LmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0gaW1wbGVtZW50IGEgbmV3IHN0eWxlIHJlc29s
dmVyIGZvciBzaGFkb3cgZG9tIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDcmVhdGVkIHRoZSBmaXJzdCBXSVAgcGF0Y2guCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTQWxsSW5PbmUuY3BwOgorICAgICAgICAqIGNzcy9TdHls
ZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVz
b2x2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6Y29sbGVjdEZlYXR1cmVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hl
ZXRzKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZl
cjo6cmVzZXRBdXRob3JTaGFkb3dTdHlsZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29s
dmVyOjphcHBlbmRBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclNoYWRvd1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OmVuc3VyZVNoYWRvd1Jlc29sdmVyKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGFk
b3dSZXNvbHZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSdWxlRGF0YTo6cGFyZW50Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGFkb3dSZXNvbHZlcjo6ZW5zdXJlU2hhZG93UnVsZURhdGFGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTaGFkb3dSZXNvbHZlcjo6c2V0dXBTaGFkb3dSdWxlRGF0YVBhcmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjplbnN1cmVSdWxlU2V0Rm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93UmVzb2x2ZXI6OmZpbmRNYXRjaGVkUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGFkb3dSZXNvbHZlcjo6cmVzZXRBdXRob3JT
dHlsZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjpjb2xsZWN0
RmVhdHVyZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1J1bGVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1J1bGVEYXRhOjpTaGFkb3dSdWxlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1J1bGVEYXRhOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UnVsZURhdGE6
OnRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6cnVsZVNldCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6ZW5zdXJlUnVsZVNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6cmVzZXRSdWxlU2V0KToKKyAgICAgICAgKFN0
eWxlU2hhZG93UmVzb2x2ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlU3R5
bGVTaGVldENhbmRpZGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphcHBl
bmRBbGxBY3RpdmVBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldEZyb21J
bnN0cnVjdGlvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29s
bGVjdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAqIGRvbS9TaGFkb3dTdHlsZVNoZWV0Q29s
bGVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OnJlbW92ZUFs
bFN0eWxlU2hlZXRzRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xs
ZWN0aW9uOjphZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUp
OgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OmVuc3VyZUFj
dGl2ZUF1dGhvclN0eWxlU2hlZXRzRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxl
U2hlZXRDb2xsZWN0aW9uOjplbnN1cmVBdXRob3JTdHlsZVNoZWV0c0Zvcik6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YXBwZW5kQWxsQWN0aXZlQXV0aG9y
U3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rp
b246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0
eWxlU2hlZXRDb2xsZWN0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogZG9tL1No
YWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6Cisg
ICAgICAgIChTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpT
aGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKiBkb20vU3R5bGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21E
b2N1bWVudCk6CisgICAgICAgICogZG9tL1N0eWxlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChTdHlsZUVsZW1lbnQpOgorICAgICAgICAqIGRvbS9TdHlsZVNoZWV0Q29s
bGVjdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZVNoZWV0Q29sbGVjdGlvbjo6U3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rl
VG9DYW5kaWRhdGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb2xsZWN0aW9u
OjphbmFseXplU3R5bGVTaGVldENoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRGcm9tSW5zdHJ1Y3Rpb25Ob2RlKToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5
bGVTaGVldEZyb21Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb2xsZWN0aW9u
Ojpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHNGcm9tQ2FuZGlkYXRlTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVNoZWV0Q29sbGVjdGlvbjo6ZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRz
KToKKyAgICAgICAgKiBkb20vU3R5bGVTaGVldENvbGxlY3Rpb24uaDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFN0eWxlU2hlZXRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlU2hlZXRDb2xsZWN0aW9uOjp+U3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAg
ICAgICAqIGh0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
U3R5bGVFbGVtZW50OjpzY29wZWRBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50byk6CisgICAgICAgIChXZWJDb3Jl
OjpIVE1MU3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5
bGVFbGVtZW50Lmg6CisgICAgICAgIChIVE1MU3R5bGVFbGVtZW50KToKKwogMjAxMi0xMS0xOCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBNYWtlIG5hbWVkSXRl
bSByZXR1cm4gYSBub2RlIGxpc3Qgb25seSBpbiBIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbiBh
bmQgSFRNTE9wdGlvbnNDb2xsZWN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDczNjRlZjAw
YjMwMTNkYmQyZDFkNzgwZWRjYTY2MGJlMjMxMWI2ZDMuLjkyNjRmOWM0NzQ4NjM0ZDFkZTVhYTE2
YTc2ZDVmY2JmMzhlZDA5ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMu
dHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMDgyLDYgKzEwODIs
NyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgY3NzL1N0eWxlUnVsZS5jcHAKICAgICBjc3Mv
U3R5bGVSdWxlSW1wb3J0LmNwcAogICAgIGNzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwCisgICAg
Y3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuY3BwCiAgICAgY3NzL1N0eWxlU2hlZXQuY3BwCiAgICAg
Y3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAKICAgICBjc3MvU3R5bGVTaGVldExpc3QuY3BwCkBA
IC0xMjExLDYgKzEyMTIsNyBAQCBTRVQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1NjcmlwdFJ1
bm5lci5jcHAKICAgICBkb20vU2VjdXJpdHlDb250ZXh0LmNwcAogICAgIGRvbS9TZWxlY3RvclF1
ZXJ5LmNwcAorICAgIGRvbS9TaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKICAgICBkb20v
U2hhZG93Um9vdC5jcHAKICAgICBkb20vU3BhY2VTcGxpdFN0cmluZy5jcHAKICAgICBkb20vU3Rh
dGljSGFzaFNldE5vZGVMaXN0LmNwcApAQCAtMTIxOCw2ICsxMjIwLDcgQEAgU0VUKFdlYkNvcmVf
U09VUkNFUwogICAgIGRvbS9TdHJpbmdDYWxsYmFjay5jcHAKICAgICBkb20vU3R5bGVkRWxlbWVu
dC5jcHAKICAgICBkb20vU3R5bGVFbGVtZW50LmNwcAorICAgIGRvbS9TdHlsZVNoZWV0Q29sbGVj
dGlvbi5jcHAKICAgICBkb20vVGFnTm9kZUxpc3QuY3BwCiAgICAgZG9tL1RleHQuY3BwCiAgICAg
ZG9tL1RleHRFdmVudC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0gYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IDA3YTIz
OGFiYWExMjg4YjJiOWQwZDU3N2ZjZDRjOTMxM2E4YzE5MTkuLjk4OTY5Y2VhYjFlOGI1NWNhNmJj
OTQzOGQzZjY3Y2Q2ZTNkMmRjNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2Vm
aWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAt
MjYzNiw2ICsyNjM2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9j
c3MvU3R5bGVSdWxlSW1wb3J0LmggXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVz
b2x2ZXIuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTY29wZVJlc29sdmVyLmggXAor
CVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCBcCisJU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0
eWxlU2hlZXQuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBcCkBAIC0yNzUyLDggKzI3NTQs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudE9y
ZGVyZWRNYXAuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmNwcCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50UGFyc2VyLmggXAotICAgIFNvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBcCi0gICAgU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCBcCisJU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRUaW1pbmcuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFR5cGUuaCBcCkBAIC0yOTIyLDYgKzI5MjQs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWN1cml0eUNv
bnRleHQuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NlbGVjdG9yUXVlcnkuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
U3R5bGVTaGVldENvbGxlY3Rpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1Jvb3Qu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93Um9vdC5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9kb20vU3BhY2VTcGxpdFN0cmluZy5jcHAgXApAQCAtMjkzNiw2ICsyOTQwLDggQEAgd2ViY29y
ZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L1N0eWxlRWxlbWVudC5oIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVldENvbGxlY3Rp
b24uY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVldENvbGxlY3Rpb24uaCBcCiAJ
U291cmNlL1dlYkNvcmUvZG9tL1RhZ05vZGVMaXN0LmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9t
L1RhZ05vZGVMaXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcCBcCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnBy
aQppbmRleCA3MmExN2YwYWMzNzYzZDYzNmQ5ODJmZmZiNTZkYTg0ZWViNjdiMjMxLi4zMmUwODQ2
OTY1ZjY2ZjNmYTJkYzU4YzBhMDM2ZTE3NDdjNzc3N2UzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9UYXJnZXQucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTMyNCw2
ICszMjQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBjc3MvU3R5bGVSdWxlLmNwcCBcCiAgICAgY3Nz
L1N0eWxlUnVsZUltcG9ydC5jcHAgXAogICAgIGNzcy9TdHlsZVNjb3BlUmVzb2x2ZXIuY3BwIFwK
KyAgICBjc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5jcHAgXAogICAgIGNzcy9TdHlsZVNoZWV0LmNw
cCBcCiAgICAgY3NzL1N0eWxlU2hlZXRDb250ZW50cy5jcHAgXAogICAgIGNzcy9TdHlsZVNoZWV0
TGlzdC5jcHAgXApAQCAtNDUzLDExICs0NTQsMTMgQEAgU09VUkNFUyArPSBcCiAgICAgZG9tL1Nj
cmlwdFJ1bm5lci5jcHAgXAogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwIFwKICAgICBkb20v
U2VsZWN0b3JRdWVyeS5jcHAgXAorICAgIGRvbS9TaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5j
cHAgXAogICAgIGRvbS9TaGFkb3dSb290LmNwcCBcCiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcu
Y3BwIFwKICAgICBkb20vU3RhdGljTm9kZUxpc3QuY3BwIFwKICAgICBkb20vU3R5bGVkRWxlbWVu
dC5jcHAgXAogICAgIGRvbS9TdHlsZUVsZW1lbnQuY3BwIFwKKyAgICBkb20vU3R5bGVTaGVldENv
bGxlY3Rpb24uY3BwIFwKICAgICBkb20vVGFnTm9kZUxpc3QuY3BwIFwKICAgICBkb20vVGV4dC5j
cHAgXAogICAgIGRvbS9UZXh0RXZlbnQuY3BwIFwKQEAgLTE2MjAsMTEgKzE2MjMsMTMgQEAgSEVB
REVSUyArPSBcCiAgICAgZG9tL1NjcmlwdEVsZW1lbnQuaCBcCiAgICAgZG9tL1NjcmlwdEV4ZWN1
dGlvbkNvbnRleHQuaCBcCiAgICAgZG9tL1NlbGVjdG9yUXVlcnkuaCBcCisgICAgZG9tL1NoYWRv
d1N0eWxlU2hlZXRDb2xsZWN0aW9uLmggXAogICAgIGRvbS9TaGFkb3dSb290LmggXAogICAgIGRv
bS9TcGFjZVNwbGl0U3RyaW5nLmggXAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5oIFwKICAgICBk
b20vU3R5bGVkRWxlbWVudC5oIFwKICAgICBkb20vU3R5bGVFbGVtZW50LmggXAorICAgIGRvbS9T
dHlsZVNoZWV0Q29sbGVjdGlvbi5oIFwKICAgICBkb20vVGFnTm9kZUxpc3QuaCBcCiAgICAgZG9t
L1RleHRFdmVudC5oIFwKICAgICBkb20vVGV4dEV2ZW50SW5wdXRUeXBlLmggXApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IDdlZGQ5M2NkZTdkNWZhN2Y4YWU2M2RiZjEwYTQ4NDJlNjc4MmQyNDkuLmJiM2Jl
ODk2NzM0ZGMxZDNiN2NkODJmN2JkMTYyOTlmZTkzYzA5NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAg
LTY4OCw3ICs2ODgsOSBAQAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRFeGVjdXRpb25Db250ZXh0
LmgnLAogICAgICAgICAgICAgJ2RvbS9TY3JpcHRSdW5uZXIuaCcsCiAgICAgICAgICAgICAnZG9t
L1NoYWRvd1Jvb3QuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0
aW9uLmgnLAogICAgICAgICAgICAgJ2RvbS9TcGFjZVNwbGl0U3RyaW5nLmgnLAorICAgICAgICAg
ICAgJ2RvbS9TdHlsZVNoZWV0Q29sbGVjdGlvbi5oJywKICAgICAgICAgICAgICdkb20vU3R5bGVk
RWxlbWVudC5oJywKICAgICAgICAgICAgICdkb20vVGV4dC5oJywKICAgICAgICAgICAgICdkb20v
VGV4dEV2ZW50SW5wdXRUeXBlLmgnLApAQCAtMjYyNSw2ICsyNjI3LDggQEAKICAgICAgICAgICAg
ICdjc3MvU3R5bGVSdWxlSW1wb3J0LmgnLAogICAgICAgICAgICAgJ2Nzcy9TdHlsZVNjb3BlUmVz
b2x2ZXIuY3BwJywKICAgICAgICAgICAgICdjc3MvU3R5bGVTY29wZVJlc29sdmVyLmgnLAorICAg
ICAgICAgICAgJ2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCcsCisgICAgICAgICAgICAnY3Nz
L1N0eWxlU2hhZG93UmVzb2x2ZXIuaCcsCiAgICAgICAgICAgICAnY3NzL1N0eWxlU2hlZXQuY3Bw
JywKICAgICAgICAgICAgICdjc3MvU3R5bGVTaGVldC5oJywKICAgICAgICAgICAgICdjc3MvU3R5
bGVTaGVldENvbnRlbnRzLmNwcCcsCkBAIC0zOTU3LDYgKzM5NjEsNyBAQAogICAgICAgICAgICAg
J2RvbS9TZWxlY3RvclF1ZXJ5LmgnLAogICAgICAgICAgICAgJ2RvbS9TaGFkb3dSb290LmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jvb3QuaCcsCisgICAgICAgICAgICAnZG9tL1NoYWRv
d1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnZG9tL1NwYWNlU3BsaXRT
dHJpbmcuY3BwJywKICAgICAgICAgICAgICdkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1N0YXRpY0hhc2hTZXROb2RlTGlzdC5oJywKQEAgLTM5NjYsNiAr
Mzk3MSw3IEBACiAgICAgICAgICAgICAnZG9tL1N0cmluZ0NhbGxiYWNrLmgnLAogICAgICAgICAg
ICAgJ2RvbS9TdHlsZUVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20vU3R5bGVFbGVtZW50
LmgnLAorICAgICAgICAgICAgJ2RvbS9TdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAnLAogICAgICAg
ICAgICAgJ2RvbS9TdHlsZWRFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1RhZ05vZGVM
aXN0LmNwcCcsCiAgICAgICAgICAgICAnZG9tL1RhZ05vZGVMaXN0LmgnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFkNmJhOTdj
NzRjZGNhZTUwN2E4NDVkYzk3NmI4Y2NmZmJkYTk4NjkuLjRhNmE4NmM4YWE0ZjQ0Zjg0MDhjYjJh
ZjA4ZTBlZDcxMTcwY2FkN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTYzNzEsNiArNjM3MSwxMiBAQAogCQlGQUJFNzJGOTEw
NTlDMUVCMDBEOTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkYyMTA1OUMxRUIwMEQ5OTlERCAvKiBN
YXRoTUxNYXRoRWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGRDEwNTlDMjExMDBEOTk5REQgLyog
TWF0aE1MRWxlbWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkFCRTcyRkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRG
YWN0b3J5LmNwcCAqLzsgfTsKIAkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5h
bWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZB
QkU3MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi87IH07CisJCUZCMEUy
Q0I5MTY1QTM3RDQwMDg2NDMxMiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjI2QTEzRjE2NUEw
QjU2MDA1MDFDQUIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwICovOyB9OworCQlG
QjBFMkNCQTE2NUEzN0Q0MDA4NjQzMTIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTQwMTY1
QTBCNTYwMDUwMUNBQiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCMEUyQ0JCMTY1QTM3RTQw
MDg2NDMxMiAvKiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjI2QTE0MTE2NUEwQjY2MDA1MDFDQUIgLyogU3R5
bGVTaGVldENvbGxlY3Rpb24uY3BwICovOyB9OworCQlGQjBFMkNCQzE2NUEzN0VBMDA4NjQzMTIg
LyogU3R5bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZCMjZBMTQyMTY1QTBCNjYwMDUwMUNBQiAvKiBTdHlsZVNoZWV0Q29s
bGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCUZCMEUyQ0JEMTY1QTM4MDUwMDg2NDMxMiAvKiBTdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTNDMTY1
QTBCMjcwMDUwMUNBQiAvKiBTdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJRkIwRTJD
QkUxNjVBMzgwNTAwODY0MzEyIC8qIFN0eWxlU2hhZG93UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTNEMTY1QTBCMjcwMDUwMUNB
QiAvKiBTdHlsZVNoYWRvd1Jlc29sdmVyLmggKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZF
NTREMyAvKiBDU1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCOTJE
RjRCMTVGRUQwODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMz
IC8qIENsaXBQYXRoT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJRkJDMjIwREYxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29u
dGV4dDNET3BlbkdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZCQzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5H
TC5jcHAgKi87IH07CkBAIC0xMzg1NSw2ICsxMzg2MSwxMiBAQAogCQlGQUJFNzJGMzEwNTlDMUVC
MDBEOTk5REQgLyogbWF0aHRhZ3MuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0aHRhZ3Mu
aW47IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkZCMTA1OUMyMTEwMEQ5OTlE
RCAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxOYW1lcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZCMjZBMTNDMTY1QTBCMjcwMDUwMUNBQiAvKiBTdHls
ZVNoYWRvd1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFN0eWxlU2hhZG93UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
QjI2QTEzRDE2NUEwQjI3MDA1MDFDQUIgLyogU3R5bGVTaGFkb3dSZXNvbHZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTdHlsZVNoYWRvd1Jlc29sdmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZCMjZBMTNGMTY1QTBCNTYwMDUwMUNBQiAvKiBTaGFkb3dT
dHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZCMjZBMTQwMTY1QTBCNTYwMDUwMUNBQiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29s
bGVjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dTdHlsZVNo
ZWV0Q29sbGVjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjI2QTE0MTE2
NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGQjI2QTE0MjE2NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVT
aGVldENvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVT
aGVldENvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI3OEFEMkMx
NTFCRjVEMjAwRkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQlGQjkyREY0OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVyYXRpb24uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdyYXBoaWNzQ29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIxNDQ1LDYgKzIxNDU3LDggQEAKIAkJCQlFNDk0NkVBRDE1NkU2NEREMDBEMzI5N0YgLyog
U3R5bGVSdWxlSW1wb3J0LmggKi8sCiAJCQkJQTdCNzYxOUUxNjFFRTUyNjAwMjA4M0QzIC8qIFN0
eWxlU2NvcGVSZXNvbHZlci5jcHAgKi8sCiAJCQkJQTdCNzYxOUYxNjFFRTUyNjAwMjA4M0QzIC8q
IFN0eWxlU2NvcGVSZXNvbHZlci5oICovLAorCQkJCUZCMjZBMTNDMTY1QTBCMjcwMDUwMUNBQiAv
KiBTdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCAqLywKKwkJCQlGQjI2QTEzRDE2NUEwQjI3MDA1MDFD
QUIgLyogU3R5bGVTaGFkb3dSZXNvbHZlci5oICovLAogCQkJCUE4RUE4MDA1MEExOTUxNkUwMEE4
RUY1RiAvKiBTdHlsZVNoZWV0LmNwcCAqLywKIAkJCQlBOEVBODAwNDBBMTk1MTZFMDBBOEVGNUYg
LyogU3R5bGVTaGVldC5oICovLAogCQkJCTg1MDY1NkRDMEFBQjQ0RDkwMDJEMTVDMCAvKiBTdHls
ZVNoZWV0LmlkbCAqLywKQEAgLTIyMDYwLDYgKzIyMDc0LDggQEAKIAkJCQk5NzZGMzZFOTE0Njg2
MjI1MDA1RTkzQjQgLyogU2VjdXJpdHlDb250ZXh0LmggKi8sCiAJCQkJRTQ1MzIyQTkxNDBDRTI2
NzAwNUEwRjkyIC8qIFNlbGVjdG9yUXVlcnkuY3BwICovLAogCQkJCUU0NTMyMkFBMTQwQ0UyNjcw
MDVBMEY5MiAvKiBTZWxlY3RvclF1ZXJ5LmggKi8sCisJCQkJRkIyNkExM0YxNjVBMEI1NjAwNTAx
Q0FCIC8qIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCAqLywKKwkJCQlGQjI2QTE0MDE2
NUEwQjU2MDA1MDFDQUIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLywKIAkJCQlB
NkQxNjk2MTEzNDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgKi8sCiAJCQkJQTZEMTY5
NjMxMzQ2QjRDMTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywKIAkJCQlBN0RCNDE4MTE0Q0Ux
RjBBMDBBMkUzMTYgLyogU2hhZG93Um9vdC5pZGwgKi8sCkBAIC0yMjA3Niw2ICsyMjA5Miw4IEBA
CiAJCQkJQThDNEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLywKIAkJ
CQlBQTRDM0E3NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLywKIAkJCQlB
QTRDM0E3NTBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi8sCisJCQkJRkIyNkEx
NDExNjVBMEI2NjAwNTAxQ0FCIC8qIFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCAqLywKKwkJCQlG
QjI2QTE0MjE2NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLywKIAkJ
CQlCQ0UzQkVDMDBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwICovLAogCQkJCUJD
RTNCRUMxMEQyMjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5oICovLAogCQkJCTY1NTBCNjlC
MDk5REYwMjcwMDkwRDc4MSAvKiBUZXh0LmNwcCAqLywKQEAgLTI1NzcwLDYgKzI1Nzg4LDkgQEAK
IAkJCQk1NzBCNzhDMDE2NTBDRTgxMDAxREJFMUIgLyogU2VsZWN0UnVsZUZlYXR1cmVTZXQuaCBp
biBIZWFkZXJzICovLAogCQkJCTFFNTAwODQ3MTY1MTZBRDgwMEI3RTA5OCAvKiBSZW5kZXJUaGVt
ZU1hY1NoYXJlZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTNFRjc2NkIxNjUzMEE2MTAwNENCRTQ5
IC8qIFNldHRpbmdzTWFjcm9zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQjBFMkNCQTE2NUEzN0Q0
MDA4NjQzMTIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAor
CQkJCUZCMEUyQ0JDMTY1QTM3RUEwMDg2NDMxMiAvKiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkIwRTJDQkUxNjVBMzgwNTAwODY0MzEyIC8qIFN0eWxlU2hhZG93
UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMjg4NjYsNiArMjg4ODcsOSBAQAogCQkJCTU3
MEI3OEJGMTY1MENFODEwMDFEQkUxQiAvKiBTZWxlY3RSdWxlRmVhdHVyZVNldC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQkxRTUwMDg0ODE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNT
aGFyZWQubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDdFMDUyMjE2NTFDMjgyMDBDMTIwMUYgLyog
V2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRkIwRTJDQjkx
NjVBMzdENDAwODY0MzEyIC8qIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZCMEUyQ0JCMTY1QTM3RTQwMDg2NDMxMiAvKiBTdHlsZVNoZWV0Q29sbGVj
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGQjBFMkNCRDE2NUEzODA1MDA4NjQzMTIgLyog
U3R5bGVTaGFkb3dSZXNvbHZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxs
SW5PbmUuY3BwCmluZGV4IDg0ZjlmZTdmNDNjODllNWJkZDFlMGExYmViODBlNDY4YzhjYTdjMzIu
LjE3YTQ3OWY1NjUxODE2ZDg4OWUxOTg0MTdkMGEwZGU4YzdhYjU1OTQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU0FsbEluT25lLmNwcApAQCAtNzMsMyArNzMsNCBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVy
dHlTaG9ydGhhbmQuY3BwIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuY3BwIgogI2luY2x1ZGUg
IlN0eWxlU2NvcGVSZXNvbHZlci5jcHAiCisjaW5jbHVkZSAiU3R5bGVTaGFkb3dSZXNvbHZlci5j
cHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggYjU5NzBjMDY3NGY3Y2Q1
ODk1ZDQ1OTU1ZTI5MzYwNmE1MzlhMTQ3OS4uNDAwZmY5Y2Y5ZDQ4MWRkZTEyMzk3NDZlNDBmMzg1
MTQyNGQzM2QyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApAQCAtMzMyLDYg
KzMzMiwxMiBAQCBTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKERvY3VtZW50KiBkb2N1bWVu
dCwgYm9vbCBtYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpCiAjZW5kaWYKIAogICAgIGFwcGVuZEF1
dGhvclN0eWxlU2hlZXRzKDAsIHN0eWxlU2hlZXRDb2xsZWN0aW9uLT5hY3RpdmVBdXRob3JTdHls
ZVNoZWV0cygpKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBzdHlsZVNoZWV0Q29sbGVj
dGlvbi0+YXBwZW5kQWxsQWN0aXZlQXV0aG9yU2hhZG93U3R5bGVTaGVldHModGhpcyk7CisjZW5k
aWYKKyAgICBjb2xsZWN0RmVhdHVyZXMoKTsKKyAgICBpZiAoZG9jdW1lbnQtPnJlbmRlcmVyKCkg
JiYgZG9jdW1lbnQtPnJlbmRlcmVyKCktPnN0eWxlKCkpCisgICAgICAgIGRvY3VtZW50LT5yZW5k
ZXJlcigpLT5zdHlsZSgpLT5mb250KCkudXBkYXRlKGZvbnRTZWxlY3RvcigpKTsKIH0KIAogdm9p
ZCBTdHlsZVJlc29sdmVyOjpjb2xsZWN0UnVsZXNGcm9tVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgdXNlclNoZWV0cywgUnVsZVNldCYgdXNlclN0
eWxlKQpAQCAtMzY0LDYgKzM3MCwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0
dXJlcygpCiAgICAgbV9mZWF0dXJlcy5hZGQobV9hdXRob3JTdHlsZS0+ZmVhdHVyZXMoKSk7CiAg
ICAgaWYgKG1fc2NvcGVSZXNvbHZlcikKICAgICAgICAgbV9zY29wZVJlc29sdmVyLT5jb2xsZWN0
RmVhdHVyZXNUbyhtX2ZlYXR1cmVzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAo
bV9zaGFkb3dSZXNvbHZlcikKKyAgICAgICAgbV9zaGFkb3dSZXNvbHZlci0+Y29sbGVjdEZlYXR1
cmVzVG8obV9mZWF0dXJlcyk7CisjZW5kaWYKICAgICBpZiAobV91c2VyU3R5bGUpCiAgICAgICAg
IG1fZmVhdHVyZXMuYWRkKG1fdXNlclN0eWxlLT5mZWF0dXJlcygpKTsKIApAQCAtNDAwLDEyICs0
MTAsNDMgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyh1bnNp
Z25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJlZlAKICAgICAgICAgICAgIGNvbGxlY3RDU1NP
TVdyYXBwZXJzKG1fc3R5bGVSdWxlVG9DU1NPTVdyYXBwZXJNYXAsIGNzc1NoZWV0KTsKICAgICB9
CiAgICAgbV9hdXRob3JTdHlsZS0+c2hyaW5rVG9GaXQoKTsKLSAgICBjb2xsZWN0RmVhdHVyZXMo
KTsKLSAgICAKLSAgICBpZiAoZG9jdW1lbnQoKS0+cmVuZGVyZXIoKSAmJiBkb2N1bWVudCgpLT5y
ZW5kZXJlcigpLT5zdHlsZSgpKQotICAgICAgICBkb2N1bWVudCgpLT5yZW5kZXJlcigpLT5zdHls
ZSgpLT5mb250KCkudXBkYXRlKGZvbnRTZWxlY3RvcigpKTsKIH0KIAorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQordm9pZCBTdHlsZVJlc29sdmVyOjpyZXNldEF1dGhvclNoYWRvd1N0eWxlKGNvbnN0
IFRyZWVTY29wZSogc2NvcGUpCit7CisgICAgaWYgKCFtX3NoYWRvd1Jlc29sdmVyKQorICAgICAg
ICByZXR1cm47CisgICAgbV9zaGFkb3dSZXNvbHZlci0+cmVzZXRBdXRob3JTdHlsZUZvcihzY29w
ZSk7Cit9CisKK3ZvaWQgU3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0aG9yU2hhZG93U3R5bGVTaGVl
dHMoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUsIHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHN0eWxlU2hlZXRzKQoreworICAgIHVuc2ln
bmVkIHNpemUgPSBzdHlsZVNoZWV0cy5zaXplKCk7CisgICAgaWYgKGZpcnN0TmV3ID49IHNpemUp
CisgICAgICAgIHJldHVybjsKKworICAgIFJ1bGVTZXQqIHNoYWRvd1J1bGVTZXQgPSBlbnN1cmVT
aGFkb3dSZXNvbHZlcigpLT5lbnN1cmVSdWxlU2V0Rm9yKHRyZWVTY29wZSk7CisgICAgZm9yICh1
bnNpZ25lZCBpID0gZmlyc3ROZXc7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgQ1NTU3R5bGVT
aGVldCogY3NzU2hlZXQgPSBzdHlsZVNoZWV0c1tpXS5nZXQoKTsKKyAgICAgICAgQVNTRVJUKCFj
c3NTaGVldC0+ZGlzYWJsZWQoKSk7CisgICAgICAgIGlmIChjc3NTaGVldC0+bWVkaWFRdWVyaWVz
KCkgJiYgIW1fbWVkaXVtLT5ldmFsKGNzc1NoZWV0LT5tZWRpYVF1ZXJpZXMoKSwgdGhpcykpCisg
ICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgU3R5bGVTaGVldENvbnRlbnRzKiBzaGVldCA9
IGNzc1NoZWV0LT5jb250ZW50cygpOworI2lmIEVOQUJMRShTVFlMRV9TQ09QRUQpCisgICAgICAg
IGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0gU3R5bGVTY29wZVJlc29sdmVyOjpzY29wZUZv
cihjc3NTaGVldCk7CisgICAgICAgIGlmIChzY29wZSAmJiAhc2NvcGUtPmlzU2hhZG93Um9vdCgp
KSB7CisgICAgICAgICAgICBlbnN1cmVTY29wZVJlc29sdmVyKCktPmVuc3VyZVJ1bGVTZXRGb3Io
c2NvcGUpLT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwgKm1fbWVkaXVtLCB0aGlzLCBzY29wZSk7
CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIC8vIG5l
ZWQgc2NvcGUgZm9yIEBob3N0IEAtcnVsZXMuCisgICAgICAgIHNoYWRvd1J1bGVTZXQtPmFkZFJ1
bGVzRnJvbVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3BlKTsKKyAgICB9CisgICAg
c2hhZG93UnVsZVNldC0+c2hyaW5rVG9GaXQoKTsKK30KKyNlbmRpZgorCiB2b2lkIFN0eWxlUmVz
b2x2ZXI6OnB1c2hQYXJlbnRFbGVtZW50KEVsZW1lbnQqIHBhcmVudCkKIHsKICAgICBjb25zdCBD
b250YWluZXJOb2RlKiBwYXJlbnRzUGFyZW50ID0gcGFyZW50LT5wYXJlbnRPckhvc3RFbGVtZW50
KCk7CkBAIC03OTQsNiArODM1LDI3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hIb3N0UnVs
ZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKICNlbmRpZgog
fQogCit2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yU2hhZG93UnVsZXMoTWF0Y2hSZXN1
bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKK3sKKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICBpZiAoIW1fc2hhZG93UmVzb2x2ZXIpCisgICAgICAgIHJldHVybjsKKworICAg
IFZlY3RvcjxTdHlsZVNoYWRvd1Jlc29sdmVyOjpUcmVlU2NvcGVSdWxlU2V0UGFpcj4gbWF0Y2hl
ZFJ1bGVzOworICAgIG1fc2hhZG93UmVzb2x2ZXItPmZpbmRNYXRjaGVkUnVsZXMobV9lbGVtZW50
LCBtYXRjaGVkUnVsZXMpOworICAgIGZvciAoaW50IGkgPSBtYXRjaGVkUnVsZXMuc2l6ZSgpIC0g
MTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgY29uc3QgU2hhZG93Um9vdCogc2NvcGUgPSBzdGF0
aWNfY2FzdDxjb25zdCBTaGFkb3dSb290Kj4obWF0Y2hlZFJ1bGVzW2ldLmZpcnN0KTsKKyAgICAg
ICAgUnVsZVNldCogcnVsZVNldCA9IG1hdGNoZWRSdWxlc1tpXS5zZWNvbmQ7CisgICAgICAgIE1h
dGNoT3B0aW9ucyBvcHRpb25zKGluY2x1ZGVFbXB0eVJ1bGVzLCBzY29wZSk7CisgICAgICAgIGNv
bGxlY3RNYXRjaGluZ1J1bGVzKHJ1bGVTZXQsIHJlc3VsdC5yYW5nZXMuZmlyc3RBdXRob3JSdWxl
LCByZXN1bHQucmFuZ2VzLmxhc3RBdXRob3JSdWxlLCBvcHRpb25zKTsKKyAgICAgICAgY29sbGVj
dE1hdGNoaW5nUnVsZXNGb3JSZWdpb24ocnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhv
clJ1bGUsIHJlc3VsdC5yYW5nZXMubGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgIH0KKyNl
bHNlCisgICAgVU5VU0VEX1BBUkFNKHJlc3VsdCk7CisgICAgVU5VU0VEX1BBUkFNKGluY2x1ZGVF
bXB0eVJ1bGVzKTsKKyNlbmRpZgorfQorCiB2b2lkIFN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9y
UnVsZXMoTWF0Y2hSZXN1bHQmIHJlc3VsdCwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcykKIHsKICAg
ICBtX21hdGNoZWRSdWxlcy5jbGVhcigpOwpAQCAtODA4LDYgKzg3MCw3IEBAIHZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzCiAgICAgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdpb24obV9hdXRob3JT
dHlsZS5nZXQoKSwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOwogCiAgICAgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhy
ZXN1bHQsIGluY2x1ZGVFbXB0eVJ1bGVzKTsKKyAgICBtYXRjaEF1dGhvclNoYWRvd1J1bGVzKHJl
c3VsdCwgaW5jbHVkZUVtcHR5UnVsZXMpOwogCiAgICAgc29ydEFuZFRyYW5zZmVyTWF0Y2hlZFJ1
bGVzKHJlc3VsdCk7CiB9CkBAIC01MTk2LDYgKzUyNTksNyBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0CiAgICAgaW5mby5hZGRNZW1iZXIobV9wZW5kaW5nU1ZHRG9jdW1lbnRzKTsKICNlbmRpZgog
ICAgIGluZm8uYWRkTWVtYmVyKG1fc2NvcGVSZXNvbHZlcik7CisgICAgaW5mby5hZGRNZW1iZXIo
bV9zaGFkb3dSZXNvbHZlcik7CiAKICAgICAvLyBGSVhNRTogbW92ZSB0aGlzIHRvIGEgcGxhY2Ug
d2hlcmUgaXQgd291bGQgYmUgY2FsbGVkIG9ubHkgb25jZT8KICAgICBpbmZvLmFkZE1lbWJlcihk
ZWZhdWx0U3R5bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKaW5kZXggNGU3NzVhNTg1
NzllNjI5ZjFlNGEwNDNmYzcyOTg2Mjg1MzU3OTU4MS4uZjRkYmUyYzAyZWQxYzI1MzIzZTdmYzhk
MDRhZmNhOGRmZjM0ZDBjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVz
b2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCkBAIC0zMyw2
ICszMyw3IEBACiAjaW5jbHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU3R5bGVJ
bmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVTY29wZVJlc29sdmVyLmgiCisjaW5jbHVk
ZSAiU3R5bGVTaGFkb3dSZXNvbHZlci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CkBAIC04OCw2ICs4
OSw3IEBAIGNsYXNzIFN0eWxlUnVsZUtleWZyYW1lczsKIGNsYXNzIFN0eWxlUnVsZVBhZ2U7CiBj
bGFzcyBTdHlsZVJ1bGVSZWdpb247CiBjbGFzcyBTdHlsZVNoYWRlcjsKK2NsYXNzIFN0eWxlU2hh
ZG93UmVzb2x2ZXI7CiBjbGFzcyBTdHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRz
OwogY2xhc3MgU3R5bGVTaGVldExpc3Q7CkBAIC0xNjcsNiArMTY5LDExIEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgcmVzZXRBdXRob3JTdHlsZSgpOwogICAgIHZvaWQgYXBwZW5kQXV0aG9yU3R5bGVT
aGVldHModW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gPiYpOworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIHZvaWQgcmVzZXRBdXRob3JTaGFk
b3dTdHlsZShjb25zdCBUcmVlU2NvcGUqKTsKKyAgICB2b2lkIGFwcGVuZEF1dGhvclNoYWRvd1N0
eWxlU2hlZXRzKGNvbnN0IFRyZWVTY29wZSosIHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mKTsKKyNlbmRpZgorICAgIHZvaWQgY29sbGVjdEZl
YXR1cmVzKCk7CiAKIHByaXZhdGU6CiAjaWYgRU5BQkxFKFNUWUxFX1NDT1BFRCkgfHwgRU5BQkxF
KFNIQURPV19ET00pCkBAIC0xODYsMTAgKzE5MywxOCBAQCBwcml2YXRlOgogICAgICAgICByZXR1
cm4gbV9zY29wZVJlc29sdmVyLmdldCgpOwogICAgIH0KICNlbmRpZgorI2lmIEVOQUJMRShTSEFE
T1dfRE9NKQorICAgIFN0eWxlU2hhZG93UmVzb2x2ZXIqIGVuc3VyZVNoYWRvd1Jlc29sdmVyKCkK
KyAgICB7CisgICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFkb3dET01F
bmFibGVkKCkpOworICAgICAgICBpZiAoIW1fc2hhZG93UmVzb2x2ZXIpCisgICAgICAgICAgICBt
X3NoYWRvd1Jlc29sdmVyID0gYWRvcHRQdHIobmV3IFN0eWxlU2hhZG93UmVzb2x2ZXIoKSk7Cisg
ICAgICAgIHJldHVybiBtX3NoYWRvd1Jlc29sdmVyLmdldCgpOworICAgIH0KKyNlbmRpZgogCiAg
ICAgdm9pZCBpbml0Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUgPSAwLCBQc2V1ZG9JZCA9IE5PUFNFVURPKTsKICAgICB2b2lkIGluaXRFbGVtZW50KEVs
ZW1lbnQqKTsKLSAgICB2b2lkIGNvbGxlY3RGZWF0dXJlcygpOwogICAgIFJlbmRlclN0eWxlKiBs
b2NhdGVTaGFyZWRTdHlsZSgpOwogICAgIGJvb2wgc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hl
c1J1bGVTZXQoUnVsZVNldCopOwogICAgIGJvb2wgc3R5bGVTaGFyaW5nQ2FuZGlkYXRlTWF0Y2hl
c0hvc3RSdWxlcygpOwpAQCAtMzQ4LDYgKzM2Myw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXRj
aFVzZXJSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZv
aWQgbWF0Y2hTY29wZWRBdXRob3JSdWxlcyhNYXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5
UnVsZXMpOwogICAgIHZvaWQgbWF0Y2hIb3N0UnVsZXMoTWF0Y2hSZXN1bHQmLCBib29sIGluY2x1
ZGVFbXB0eVJ1bGVzKTsKKyAgICB2b2lkIG1hdGNoQXV0aG9yU2hhZG93UnVsZXMoTWF0Y2hSZXN1
bHQmLCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1
bGVzKFJ1bGVTZXQqLCBpbnQmIGZpcnN0UnVsZUluZGV4LCBpbnQmIGxhc3RSdWxlSW5kZXgsIGNv
bnN0IE1hdGNoT3B0aW9ucyYpOwogICAgIHZvaWQgY29sbGVjdE1hdGNoaW5nUnVsZXNGb3JSZWdp
b24oUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJbmRleCwgY29u
c3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zvckxpc3Qo
Y29uc3QgVmVjdG9yPFJ1bGVEYXRhPiosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1
bGVJbmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CkBAIC01MDksNiArNTI1LDcgQEAgcHJpdmF0
ZToKICNlbmRpZgogCiAgICAgT3duUHRyPFN0eWxlU2NvcGVSZXNvbHZlcj4gbV9zY29wZVJlc29s
dmVyOworICAgIE93blB0cjxTdHlsZVNoYWRvd1Jlc29sdmVyPiBtX3NoYWRvd1Jlc29sdmVyOwog
ICAgIENTU1RvU3R5bGVNYXAgbV9zdHlsZU1hcDsKIAogICAgIGZyaWVuZCBjbGFzcyBTdHlsZUJ1
aWxkZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGFkb3dSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTVjYjFiZTdmYjk4M2VjODI3ZTg0OTE3MWE4MjcxMTI2NGRlODkxNgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmNwcApAQCAt
MCwwICsxLDEyMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9s
bEBrZGUub3JnKQorICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0eWxlU2hhZG93UmVz
b2x2ZXIuaCIKKworI2luY2x1ZGUgIkNTU1N0eWxlUnVsZS5oIgorI2luY2x1ZGUgIkNTU1N0eWxl
U2hlZXQuaCIKKyNpbmNsdWRlICJDb250ZXh0RmVhdHVyZXMuaCIKKyNpbmNsdWRlICJFbGVtZW50
LmgiCisjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5o
IgorI2luY2x1ZGUgIlJ1bGVGZWF0dXJlLmgiCisjaW5jbHVkZSAiVHJlZVNjb3BlLmgiCisjaW5j
bHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9NZW1v
cnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1l
bnRhdGlvbkhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uVmVj
dG9yLmg+CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitpbmxpbmUgU2hhZG93UnVsZURhdGEqIFNoYWRvd1J1bGVEYXRhOjpwYXJlbnRGb3JTdHlsZSgp
Cit7CisgICAgcmV0dXJuIG1fdHJlZVNjb3BlLT5hcHBseUF1dGhvclN0eWxlcygpID8gbV9wYXJl
bnRSdWxlRGF0YSA6IDA7Cit9CisKK1NoYWRvd1J1bGVEYXRhKiBTdHlsZVNoYWRvd1Jlc29sdmVy
OjplbnN1cmVTaGFkb3dSdWxlRGF0YUZvcihjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSkKK3sK
KyAgICBUcmVlU2NvcGVSdWxlU2V0TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hdXRob3JT
dHlsZXMuYWRkKHRyZWVTY29wZSwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0Vu
dHJ5KQorICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IFNo
YWRvd1J1bGVEYXRhKHRyZWVTY29wZSkpOworICAgIHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3It
PnZhbHVlLmdldCgpOworfQorCit2b2lkIFN0eWxlU2hhZG93UmVzb2x2ZXI6OnNldHVwU2hhZG93
UnVsZURhdGFQYXJlbnQoU2hhZG93UnVsZURhdGEqIHJ1bGVEYXRhKQoreworICAgIEFTU0VSVChy
dWxlRGF0YSk7CisgICAgaWYgKHJ1bGVEYXRhLT5wYXJlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBydWxlRGF0YS0+dHJlZVNjb3BlKCk7
CisgICAgaWYgKCF0cmVlU2NvcGUpCisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoY29uc3Qg
VHJlZVNjb3BlKiBwYXJlbnRUcmVlU2NvcGUgPSB0cmVlU2NvcGUtPnBhcmVudFRyZWVTY29wZSgp
OyBwYXJlbnRUcmVlU2NvcGU7IHBhcmVudFRyZWVTY29wZSA9IHBhcmVudFRyZWVTY29wZS0+cGFy
ZW50VHJlZVNjb3BlKCkpIHsKKyAgICAgICAgU2hhZG93UnVsZURhdGEqIHBhcmVudFJ1bGVEYXRh
ID0gZW5zdXJlU2hhZG93UnVsZURhdGFGb3IocGFyZW50VHJlZVNjb3BlKTsKKyAgICAgICAgcnVs
ZURhdGEtPnNldFBhcmVudChwYXJlbnRSdWxlRGF0YSk7CisgICAgICAgIHJ1bGVEYXRhID0gcGFy
ZW50UnVsZURhdGE7CisgICAgfQorfQorCitSdWxlU2V0KiBTdHlsZVNoYWRvd1Jlc29sdmVyOjpl
bnN1cmVSdWxlU2V0Rm9yKGNvbnN0IFRyZWVTY29wZSogdHJlZVNjb3BlKQoreworICAgIEFTU0VS
VCh0cmVlU2NvcGUpOworICAgIFNoYWRvd1J1bGVEYXRhKiBydWxlRGF0YSA9IGVuc3VyZVNoYWRv
d1J1bGVEYXRhRm9yKHRyZWVTY29wZSk7CisgICAgc2V0dXBTaGFkb3dSdWxlRGF0YVBhcmVudChy
dWxlRGF0YSk7CisgICAgcmV0dXJuIHJ1bGVEYXRhLT5lbnN1cmVSdWxlU2V0KCk7Cit9CisKK3Zv
aWQgU3R5bGVTaGFkb3dSZXNvbHZlcjo6ZmluZE1hdGNoZWRSdWxlcyhjb25zdCBFbGVtZW50KiBl
bGVtZW50LCBWZWN0b3I8VHJlZVNjb3BlUnVsZVNldFBhaXI+JiBtYXRjaGVkUnVsZXMpCit7Cisg
ICAgaWYgKCFlbGVtZW50LT5pc0luU2hhZG93VHJlZSgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSA9IGVsZW1lbnQtPnRyZWVTY29wZSgpOworICAg
IFNoYWRvd1J1bGVEYXRhKiBydWxlRGF0YSA9IGVuc3VyZVNoYWRvd1J1bGVEYXRhRm9yKHRyZWVT
Y29wZSk7CisgICAgc2V0dXBTaGFkb3dSdWxlRGF0YVBhcmVudChydWxlRGF0YSk7CisgICAgZm9y
ICg7IHJ1bGVEYXRhOyBydWxlRGF0YSA9IHJ1bGVEYXRhLT5wYXJlbnRGb3JTdHlsZSgpKQorICAg
ICAgICBpZiAoUnVsZVNldCogcnVsZVNldCA9IHJ1bGVEYXRhLT5ydWxlU2V0KCkpCisgICAgICAg
ICAgICBtYXRjaGVkUnVsZXMuYXBwZW5kKFRyZWVTY29wZVJ1bGVTZXRQYWlyKHJ1bGVEYXRhLT50
cmVlU2NvcGUoKSwgcnVsZVNldCkpOworfQorCit2b2lkIFN0eWxlU2hhZG93UmVzb2x2ZXI6OnJl
c2V0QXV0aG9yU3R5bGVGb3IoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCit7CisgICAgQVNT
RVJUKHRyZWVTY29wZSk7CisgICAgVHJlZVNjb3BlUnVsZVNldE1hcDo6aXRlcmF0b3IgaXQgPSBt
X2F1dGhvclN0eWxlcy5maW5kKHRyZWVTY29wZSk7CisgICAgaWYgKGl0ID09IG1fYXV0aG9yU3R5
bGVzLmVuZCgpKQorICAgICAgICByZXR1cm47CisgICAgaXQtPnZhbHVlLT5yZXNldFJ1bGVTZXQo
KTsKK30KKwordm9pZCBTdHlsZVNoYWRvd1Jlc29sdmVyOjpjb2xsZWN0RmVhdHVyZXNUbyhSdWxl
RmVhdHVyZVNldCYgZmVhdHVyZXMpCit7CisgICAgZm9yIChUcmVlU2NvcGVSdWxlU2V0TWFwOjpp
dGVyYXRvciBpdCA9IG1fYXV0aG9yU3R5bGVzLmJlZ2luKCk7IGl0ICE9IG1fYXV0aG9yU3R5bGVz
LmVuZCgpOyArK2l0KQorICAgICAgICBpZiAoUnVsZVNldCogcnVsZVNldCA9IGl0LT52YWx1ZS0+
cnVsZVNldCgpKQorICAgICAgICAgICAgZmVhdHVyZXMuYWRkKHJ1bGVTZXQtPmZlYXR1cmVzKCkp
OworfQorCit2b2lkIFN0eWxlU2hhZG93UmVzb2x2ZXI6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9y
eU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJ
bmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpDU1Mp
OworICAgIGluZm8uYWRkTWVtYmVyKG1fYXV0aG9yU3R5bGVzKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQzNWQwMWU2NDQ2Y2I1OWJl
ZjI5MDJkM2MwZWUzZTRhYTMxMDBkYjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5oCkBAIC0wLDAgKzEsMTAwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFN0eWxl
U2hhZG93UmVzb2x2ZXJfaAorI2RlZmluZSBTdHlsZVNoYWRvd1Jlc29sdmVyX2gKKworI2luY2x1
ZGUgIlJ1bGVTZXQuaCIKKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIENvbnRhaW5lck5vZGU7CitjbGFzcyBDU1NTdHlsZVNoZWV0OworY2xhc3MgRWxlbWVu
dDsKK2NsYXNzIFJ1bGVTZXQ7CitjbGFzcyBTaGFkb3dSb290OworY2xhc3MgVHJlZVNjb3BlOwor
c3RydWN0IFJ1bGVGZWF0dXJlU2V0OworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKK2NsYXNz
IFNoYWRvd1J1bGVEYXRhIHsKK3B1YmxpYzoKKyAgICBTaGFkb3dSdWxlRGF0YShjb25zdCBUcmVl
U2NvcGUqIHRyZWVTY29wZSkgOiBtX3RyZWVTY29wZSh0cmVlU2NvcGUpLCBtX3BhcmVudFJ1bGVE
YXRhKDApIHsgfQorCisgICAgdm9pZCBzZXRQYXJlbnQoU2hhZG93UnVsZURhdGEqIHBhcmVudFJ1
bGVEYXRhKSB7IG1fcGFyZW50UnVsZURhdGEgPSBwYXJlbnRSdWxlRGF0YTsgfQorICAgIFNoYWRv
d1J1bGVEYXRhKiBwYXJlbnQoKSB7IHJldHVybiBtX3BhcmVudFJ1bGVEYXRhOyB9CisgICAgU2hh
ZG93UnVsZURhdGEqIHBhcmVudEZvclN0eWxlKCk7CisgICAgY29uc3QgVHJlZVNjb3BlKiB0cmVl
U2NvcGUoKSB7IHJldHVybiBtX3RyZWVTY29wZTsgfQorICAgIFJ1bGVTZXQqIHJ1bGVTZXQoKSB7
IHJldHVybiBtX3J1bGVTZXQuZ2V0KCk7IH0KKyAgICBSdWxlU2V0KiBlbnN1cmVSdWxlU2V0KCkK
KyAgICB7CisgICAgICAgIGlmICghbV9ydWxlU2V0KQorICAgICAgICAgICAgbV9ydWxlU2V0ID0g
UnVsZVNldDo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBtX3J1bGVTZXQuZ2V0KCk7CisgICAg
fQorICAgIHZvaWQgcmVzZXRSdWxlU2V0KCkgeyBtX3J1bGVTZXQuY2xlYXIoKTsgfQorCitwcml2
YXRlOgorICAgIGNvbnN0IFRyZWVTY29wZSogbV90cmVlU2NvcGU7CisgICAgT3duUHRyPFJ1bGVT
ZXQ+IG1fcnVsZVNldDsKKyAgICBTaGFkb3dSdWxlRGF0YSogbV9wYXJlbnRSdWxlRGF0YTsKK307
CisKK2NsYXNzIFN0eWxlU2hhZG93UmVzb2x2ZXIgeworcHVibGljOgorICAgIC8vIFRyZWVTY29w
ZSogLT4gUnVsZVNldC4uLj8KKyAgICBSdWxlU2V0KiBlbnN1cmVSdWxlU2V0Rm9yKGNvbnN0IFRy
ZWVTY29wZSopOworCisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8Y29uc3QgVHJlZVNjb3BlKiwgUnVs
ZVNldCo+IFRyZWVTY29wZVJ1bGVTZXRQYWlyOworICAgIHZvaWQgZmluZE1hdGNoZWRSdWxlcyhj
b25zdCBFbGVtZW50KiwgVmVjdG9yPFRyZWVTY29wZVJ1bGVTZXRQYWlyPiYgbWF0Y2hlZFJ1bGVz
KTsKKyAgICB2b2lkIHJlc2V0QXV0aG9yU3R5bGVGb3IoY29uc3QgVHJlZVNjb3BlKik7CisgICAg
dm9pZCBjb2xsZWN0RmVhdHVyZXNUbyhSdWxlRmVhdHVyZVNldCYpOworCisgICAgdm9pZCByZXBv
cnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
U2hhZG93UnVsZURhdGEqIGVuc3VyZVNoYWRvd1J1bGVEYXRhRm9yKGNvbnN0IFRyZWVTY29wZSop
OworICAgIHZvaWQgc2V0dXBTaGFkb3dSdWxlRGF0YVBhcmVudChTaGFkb3dSdWxlRGF0YSopOwor
CisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFRyZWVTY29wZSosIE93blB0cjxTaGFkb3dSdWxl
RGF0YT4gPiBUcmVlU2NvcGVSdWxlU2V0TWFwOworICAgIFRyZWVTY29wZVJ1bGVTZXRNYXAgbV9h
dXRob3JTdHlsZXM7Cit9OworCisjZWxzZQorCitjbGFzcyBTdHlsZVNoYWRvd1Jlc29sdmVyIHsg
fTsKKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisKKyNlbmRpZiAvLyBTdHlsZVNoYWRvd1Jlc29sdmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAppbmRleCA3ODg2Nzkz
NmRjMGRhMzgxN2U5ZDY1YTM0ZDM5OTljZjBmMWRmNDE0Li4zOWI3YzFhYzVlZDVmNTEwYjgwMWJm
ZmQ4NTZlNzZmM2ViZWFhYzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAi
Y29uZmlnLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogCisj
aW5jbHVkZSAiQ1NTRm9udFNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgog
I2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgpAQCAtMzgsMTAgKzM5
LDEyIEBACiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91cC5oIgogI2luY2x1
ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgog
I2luY2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU2VsZWN0b3JDaGVja2VyLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRl
ICJTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlN0eWxlSW52YWxpZGF0
aW9uQW5hbHlzaXMuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5
bGVTaGVldENvbnRlbnRzLmgiCkBAIC01Niw3ICs1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50KQotICAg
IDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICA6IFN0eWxlU2hlZXRDb2xsZWN0aW9uKGRvY3Vt
ZW50KQogICAgICwgbV9wZW5kaW5nU3R5bGVzaGVldHMoMCkKICAgICAsIG1faW5qZWN0ZWRTdHls
ZVNoZWV0Q2FjaGVWYWxpZChmYWxzZSkKICAgICAsIG1faGFkQWN0aXZlTG9hZGluZ1N0eWxlc2hl
ZXQoZmFsc2UpCkBAIC02OCw2ICs3MSw5IEBAIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246
OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqIGRvY3VtZW50KQogICAgICwg
bV91c2VzQmVmb3JlQWZ0ZXJSdWxlcyhmYWxzZSkKICAgICAsIG1fdXNlc0JlZm9yZUFmdGVyUnVs
ZXNPdmVycmlkZShmYWxzZSkKICAgICAsIG1fdXNlc1JlbVVuaXRzKGZhbHNlKQorI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgICwgbV9zaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbihTaGFkb3dT
dHlsZVNoZWV0Q29sbGVjdGlvbjo6Y3JlYXRlKGRvY3VtZW50KSkKKyNlbmRpZgogewogfQogCkBA
IC0yMjUsMTg3ICsyMzEsMzAgQEAgdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjph
ZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKiBub2RlLCBib29sIGMKIHsKICAgICBpZiAo
IW5vZGUtPmluRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIFVudGls
IHRoZSA8Ym9keT4gZXhpc3RzLCB3ZSBoYXZlIG5vIGNob2ljZSBidXQgdG8gY29tcGFyZSBkb2N1
bWVudCBwb3NpdGlvbnMsCi0gICAgLy8gc2luY2Ugc3R5bGVzIG91dHNpZGUgb2YgdGhlIGJvZHkg
YW5kIGhlYWQgY29udGludWUgdG8gYmUgc2h1bnRlZCBpbnRvIHRoZSBoZWFkCi0gICAgLy8gKGFu
ZCB0aHVzIGNhbiBzaGlmdCB0byBlbmQgdXAgYmVmb3JlIGR5bmFtaWNhbGx5IGFkZGVkIERPTSBj
b250ZW50IHRoYXQgaXMgYWxzbwotICAgIC8vIG91dHNpZGUgdGhlIGJvZHkpLgotICAgIGlmICgo
Y3JlYXRlZEJ5UGFyc2VyICYmIG1fZG9jdW1lbnQtPmJvZHkoKSkgfHwgbV9zdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fc3R5bGVTaGVldENhbmRpZGF0ZU5v
ZGVzLmFkZChub2RlKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyNpZiBFTkFCTEUoU0hBRE9X
X0RPTSkKKyAgICBpZiAoIW5vZGUtPmlzSW5TaGFkb3dUcmVlKCkgfHwgIW5vZGUtPmhhc1RhZ05h
bWUoc3R5bGVUYWcpKQorICAgICAgICByZXR1cm4gYWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGVU
b0NhbmRpZGF0ZUxpc3QobV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMsIG5vZGUsIGNyZWF0ZWRC
eVBhcnNlcik7CiAKLSAgICAvLyBEZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUgaW5zZXJ0aW9uIHBv
aW50LgotICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgYmVnaW4g
PSBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5iZWdpbigpOwotICAgIFN0eWxlU2hlZXRDYW5k
aWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5kID0gbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9k
ZXMuZW5kKCk7Ci0gICAgU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OjppdGVyYXRvciBp
dCA9IGVuZDsKLSAgICBOb2RlKiBmb2xsb3dpbmdOb2RlID0gMDsKLSAgICBkbyB7Ci0gICAgICAg
IC0taXQ7Ci0gICAgICAgIE5vZGUqIG4gPSAqaXQ7Ci0gICAgICAgIHVuc2lnbmVkIHNob3J0IHBv
c2l0aW9uID0gbi0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24obm9kZSk7Ci0gICAgICAgIGlmIChw
b3NpdGlvbiA9PSBOb2RlOjpET0NVTUVOVF9QT1NJVElPTl9GT0xMT1dJTkcpIHsKLSAgICAgICAg
ICAgIG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmluc2VydEJlZm9yZShmb2xsb3dpbmdOb2Rl
LCBub2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBmb2xsb3dp
bmdOb2RlID0gbjsKLSAgICB9IHdoaWxlIChpdCAhPSBiZWdpbik7CisgICAgaWYgKCFtX3NoYWRv
d1N0eWxlU2hlZXRDb2xsZWN0aW9uKQorICAgICAgICByZXR1cm47CiAgICAgCi0gICAgbV9zdHls
ZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaW5zZXJ0QmVmb3JlKGZvbGxvd2luZ05vZGUsIG5vZGUpOwor
ICAgIHJldHVybiBtX3NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLT5hZGRTdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZShub2RlLCBjcmVhdGVkQnlQYXJzZXIpOworI2Vsc2UKKyAgICByZXR1cm4gYWRk
U3R5bGVTaGVldENhbmRpZGF0ZU5vZGVUb0NhbmRpZGF0ZUxpc3QobV9zdHlsZVNoZWV0Q2FuZGlk
YXRlTm9kZXMsIG5vZGUsIGNyZWF0ZWRCeVBhcnNlcik7CisjZW5kaWYKIH0KIAotdm9pZCBEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShO
b2RlKiBub2RlKQordm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZW1vdmVTdHls
ZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKiBub2RlLCBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29w
ZSkKIHsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAoIXRyZWVTY29wZSB8fCB0cmVl
U2NvcGUgPT0gbV9kb2N1bWVudCB8fCAhbm9kZS0+aGFzVGFnTmFtZShzdHlsZVRhZykpCisgICAg
ICAgIG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLnJlbW92ZShub2RlKTsKKyAgICBlbHNlCisg
ICAgICAgIG1fc2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24tPnJlbW92ZVN0eWxlU2hlZXRDYW5k
aWRhdGVOb2RlKG5vZGUsIHRyZWVTY29wZSk7CisjZWxzZQogICAgIG1fc3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGVzLnJlbW92ZShub2RlKTsKLX0KLQotdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0
PiA+JiBzaGVldHMpCi17Ci0gICAgaWYgKG1fZG9jdW1lbnQtPnNldHRpbmdzKCkgJiYgIW1fZG9j
dW1lbnQtPnNldHRpbmdzKCktPmF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKCkpCi0gICAgICAg
IHJldHVybjsKLQotICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3Ig
YmVnaW4gPSBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5iZWdpbigpOwotICAgIFN0eWxlU2hl
ZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5kID0gbV9zdHlsZVNoZWV0Q2FuZGlk
YXRlTm9kZXMuZW5kKCk7Ci0gICAgZm9yIChTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6
Oml0ZXJhdG9yIGl0ID0gYmVnaW47IGl0ICE9IGVuZDsgKytpdCkgewotICAgICAgICBOb2RlKiBu
ID0gKml0OwotICAgICAgICBTdHlsZVNoZWV0KiBzaGVldCA9IDA7Ci0gICAgICAgIGlmIChuLT5u
b2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSkgewotICAgICAg
ICAgICAgLy8gUHJvY2Vzc2luZyBpbnN0cnVjdGlvbiAoWE1MIGRvY3VtZW50cyBvbmx5KS4KLSAg
ICAgICAgICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbGlua2luZyB0byBlbWJlZGRlZCBDU1Mgc3R5
bGVzaGVldHMsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5
MjgxPiBmb3IgZGlzY3Vzc2lvbi4KLSAgICAgICAgICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiog
cGkgPSBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qPihuKTsKLSAgICAgICAgICAg
IHNoZWV0ID0gcGktPnNoZWV0KCk7Ci0jaWYgRU5BQkxFKFhTTFQpCi0gICAgICAgICAgICAvLyBE
b24ndCBhcHBseSBYU0wgdHJhbnNmb3JtcyB0byBhbHJlYWR5IHRyYW5zZm9ybWVkIGRvY3VtZW50
cyAtLSA8cmRhcjovL3Byb2JsZW0vNDEzMjgwNj4KLSAgICAgICAgICAgIGlmIChwaS0+aXNYU0wo
KSAmJiAhbV9kb2N1bWVudC0+dHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkgewotICAgICAgICAg
ICAgICAgIC8vIERvbid0IGFwcGx5IFhTTCB0cmFuc2Zvcm1zIHVudGlsIGxvYWRpbmcgaXMgZmlu
aXNoZWQuCi0gICAgICAgICAgICAgICAgaWYgKCFtX2RvY3VtZW50LT5wYXJzaW5nKCkpCi0gICAg
ICAgICAgICAgICAgICAgIG1fZG9jdW1lbnQtPmFwcGx5WFNMVHJhbnNmb3JtKHBpKTsKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLSAgICAgICAgfSBlbHNl
IGlmICgobi0+aXNIVE1MRWxlbWVudCgpICYmIChuLT5oYXNUYWdOYW1lKGxpbmtUYWcpIHx8IG4t
Pmhhc1RhZ05hbWUoc3R5bGVUYWcpKSkKLSNpZiBFTkFCTEUoU1ZHKQotICAgICAgICAgICAgICAg
ICAgIHx8ICAobi0+aXNTVkdFbGVtZW50KCkgJiYgbi0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3R5
bGVUYWcpKQorICAgIFVOVVNFRF9QQVJBTSh0cmVlU2NvcGUpOwogI2VuZGlmCi0gICAgICAgICAg
ICAgICAgICAgKSB7Ci0gICAgICAgICAgICBFbGVtZW50KiBlID0gc3RhdGljX2Nhc3Q8RWxlbWVu
dCo+KG4pOwotICAgICAgICAgICAgQXRvbWljU3RyaW5nIHRpdGxlID0gZS0+Z2V0QXR0cmlidXRl
KHRpdGxlQXR0cik7Ci0gICAgICAgICAgICBib29sIGVuYWJsZWRWaWFTY3JpcHQgPSBmYWxzZTsK
LSAgICAgICAgICAgIGlmIChlLT5oYXNMb2NhbE5hbWUobGlua1RhZykpIHsKLSAgICAgICAgICAg
ICAgICAvLyA8TElOSz4gZWxlbWVudAotICAgICAgICAgICAgICAgIEhUTUxMaW5rRWxlbWVudCog
bGlua0VsZW1lbnQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihuKTsKLSAgICAgICAg
ICAgICAgICBpZiAobGlua0VsZW1lbnQtPmlzRGlzYWJsZWQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgZW5hYmxlZFZpYVNjcmlwdCA9IGxpbmtFbGVt
ZW50LT5pc0VuYWJsZWRWaWFTY3JpcHQoKTsKLSAgICAgICAgICAgICAgICBpZiAobGlua0VsZW1l
bnQtPnN0eWxlU2hlZXRJc0xvYWRpbmcoKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBpdCBp
cyBsb2FkaW5nIGJ1dCB3ZSBzaG91bGQgc3RpbGwgZGVjaWRlIHdoaWNoIHN0eWxlIHNoZWV0IHNl
dCB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFlbmFibGVkVmlhU2NyaXB0ICYmICF0
aXRsZS5pc0VtcHR5KCkgJiYgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVsID0gZS0+
Z2V0QXR0cmlidXRlKHJlbEF0dHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFyZWwu
Y29udGFpbnMoImFsdGVybmF0ZSIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9w
cmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSA9IHRpdGxlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fc2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZSA9IHRpdGxlOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIWxpbmtF
bGVtZW50LT5zaGVldCgpKQotICAgICAgICAgICAgICAgICAgICB0aXRsZSA9IG51bGxBdG9tOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gR2V0IHRoZSBjdXJyZW50IHByZWZlcnJlZCBz
dHlsZXNldC4gVGhpcyBpcyB0aGUKLSAgICAgICAgICAgIC8vIHNldCBvZiBzaGVldHMgdGhhdCB3
aWxsIGJlIGVuYWJsZWQuCi0jaWYgRU5BQkxFKFNWRykKLSAgICAgICAgICAgIGlmIChuLT5pc1NW
R0VsZW1lbnQoKSAmJiBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdHlsZVRhZykpCi0gICAgICAg
ICAgICAgICAgc2hlZXQgPSBzdGF0aWNfY2FzdDxTVkdTdHlsZUVsZW1lbnQqPihuKS0+c2hlZXQo
KTsKLSAgICAgICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgaWYgKGUtPmhhc0xvY2Fs
TmFtZShsaW5rVGFnKSkKLSAgICAgICAgICAgICAgICBzaGVldCA9IHN0YXRpY19jYXN0PEhUTUxM
aW5rRWxlbWVudCo+KG4pLT5zaGVldCgpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIC8vIDxTVFlMRT4gZWxlbWVudAotICAgICAgICAgICAgICAgIHNoZWV0ID0gc3RhdGljX2Nh
c3Q8SFRNTFN0eWxlRWxlbWVudCo+KG4pLT5zaGVldCgpOwotICAgICAgICAgICAgLy8gQ2hlY2sg
dG8gc2VlIGlmIHRoaXMgc2hlZXQgYmVsb25ncyB0byBhIHN0eWxlc2V0Ci0gICAgICAgICAgICAv
LyAodGh1cyBtYWtpbmcgaXQgUFJFRkVSUkVEIG9yIEFMVEVSTkFURSByYXRoZXIgdGhhbgotICAg
ICAgICAgICAgLy8gUEVSU0lTVEVOVCkuCi0gICAgICAgICAgICBBdG9taWNTdHJpbmcgcmVsID0g
ZS0+Z2V0QXR0cmlidXRlKHJlbEF0dHIpOwotICAgICAgICAgICAgaWYgKCFlbmFibGVkVmlhU2Ny
aXB0ICYmICF0aXRsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBZZXMsIHdlIGhh
dmUgYSB0aXRsZS4KLSAgICAgICAgICAgICAgICBpZiAobV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0
TmFtZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTm8gcHJlZmVycmVkIHNl
dCBoYXMgYmVlbiBlc3RhYmxpc2hlZC4gSWYKLSAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJl
IE5PVCBhbiBhbHRlcm5hdGUgc2hlZXQsIHRoZW4gZXN0YWJsaXNoCi0gICAgICAgICAgICAgICAg
ICAgIC8vIHVzIGFzIHRoZSBwcmVmZXJyZWQgc2V0LiBPdGhlcndpc2UsIGp1c3QgaWdub3JlCi0g
ICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgc2hlZXQuCi0gICAgICAgICAgICAgICAgICAgIGlm
IChlLT5oYXNMb2NhbE5hbWUoc3R5bGVUYWcpIHx8ICFyZWwuY29udGFpbnMoImFsdGVybmF0ZSIp
KQotICAgICAgICAgICAgICAgICAgICAgICAgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSA9
IG1fc2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZSA9IHRpdGxlOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAodGl0bGUgIT0gbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFt
ZSkKLSAgICAgICAgICAgICAgICAgICAgc2hlZXQgPSAwOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBpZiAocmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSAmJiB0aXRsZS5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgc2hlZXQgPSAwOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzaGVl
dCkKLSAgICAgICAgICAgIHNoZWV0cy5hcHBlbmQoc2hlZXQpOwotICAgIH0KLX0KLQotdm9pZCBE
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphbmFseXplU3R5bGVTaGVldENoYW5nZShVcGRh
dGVGbGFnIHVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYg
bmV3U3R5bGVzaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlJiBzdHlsZVJlc29sdmVyVXBk
YXRlVHlwZSwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpCi17Ci0gICAgc3R5bGVSZXNv
bHZlclVwZGF0ZVR5cGUgPSBSZWNvbnN0cnVjdDsKLSAgICByZXF1aXJlc0Z1bGxTdHlsZVJlY2Fs
YyA9IHRydWU7Ci0gICAgCi0gICAgLy8gU3R5bGVzaGVldHMgb2YgPHN0eWxlPiBlbGVtZW50cyB0
aGF0IEBpbXBvcnQgc3R5bGVzaGVldHMgYXJlIGFjdGl2ZSBidXQgbG9hZGluZy4gV2UgbmVlZCB0
byB0cmlnZ2VyIGEgZnVsbCByZWNhbGMgd2hlbiBzdWNoIGxvYWRzIGFyZSBkb25lLgotICAgIGJv
b2wgaGFzQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBuZXdT
dHlsZXNoZWV0Q291bnQgPSBuZXdTdHlsZXNoZWV0cy5zaXplKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG5ld1N0eWxlc2hlZXRDb3VudDsgKytpKSB7Ci0gICAgICAgIGlmIChuZXdT
dHlsZXNoZWV0c1tpXS0+aXNMb2FkaW5nKCkpCi0gICAgICAgICAgICBoYXNBY3RpdmVMb2FkaW5n
U3R5bGVzaGVldCA9IHRydWU7Ci0gICAgfQotICAgIGlmIChtX2hhZEFjdGl2ZUxvYWRpbmdTdHls
ZXNoZWV0ICYmICFoYXNBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCkgewotICAgICAgICBtX2hhZEFj
dGl2ZUxvYWRpbmdTdHlsZXNoZWV0ID0gZmFsc2U7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0g
ICAgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCA9IGhhc0FjdGl2ZUxvYWRpbmdTdHlsZXNo
ZWV0OwotCi0gICAgaWYgKHVwZGF0ZUZsYWcgIT0gT3B0aW1pemVkVXBkYXRlKQotICAgICAgICBy
ZXR1cm47Ci0gICAgaWYgKCFtX2RvY3VtZW50LT5zdHlsZVJlc29sdmVySWZFeGlzdHMoKSkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgLy8gRmluZCBvdXQgd2hpY2ggc3R5bGVzaGVldHMgYXJlIG5l
dy4KLSAgICB1bnNpZ25lZCBvbGRTdHlsZXNoZWV0Q291bnQgPSBtX2FjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzLnNpemUoKTsKLSAgICBpZiAobmV3U3R5bGVzaGVldENvdW50IDwgb2xkU3R5bGVzaGVl
dENvdW50KQotICAgICAgICByZXR1cm47Ci0gICAgVmVjdG9yPFN0eWxlU2hlZXRDb250ZW50cyo+
IGFkZGVkU2hlZXRzOwotICAgIHVuc2lnbmVkIG5ld0luZGV4ID0gMDsKLSAgICBmb3IgKHVuc2ln
bmVkIG9sZEluZGV4ID0gMDsgb2xkSW5kZXggPCBvbGRTdHlsZXNoZWV0Q291bnQ7ICsrb2xkSW5k
ZXgpIHsKLSAgICAgICAgaWYgKG5ld0luZGV4ID49IG5ld1N0eWxlc2hlZXRDb3VudCkKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgd2hpbGUgKG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHNb
b2xkSW5kZXhdICE9IG5ld1N0eWxlc2hlZXRzW25ld0luZGV4XSkgewotICAgICAgICAgICAgYWRk
ZWRTaGVldHMuYXBwZW5kKG5ld1N0eWxlc2hlZXRzW25ld0luZGV4XS0+Y29udGVudHMoKSk7Ci0g
ICAgICAgICAgICArK25ld0luZGV4OwotICAgICAgICAgICAgaWYgKG5ld0luZGV4ID09IG5ld1N0
eWxlc2hlZXRDb3VudCkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAg
ICAgKytuZXdJbmRleDsKLSAgICB9Ci0gICAgYm9vbCBoYXNJbnNlcnRpb25zID0gIWFkZGVkU2hl
ZXRzLmlzRW1wdHkoKTsKLSAgICB3aGlsZSAobmV3SW5kZXggPCBuZXdTdHlsZXNoZWV0Q291bnQp
IHsKLSAgICAgICAgYWRkZWRTaGVldHMuYXBwZW5kKG5ld1N0eWxlc2hlZXRzW25ld0luZGV4XS0+
Y29udGVudHMoKSk7Ci0gICAgICAgICsrbmV3SW5kZXg7Ci0gICAgfQotICAgIC8vIElmIGFsbCBu
ZXcgc2hlZXRzIHdlcmUgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCB3ZSBjYW4ganVzdCBh
ZGQgdGhlbSB0byBleGlzdGluZyBTdHlsZVJlc29sdmVyLgotICAgIC8vIElmIHRoZXJlIHdlcmUg
aW5zZXJ0aW9ucyB3ZSBuZWVkIHRvIHJlLWFkZCBhbGwgdGhlIHN0eWxlc2hlZXRzIHNvIHJ1bGVz
IGFyZSBvcmRlcmVkIGNvcnJlY3RseS4KLSAgICBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9IGhh
c0luc2VydGlvbnMgPyBSZXNldCA6IEFkZGl0aXZlOwotCi0gICAgLy8gSWYgd2UgYXJlIGFscmVh
ZHkgcGFyc2luZyB0aGUgYm9keSBhbmQgc28gbWF5IGhhdmUgc2lnbmlmaWNhbnQgYW1vdW50IG9m
IGVsZW1lbnRzLCBwdXQgc29tZSBlZmZvcnQgaW50byB0cnlpbmcgdG8gYXZvaWQgc3R5bGUgcmVj
YWxjcy4KLSAgICBpZiAoIW1fZG9jdW1lbnQtPmJvZHkoKSB8fCBtX2RvY3VtZW50LT5oYXNOb2Rl
c1dpdGhQbGFjZWhvbGRlclN0eWxlKCkpCi0gICAgICAgIHJldHVybjsKLSAgICBTdHlsZUludmFs
aWRhdGlvbkFuYWx5c2lzIGludmFsaWRhdGlvbkFuYWx5c2lzKGFkZGVkU2hlZXRzKTsKLSAgICBp
ZiAoaW52YWxpZGF0aW9uQW5hbHlzaXMuZGlydGllc0FsbFN0eWxlKCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICBpbnZhbGlkYXRpb25BbmFseXNpcy5pbnZhbGlkYXRlU3R5bGUobV9kb2N1bWVudCk7
Ci0gICAgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSBmYWxzZTsKIH0KIAogc3RhdGljIGJvb2wg
c3R5bGVTaGVldHNVc2VSZW1Vbml0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+
ID4mIHNoZWV0cykKQEAgLTQxNywxNyArMjY2LDYgQEAgc3RhdGljIGJvb2wgc3R5bGVTaGVldHNV
c2VSZW1Vbml0cyhjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHNoZWV0cykK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyB2b2lkIGZpbHRlckVuYWJsZWRDU1NTdHls
ZVNoZWV0cyhWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHJlc3VsdCwgY29uc3QgVmVj
dG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMpCi17Ci0gICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHNoZWV0cy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoIXNoZWV0c1tpXS0+
aXNDU1NTdHlsZVNoZWV0KCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWYgKHNo
ZWV0c1tpXS0+ZGlzYWJsZWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXN1
bHQuYXBwZW5kKHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihzaGVldHNbaV0uZ2V0KCkpKTsK
LSAgICB9Ci19Ci0KIHN0YXRpYyB2b2lkIGNvbGxlY3RBY3RpdmVDU1NTdHlsZVNoZWV0c0Zyb21T
ZWFtbGVzc1BhcmVudHMoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMsIERv
Y3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBIVE1MSUZyYW1lRWxlbWVudCogc2VhbWxlc3NQYXJl
bnRJRnJhbWUgPSBkb2N1bWVudC0+c2VhbWxlc3NQYXJlbnRJRnJhbWUoKTsKQEAgLTQ1MSw3ICsy
ODksNyBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFjdGl2ZVN0
eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gYWN0aXZlU3R5bGVTaGVldHM7Ci0gICAg
Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICBjb2xsZWN0
QWN0aXZlU3R5bGVTaGVldHNGcm9tQ2FuZGlkYXRlTGlzdChtX3N0eWxlU2hlZXRDYW5kaWRhdGVO
b2RlcywgYWN0aXZlU3R5bGVTaGVldHMpOwogCiAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+IGFjdGl2ZUNTU1N0eWxlU2hlZXRzOwogICAgIGFjdGl2ZUNTU1N0eWxlU2hlZXRzLmFw
cGVuZChpbmplY3RlZEF1dGhvclN0eWxlU2hlZXRzKCkpOwpAQCAtNDYwLDExICsyOTgsMTUgQEAg
Ym9vbCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0
cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcKIAogICAgIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHN0
eWxlUmVzb2x2ZXJVcGRhdGVUeXBlOwogICAgIGJvb2wgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGM7
Ci0gICAgYW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UodXBkYXRlRmxhZywgYWN0aXZlQ1NTU3R5bGVT
aGVldHMsIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7
CisgICAgYW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UobV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cywg
dXBkYXRlRmxhZywgYWN0aXZlQ1NTU3R5bGVTaGVldHMsIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBl
LCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CiAKLSAgICBpZiAoc3R5bGVSZXNvbHZlclVwZGF0
ZVR5cGUgPT0gUmVjb25zdHJ1Y3QpCisgICAgaWYgKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID09
IFJlY29uc3RydWN0KSB7CiAgICAgICAgIG1fZG9jdW1lbnQtPmNsZWFyU3R5bGVSZXNvbHZlcigp
OwotICAgIGVsc2UgeworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBpZiAobV9zaGFk
b3dTdHlsZVNoZWV0Q29sbGVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhZG93U3R5bGVTaGVldENv
bGxlY3Rpb24tPnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKHVwZGF0ZUZsYWcsIHRydWUpOworI2Vu
ZGlmCisgICAgfSBlbHNlIHsKICAgICAgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9
IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKTsKICAgICAgICAgaWYgKHN0eWxlUmVzb2x2ZXJV
cGRhdGVUeXBlID09IFJlc2V0KSB7CiAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNldEF1
dGhvclN0eWxlKCk7CkBAIC00NzMsNyArMzE1LDE0IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFn
CiAgICAgICAgICAgICBBU1NFUlQoc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPT0gQWRkaXRpdmUp
OwogICAgICAgICAgICAgc3R5bGVSZXNvbHZlci0+YXBwZW5kQXV0aG9yU3R5bGVTaGVldHMobV9h
Y3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zaXplKCksIGFjdGl2ZUNTU1N0eWxlU2hlZXRzKTsKICAg
ICAgICAgfQorI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgICAgICBpZiAobV9zaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbikKKyAgICAgICAgICAgIG1fc2hhZG93U3R5bGVTaGVldENvbGxlY3Rp
b24tPnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKHVwZGF0ZUZsYWcsIGZhbHNlKTsKKyNlbmRpZgor
ICAgICAgICBzdHlsZVJlc29sdmVyLT5jb2xsZWN0RmVhdHVyZXMoKTsKICAgICAgICAgcmVzZXRD
U1NGZWF0dXJlRmxhZ3MoKTsKKyAgICAgICAgaWYgKG1fZG9jdW1lbnQtPnJlbmRlcmVyKCkgJiYg
bV9kb2N1bWVudC0+cmVuZGVyZXIoKS0+c3R5bGUoKSkKKyAgICAgICAgICAgIG1fZG9jdW1lbnQt
PnJlbmRlcmVyKCktPnN0eWxlKCktPmZvbnQoKS51cGRhdGUoc3R5bGVSZXNvbHZlci0+Zm9udFNl
bGVjdG9yKCkpOwogICAgIH0KICAgICBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLnN3YXAoYWN0
aXZlQ1NTU3R5bGVTaGVldHMpOwogICAgIG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdC5z
d2FwKGFjdGl2ZVN0eWxlU2hlZXRzKTsKQEAgLTQ4Niw2ICszMzUsMzYgQEAgYm9vbCBEb2N1bWVu
dFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyhVcGRhdGVGbGFn
IHVwZGF0ZUZsYWcKICAgICByZXR1cm4gcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGM7CiB9CiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKK3ZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6
YXBwZW5kQWxsQWN0aXZlQXV0aG9yU2hhZG93U3R5bGVTaGVldHMoU3R5bGVSZXNvbHZlciogc3R5
bGVSZXNvbHZlcikKK3sKKyAgICBpZiAobV9zaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbikKKyAg
ICAgICAgbV9zaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi0+YXBwZW5kQWxsQWN0aXZlQXV0aG9y
U3R5bGVTaGVldHMoc3R5bGVSZXNvbHZlcik7Cit9CisjZW5kaWYKKworU3R5bGVTaGVldCogRG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRGcm9tSW5z
dHJ1Y3Rpb25Ob2RlKE5vZGUqIG4sIGJvb2wmIGNvbnRpbnVlQ29sbGVjdGluZykKK3sKKyAgICBB
U1NFUlQobiAmJiBuLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05f
Tk9ERSk7CisKKyAgICAvLyBQcm9jZXNzaW5nIGluc3RydWN0aW9uIChYTUwgZG9jdW1lbnRzIG9u
bHkpLgorICAgIC8vIFdlIGRvbid0IHN1cHBvcnQgbGlua2luZyB0byBlbWJlZGRlZCBDU1Mgc3R5
bGVzaGVldHMsIHNlZSA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ5
MjgxPiBmb3IgZGlzY3Vzc2lvbi4KKyAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBpID0gc3Rh
dGljX2Nhc3Q8UHJvY2Vzc2luZ0luc3RydWN0aW9uKj4obik7CisgICAgU3R5bGVTaGVldCogc2hl
ZXQgPSBwaS0+c2hlZXQoKTsKKyNpZiBFTkFCTEUoWFNMVCkKKyAgICAvLyBEb24ndCBhcHBseSBY
U0wgdHJhbnNmb3JtcyB0byBhbHJlYWR5IHRyYW5zZm9ybWVkIGRvY3VtZW50cyAtLSA8cmRhcjov
L3Byb2JsZW0vNDEzMjgwNj4KKyAgICBpZiAocGktPmlzWFNMKCkgJiYgIW1fZG9jdW1lbnQtPnRy
YW5zZm9ybVNvdXJjZURvY3VtZW50KCkpIHsKKyAgICAgICAgLy8gRG9uJ3QgYXBwbHkgWFNMIHRy
YW5zZm9ybXMgdW50aWwgbG9hZGluZyBpcyBmaW5pc2hlZC4KKyAgICAgICAgaWYgKCFtX2RvY3Vt
ZW50LT5wYXJzaW5nKCkpCisgICAgICAgICAgICBtX2RvY3VtZW50LT5hcHBseVhTTFRyYW5zZm9y
bShwaSk7CisgICAgICAgIGNvbnRpbnVlQ29sbGVjdGluZyA9IGZhbHNlOworICAgICAgICByZXR1
cm4gMDsKKyAgICB9CisjZW5kaWYKKyAgICBjb250aW51ZUNvbGxlY3RpbmcgPSB0cnVlOworICAg
IHJldHVybiBzaGVldDsKK30KKwogdm9pZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpy
ZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJbmZvKiBtZW1vcnlPYmplY3RJbmZvKSBjb25z
dAogewogICAgIE1lbW9yeUNsYXNzSW5mbyBpbmZvKG1lbW9yeU9iamVjdEluZm8sIHRoaXMsIFdl
YkNvcmVNZW1vcnlUeXBlczo6RE9NKTsKQEAgLTQ5OCw2ICszNzcsOSBAQCB2b2lkIERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8q
IG1lbW9yeU9iagogICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVz
KTsKICAgICBpbmZvLmFkZE1lbWJlcihtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lKTsKICAg
ICBpbmZvLmFkZE1lbWJlcihtX3NlbGVjdGVkU3R5bGVzaGVldFNldE5hbWUpOworI2lmIEVOQUJM
RShTSEFET1dfRE9NKQorICAgIGluZm8uYWRkTWVtYmVyKG1fc2hhZG93U3R5bGVTaGVldENvbGxl
Y3Rpb24pOworI2VuZGlmCiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCmluZGV4IGI5NGJkZTljNjU0MmExZjliNTcyOTkzNWEw
YjI1ZDNmZmEyMmRkOTUuLjI2MjliMTg5MzMxZWFmYTE5MWUzYzM2MjU2NzYxOTlhM2MxN2Y5NDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24uaApAQCAtMjgsOCArMjgsMTEgQEAKICNpZm5kZWYgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbl9oCiAjZGVmaW5lIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb25faAogCisjaW5jbHVk
ZSAiU3R5bGVTaGVldENvbGxlY3Rpb24uaCIKICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
PgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0z
OSwxMSArNDIsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ1NTU3R5bGVTaGVldDsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CitjbGFzcyBT
aGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjsKK2NsYXNzIFN0eWxlUmVzb2x2ZXI7CiBjbGFzcyBT
dHlsZVNoZWV0OwogY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOwogY2xhc3MgU3R5bGVTaGVldExp
c3Q7CitjbGFzcyBUcmVlU2NvcGU7CiAKLWNsYXNzIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b24geworY2xhc3MgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiA6IHB1YmxpYyBTdHlsZVNo
ZWV0Q29sbGVjdGlvbiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFBhc3NPd25QdHI8RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbj4gY3JlYXRl
KERvY3VtZW50KiBkb2N1bWVudCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IERvY3VtZW50U3R5bGVT
aGVldENvbGxlY3Rpb24oZG9jdW1lbnQpKTsgfQpAQCAtNjAsNyArNjcsNyBAQCBwdWJsaWM6CiAg
ICAgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBpbmplY3RlZEF1dGhvclN0
eWxlU2hlZXRzKCkgY29uc3Q7CiAKICAgICB2b2lkIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rl
KE5vZGUqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7Ci0gICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZShOb2RlKik7CisgICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZShOb2RlKiwgY29uc3QgVHJlZVNjb3BlKiA9IDApOwogCiAgICAgdm9pZCBjbGVhclBhZ2VV
c2VyU2hlZXQoKTsKICAgICB2b2lkIHVwZGF0ZVBhZ2VVc2VyU2hlZXQoKTsKQEAgLTcxLDcgKzc4
LDYgQEAgcHVibGljOgogCiAgICAgYm9vbCBuZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25T
dHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJuIG1fbmVlZHNVcGRhdGVBY3RpdmVTdHlsZXNoZWV0
c09uU3R5bGVSZWNhbGM7IH0KIAotICAgIGVudW0gVXBkYXRlRmxhZyB7IEZ1bGxVcGRhdGUsIE9w
dGltaXplZFVwZGF0ZSB9OwogICAgIGJvb2wgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRl
RmxhZyk7CiAKICAgICBTdHJpbmcgcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUoKSBjb25zdCB7
IHJldHVybiBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lOyB9CkBAIC0xMDEsMjAgKzEwNywx
NSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21iaW5lQ1NTRmVhdHVyZUZsYWdzKCk7CiAgICAgdm9p
ZCByZXNldENTU0ZlYXR1cmVGbGFncygpOwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAg
dm9pZCBhcHBlbmRBbGxBY3RpdmVBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyhTdHlsZVJlc29sdmVy
Kik7CisjZW5kaWYKKwogICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byopIGNvbnN0OwogCiBwcml2YXRlOgogICAgIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24o
RG9jdW1lbnQqKTsKLQotICAgIHZvaWQgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxS
ZWZQdHI8U3R5bGVTaGVldD4gPiYpOwotICAgIGVudW0gU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUg
ewotICAgICAgICBSZWNvbnN0cnVjdCwKLSAgICAgICAgUmVzZXQsCi0gICAgICAgIEFkZGl0aXZl
Ci0gICAgfTsKLSAgICB2b2lkIGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcsIGNv
bnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMsIFN0eWxl
UmVzb2x2ZXJVcGRhdGVUeXBlJiwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOwotCi0g
ICAgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisgICAgdmlydHVhbCBTdHlsZVNoZWV0KiBjb2xsZWN0
QWN0aXZlU3R5bGVTaGVldEZyb21JbnN0cnVjdGlvbk5vZGUoTm9kZSosIGJvb2wmIGNvbnRpbnVl
Q29sbGVjdGluZykgT1ZFUlJJREU7CiAKICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4g
bV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0OwogICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzOwpAQCAtMTM2LDcgKzEzNyw2IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0OwogICAgIGJv
b2wgbV9uZWVkc1VwZGF0ZUFjdGl2ZVN0eWxlc2hlZXRzT25TdHlsZVJlY2FsYzsKIAotICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSosIDMyPiBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hT
ZXQ7CiAgICAgU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0IG1fc3R5bGVTaGVldENhbmRp
ZGF0ZU5vZGVzOwogCiAgICAgU3RyaW5nIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWU7CkBA
IC0xNDksNiArMTQ5LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3VzZXNCZWZvcmVBZnRlclJ1
bGVzOwogICAgIGJvb2wgbV91c2VzQmVmb3JlQWZ0ZXJSdWxlc092ZXJyaWRlOwogICAgIGJvb2wg
bV91c2VzUmVtVW5pdHM7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBPd25QdHI8U2hh
ZG93U3R5bGVTaGVldENvbGxlY3Rpb24+IG1fc2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb247Cisj
ZW5kaWYKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93U3R5bGVTaGVl
dENvbGxlY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmJmYThjNzllZTM0YzczMzA3ZGI0ZDE3NGZmNjA4
MmM5OWEzMmVkN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93
U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCkBAIC0wLDAgKzEsMTc4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMp
IDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMp
IDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIw
MDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykg
MjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2gg
TW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUu
Y29tLykKKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSBSZXNl
YXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLTIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBv
ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICog
YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu
dHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y
IG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0
LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5o
IgorCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKKyNpbmNsdWRlICJDU1NTdHlsZVNoZWV0Lmgi
CisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiSFRNTFN0eWxlRWxlbWVudC5oIgorI2luY2x1ZGUgIlNl
bGVjdG9yQ2hlY2tlci5oIgorI2luY2x1ZGUgIlN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuaCIK
KyNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRz
LmgiCisjaW5jbHVkZSAiU3R5bGVTaGVldExpc3QuaCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5
SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkxp
c3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvblZlY3Rvci5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CisK
K1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjpTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbihE
b2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBTdHlsZVNoZWV0Q29sbGVjdGlvbihkb2N1bWVudCkK
K3sKK30KKwordm9pZCBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlQWxsU3R5bGVT
aGVldHNGb3IoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCit7CisgICAgbV9zdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZXNJblNoYWRvdy5yZW1vdmUodHJlZVNjb3BlKTsKKyAgICBtX3JlbW92ZWRU
cmVlU2NvcGVzLmFkZCh0cmVlU2NvcGUpOworfQorCit2b2lkIFNoYWRvd1N0eWxlU2hlZXRDb2xs
ZWN0aW9uOjphZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKiBub2RlLCBib29sIGNyZWF0
ZWRCeVBhcnNlcikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNTRVJUKG5vZGUtPmluRG9j
dW1lbnQoKSk7CisgICAgQVNTRVJUKG5vZGUtPmlzSW5TaGFkb3dUcmVlKCkpOworCisgICAgY29u
c3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBub2RlLT50cmVlU2NvcGUoKTsKKyAgICBTdHlsZVNo
ZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXRNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBtX3N0eWxl
U2hlZXRDYW5kaWRhdGVOb2Rlc0luU2hhZG93LmFkZCh0cmVlU2NvcGUsIG51bGxwdHIpOworICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IGFkb3B0UHRyKG5ldyBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQpOworICAg
IGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlVG9DYW5kaWRhdGVMaXN0KCphZGRSZXN1bHQuaXRl
cmF0b3ItPnZhbHVlLmdldCgpLCBub2RlLCBjcmVhdGVkQnlQYXJzZXIpOworCisgICAgbV9yZW1v
dmVkVHJlZVNjb3Blcy5yZW1vdmUodHJlZVNjb3BlKTsKK30KKwordm9pZCBTaGFkb3dTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9kZSogbm9kZSwg
Y29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCit7CisgICAgU3R5bGVTaGVldENhbmRpZGF0ZUxp
c3RIYXNoU2V0TWFwOjppdGVyYXRvciBpdCA9IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzSW5T
aGFkb3cuZmluZCh0cmVlU2NvcGUpOworICAgIGlmIChpdCA9PSBtX3N0eWxlU2hlZXRDYW5kaWRh
dGVOb2Rlc0luU2hhZG93LmVuZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpdC0+dmFsdWUt
PnJlbW92ZShub2RlKTsKKyAgICBpZiAoaXQtPnZhbHVlLT5pc0VtcHR5KCkpIHsKKyAgICAgICAg
bV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXNJblNoYWRvdy5yZW1vdmUodHJlZVNjb3BlKTsKKyAg
ICAgICAgbV9yZW1vdmVkVHJlZVNjb3Blcy5hZGQodHJlZVNjb3BlKTsKKyAgICB9Cit9CisKK1Zl
Y3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246
OmVuc3VyZUFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzRm9yKGNvbnN0IFRyZWVTY29wZSogdHJlZVNj
b3BlKQoreworICAgIFNoYWRvd0NTU1N0eWxlU2hlZXRNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQg
PSBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLmFkZCh0cmVlU2NvcGUsIG51bGxwdHIpOworICAg
IGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSA9IGFkb3B0UHRyKG5ldyBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4pOworICAg
IHJldHVybiBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmdldCgpOworfQorCitWZWN0b3I8UmVm
UHRyPFN0eWxlU2hlZXQ+ID4qIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjplbnN1cmVBdXRo
b3JTdHlsZVNoZWV0c0Zvcihjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSkKK3sKKyAgICBTaGFk
b3dTdHlsZVNoZWV0TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zdHlsZVNoZWV0c0ZvclN0
eWxlU2hlZXRMaXN0LmFkZCh0cmVlU2NvcGUsIG51bGxwdHIpOworICAgIGlmIChhZGRSZXN1bHQu
aXNOZXdFbnRyeSkKKyAgICAgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IGFkb3B0UHRy
KG5ldyBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4pOworICAgIHJldHVybiBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlLmdldCgpOworfQorCisvLyAoTUVNTykgaW52b2tlZCBmcm9tIFN0eWxl
UmVzb2x2ZXI6OlN0eWxlUmVzb2x2ZXIuCisvLyBEb24ndCBpbnZva2UgYW55IG1ldGhvZCB3aGlj
aCBjb250YWlucyBEb2N1bWVudDo6Y2xlYXJTdHlsZVJlc29sdmVyLgordm9pZCBTaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6YXBwZW5kQWxsQWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlcikKK3sKKyAgICBTaGFkb3dDU1NTdHlsZVNoZWV0TWFwOjpp
dGVyYXRvciBiZWdpbiA9IG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYmVnaW4oKTsKKyAgICBT
aGFkb3dDU1NTdHlsZVNoZWV0TWFwOjppdGVyYXRvciBlbmQgPSBtX2FjdGl2ZUF1dGhvclN0eWxl
U2hlZXRzLmVuZCgpOworICAgIGZvciAoU2hhZG93Q1NTU3R5bGVTaGVldE1hcDo6aXRlcmF0b3Ig
aXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIGNvbnN0IFRyZWVTY29wZSog
dHJlZVNjb3BlID0gaXQtPmtleTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiA+KiBhY3RpdmVTdHlsZVNoZWV0cyA9IGl0LT52YWx1ZS5nZXQoKTsKKyAgICAgICAgc3R5bGVS
ZXNvbHZlci0+YXBwZW5kQXV0aG9yU2hhZG93U3R5bGVTaGVldHModHJlZVNjb3BlLCAwLCAqYWN0
aXZlU3R5bGVTaGVldHMpOworICAgIH0KK30KKworYm9vbCBTaGFkb3dTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnLCBib29s
IHN0eWxlUmVzb2x2ZXJSZWNvbnN0cnVjdGVkKQoreworICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIgPSAhc3R5bGVSZXNvbHZlclJlY29uc3RydWN0ZWQgPworICAgICAgICBtX2RvY3Vt
ZW50LT5zdHlsZVJlc29sdmVyKCkgOiAwOworCisgICAgU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RI
YXNoU2V0TWFwOjppdGVyYXRvciBiZWdpbiA9IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzSW5T
aGFkb3cuYmVnaW4oKTsKKyAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXRNYXA6Oml0
ZXJhdG9yIGVuZCA9IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzSW5TaGFkb3cuZW5kKCk7Cisg
ICAgZm9yIChTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXRNYXA6Oml0ZXJhdG9yIGl0ID0g
YmVnaW47IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBUcmVlU2NvcGUqIHRyZWVT
Y29wZSA9IGl0LT5rZXk7CisgICAgICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldCog
c3R5bGVTaGVldENhbmRpZGF0ZUxpc3QgPSBpdC0+dmFsdWUuZ2V0KCk7CisKKyAgICAgICAgVmVj
dG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+IGFjdGl2ZVN0eWxlU2hlZXRzOworICAgICAgICBjb2xs
ZWN0QWN0aXZlU3R5bGVTaGVldHNGcm9tQ2FuZGlkYXRlTGlzdCgqc3R5bGVTaGVldENhbmRpZGF0
ZUxpc3QsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICAgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+IGFjdGl2ZUNTU1N0eWxlU2hlZXRzOworICAgICAgICBmaWx0ZXJFbmFibGVkQ1NT
U3R5bGVTaGVldHMoYWN0aXZlQ1NTU3R5bGVTaGVldHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKKwor
ICAgICAgICBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZTsK
KyAgICAgICAgYm9vbCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKKyAgICAgICAgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+KiBjdXJyQWN0aXZlU3R5bGVTaGVldHMgPSBlbnN1cmVBY3Rp
dmVBdXRob3JTdHlsZVNoZWV0c0Zvcih0cmVlU2NvcGUpOworCisgICAgICAgIC8vIGFuYWx5emUg
cGVyIHNoYWRvdworICAgICAgICBpZiAoc3R5bGVSZXNvbHZlcikgeworICAgICAgICAgICAgYW5h
bHl6ZVN0eWxlU2hlZXRDaGFuZ2UoKmN1cnJBY3RpdmVTdHlsZVNoZWV0cywgdXBkYXRlRmxhZywg
YWN0aXZlQ1NTU3R5bGVTaGVldHMsIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCByZXF1aXJlc0Z1
bGxTdHlsZVJlY2FsYyk7CisKKyAgICAgICAgICAgIGlmIChzdHlsZVJlc29sdmVyVXBkYXRlVHlw
ZSA9PSBSZWNvbnN0cnVjdCkKKyAgICAgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNldEF1
dGhvclNoYWRvd1N0eWxlKHRyZWVTY29wZSk7CisgICAgICAgICAgICBlbHNlIGlmIChzdHlsZVJl
c29sdmVyVXBkYXRlVHlwZSA9PSBSZXNldCkgeworICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2
ZXItPnJlc2V0QXV0aG9yU2hhZG93U3R5bGUodHJlZVNjb3BlKTsKKyAgICAgICAgICAgICAgICBz
dHlsZVJlc29sdmVyLT5hcHBlbmRBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyh0cmVlU2NvcGUsIDAs
IGFjdGl2ZUNTU1N0eWxlU2hlZXRzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgQVNTRVJUKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID09IEFkZGl0aXZlKTsKKyAgICAg
ICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5hcHBlbmRBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyh0
cmVlU2NvcGUsIGN1cnJBY3RpdmVTdHlsZVNoZWV0cy0+c2l6ZSgpLCBhY3RpdmVDU1NTdHlsZVNo
ZWV0cyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY3VyckFjdGl2ZVN0eWxl
U2hlZXRzLT5zd2FwKGFjdGl2ZUNTU1N0eWxlU2hlZXRzKTsKKyAgICAgICAgZW5zdXJlQXV0aG9y
U3R5bGVTaGVldHNGb3IodHJlZVNjb3BlKS0+c3dhcChhY3RpdmVTdHlsZVNoZWV0cyk7CisgICAg
fQorCisgICAgZm9yIChIYXNoU2V0PGNvbnN0IFRyZWVTY29wZSo+OjppdGVyYXRvciBpdCA9IG1f
cmVtb3ZlZFRyZWVTY29wZXMuYmVnaW4oKTsgaXQgIT0gbV9yZW1vdmVkVHJlZVNjb3Blcy5lbmQo
KTsgKytpdCkgeworICAgICAgICBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSA9ICppdDsKKyAg
ICAgICAgaWYgKHN0eWxlUmVzb2x2ZXIpCisgICAgICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNl
dEF1dGhvclNoYWRvd1N0eWxlKHRyZWVTY29wZSk7CisgICAgICAgIG1fYWN0aXZlQXV0aG9yU3R5
bGVTaGVldHMucmVtb3ZlKHRyZWVTY29wZSk7CisgICAgICAgIG1fc3R5bGVTaGVldHNGb3JTdHls
ZVNoZWV0TGlzdC5yZW1vdmUodHJlZVNjb3BlKTsKKyAgICB9CisgICAgbV9yZW1vdmVkVHJlZVNj
b3Blcy5jbGVhcigpOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBTaGFkb3dTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5
T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmpl
Y3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CisgICAgaW5mby5hZGRNZW1i
ZXIobV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9zdHls
ZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3N0eWxlU2hl
ZXRDYW5kaWRhdGVOb2Rlc0luU2hhZG93KTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNI
QURPV19ET00pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93U3R5bGVTaGVl
dENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dTdHlsZVNoZWV0Q29sbGVj
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmJkZTZmYmY3MmEwMWFlNmRlOWY1ZmJjNTkwNTVmMjNmYTJmM2E3
MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93U3R5bGVTaGVl
dENvbGxlY3Rpb24uaApAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2lmbmRlZiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbl9oCisjZGVmaW5lIFNo
YWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uX2gKKworI2luY2x1ZGUgIlN0eWxlU2hlZXRDb2xsZWN0
aW9uLmgiCisjaW5jbHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgor
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
KyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKworY2xhc3MgQ1NTU3R5bGVTaGVldDsKK2NsYXNzIERv
Y3VtZW50OworY2xhc3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CitjbGFzcyBTdHlsZVJlc29s
dmVyOworY2xhc3MgU3R5bGVTaGVldDsKK2NsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKK2NsYXNz
IFN0eWxlU2hlZXRMaXN0OworY2xhc3MgVHJlZVNjb3BlOworCitjbGFzcyBTaGFkb3dTdHlsZVNo
ZWV0Q29sbGVjdGlvbiA6IHB1YmxpYyBTdHlsZVNoZWV0Q29sbGVjdGlvbiB7CisgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhZG93
U3R5bGVTaGVldENvbGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpIHsgcmV0dXJu
IGFkb3B0UHRyKG5ldyBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbihkb2N1bWVudCkpOyB9CisK
KyAgICB2b2lkIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqLCBib29sIGNyZWF0ZWRC
eVBhcnNlcik7CisgICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKiwg
Y29uc3QgVHJlZVNjb3BlKik7CisgICAgdm9pZCByZW1vdmVBbGxTdHlsZVNoZWV0c0Zvcihjb25z
dCBUcmVlU2NvcGUqKTsKKworICAgIGJvb2wgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRl
RmxhZywgYm9vbCBzdHlsZVJlc29sdmVyUmVjb25zdHJ1Y3RlZCk7CisgICAgdm9pZCBhcHBlbmRB
bGxBY3RpdmVBdXRob3JTdHlsZVNoZWV0cyhTdHlsZVJlc29sdmVyKik7CisKKyAgICB2b2lkIHJl
cG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKworcHJpdmF0ZToKKyAg
ICBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbihEb2N1bWVudCopOworCisgICAgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+KiBlbnN1cmVBY3RpdmVBdXRob3JTdHlsZVNoZWV0c0Zvcihj
b25zdCBUcmVlU2NvcGUqKTsKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4qIGVuc3Vy
ZUF1dGhvclN0eWxlU2hlZXRzRm9yKGNvbnN0IFRyZWVTY29wZSopOworCisgICAgLy8KKyAgICB0
eXBlZGVmIEhhc2hNYXA8Y29uc3QgVHJlZVNjb3BlKiwgT3duUHRyPFZlY3RvcjxSZWZQdHI8U3R5
bGVTaGVldD4gPiA+ID4gU2hhZG93U3R5bGVTaGVldE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
Y29uc3QgVHJlZVNjb3BlKiwgT3duUHRyPFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiA+
ID4gU2hhZG93Q1NTU3R5bGVTaGVldE1hcDsKKworICAgIFNoYWRvd1N0eWxlU2hlZXRNYXAgbV9z
dHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0OworICAgIFNoYWRvd0NTU1N0eWxlU2hlZXRNYXAg
bV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBU
cmVlU2NvcGUqLCBPd25QdHI8U3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0PiA+IFN0eWxl
U2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldE1hcDsKKyAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlz
dEhhc2hTZXRNYXAgbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXNJblNoYWRvdzsKKworICAgIEhh
c2hTZXQ8Y29uc3QgVHJlZVNjb3BlKj4gbV9yZW1vdmVkVHJlZVNjb3BlczsKK307CisKKyNlbmRp
ZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVt
ZW50LmNwcAppbmRleCBmZjIyZmU5ZGI4OGFiOWEyMjZlMDIwMmNmMmI0NDc2Y2ZlMDA1ZjBlLi5j
MzE4YjhiOTBhNjg5ZjliMzY4Nzc4NmE0OGI0NjBmMjA3NzljZTcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U3R5bGVFbGVtZW50LmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MU3R5bGVFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1
YXRvci5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgpAQCAtNzEsMTgg
KzczLDI1IEBAIHZvaWQgU3R5bGVFbGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudChEb2N1bWVu
dCogZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQpCiAgICAgcHJvY2VzcyhlbGVtZW50KTsKIH0K
IAotdm9pZCBTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFbGVtZW50KiBlbGVtZW50KQordm9pZCBTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9j
dW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBUcmVlU2Nv
cGUqIHRyZWVTY29wZSkKIHsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVChlbGVt
ZW50KTsKLSAgICBkb2N1bWVudC0+c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+cmVtb3ZlU3R5bGVT
aGVldENhbmRpZGF0ZU5vZGUoZWxlbWVudCk7CisgICAgZG9jdW1lbnQtPnN0eWxlU2hlZXRDb2xs
ZWN0aW9uKCktPnJlbW92ZVN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKGVsZW1lbnQsIHRyZWVTY29w
ZSk7CiAKICAgICBpZiAobV9zaGVldCkKICAgICAgICAgY2xlYXJTaGVldCgpOwogCiAgICAgLy8g
SWYgd2UncmUgaW4gZG9jdW1lbnQgdGVhcmRvd24sIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBkbyBh
bnkgbm90aWZpY2F0aW9uIG9mIG91ciBzaGVldCdzIHJlbW92YWwuCi0gICAgaWYgKGRvY3VtZW50
LT5yZW5kZXJlcigpKQotICAgICAgICBkb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVm
ZXJSZWNhbGNTdHlsZSk7CisgICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKSB7CisgICAgICAg
IC8vIElmIDxzdHlsZT4gaXMgaW4gYSBzaGFkb3cgdHJlZSBhbmQgaXMgbm90IHNjb3BlZCwgd2Ug
ZG9uJ3QgbmVlZAorICAgICAgICAvLyBmdWxsIHN0eWxlIHJlY2FsYy4KKyAgICAgICAgU3R5bGVS
ZXNvbHZlclVwZGF0ZUZsYWcgdXBkYXRlRmxhZyA9IHRyZWVTY29wZSAhPSBkb2N1bWVudAorICAg
ICAgICAgICAgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OnN0eWxlVGFnKQorICAg
ICAgICAgICAgJiYgIXN0YXRpY19jYXN0PEhUTUxTdHlsZUVsZW1lbnQqPihlbGVtZW50KS0+c2Nv
cGVkKCkgPworICAgICAgICAgICAgUmVjYWxjU3R5bGVJZk5lZWRlZCA6IERlZmVyUmVjYWxjU3R5
bGU7CisgICAgICAgIGRvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZCh1cGRhdGVGbGFnKTsK
KyAgICB9CiB9CiAKIHZvaWQgU3R5bGVFbGVtZW50OjpjbGVhckRvY3VtZW50RGF0YShEb2N1bWVu
dCogZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmgK
aW5kZXggNmRkNDhlY2JiNDU0YjVlYWQzMjllMDM5MDlhMjczYTZjMjUyYjBmMi4uN2Q1NDZmMzI1
NGY3NTFhNDQwMmYzMmVhOGYzNDcxOTM4MWZjNTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1N0eWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1l
bnQuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIERvY3Vt
ZW50OwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIFRyZWVTY29wZTsKIAogY2xhc3MgU3R5bGVFbGVt
ZW50IHsKIHB1YmxpYzoKQEAgLTQ1LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3Rh
cnRMb2FkaW5nRHluYW1pY1NoZWV0KERvY3VtZW50Kik7CiAKICAgICB2b2lkIGluc2VydGVkSW50
b0RvY3VtZW50KERvY3VtZW50KiwgRWxlbWVudCopOwotICAgIHZvaWQgcmVtb3ZlZEZyb21Eb2N1
bWVudChEb2N1bWVudCosIEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQo
RG9jdW1lbnQqLCBFbGVtZW50KiwgY29uc3QgVHJlZVNjb3BlKiA9IDApOwogICAgIHZvaWQgY2xl
YXJEb2N1bWVudERhdGEoRG9jdW1lbnQqLCBFbGVtZW50Kik7CiAgICAgdm9pZCBjaGlsZHJlbkNo
YW5nZWQoRWxlbWVudCopOwogICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKEVsZW1lbnQq
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZVNoZWV0Q29sbGVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjk2MWVlMWZkNmM1NjhjNDM4M2UwNDkwNmQyMDkzNTExZGYyMzY5YTIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCkBAIC0w
LDAgKzEsMjY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xs
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtk
ZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAoYXBAd2Vi
a2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwg
MjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykgMjAwOCwg
MjAwOSwgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgt
aWVzKQorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDEwLTIw
MTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3R5
bGVTaGVldENvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKKyNpbmNs
dWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSUZy
YW1lRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJQYWdl
LmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdTdHlsZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIlN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuaCIKKyNpbmNsdWRlICJTdHlsZVJl
c29sdmVyLmgiCisjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCisjaW5jbHVkZSAiU3R5
bGVTaGVldExpc3QuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIKKyNpbmNs
dWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3RmL01lbW9y
eUluc3RydW1lbnRhdGlvbkxpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01lbW9yeUluc3Ry
dW1lbnRhdGlvblZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVz
cGFjZSBIVE1MTmFtZXM7CisKK1N0eWxlU2hlZXRDb2xsZWN0aW9uOjpTdHlsZVNoZWV0Q29sbGVj
dGlvbihEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQorICAg
ICwgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldChmYWxzZSkKK3sKK30KKwordm9pZCBTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGVUb0NhbmRpZGF0ZUxp
c3QoU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0JiBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9k
ZXMsIE5vZGUqIG5vZGUsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQoreworICAgIEFTU0VSVChub2Rl
KTsKKyAgICBBU1NFUlQobm9kZS0+aW5Eb2N1bWVudCgpKTsKKyAgICAKKyAgICAvLyBVbnRpbCB0
aGUgPGJvZHk+IGV4aXN0cywgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGNvbXBhcmUgZG9jdW1l
bnQgcG9zaXRpb25zLAorICAgIC8vIHNpbmNlIHN0eWxlcyBvdXRzaWRlIG9mIHRoZSBib2R5IGFu
ZCBoZWFkIGNvbnRpbnVlIHRvIGJlIHNodW50ZWQgaW50byB0aGUgaGVhZAorICAgIC8vIChhbmQg
dGh1cyBjYW4gc2hpZnQgdG8gZW5kIHVwIGJlZm9yZSBkeW5hbWljYWxseSBhZGRlZCBET00gY29u
dGVudCB0aGF0IGlzIGFsc28KKyAgICAvLyBvdXRzaWRlIHRoZSBib2R5KS4KKyAgICBpZiAoKGNy
ZWF0ZWRCeVBhcnNlciAmJiBtX2RvY3VtZW50LT5ib2R5KCkpIHx8IHN0eWxlU2hlZXRDYW5kaWRh
dGVOb2Rlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmFk
ZChub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERldGVybWluZSBhbiBh
cHByb3ByaWF0ZSBpbnNlcnRpb24gcG9pbnQuCisgICAgU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RI
YXNoU2V0OjppdGVyYXRvciBiZWdpbiA9IHN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5iZWdpbigp
OworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5kID0gc3R5
bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0
SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBlbmQ7CisgICAgTm9kZSogZm9sbG93aW5nTm9kZSA9IDA7
CisgICAgZG8geworICAgICAgICAtLWl0OworICAgICAgICBOb2RlKiBuID0gKml0OworICAgICAg
ICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IG4tPmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKG5v
ZGUpOworICAgICAgICBpZiAocG9zaXRpb24gPT0gTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9M
TE9XSU5HKSB7CisgICAgICAgICAgICBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaW5zZXJ0QmVm
b3JlKGZvbGxvd2luZ05vZGUsIG5vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGZvbGxvd2luZ05vZGUgPSBuOworICAgIH0gd2hpbGUgKGl0ICE9IGJlZ2luKTsK
KyAgICAKKyAgICBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaW5zZXJ0QmVmb3JlKGZvbGxvd2lu
Z05vZGUsIG5vZGUpOworfQorCit2b2lkIFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphbmFseXplU3R5
bGVTaGVldENoYW5nZShWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGFjdGl2ZUF1dGhv
clN0eWxlU2hlZXRzLCBVcGRhdGVGbGFnIHVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQdHI8
Q1NTU3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBl
JiBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMp
Cit7CisgICAgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPSBSZWNvbnN0cnVjdDsKKyAgICByZXF1
aXJlc0Z1bGxTdHlsZVJlY2FsYyA9IHRydWU7CisgICAgCisgICAgLy8gU3R5bGVzaGVldHMgb2Yg
PHN0eWxlPiBlbGVtZW50cyB0aGF0IEBpbXBvcnQgc3R5bGVzaGVldHMgYXJlIGFjdGl2ZSBidXQg
bG9hZGluZy4gV2UgbmVlZCB0byB0cmlnZ2VyIGEgZnVsbCByZWNhbGMgd2hlbiBzdWNoIGxvYWRz
IGFyZSBkb25lLgorICAgIGJvb2wgaGFzQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQgPSBmYWxzZTsK
KyAgICB1bnNpZ25lZCBuZXdTdHlsZXNoZWV0Q291bnQgPSBuZXdTdHlsZXNoZWV0cy5zaXplKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5ld1N0eWxlc2hlZXRDb3VudDsgKytpKSB7
CisgICAgICAgIGlmIChuZXdTdHlsZXNoZWV0c1tpXS0+aXNMb2FkaW5nKCkpCisgICAgICAgICAg
ICBoYXNBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCA9IHRydWU7CisgICAgfQorICAgIGlmIChtX2hh
ZEFjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0ICYmICFoYXNBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCkg
eworICAgICAgICBtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0ID0gZmFsc2U7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCA9IGhhc0Fj
dGl2ZUxvYWRpbmdTdHlsZXNoZWV0OworCisgICAgaWYgKHVwZGF0ZUZsYWcgIT0gT3B0aW1pemVk
VXBkYXRlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2RvY3VtZW50LT5zdHlsZVJlc29s
dmVySWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRmluZCBvdXQgd2hpY2gg
c3R5bGVzaGVldHMgYXJlIG5ldy4KKyAgICB1bnNpZ25lZCBvbGRTdHlsZXNoZWV0Q291bnQgPSBh
Y3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7CisgICAgaWYgKG5ld1N0eWxlc2hlZXRDb3Vu
dCA8IG9sZFN0eWxlc2hlZXRDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3RvcjxTdHls
ZVNoZWV0Q29udGVudHMqPiBhZGRlZFNoZWV0czsKKyAgICB1bnNpZ25lZCBuZXdJbmRleCA9IDA7
CisgICAgZm9yICh1bnNpZ25lZCBvbGRJbmRleCA9IDA7IG9sZEluZGV4IDwgb2xkU3R5bGVzaGVl
dENvdW50OyArK29sZEluZGV4KSB7CisgICAgICAgIGlmIChuZXdJbmRleCA+PSBuZXdTdHlsZXNo
ZWV0Q291bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdoaWxlIChhY3RpdmVBdXRo
b3JTdHlsZVNoZWV0c1tvbGRJbmRleF0gIT0gbmV3U3R5bGVzaGVldHNbbmV3SW5kZXhdKSB7Cisg
ICAgICAgICAgICBhZGRlZFNoZWV0cy5hcHBlbmQobmV3U3R5bGVzaGVldHNbbmV3SW5kZXhdLT5j
b250ZW50cygpKTsKKyAgICAgICAgICAgICsrbmV3SW5kZXg7CisgICAgICAgICAgICBpZiAobmV3
SW5kZXggPT0gbmV3U3R5bGVzaGVldENvdW50KQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgfQorICAgICAgICArK25ld0luZGV4OworICAgIH0KKyAgICBib29sIGhhc0luc2VydGlv
bnMgPSAhYWRkZWRTaGVldHMuaXNFbXB0eSgpOworICAgIHdoaWxlIChuZXdJbmRleCA8IG5ld1N0
eWxlc2hlZXRDb3VudCkgeworICAgICAgICBhZGRlZFNoZWV0cy5hcHBlbmQobmV3U3R5bGVzaGVl
dHNbbmV3SW5kZXhdLT5jb250ZW50cygpKTsKKyAgICAgICAgKytuZXdJbmRleDsKKyAgICB9Cisg
ICAgLy8gSWYgYWxsIG5ldyBzaGVldHMgd2VyZSBhZGRlZCBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0
IHdlIGNhbiBqdXN0IGFkZCB0aGVtIHRvIGV4aXN0aW5nIFN0eWxlUmVzb2x2ZXIuCisgICAgLy8g
SWYgdGhlcmUgd2VyZSBpbnNlcnRpb25zIHdlIG5lZWQgdG8gcmUtYWRkIGFsbCB0aGUgc3R5bGVz
aGVldHMgc28gcnVsZXMgYXJlIG9yZGVyZWQgY29ycmVjdGx5LgorICAgIHN0eWxlUmVzb2x2ZXJV
cGRhdGVUeXBlID0gaGFzSW5zZXJ0aW9ucyA/IFJlc2V0IDogQWRkaXRpdmU7CisKKyAgICAvLyBJ
ZiB3ZSBhcmUgYWxyZWFkeSBwYXJzaW5nIHRoZSBib2R5IGFuZCBzbyBtYXkgaGF2ZSBzaWduaWZp
Y2FudCBhbW91bnQgb2YgZWxlbWVudHMsIHB1dCBzb21lIGVmZm9ydCBpbnRvIHRyeWluZyB0byBh
dm9pZCBzdHlsZSByZWNhbGNzLgorICAgIGlmICghbV9kb2N1bWVudC0+Ym9keSgpIHx8IG1fZG9j
dW1lbnQtPmhhc05vZGVzV2l0aFBsYWNlaG9sZGVyU3R5bGUoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMgaW52YWxpZGF0aW9uQW5hbHlzaXMoYWRkZWRT
aGVldHMpOworICAgIGlmIChpbnZhbGlkYXRpb25BbmFseXNpcy5kaXJ0aWVzQWxsU3R5bGUoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIGludmFsaWRhdGlvbkFuYWx5c2lzLmludmFsaWRhdGVTdHls
ZShtX2RvY3VtZW50KTsKKyAgICByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyA9IGZhbHNlOworfQor
CitTdHlsZVNoZWV0KiBTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRGcm9tSW5zdHJ1Y3Rpb25Ob2RlKE5vZGUqIG4sIGJvb2wmIGNvbnRpbnVlQ29sbGVjdGluZykK
K3sKKyAgICBBU1NFUlQobiAmJiBuLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5T
VFJVQ1RJT05fTk9ERSk7CisgICAgY29udGludWVDb2xsZWN0aW5nID0gdHJ1ZTsKKyAgICByZXR1
cm4gMDsKKyAgICBVTlVTRURfUEFSQU0obik7Cit9CisKK1N0eWxlU2hlZXQqIFN0eWxlU2hlZXRD
b2xsZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldEZyb21Ob2RlKE5vZGUqIG4pCit7Cisg
ICAgaWYgKCEobi0+aXNIVE1MRWxlbWVudCgpICYmIChuLT5oYXNUYWdOYW1lKGxpbmtUYWcpIHx8
IG4tPmhhc1RhZ05hbWUoc3R5bGVUYWcpKSkKKyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICAmJiAh
KG4tPmlzU1ZHRWxlbWVudCgpICYmIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0eWxlVGFnKSkK
KyNlbmRpZgorICAgICAgICApCisgICAgICAgIHJldHVybiAwOworCisgICAgU3R5bGVTaGVldCog
c2hlZXQgPSAwOworICAgIEVsZW1lbnQqIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Cisg
ICAgQXRvbWljU3RyaW5nIHRpdGxlID0gZS0+Z2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CisgICAg
Ym9vbCBlbmFibGVkVmlhU2NyaXB0ID0gZmFsc2U7CisgICAgaWYgKGUtPmhhc0xvY2FsTmFtZShs
aW5rVGFnKSkgeworICAgICAgICAvLyA8TElOSz4gZWxlbWVudAorICAgICAgICBIVE1MTGlua0Vs
ZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4obik7Cisg
ICAgICAgIGlmIChsaW5rRWxlbWVudC0+aXNEaXNhYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJu
IDA7CisgICAgICAgIGVuYWJsZWRWaWFTY3JpcHQgPSBsaW5rRWxlbWVudC0+aXNFbmFibGVkVmlh
U2NyaXB0KCk7CisgICAgICAgIGlmIChsaW5rRWxlbWVudC0+c3R5bGVTaGVldElzTG9hZGluZygp
KSB7CisgICAgICAgICAgICAvLyBpdCBpcyBsb2FkaW5nIGJ1dCB3ZSBzaG91bGQgc3RpbGwgZGVj
aWRlIHdoaWNoIHN0eWxlIHNoZWV0IHNldCB0byB1c2UKKyAgICAgICAgICAgIGlmICghZW5hYmxl
ZFZpYVNjcmlwdCAmJiAhdGl0bGUuaXNFbXB0eSgpICYmIG1fcHJlZmVycmVkU3R5bGVzaGVldFNl
dE5hbWUuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBy
ZWwgPSBlLT5nZXRBdHRyaWJ1dGUocmVsQXR0cik7CisgICAgICAgICAgICAgICAgaWYgKCFyZWwu
Y29udGFpbnMoImFsdGVybmF0ZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcHJlZmVycmVk
U3R5bGVzaGVldFNldE5hbWUgPSB0aXRsZTsKKyAgICAgICAgICAgICAgICAgICAgbV9zZWxlY3Rl
ZFN0eWxlc2hlZXRTZXROYW1lID0gdGl0bGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFsaW5r
RWxlbWVudC0+c2hlZXQoKSkKKyAgICAgICAgICAgIHRpdGxlID0gbnVsbEF0b207CisgICAgfQor
ICAgIC8vIEdldCB0aGUgY3VycmVudCBwcmVmZXJyZWQgc3R5bGVzZXQuIFRoaXMgaXMgdGhlCisg
ICAgLy8gc2V0IG9mIHNoZWV0cyB0aGF0IHdpbGwgYmUgZW5hYmxlZC4KKyNpZiBFTkFCTEUoU1ZH
KQorICAgIGlmIChuLT5pc1NWR0VsZW1lbnQoKSAmJiBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpz
dHlsZVRhZykpCisgICAgICAgIHNoZWV0ID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVFbGVtZW50Kj4o
biktPnNoZWV0KCk7CisgICAgZWxzZQorI2VuZGlmCisgICAgaWYgKGUtPmhhc0xvY2FsTmFtZShs
aW5rVGFnKSkKKyAgICAgICAgc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihu
KS0+c2hlZXQoKTsKKyAgICBlbHNlCisgICAgICAgIC8vIDxTVFlMRT4gZWxlbWVudAorICAgICAg
ICBzaGVldCA9IHN0YXRpY19jYXN0PEhUTUxTdHlsZUVsZW1lbnQqPihuKS0+c2hlZXQoKTsKKyAg
ICAvLyBDaGVjayB0byBzZWUgaWYgdGhpcyBzaGVldCBiZWxvbmdzIHRvIGEgc3R5bGVzZXQKKyAg
ICAvLyAodGh1cyBtYWtpbmcgaXQgUFJFRkVSUkVEIG9yIEFMVEVSTkFURSByYXRoZXIgdGhhbgor
ICAgIC8vIFBFUlNJU1RFTlQpLgorICAgIEF0b21pY1N0cmluZyByZWwgPSBlLT5nZXRBdHRyaWJ1
dGUocmVsQXR0cik7CisgICAgaWYgKCFlbmFibGVkVmlhU2NyaXB0ICYmICF0aXRsZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgLy8gWWVzLCB3ZSBoYXZlIGEgdGl0bGUuCisgICAgICAgIGlmIChtX3By
ZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTm8g
cHJlZmVycmVkIHNldCBoYXMgYmVlbiBlc3RhYmxpc2hlZC4gSWYKKyAgICAgICAgICAgIC8vIHdl
IGFyZSBOT1QgYW4gYWx0ZXJuYXRlIHNoZWV0LCB0aGVuIGVzdGFibGlzaAorICAgICAgICAgICAg
Ly8gdXMgYXMgdGhlIHByZWZlcnJlZCBzZXQuIE90aGVyd2lzZSwganVzdCBpZ25vcmUKKyAgICAg
ICAgICAgIC8vIHRoaXMgc2hlZXQuCisgICAgICAgICAgICBpZiAoZS0+aGFzTG9jYWxOYW1lKHN0
eWxlVGFnKSB8fCAhcmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkKKyAgICAgICAgICAgICAgICBt
X3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lID0gbV9zZWxlY3RlZFN0eWxlc2hlZXRTZXROYW1l
ID0gdGl0bGU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRpdGxlICE9IG1fcHJlZmVycmVkU3R5
bGVzaGVldFNldE5hbWUpCisgICAgICAgICAgICBzaGVldCA9IDA7CisgICAgfQorICAgIAorICAg
IGlmIChyZWwuY29udGFpbnMoImFsdGVybmF0ZSIpICYmIHRpdGxlLmlzRW1wdHkoKSkKKyAgICAg
ICAgc2hlZXQgPSAwOworCisgICAgcmV0dXJuIHNoZWV0OworfQorCit2b2lkIFN0eWxlU2hlZXRD
b2xsZWN0aW9uOjpjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHNGcm9tQ2FuZGlkYXRlTGlzdChTdHls
ZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQmIHN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlcywgVmVj
dG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMpCit7CisgICAgU3R5bGVTaGVldENhbmRp
ZGF0ZUxpc3RIYXNoU2V0OjppdGVyYXRvciBiZWdpbiA9IHN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rl
cy5iZWdpbigpOworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3Ig
ZW5kID0gc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOworICAgIGZvciAoU3R5bGVTaGVl
dENhbmRpZGF0ZUxpc3RIYXNoU2V0OjppdGVyYXRvciBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsr
aXQpIHsKKyAgICAgICAgTm9kZSogbiA9ICppdDsKKyAgICAgICAgU3R5bGVTaGVldCogc2hlZXQg
PSAwOworICAgICAgICBpZiAobi0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RS
VUNUSU9OX05PREUpIHsKKyAgICAgICAgICAgIGJvb2wgY29udGludWVQcm9jZXNzaW5nID0gdHJ1
ZTsKKyAgICAgICAgICAgIHNoZWV0ID0gY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRGcm9tSW5zdHJ1
Y3Rpb25Ob2RlKG4sIGNvbnRpbnVlUHJvY2Vzc2luZyk7CisgICAgICAgICAgICBpZiAoIWNvbnRp
bnVlUHJvY2Vzc2luZykKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSAK
KyAgICAgICAgICAgIHNoZWV0ID0gY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRGcm9tTm9kZShuKTsK
KyAgICAgICAgCisgICAgICAgIGlmIChzaGVldCkKKyAgICAgICAgICAgIHNoZWV0cy5hcHBlbmQo
c2hlZXQpOworICAgIH0KK30KKwordm9pZCBTdHlsZVNoZWV0Q29sbGVjdGlvbjo6ZmlsdGVyRW5h
YmxlZENTU1N0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgcmVzdWx0
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIHNoZWV0cykKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgc2hlZXRzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgh
c2hlZXRzW2ldLT5pc0NTU1N0eWxlU2hlZXQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICBpZiAoc2hlZXRzW2ldLT5kaXNhYmxlZCgpKQorICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIHJlc3VsdC5hcHBlbmQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KHNoZWV0c1tp
XS5nZXQoKSkpOworICAgIH0KK30KKworfQorCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vU3R5bGVTaGVldENvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZVNoZWV0
Q29sbGVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVlZDE4NGFmNjlhZGZiYTdiMGMzOTA5OWYxODg3Yjli
NTkzMzRkMmMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVl
dENvbGxlY3Rpb24uaApAQCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5
IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkg
S29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBN
dWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwg
MjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnko
LWllcykKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
CisgKi8KKworI2lmbmRlZiBTdHlsZVNoZWV0Q29sbGVjdGlvbl9oCisjZGVmaW5lIFN0eWxlU2hl
ZXRDb2xsZWN0aW9uX2gKKworI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBDU1NTdHlsZVNoZWV0OworY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBO
b2RlOworY2xhc3MgU2hhZG93Um9vdDsKK2NsYXNzIFN0eWxlU2hlZXQ7CitjbGFzcyBTdHlsZVNo
ZWV0Q29udGVudHM7CitjbGFzcyBTdHlsZVNoZWV0TGlzdDsKK2NsYXNzIFRyZWVTY29wZTsKKwor
Y2xhc3MgU3R5bGVTaGVldENvbGxlY3Rpb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworcHVibGljOgorICAgIGVudW0gVXBkYXRlRmxhZyB7IEZ1bGxVcGRhdGUsIE9wdGltaXplZFVw
ZGF0ZSB9OworCisgICAgdmlydHVhbCB+U3R5bGVTaGVldENvbGxlY3Rpb24oKSB7IH0KKworcHJv
dGVjdGVkOgorICAgIFN0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50Kik7CisKKyAgICB0eXBl
ZGVmIExpc3RIYXNoU2V0PE5vZGUqLCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0
OworICAgIHZvaWQgYWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGVUb0NhbmRpZGF0ZUxpc3QoU3R5
bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0JiwgTm9kZSosIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KTsKKworICAgIGVudW0gU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgeworICAgICAgICBSZWNvbnN0
cnVjdCwKKyAgICAgICAgUmVzZXQsCisgICAgICAgIEFkZGl0aXZlCisgICAgfTsKKworICAgIHZv
aWQgYW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
JiBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cywgVXBkYXRlRmxhZywgY29uc3QgVmVjdG9yPFJlZlB0
cjxDU1NTdHlsZVNoZWV0PiA+JiBuZXdTdHlsZXNoZWV0cywgU3R5bGVSZXNvbHZlclVwZGF0ZVR5
cGUmLCBib29sJiByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyk7CisKKyAgICB2aXJ0dWFsIFN0eWxl
U2hlZXQqIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0RnJvbUluc3RydWN0aW9uTm9kZShOb2RlKiwg
Ym9vbCYgY29udGludWVDb2xsZWN0aW5nKTsKKyAgICBTdHlsZVNoZWV0KiBjb2xsZWN0QWN0aXZl
U3R5bGVTaGVldEZyb21Ob2RlKE5vZGUqKTsKKyAgICB2b2lkIGNvbGxlY3RBY3RpdmVTdHlsZVNo
ZWV0c0Zyb21DYW5kaWRhdGVMaXN0KFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldCYsIFZl
Y3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYpOworCisgICAgc3RhdGljIHZvaWQgZmlsdGVyRW5h
YmxlZENTU1N0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgcmVzdWx0
LCBjb25zdCBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4mIHNoZWV0cyk7CisKKyAgICBEb2N1
bWVudCogbV9kb2N1bWVudDsKKworICAgIGJvb2wgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVl
dDsKKyAgICBTdHJpbmcgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsKKyAgICBTdHJpbmcg
bV9zZWxlY3RlZFN0eWxlc2hlZXRTZXROYW1lOworfTsKKworfQorCisjZW5kaWYKKwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKaW5kZXggZGI5MWM5OWY0Y2NiN2VjOWI2
NGQ0ODMwOTRiNzUyN2NmMmNhYjAwMi4uZjNlMzc3ZWI3MDZkZjM1OTY4YTdhNDE3ODdiODEzNDI5
MTNlM2QzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC05
NywxMSArOTcsOCBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BlZEF0dHJpYnV0ZUNoYW5n
ZWQoYm9vbCBzY29wZWQpCiAgICAgaWYgKHNjb3BlZCkgewogICAgICAgICAvLyBBcyBhbnkgPHN0
eWxlPiBpbiBhIHNoYWRvdyB0cmVlIGlzIHRyZWF0ZWQgYXMgInNjb3BlZCIsCiAgICAgICAgIC8v
IG5lZWQgdG8gcmVtb3ZlIHRoZSA8c3R5bGU+IGZyb20gaXRzIHNoYWRvdyByb290LgotICAgICAg
ICBpZiAobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID09IFJlZ2lzdGVyZWRJblNoYWRv
d1Jvb3QpCi0gICAgICAgICAgICB1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKHNoYWRvd1Jvb3Qo
KSk7Ci0KICAgICAgICAgaWYgKG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0ZSAhPSBSZWdp
c3RlcmVkQXNTY29wZWQpCi0gICAgICAgICAgICByZWdpc3RlcldpdGhTY29waW5nTm9kZSh0cnVl
KTsKKyAgICAgICAgICAgIHJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTEwOSwxMSArMTA2LDYgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojpz
Y29wZWRBdHRyaWJ1dGVDaGFuZ2VkKGJvb2wgc2NvcGVkKQogICAgIC8vIGVsZW1lbnQsIGkuZS4g
dGhlIHBhcmVudCBub2RlLgogICAgIGlmIChtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUg
PT0gUmVnaXN0ZXJlZEFzU2NvcGVkKQogICAgICAgICB1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2Rl
KHBhcmVudE5vZGUoKSk7Ci0KLSAgICAvLyBBcyBhbnkgPHN0eWxlPiBpbiBhIHNoYWRvdyB0cmVl
IGlzIHRyZWF0ZWQgYXMgInNjb3BlZCIsCi0gICAgLy8gbmVlZCB0byBhZGQgdGhlIDxzdHlsZT4g
dG8gaXRzIHNoYWRvdyByb290LgotICAgIGlmIChpc0luU2hhZG93VHJlZSgpICYmIG1fc2NvcGVk
U3R5bGVSZWdpc3RyYXRpb25TdGF0ZSAhPSBSZWdpc3RlcmVkSW5TaGFkb3dSb290KQotICAgICAg
ICByZWdpc3RlcldpdGhTY29waW5nTm9kZShmYWxzZSk7CiB9CiAKIHZvaWQgSFRNTFN0eWxlRWxl
bWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKQEAgLTEyMiw3ICsxMTQsNyBAQCB2b2lkIEhU
TUxTdHlsZUVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgSFRNTEVsZW1lbnQ6
OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpOwogfQogCi12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJl
Z2lzdGVyV2l0aFNjb3BpbmdOb2RlKGJvb2wgc2NvcGVkKQordm9pZCBIVE1MU3R5bGVFbGVtZW50
OjpyZWdpc3RlcldpdGhTY29waW5nTm9kZSgpCiB7CiAgICAgLy8gTm90ZTogV2UgY2Fubm90IHJl
bHkgb24gdGhlICdzY29wZWQnIGVsZW1lbnQgYWxyZWFkeSBiZWluZyBwcmVzZW50IHdoZW4gdGhp
cyBtZXRob2QgaXMgaW52b2tlZC4KICAgICAvLyBUaGVyZWZvcmUgd2UgY2Fubm90IHJlbHkgb24g
c2NvcGVkKCkhCkBAIC0xMzEsNyArMTIzLDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZWdp
c3RlcldpdGhTY29waW5nTm9kZShib29sIHNjb3BlZCkKICAgICBpZiAobV9zY29wZWRTdHlsZVJl
Z2lzdHJhdGlvblN0YXRlICE9IE5vdFJlZ2lzdGVyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IENvbnRhaW5lck5vZGUqIHNjb3BlID0gc2NvcGVkID8gcGFyZW50Tm9kZSgpIDogc2hhZG93Um9v
dCgpOworICAgIENvbnRhaW5lck5vZGUqIHNjb3BlID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICgh
c2NvcGUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIXNjb3BlLT5pc0VsZW1lbnROb2RlKCkg
JiYgIXNjb3BlLT5pc1NoYWRvd1Jvb3QoKSkgewpAQCAtMTQ2LDcgKzEzOCw3IEBAIHZvaWQgSFRN
TFN0eWxlRWxlbWVudDo6cmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoYm9vbCBzY29wZWQpCiAgICAg
aWYgKGluRG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+cGFyc2luZygpICYmIGRvY3VtZW50KCkt
PnJlbmRlcmVyKCkpCiAgICAgICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERl
ZmVyUmVjYWxjU3R5bGUpOwogCi0gICAgbV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID0g
c2NvcGVkID8gUmVnaXN0ZXJlZEFzU2NvcGVkIDogUmVnaXN0ZXJlZEluU2hhZG93Um9vdDsKKyAg
ICBtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgPSBSZWdpc3RlcmVkQXNTY29wZWQ7CiB9
CiAKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY29waW5nTm9kZShDb250
YWluZXJOb2RlKiBzY29wZSkKQEAgLTE3Miw4ICsxNjQsMTUgQEAgTm9kZTo6SW5zZXJ0aW9uTm90
aWZpY2F0aW9uUmVxdWVzdCBIVE1MU3R5bGVFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVy
Tm9kZSoKICAgICBIVE1MRWxlbWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAg
ICBpZiAoaW5zZXJ0aW9uUG9pbnQtPmluRG9jdW1lbnQoKSkgewogICAgICAgICBTdHlsZUVsZW1l
bnQ6Omluc2VydGVkSW50b0RvY3VtZW50KGRvY3VtZW50KCksIHRoaXMpOwotICAgICAgICBpZiAo
bV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID09IE5vdFJlZ2lzdGVyZWQgJiYgKHNjb3Bl
ZCgpIHx8IGlzSW5TaGFkb3dUcmVlKCkpKQotICAgICAgICAgICAgcmVnaXN0ZXJXaXRoU2NvcGlu
Z05vZGUoc2NvcGVkKCkpOworICAgICAgICBpZiAobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0
YXRlID09IE5vdFJlZ2lzdGVyZWQpIHsKKyAgICAgICAgICAgIGlmIChzY29wZWQoKSkKKyAgICAg
ICAgICAgICAgICByZWdpc3RlcldpdGhTY29waW5nTm9kZSgpOworICAgICAgICAgICAgZWxzZSBp
ZiAoaW5zZXJ0aW9uUG9pbnQtPmlzSW5TaGFkb3dUcmVlKCkpIHsKKyAgICAgICAgICAgICAgICBT
aGFkb3dSb290KiBzY29wZSA9IHNoYWRvd1Jvb3QoKTsKKyAgICAgICAgICAgICAgICBpZiAoRWxl
bWVudCogaG9zdCA9IHNjb3BlLT5ob3N0KCkpCisgICAgICAgICAgICAgICAgICAgIGhvc3QtPnNl
dE5lZWRzU3R5bGVSZWNhbGMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAog
ICAgIHJldHVybiBJbnNlcnRpb25Eb25lOwpAQCAtMTg4LDE4ICsxODcsMTkgQEAgdm9pZCBIVE1M
U3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkK
ICAgICAvLyBOb3csIGlmIHdlIHdhbnQgdG8gcmVnaXN0ZXIgPHN0eWxlIHNjb3BlZD4gZXZlbiBp
ZiBpdCdzIG5vdCBpbkRvY3VtZW50LAogICAgIC8vIHdlJ2QgbmVlZCB0byBmaW5kIGEgd2F5IHRv
IGRpc2Nlcm4gd2hldGhlciB0aGF0IGlzIHRoZSBjYXNlLCBvciB3aGV0aGVyIDxzdHlsZSBzY29w
ZWQ+IGl0c2VsZiBpcyBhYm91dCB0byBiZSByZW1vdmVkLgogICAgIGlmIChtX3Njb3BlZFN0eWxl
UmVnaXN0cmF0aW9uU3RhdGUgIT0gTm90UmVnaXN0ZXJlZCkgewotICAgICAgICBDb250YWluZXJO
b2RlKiBzY29wZTsKLSAgICAgICAgaWYgKG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0ZSA9
PSBSZWdpc3RlcmVkSW5TaGFkb3dSb290KSB7Ci0gICAgICAgICAgICBzY29wZSA9IHNoYWRvd1Jv
b3QoKTsKLSAgICAgICAgICAgIGlmICghc2NvcGUpCi0gICAgICAgICAgICAgICAgc2NvcGUgPSBp
bnNlcnRpb25Qb2ludC0+c2hhZG93Um9vdCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAg
IHNjb3BlID0gcGFyZW50Tm9kZSgpID8gcGFyZW50Tm9kZSgpIDogaW5zZXJ0aW9uUG9pbnQ7Cisg
ICAgICAgIENvbnRhaW5lck5vZGUqIHNjb3BlID0gcGFyZW50Tm9kZSgpID8gcGFyZW50Tm9kZSgp
IDogaW5zZXJ0aW9uUG9pbnQ7CiAgICAgICAgIHVucmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoc2Nv
cGUpOwogICAgIH0KIAorICAgIFNoYWRvd1Jvb3QqIHNjb3BlID0gc2hhZG93Um9vdCgpOworICAg
IGlmICghc2NvcGUpCisgICAgICAgIHNjb3BlID0gaW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1Jvb3Qo
KTsKKyAgICBpZiAoc2NvcGUpCisgICAgICAgIGlmIChFbGVtZW50KiBob3N0ID0gc2NvcGUtPnNo
YWRvd0hvc3QoKSkKKyAgICAgICAgICAgIGhvc3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKwog
ICAgIGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKQotICAgICAgICBTdHlsZUVsZW1l
bnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoZG9jdW1lbnQoKSwgdGhpcyk7CisgICAgICAgIFN0eWxl
RWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudChkb2N1bWVudCgpLCB0aGlzLCBzY29wZSk7CiB9
CiAKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5
UGFyc2VyLCBOb2RlKiBiZWZvcmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRD
b3VudERlbHRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAppbmRleCBkM2U5
OWU0N2YzZWZiZGU3ZTFmMGJkNWI0YTk3MTE5MjVjMmM3YTY1Li43NGE2M2NiZWRmOTA3ZTkxMTA3
NzVlOWU2NWExODIyMThjZTY3YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxTdHlsZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1l
bnQuaApAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWlj
U3RyaW5nJiB0eXBlKCkgY29uc3Q7CiAKICAgICB2b2lkIHNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQo
Ym9vbCk7Ci0gICAgdm9pZCByZWdpc3RlcldpdGhTY29waW5nTm9kZShib29sKTsKKyAgICB2b2lk
IHJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2l0aFNjb3Bp
bmdOb2RlKENvbnRhaW5lck5vZGUqKTsKIAogICAgIGJvb2wgbV9maXJlZExvYWQ7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
YWJkNTMyMGMwYjQ2YTBjODE2YWVkOTM2MTczNzUyZmEzNGY2NTY4Yi4uMTJhZjYxZTExMzJhZTRi
ZWIwMDQzMTdlNDhlZTgyMzlmYmM5ODk1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTEx
LTE5ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hh
ZG93IERPTV0gaW1wbGVtZW50IGEgbmV3IHN0eWxlIHJlc29sdmVyIGZvciBzaGFkb3cgZG9tIHRy
ZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2
NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZh
c3QvY3NzL3N0eWxlLXNjb3BlZC9yZWdpc3RlcmluZy1zaGFkb3dyb290LWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2Nzcy9zdHlsZS1zY29wZWQvcmVnaXN0ZXJpbmctc2hhZG93cm9vdC5o
dG1sOgorICAgICAgICBOb3cgdW5zY29wZWQgc3R5bGVzIGluIGEgc2hhZG93IGRvbSB0cmVlIGFy
ZSBub3QgcmVnaXN0ZXJlZCBhcworICAgICAgICBzdHlsZSBzY29wZWQuCisKIDIwMTItMTEtMTgg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgTWFrZSBuYW1lZEl0
ZW0gcmV0dXJuIGEgbm9kZSBsaXN0IG9ubHkgaW4gSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24g
YW5kIEhUTUxPcHRpb25zQ29sbGVjdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGUtc2NvcGVkL3JlZ2lzdGVyaW5nLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3JlZ2lzdGVyaW5nLXNoYWRvd3Jvb3QtZXhw
ZWN0ZWQudHh0CmluZGV4IGFiYmJiZTRhNmI2Y2RjYWIwNWViMDlhMjAzNTAyOThhZGIwYzViYWMu
Ljg0MmU5OGY3MTE3NjI0MDA1ZWQzMTM0OWVlMDc3YjNjYjA5NDczZDQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9yZWdpc3RlcmluZy1zaGFkb3dyb290LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvcmVnaXN0
ZXJpbmctc2hhZG93cm9vdC1leHBlY3RlZC50eHQKQEAgLTE0LDcgKzE0LDcgQEAgUEFTUyBpbnRl
cm5hbHMubnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihob3N0KSBpcyAwCiBQQVNTIGlu
dGVybmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKHNyKSBpcyAxCiAtLS0gVW5z
ZXR0aW5nIEBzY29wZWQgLS0tCiBQQVNTIGludGVybmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHls
ZUNoaWxkcmVuKGhvc3QpIGlzIDAKLVBBU1MgaW50ZXJuYWxzLm51bWJlck9mU2NvcGVkSFRNTFN0
eWxlQ2hpbGRyZW4oc3IpIGlzIDEKK1BBU1MgaW50ZXJuYWxzLm51bWJlck9mU2NvcGVkSFRNTFN0
eWxlQ2hpbGRyZW4oc3IpIGlzIDAKIC0tLSBTZXR0aW5nIEBzY29wZWQgLS0tCiBQQVNTIGludGVy
bmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGhvc3QpIGlzIDAKIFBBU1MgaW50
ZXJuYWxzLm51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oc3IpIGlzIDEKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9yZWdpc3RlcmluZy1zaGFkb3dy
b290Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvcmVnaXN0ZXJpbmct
c2hhZG93cm9vdC5odG1sCmluZGV4IDMyOWM4MjIwYzVmNDBiZWY0Y2VhYTg3NDczYTUyNzQ2NjA0
YTMxYTkuLjliNGM1NDczNGNiMTZhMDRmZTZmN2NhZDExOTU5NjFlNWQ4MDY4ODUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9yZWdpc3RlcmluZy1zaGFkb3dy
b290Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3JlZ2lzdGVy
aW5nLXNoYWRvd3Jvb3QuaHRtbApAQCAtNDgsNyArNDgsNyBAQAogICAgICAgICAgICAgZGVidWco
Ii0tLSBVbnNldHRpbmcgQHNjb3BlZCAtLS0iKTsKICAgICAgICAgICAgIHN0eWxlLnNjb3BlZCA9
IGZhbHNlOwogICAgICAgICAgICAgc2hvdWxkQmUoImludGVybmFscy5udW1iZXJPZlNjb3BlZEhU
TUxTdHlsZUNoaWxkcmVuKGhvc3QpIiwgIjAiKTsKLSAgICAgICAgICAgIHNob3VsZEJlKCJpbnRl
cm5hbHMubnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihzcikiLCAiMSIpOyAvKiA8c3R5
bGU+IGluIHNoYWRvdywgbm90IHNjb3BlZCAqLworICAgICAgICAgICAgc2hvdWxkQmUoImludGVy
bmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKHNyKSIsICIwIik7IC8qIDxzdHls
ZT4gaW4gc2hhZG93LCBub3Qgc2NvcGVkICovCiAKICAgICAgICAgICAgIGRlYnVnKCItLS0gU2V0
dGluZyBAc2NvcGVkIC0tLSIpOwogICAgICAgICAgICAgc3R5bGUuc2NvcGVkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175372</attachid>
            <date>2012-11-21 01:31:15 -0800</date>
            <delta_ts>2012-11-21 02:48:23 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-102669-20121121182902.patch</filename>
            <type>text/plain</type>
            <size>93216</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZTgxNWU2ZTA2NWYxMDRhNzUxYWMwNTdlMzI2OTg3ZDAwMGNmY2I0Li4x
YzRmMDdjYjBhYmIwOWU0ODc4YzQ2MDRjYWE2NmJkNGY1NjM4Mjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTEyIEBACisyMDEyLTExLTIxICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xl
LmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0gaW1wbGVtZW50IGEgbmV3IHN0eWxlIHJlc29s
dmVyIGZvciBzaGFkb3cgZG9tIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDcmVhdGVkIHRoZSBzZWNvbmQgV0lQIHBhdGNoLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogY3NzL0NTU0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9y
U2hhZG93U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0
aG9yU2hhZG93U3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
dXBkYXRlQWZ0ZXJBcHBlbmRBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclNoYWRvd1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OmVuc3VyZVNoYWRvd1Jlc29sdmVyKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGFk
b3dSZXNvbHZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSdWxlRGF0YTo6cGFyZW50Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGFkb3dSZXNvbHZlcjo6ZW5zdXJlU2hhZG93UnVsZURhdGFGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTaGFkb3dSZXNvbHZlcjo6c2V0dXBTaGFkb3dSdWxlRGF0YVBhcmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjplbnN1cmVSdWxlU2V0Rm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93UmVzb2x2ZXI6OmZpbmRNYXRjaGVkUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGFkb3dSZXNvbHZlcjo6cmVzZXRBdXRob3JT
dHlsZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjpjb2xsZWN0
RmVhdHVyZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1J1bGVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1J1bGVEYXRhOjpTaGFkb3dSdWxlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1J1bGVEYXRhOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UnVsZURhdGE6
OnRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6cnVsZVNldCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6ZW5zdXJlUnVsZVNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6cmVzZXRSdWxlU2V0KToKKyAgICAgICAgKFN0
eWxlU2hhZG93UmVzb2x2ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlU3R5
bGVTaGVldENhbmRpZGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6dXBkYXRlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUNT
U0ZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OmFwcGVuZEFsbEFjdGl2ZUF1dGhvclNoYWRvd1N0eWxlU2hl
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNv
bGxlY3RBY3RpdmVTdHlsZVNoZWV0RnJvbUluc3RydWN0aW9uTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAg
ICogZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjpT
aGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlQWxsU3R5bGVTaGVldHNGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZW1v
dmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6ZW5zdXJlQWN0aXZlQXV0aG9yU3R5bGVTaGVldHNGb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OmVuc3VyZUF1dGhvclN0
eWxlU2hlZXRzRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0
aW9uOjphcHBlbmRBbGxBY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlU3R5bGVSZXNvbHZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vU2hhZG93U3R5bGVTaGVldENvbGxl
Y3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1N0eWxl
U2hlZXRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xs
ZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAg
KiBkb20vU3R5bGVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0eWxl
RWxlbWVudCk6CisgICAgICAgICogZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb2xsZWN0
aW9uOjpTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGVUb0NhbmRpZGF0ZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbGxlY3Rpb246OmFuYWx5emVTdHlsZVNoZWV0
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0
QWN0aXZlU3R5bGVTaGVldEZyb21JbnN0cnVjdGlvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0RnJvbU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHls
ZVNoZWV0c0Zyb21DYW5kaWRhdGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRD
b2xsZWN0aW9uOjpmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMpOgorICAgICAgICAqIGRvbS9T
dHlsZVNoZWV0Q29sbGVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoU3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENv
bGxlY3Rpb246On5TdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnNjb3Bl
ZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6
cmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6
OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuaDoKKyAgICAg
ICAgKEhUTUxTdHlsZUVsZW1lbnQpOgorCiAyMDEyLTExLTIwICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBNb3ZlIGNvbnRyb2wgb2YgdHJh
bnNhY3Rpb24gY29tcGxldGlvbiB0byBmcm9udCBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ODAwYTUxMDJkMDc4ZjBhMWRkOTlkNWU0NGNjMjVjYjE4Y2MwYTU5ZC4uMzM4MGQwY2NiNGM2YmZj
MTk5YmRkZTJmZTdiZGVjZjlmMzEzYjA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwODIs
NiArMTA4Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvU3R5bGVSdWxlLmNwcAog
ICAgIGNzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCiAgICAgY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5j
cHAKKyAgICBjc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5jcHAKICAgICBjc3MvU3R5bGVTaGVldC5j
cHAKICAgICBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAogICAgIGNzcy9TdHlsZVNoZWV0TGlz
dC5jcHAKQEAgLTEyMTIsNiArMTIxMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20v
U2NyaXB0UnVubmVyLmNwcAogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwCiAgICAgZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwCisgICAgZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAog
ICAgIGRvbS9TaGFkb3dSb290LmNwcAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAogICAg
IGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwCkBAIC0xMjE5LDYgKzEyMjEsNyBAQCBTRVQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAogICAgIGRvbS9TdHls
ZWRFbGVtZW50LmNwcAogICAgIGRvbS9TdHlsZUVsZW1lbnQuY3BwCisgICAgZG9tL1N0eWxlU2hl
ZXRDb2xsZWN0aW9uLmNwcAogICAgIGRvbS9UYWdOb2RlTGlzdC5jcHAKICAgICBkb20vVGV4dC5j
cHAKICAgICBkb20vVGV4dEV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMWU3YWMxZDViY2NiZTUzOGYzMGYxYWNkNjIwZGQ5YzhjYzJjZDFmZS4uN2VkYjQxODRhZTAx
MWI0ZDY1NzBjNDU0ODZmNDc4YzQ2OTcyYzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0yNjM2LDYgKzI2MzYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2NvcGVSZXNvbHZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwIFwKQEAgLTI3NTQs
OCArMjc1Niw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50T3JkZXJlZE1hcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBcCi0gICAgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIFwKLSAgICBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFRpbWluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
eXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIFwKQEAgLTI5MjQs
NiArMjkyNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCkBAIC0yOTM4LDYgKzI5NDIsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVFbGVtZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZVNoZWV0
Q29sbGVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZVNoZWV0Q29sbGVjdGlv
bi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vVGFnTm9kZUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IGY2NjkxODA4NmUxM2FjNWM2NWExYmU5YWMyMGM2MzIxZjVlNjk0ZGMu
LmM2YTllMTg1Y2FiMGQ0MDg5ODQ4MGNiYWE4Y2Q2NDQ3YjVhODlkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpA
QCAtMzI0LDYgKzMyNCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9TdHlsZVJ1bGUuY3BwIFwK
ICAgICBjc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBcCiAgICAgY3NzL1N0eWxlU2NvcGVSZXNvbHZl
ci5jcHAgXAorICAgIGNzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCBcCiAgICAgY3NzL1N0eWxl
U2hlZXQuY3BwIFwKICAgICBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBcCiAgICAgY3NzL1N0
eWxlU2hlZXRMaXN0LmNwcCBcCkBAIC00NTQsMTEgKzQ1NSwxMyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBkb20vU2NyaXB0UnVubmVyLmNwcCBcCiAgICAgZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAgXAog
ICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcCBcCisgICAgZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xs
ZWN0aW9uLmNwcCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwIFwKICAgICBkb20vU3BhY2VTcGxp
dFN0cmluZy5jcHAgXAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAgXAogICAgIGRvbS9TdHls
ZWRFbGVtZW50LmNwcCBcCiAgICAgZG9tL1N0eWxlRWxlbWVudC5jcHAgXAorICAgIGRvbS9TdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgXAogICAgIGRvbS9UYWdOb2RlTGlzdC5jcHAgXAogICAgIGRv
bS9UZXh0LmNwcCBcCiAgICAgZG9tL1RleHRFdmVudC5jcHAgXApAQCAtMTYyMiwxMSArMTYyNSwx
MyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vU2NyaXB0RWxlbWVudC5oIFwKICAgICBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIFwKICAgICBkb20vU2VsZWN0b3JRdWVyeS5oIFwKKyAgICBk
b20vU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuaCBc
CiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCiAgICAgZG9tL1N0YXRpY05vZGVMaXN0Lmgg
XAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmggXAogICAgIGRvbS9TdHlsZUVsZW1lbnQuaCBcCisg
ICAgZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmggXAogICAgIGRvbS9UYWdOb2RlTGlzdC5oIFwK
ICAgICBkb20vVGV4dEV2ZW50LmggXAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggYThiM2ZlZGI2NDIyNWVmYTQ0OWE4YTIwNzgxZjQ4Mzg5NzZiNDVi
OC4uOTFlMTljYWU3YzJhMjNkZjk3YTI5NGViOWY2NzljNDFkZTQ5NDIzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNjkwLDcgKzY5MCw5IEBACiAgICAgICAgICAgICAnZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCcsCiAgICAgICAgICAgICAnZG9tL1NjcmlwdFJ1bm5lci5oJywKICAgICAgICAg
ICAgICdkb20vU2hhZG93Um9vdC5oJywKKyAgICAgICAgICAgICdkb20vU2hhZG93U3R5bGVTaGVl
dENvbGxlY3Rpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCcsCisg
ICAgICAgICAgICAnZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2Rv
bS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLAogICAgICAgICAg
ICAgJ2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCcsCkBAIC0yNjI3LDYgKzI2MjksOCBAQAogICAg
ICAgICAgICAgJ2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCcsCiAgICAgICAgICAgICAnY3NzL1N0eWxl
U2NvcGVSZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
aCcsCisgICAgICAgICAgICAnY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuY3BwJywKKyAgICAgICAg
ICAgICdjc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5oJywKICAgICAgICAgICAgICdjc3MvU3R5bGVT
aGVldC5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9TdHlsZVNoZWV0LmgnLAogICAgICAgICAgICAg
J2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwJywKQEAgLTM5NjEsNiArMzk2NSw3IEBACiAgICAg
ICAgICAgICAnZG9tL1NlbGVjdG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jv
b3QuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKKyAgICAgICAgICAgICdk
b20vU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwJywKICAgICAgICAgICAgICdkb20vU3Bh
Y2VTcGxpdFN0cmluZy5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuY3BwJywKICAgICAgICAgICAgICdkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgnLApAQCAt
Mzk3MCw2ICszOTc1LDcgQEAKICAgICAgICAgICAgICdkb20vU3RyaW5nQ2FsbGJhY2suaCcsCiAg
ICAgICAgICAgICAnZG9tL1N0eWxlRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TdHls
ZUVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1N0eWxlZEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20v
VGFnTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vVGFnTm9kZUxpc3QuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGUwMDQ4NDAz
ZGMzZTkyMmNjZWE4MjM5MTU5YWY1NjExZmJjZjcxY2YuLjFjYmU1MWQxZTFlNjZhZDJjYzY5ZGY1
YzcwNGYwYzQzZmM5N2Y1NWEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC01NDczNyw2ICs1NDczNywxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXFN0eWxlRWxlbWVudC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0eWxlU2hlZXRD
b2xsZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxUYWdOb2RlTGlzdC5jcHAiCiAJCQkJPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3YmZmZWEwMjM5NmZiYzkz
ZWZhMWMxNWRjNGVlMDEwZmUzNmMyYzAuLmViZmY5OWI5YzA5MGQ3MjYwYjIxYmIzYzkyMTA5MzI0
NTAzNDkzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTYzNzMsNiArNjM3MywxMiBAQAogCQlGQUJFNzJGOTEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkYyMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRo
RWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGRDEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkFCRTcyRkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLzsgfTsKIAkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZDMTA1
OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi87IH07CisJCUZCMEUyQ0I5MTY1QTM3
RDQwMDg2NDMxMiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjI2QTEzRjE2NUEwQjU2MDA1MDFD
QUIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwICovOyB9OworCQlGQjBFMkNCQTE2
NUEzN0Q0MDA4NjQzMTIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTQwMTY1QTBCNTYwMDUw
MUNBQiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCMEUyQ0JCMTY1QTM3RTQwMDg2NDMxMiAv
KiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGQjI2QTE0MTE2NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVTaGVldENv
bGxlY3Rpb24uY3BwICovOyB9OworCQlGQjBFMkNCQzE2NUEzN0VBMDA4NjQzMTIgLyogU3R5bGVT
aGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZCMjZBMTQyMTY1QTBCNjYwMDUwMUNBQiAvKiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCMEUy
Q0JEMTY1QTM4MDUwMDg2NDMxMiAvKiBTdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTNDMTY1QTBCMjcwMDUw
MUNBQiAvKiBTdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJRkIwRTJDQkUxNjVBMzgw
NTAwODY0MzEyIC8qIFN0eWxlU2hhZG93UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTNEMTY1QTBCMjcwMDUwMUNBQiAvKiBTdHls
ZVNoYWRvd1Jlc29sdmVyLmggKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZFNTREMyAvKiBD
U1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCOTJERjRCMTVGRUQw
ODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQ
YXRoT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkJDMjIwREYxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZC
QzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgKi87
IH07CkBAIC0xMzg2MCw2ICsxMzg2NiwxMiBAQAogCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQg
LyogbWF0aHRhZ3MuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0aHRhZ3MuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkZCMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZCMjZBMTNDMTY1QTBCMjcwMDUwMUNBQiAvKiBTdHlsZVNoYWRvd1Jl
c29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlU2hh
ZG93UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjI2QTEzRDE2
NUEwQjI3MDA1MDFDQUIgLyogU3R5bGVTaGFkb3dSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHlsZVNoYWRvd1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZCMjZBMTNGMTY1QTBCNTYwMDUwMUNBQiAvKiBTaGFkb3dTdHlsZVNoZWV0
Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFk
b3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZCMjZBMTQwMTY1QTBCNTYwMDUwMUNBQiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dTdHlsZVNoZWV0Q29sbGVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjI2QTE0MTE2NUEwQjY2MDA1
MDFDQUIgLyogU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQjI2QTE0MjE2NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVTaGVldENvbGxl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVTaGVldENvbGxl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAw
RkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkyREY0
OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDUy
LDYgKzIxNDY0LDggQEAKIAkJCQlFNDk0NkVBRDE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxl
SW1wb3J0LmggKi8sCiAJCQkJQTdCNzYxOUUxNjFFRTUyNjAwMjA4M0QzIC8qIFN0eWxlU2NvcGVS
ZXNvbHZlci5jcHAgKi8sCiAJCQkJQTdCNzYxOUYxNjFFRTUyNjAwMjA4M0QzIC8qIFN0eWxlU2Nv
cGVSZXNvbHZlci5oICovLAorCQkJCUZCMjZBMTNDMTY1QTBCMjcwMDUwMUNBQiAvKiBTdHlsZVNo
YWRvd1Jlc29sdmVyLmNwcCAqLywKKwkJCQlGQjI2QTEzRDE2NUEwQjI3MDA1MDFDQUIgLyogU3R5
bGVTaGFkb3dSZXNvbHZlci5oICovLAogCQkJCUE4RUE4MDA1MEExOTUxNkUwMEE4RUY1RiAvKiBT
dHlsZVNoZWV0LmNwcCAqLywKIAkJCQlBOEVBODAwNDBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVT
aGVldC5oICovLAogCQkJCTg1MDY1NkRDMEFBQjQ0RDkwMDJEMTVDMCAvKiBTdHlsZVNoZWV0Lmlk
bCAqLywKQEAgLTIyMDY5LDYgKzIyMDgzLDggQEAKIAkJCQk5NzZGMzZFOTE0Njg2MjI1MDA1RTkz
QjQgLyogU2VjdXJpdHlDb250ZXh0LmggKi8sCiAJCQkJRTQ1MzIyQTkxNDBDRTI2NzAwNUEwRjky
IC8qIFNlbGVjdG9yUXVlcnkuY3BwICovLAogCQkJCUU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAv
KiBTZWxlY3RvclF1ZXJ5LmggKi8sCisJCQkJRkIyNkExM0YxNjVBMEI1NjAwNTAxQ0FCIC8qIFNo
YWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCAqLywKKwkJCQlGQjI2QTE0MDE2NUEwQjU2MDA1
MDFDQUIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLywKIAkJCQlBNkQxNjk2MTEz
NDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgKi8sCiAJCQkJQTZEMTY5NjMxMzQ2QjRD
MTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywKIAkJCQlBN0RCNDE4MTE0Q0UxRjBBMDBBMkUz
MTYgLyogU2hhZG93Um9vdC5pZGwgKi8sCkBAIC0yMjA4NSw2ICsyMjEwMSw4IEBACiAJCQkJQThD
NEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLywKIAkJCQlBQTRDM0E3
NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLywKIAkJCQlBQTRDM0E3NTBC
MkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi8sCisJCQkJRkIyNkExNDExNjVBMEI2
NjAwNTAxQ0FCIC8qIFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCAqLywKKwkJCQlGQjI2QTE0MjE2
NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLywKIAkJCQlCQ0UzQkVD
MDBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwICovLAogCQkJCUJDRTNCRUMxMEQy
MjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5oICovLAogCQkJCTY1NTBCNjlCMDk5REYwMjcw
MDkwRDc4MSAvKiBUZXh0LmNwcCAqLywKQEAgLTI1NzgxLDYgKzI1Nzk5LDkgQEAKIAkJCQkxRTUw
MDg0NzE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNTaGFyZWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDQ3OTU4MDQxNjQzQjQ5QTAwMUUwQTdGIC8qIFBhcnNlZENvbnRl
bnRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQjBFMkNCQTE2NUEzN0Q0MDA4NjQzMTIgLyog
U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZCMEUyQ0JD
MTY1QTM3RUEwMDg2NDMxMiAvKiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkIwRTJDQkUxNjVBMzgwNTAwODY0MzEyIC8qIFN0eWxlU2hhZG93UmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjg4NzgsNiArMjg4OTksOSBAQAogCQkJCTFFNTAwODQ4MTY1MTZB
RDgwMEI3RTA5OCAvKiBSZW5kZXJUaGVtZU1hY1NoYXJlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQk0NDc5NTgwNTE2NDNCNEIyMDAxRTBBN0YgLyogUGFyc2VkQ29u
dGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkIwRTJDQjkxNjVBMzdENDAwODY0MzEy
IC8qIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZC
MEUyQ0JCMTY1QTM3RTQwMDg2NDMxMiAvKiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQjBFMkNCRDE2NUEzODA1MDA4NjQzMTIgLyogU3R5bGVTaGFkb3dSZXNv
bHZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCmluZGV4
IDQ3OWQ4ZGVmNzhjOWQzNzQwOTdjMGM0ZTk5OTEzNzEzZTJhMjMxMDUuLmVlNmFmN2VhMzY0ZjJk
OWY5ZTdiYzAzMGUwMjU2NTRlOTUwMGE3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNw
cApAQCAtNzMsNCArNzMsNSBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3Bw
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuY3BwIgogI2luY2x1ZGUgIlN0eWxlU2NvcGVSZXNv
bHZlci5jcHAiCisjaW5jbHVkZSAiU3R5bGVTaGFkb3dSZXNvbHZlci5jcHAiCiAjaW5jbHVkZSAi
Vmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAppbmRleCAwNzY3MDQxZmExNmI3NmI0OWUyNjYyMWVhOWU3MzEyNTFjNGJlMWRlLi44NzI5YWUz
ODA0ZjJhYWI2NjM4MDQ3ZGU3N2FjMDk4ZjA1ZDM3OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC0zMjAsNiArMzIwLDEwIEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVz
b2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykK
ICAgICBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVjdGlvbiA9
IGRvY3VtZW50LT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21V
c2VyU3R5bGVTaGVldHMoc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZVVzZXJTdHlsZVNoZWV0
cygpKTsKICAgICBhcHBlbmRBdXRob3JTdHlsZVNoZWV0cygwLCBzdHlsZVNoZWV0Q29sbGVjdGlv
bi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgc3R5bGVTaGVldENvbGxlY3Rpb24tPmFwcGVuZEFsbEFjdGl2ZUF1dGhvclNoYWRvd1N0eWxl
U2hlZXRzKHRoaXMpOworI2VuZGlmCisgICAgdXBkYXRlQWZ0ZXJBcHBlbmRBdXRob3JTdHlsZVNo
ZWV0cygpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5
bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiB1c2VyU2hlZXRz
KQpAQCAtMzU1LDYgKzM1OSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJl
cygpCiAgICAgbV9mZWF0dXJlcy5hZGQobV9hdXRob3JTdHlsZS0+ZmVhdHVyZXMoKSk7CiAgICAg
aWYgKG1fc2NvcGVSZXNvbHZlcikKICAgICAgICAgbV9zY29wZVJlc29sdmVyLT5jb2xsZWN0RmVh
dHVyZXNUbyhtX2ZlYXR1cmVzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAobV9z
aGFkb3dSZXNvbHZlcikKKyAgICAgICAgbV9zaGFkb3dSZXNvbHZlci0+Y29sbGVjdEZlYXR1cmVz
VG8obV9mZWF0dXJlcyk7CisjZW5kaWYKICAgICBpZiAobV91c2VyU3R5bGUpCiAgICAgICAgIG1f
ZmVhdHVyZXMuYWRkKG1fdXNlclN0eWxlLT5mZWF0dXJlcygpKTsKIApAQCAtMzkxLDggKzM5OSw0
NiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVk
IGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUAogICAgICAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgY3NzU2hlZXQpOwogICAgIH0KICAg
ICBtX2F1dGhvclN0eWxlLT5zaHJpbmtUb0ZpdCgpOworfQorCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCit2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU2hhZG93U3R5bGUoY29uc3QgVHJl
ZVNjb3BlKiBzY29wZSkKK3sKKyAgICBpZiAoIW1fc2hhZG93UmVzb2x2ZXIpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX3NoYWRvd1Jlc29sdmVyLT5yZXNldEF1dGhvclN0eWxlRm9yKHNjb3BlKTsK
K30KKwordm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyhj
b25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSwgdW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMpCit7CisgICAgdW5zaWduZWQg
c2l6ZSA9IHN0eWxlU2hlZXRzLnNpemUoKTsKKyAgICBpZiAoZmlyc3ROZXcgPj0gc2l6ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUnVsZVNldCogc2hhZG93UnVsZVNldCA9IGVuc3VyZVNoYWRv
d1Jlc29sdmVyKCktPmVuc3VyZVJ1bGVTZXRGb3IodHJlZVNjb3BlKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBmaXJzdE5ldzsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBDU1NTdHlsZVNoZWV0
KiBjc3NTaGVldCA9IHN0eWxlU2hlZXRzW2ldLmdldCgpOworICAgICAgICBBU1NFUlQoIWNzc1No
ZWV0LT5kaXNhYmxlZCgpKTsKKyAgICAgICAgaWYgKGNzc1NoZWV0LT5tZWRpYVF1ZXJpZXMoKSAm
JiAhbV9tZWRpdW0tPmV2YWwoY3NzU2hlZXQtPm1lZGlhUXVlcmllcygpLCB0aGlzKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0ID0gY3Nz
U2hlZXQtPmNvbnRlbnRzKCk7CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0g
U3R5bGVTY29wZVJlc29sdmVyOjpzY29wZUZvcihjc3NTaGVldCk7CisjaWYgRU5BQkxFKFNUWUxF
X1NDT1BFRCkKKyAgICAgICAgaWYgKHNjb3BlICYmICFzY29wZS0+aXNTaGFkb3dSb290KCkpIHsK
KyAgICAgICAgICAgIGVuc3VyZVNjb3BlUmVzb2x2ZXIoKS0+ZW5zdXJlUnVsZVNldEZvcihzY29w
ZSktPmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3BlKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgLy8gbmVlZCBz
Y29wZSBmb3IgQGhvc3QgQC1ydWxlcy4KKyAgICAgICAgc2hhZG93UnVsZVNldC0+YWRkUnVsZXNG
cm9tU2hlZXQoc2hlZXQsICptX21lZGl1bSwgdGhpcywgc2NvcGUpOworICAgIH0KKyAgICBzaGFk
b3dSdWxlU2V0LT5zaHJpbmtUb0ZpdCgpOworfQorI2VuZGlmCisKK3ZvaWQgU3R5bGVSZXNvbHZl
cjo6dXBkYXRlQWZ0ZXJBcHBlbmRBdXRob3JTdHlsZVNoZWV0cygpCit7CiAgICAgY29sbGVjdEZl
YXR1cmVzKCk7Ci0gICAgCiAgICAgaWYgKGRvY3VtZW50KCktPnJlbmRlcmVyKCkgJiYgZG9jdW1l
bnQoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+Zm9udCgpLnVwZGF0ZShmb250U2VsZWN0b3IoKSk7CiAKQEAgLTc5Myw2ICs4
MzksMjcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYg
cmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogI2VuZGlmCiB9CiAKK3ZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWF0Y2hBdXRob3JTaGFkb3dSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29s
IGluY2x1ZGVFbXB0eVJ1bGVzKQoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmICgh
bV9zaGFkb3dSZXNvbHZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0eWxlU2hh
ZG93UmVzb2x2ZXI6OlRyZWVTY29wZVJ1bGVTZXRQYWlyPiBtYXRjaGVkUnVsZXM7CisgICAgbV9z
aGFkb3dSZXNvbHZlci0+ZmluZE1hdGNoZWRSdWxlcyhtX2VsZW1lbnQsIG1hdGNoZWRSdWxlcyk7
CisgICAgZm9yIChpbnQgaSA9IG1hdGNoZWRSdWxlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkg
eworICAgICAgICBjb25zdCBTaGFkb3dSb290KiBzY29wZSA9IHN0YXRpY19jYXN0PGNvbnN0IFNo
YWRvd1Jvb3QqPihtYXRjaGVkUnVsZXNbaV0uZmlyc3QpOworICAgICAgICBSdWxlU2V0KiBydWxl
U2V0ID0gbWF0Y2hlZFJ1bGVzW2ldLnNlY29uZDsKKyAgICAgICAgTWF0Y2hPcHRpb25zIG9wdGlv
bnMoaW5jbHVkZUVtcHR5UnVsZXMsIHNjb3BlKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXMocnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
clJlZ2lvbihydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJh
bmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVsZXMpOworI2Vu
ZGlmCit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3Vs
dCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1bGVz
LmNsZWFyKCk7CkBAIC04MDcsNiArODc0LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1
dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdldCgpLCByZXN1
bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwg
b3B0aW9ucyk7CiAKICAgICBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVt
cHR5UnVsZXMpOworICAgIG1hdGNoQXV0aG9yU2hhZG93UnVsZXMocmVzdWx0LCBpbmNsdWRlRW1w
dHlSdWxlcyk7CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIH0K
QEAgLTUxOTYsNiArNTI2NCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3BlbmRpbmdTVkdEb2N1bWVudHMpOwogI2VuZGlmCiAgICAgaW5mby5hZGRNZW1i
ZXIobV9zY29wZVJlc29sdmVyKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3NoYWRvd1Jlc29sdmVy
KTsKIAogICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBwbGFjZSB3aGVyZSBpdCB3b3VsZCBi
ZSBjYWxsZWQgb25seSBvbmNlPwogICAgIGluZm8uYWRkTWVtYmVyKGRlZmF1bHRTdHlsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAwNTVkODEzZWRiNTZiMDUwY2I2MTMzNzI0
NTQ4NTExZGM2MGZiMjJiLi5iMmU5NjBiYzNkZTc5NDJjYjNmMDFjOWY3OTY0NDUxZDczZjUyY2Mx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIK
ICNpbmNsdWRlICJTdHlsZVNjb3BlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJTdHlsZVNoYWRvd1Jl
c29sdmVyLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtODksNiArOTAsNyBA
QCBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7CiBjbGFzcyBTdHlsZVJ1bGVQYWdlOwogY2xhc3Mg
U3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGFkZXI7CitjbGFzcyBTdHlsZVNoYWRvd1Jl
c29sdmVyOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIGNs
YXNzIFN0eWxlU2hlZXRMaXN0OwpAQCAtMTY5LDYgKzE3MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlc2V0QXV0aG9yU3R5bGUoKTsKICAgICB2b2lkIGFwcGVuZEF1dGhvclN0eWxlU2hlZXRz
KHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4m
KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIHJlc2V0QXV0aG9yU2hhZG93U3R5
bGUoY29uc3QgVHJlZVNjb3BlKik7CisgICAgdm9pZCBhcHBlbmRBdXRob3JTaGFkb3dTdHlsZVNo
ZWV0cyhjb25zdCBUcmVlU2NvcGUqLCB1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+Jik7CisjZW5kaWYKKyAgICB2b2lkIHVwZGF0ZUFmdGVyQXBw
ZW5kQXV0aG9yU3R5bGVTaGVldHMoKTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoU1RZTEVfU0NP
UEVEKSB8fCBFTkFCTEUoU0hBRE9XX0RPTSkKQEAgLTE4OCw2ICsxOTUsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIG1fc2NvcGVSZXNvbHZlci5nZXQoKTsKICAgICB9CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBTdHlsZVNoYWRvd1Jlc29sdmVyKiBlbnN1cmVTaGFk
b3dSZXNvbHZlcigpCisgICAgeworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhZG93RE9NRW5hYmxlZCgpKTsKKyAgICAgICAgaWYgKCFtX3NoYWRvd1Jlc29sdmVyKQor
ICAgICAgICAgICAgbV9zaGFkb3dSZXNvbHZlciA9IGFkb3B0UHRyKG5ldyBTdHlsZVNoYWRvd1Jl
c29sdmVyKCkpOworICAgICAgICByZXR1cm4gbV9zaGFkb3dSZXNvbHZlci5nZXQoKTsKKyAgICB9
CisjZW5kaWYKIAogICAgIHZvaWQgaW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiwgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlID0gMCwgUHNldWRvSWQgPSBOT1BTRVVETyk7CiAgICAgdm9pZCBp
bml0RWxlbWVudChFbGVtZW50Kik7CkBAIC0zNTMsNiArMzY5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIG1hdGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7
CiAgICAgdm9pZCBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNs
dWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIHZvaWQgbWF0Y2hBdXRob3JTaGFkb3dSdWxlcyhN
YXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgY29sbGVjdE1h
dGNoaW5nUnVsZXMoUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJ
bmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxl
c0ZvclJlZ2lvbihSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUlu
ZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50
JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKQEAgLTUxOCw2ICs1MzUsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBPd25QdHI8U3R5bGVTY29wZVJlc29sdmVyPiBtX3Nj
b3BlUmVzb2x2ZXI7CisgICAgT3duUHRyPFN0eWxlU2hhZG93UmVzb2x2ZXI+IG1fc2hhZG93UmVz
b2x2ZXI7CiAgICAgQ1NTVG9TdHlsZU1hcCBtX3N0eWxlTWFwOwogCiAgICAgZnJpZW5kIGNsYXNz
IFN0eWxlQnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRv
d1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NWNiMWJlN2ZiOTgzZWM4MjdlODQ5MTcxYTgyNzExMjY0ZGU4OTE2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIu
Y3BwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3R5bGVT
aGFkb3dSZXNvbHZlci5oIgorCisjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCisjaW5jbHVkZSAi
Q1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgorI2luY2x1ZGUg
IkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MU3R5bGVF
bGVtZW50LmgiCisjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNpbmNsdWRlICJUcmVlU2NvcGUu
aCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25WZWN0b3IuaD4KKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2lubGluZSBTaGFkb3dSdWxlRGF0YSogU2hhZG93UnVsZURhdGE6OnBhcmVudEZv
clN0eWxlKCkKK3sKKyAgICByZXR1cm4gbV90cmVlU2NvcGUtPmFwcGx5QXV0aG9yU3R5bGVzKCkg
PyBtX3BhcmVudFJ1bGVEYXRhIDogMDsKK30KKworU2hhZG93UnVsZURhdGEqIFN0eWxlU2hhZG93
UmVzb2x2ZXI6OmVuc3VyZVNoYWRvd1J1bGVEYXRhRm9yKGNvbnN0IFRyZWVTY29wZSogdHJlZVNj
b3BlKQoreworICAgIFRyZWVTY29wZVJ1bGVTZXRNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBt
X2F1dGhvclN0eWxlcy5hZGQodHJlZVNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0
cihuZXcgU2hhZG93UnVsZURhdGEodHJlZVNjb3BlKSk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKK3ZvaWQgU3R5bGVTaGFkb3dSZXNvbHZlcjo6c2V0
dXBTaGFkb3dSdWxlRGF0YVBhcmVudChTaGFkb3dSdWxlRGF0YSogcnVsZURhdGEpCit7CisgICAg
QVNTRVJUKHJ1bGVEYXRhKTsKKyAgICBpZiAocnVsZURhdGEtPnBhcmVudCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSA9IHJ1bGVEYXRhLT50cmVl
U2NvcGUoKTsKKyAgICBpZiAoIXRyZWVTY29wZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChjb25zdCBUcmVlU2NvcGUqIHBhcmVudFRyZWVTY29wZSA9IHRyZWVTY29wZS0+cGFyZW50VHJl
ZVNjb3BlKCk7IHBhcmVudFRyZWVTY29wZTsgcGFyZW50VHJlZVNjb3BlID0gcGFyZW50VHJlZVNj
b3BlLT5wYXJlbnRUcmVlU2NvcGUoKSkgeworICAgICAgICBTaGFkb3dSdWxlRGF0YSogcGFyZW50
UnVsZURhdGEgPSBlbnN1cmVTaGFkb3dSdWxlRGF0YUZvcihwYXJlbnRUcmVlU2NvcGUpOworICAg
ICAgICBydWxlRGF0YS0+c2V0UGFyZW50KHBhcmVudFJ1bGVEYXRhKTsKKyAgICAgICAgcnVsZURh
dGEgPSBwYXJlbnRSdWxlRGF0YTsKKyAgICB9Cit9CisKK1J1bGVTZXQqIFN0eWxlU2hhZG93UmVz
b2x2ZXI6OmVuc3VyZVJ1bGVTZXRGb3IoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCit7Cisg
ICAgQVNTRVJUKHRyZWVTY29wZSk7CisgICAgU2hhZG93UnVsZURhdGEqIHJ1bGVEYXRhID0gZW5z
dXJlU2hhZG93UnVsZURhdGFGb3IodHJlZVNjb3BlKTsKKyAgICBzZXR1cFNoYWRvd1J1bGVEYXRh
UGFyZW50KHJ1bGVEYXRhKTsKKyAgICByZXR1cm4gcnVsZURhdGEtPmVuc3VyZVJ1bGVTZXQoKTsK
K30KKwordm9pZCBTdHlsZVNoYWRvd1Jlc29sdmVyOjpmaW5kTWF0Y2hlZFJ1bGVzKGNvbnN0IEVs
ZW1lbnQqIGVsZW1lbnQsIFZlY3RvcjxUcmVlU2NvcGVSdWxlU2V0UGFpcj4mIG1hdGNoZWRSdWxl
cykKK3sKKyAgICBpZiAoIWVsZW1lbnQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGNvbnN0IFRyZWVTY29wZSogdHJlZVNjb3BlID0gZWxlbWVudC0+dHJlZVNjb3Bl
KCk7CisgICAgU2hhZG93UnVsZURhdGEqIHJ1bGVEYXRhID0gZW5zdXJlU2hhZG93UnVsZURhdGFG
b3IodHJlZVNjb3BlKTsKKyAgICBzZXR1cFNoYWRvd1J1bGVEYXRhUGFyZW50KHJ1bGVEYXRhKTsK
KyAgICBmb3IgKDsgcnVsZURhdGE7IHJ1bGVEYXRhID0gcnVsZURhdGEtPnBhcmVudEZvclN0eWxl
KCkpCisgICAgICAgIGlmIChSdWxlU2V0KiBydWxlU2V0ID0gcnVsZURhdGEtPnJ1bGVTZXQoKSkK
KyAgICAgICAgICAgIG1hdGNoZWRSdWxlcy5hcHBlbmQoVHJlZVNjb3BlUnVsZVNldFBhaXIocnVs
ZURhdGEtPnRyZWVTY29wZSgpLCBydWxlU2V0KSk7Cit9CisKK3ZvaWQgU3R5bGVTaGFkb3dSZXNv
bHZlcjo6cmVzZXRBdXRob3JTdHlsZUZvcihjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSkKK3sK
KyAgICBBU1NFUlQodHJlZVNjb3BlKTsKKyAgICBUcmVlU2NvcGVSdWxlU2V0TWFwOjppdGVyYXRv
ciBpdCA9IG1fYXV0aG9yU3R5bGVzLmZpbmQodHJlZVNjb3BlKTsKKyAgICBpZiAoaXQgPT0gbV9h
dXRob3JTdHlsZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpdC0+dmFsdWUtPnJlc2V0
UnVsZVNldCgpOworfQorCit2b2lkIFN0eWxlU2hhZG93UmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJl
c1RvKFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlcykKK3sKKyAgICBmb3IgKFRyZWVTY29wZVJ1bGVT
ZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9hdXRob3JTdHlsZXMuYmVnaW4oKTsgaXQgIT0gbV9hdXRo
b3JTdHlsZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGlmIChSdWxlU2V0KiBydWxlU2V0ID0gaXQt
PnZhbHVlLT5ydWxlU2V0KCkpCisgICAgICAgICAgICBmZWF0dXJlcy5hZGQocnVsZVNldC0+ZmVh
dHVyZXMoKSk7Cit9CisKK3ZvaWQgU3R5bGVTaGFkb3dSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlw
ZXM6OkNTUyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9hdXRob3JTdHlsZXMpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM1ZDAxZTY0
NDZjYjU5YmVmMjkwMmQzYzBlZTNlNGFhMzEwMGRiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU3R5bGVTaGFkb3dSZXNvbHZlcl9oCisjZGVmaW5lIFN0eWxlU2hhZG93UmVzb2x2ZXJfaAor
CisjaW5jbHVkZSAiUnVsZVNldC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ29udGFpbmVyTm9kZTsKK2NsYXNzIENTU1N0eWxlU2hlZXQ7CitjbGFz
cyBFbGVtZW50OworY2xhc3MgUnVsZVNldDsKK2NsYXNzIFNoYWRvd1Jvb3Q7CitjbGFzcyBUcmVl
U2NvcGU7CitzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQ7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KworY2xhc3MgU2hhZG93UnVsZURhdGEgeworcHVibGljOgorICAgIFNoYWRvd1J1bGVEYXRhKGNv
bnN0IFRyZWVTY29wZSogdHJlZVNjb3BlKSA6IG1fdHJlZVNjb3BlKHRyZWVTY29wZSksIG1fcGFy
ZW50UnVsZURhdGEoMCkgeyB9CisKKyAgICB2b2lkIHNldFBhcmVudChTaGFkb3dSdWxlRGF0YSog
cGFyZW50UnVsZURhdGEpIHsgbV9wYXJlbnRSdWxlRGF0YSA9IHBhcmVudFJ1bGVEYXRhOyB9Cisg
ICAgU2hhZG93UnVsZURhdGEqIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50UnVsZURhdGE7IH0K
KyAgICBTaGFkb3dSdWxlRGF0YSogcGFyZW50Rm9yU3R5bGUoKTsKKyAgICBjb25zdCBUcmVlU2Nv
cGUqIHRyZWVTY29wZSgpIHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9CisgICAgUnVsZVNldCogcnVs
ZVNldCgpIHsgcmV0dXJuIG1fcnVsZVNldC5nZXQoKTsgfQorICAgIFJ1bGVTZXQqIGVuc3VyZVJ1
bGVTZXQoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3J1bGVTZXQpCisgICAgICAgICAgICBtX3J1
bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIG1fcnVsZVNldC5nZXQo
KTsKKyAgICB9CisgICAgdm9pZCByZXNldFJ1bGVTZXQoKSB7IG1fcnVsZVNldC5jbGVhcigpOyB9
CisKK3ByaXZhdGU6CisgICAgY29uc3QgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKKyAgICBPd25Q
dHI8UnVsZVNldD4gbV9ydWxlU2V0OworICAgIFNoYWRvd1J1bGVEYXRhKiBtX3BhcmVudFJ1bGVE
YXRhOworfTsKKworY2xhc3MgU3R5bGVTaGFkb3dSZXNvbHZlciB7CitwdWJsaWM6CisgICAgLy8g
VHJlZVNjb3BlKiAtPiBSdWxlU2V0Li4uPworICAgIFJ1bGVTZXQqIGVuc3VyZVJ1bGVTZXRGb3Io
Y29uc3QgVHJlZVNjb3BlKik7CisKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxjb25zdCBUcmVlU2Nv
cGUqLCBSdWxlU2V0Kj4gVHJlZVNjb3BlUnVsZVNldFBhaXI7CisgICAgdm9pZCBmaW5kTWF0Y2hl
ZFJ1bGVzKGNvbnN0IEVsZW1lbnQqLCBWZWN0b3I8VHJlZVNjb3BlUnVsZVNldFBhaXI+JiBtYXRj
aGVkUnVsZXMpOworICAgIHZvaWQgcmVzZXRBdXRob3JTdHlsZUZvcihjb25zdCBUcmVlU2NvcGUq
KTsKKyAgICB2b2lkIGNvbGxlY3RGZWF0dXJlc1RvKFJ1bGVGZWF0dXJlU2V0Jik7CisKKyAgICB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBTaGFkb3dSdWxlRGF0YSogZW5zdXJlU2hhZG93UnVsZURhdGFGb3IoY29uc3QgVHJl
ZVNjb3BlKik7CisgICAgdm9pZCBzZXR1cFNoYWRvd1J1bGVEYXRhUGFyZW50KFNoYWRvd1J1bGVE
YXRhKik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgVHJlZVNjb3BlKiwgT3duUHRyPFNo
YWRvd1J1bGVEYXRhPiA+IFRyZWVTY29wZVJ1bGVTZXRNYXA7CisgICAgVHJlZVNjb3BlUnVsZVNl
dE1hcCBtX2F1dGhvclN0eWxlczsKK307CisKKyNlbHNlCisKK2NsYXNzIFN0eWxlU2hhZG93UmVz
b2x2ZXIgeyB9OworCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN0eWxlU2hhZG93UmVzb2x2ZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4
IGZkNjRkM2IwODk4NTQ4ZGY0ZTRkMDljMmRjYWU4ODg3YWNlNjYxOTAuLjcwNWY3YWFhNTljNGM3
Y2U5Njg4OTNjMmUzNjJmYmUwZjNkMDdlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
LmgiCiAKKyNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNo
ZWV0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC0z
OCwxNiArMzksMTkgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTdHlsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIlNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVJ
bnZhbGlkYXRpb25BbmFseXNpcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgog
I2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25MaXN0SGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4KIApAQCAt
NTYsNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQp
CisgICAgOiBTdHlsZVNoZWV0Q29sbGVjdGlvbihkb2N1bWVudCkKICAgICAsIG1fcGVuZGluZ1N0
eWxlc2hlZXRzKDApCiAgICAgLCBtX2luamVjdGVkU3R5bGVTaGVldENhY2hlVmFsaWQoZmFsc2Up
CiAgICAgLCBtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0KGZhbHNlKQpAQCAtNjgsNiArNzIs
OSBAQCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fdXNlc0JlZm9yZUFmdGVyUnVsZXMo
ZmFsc2UpCiAgICAgLCBtX3VzZXNCZWZvcmVBZnRlclJ1bGVzT3ZlcnJpZGUoZmFsc2UpCiAgICAg
LCBtX3VzZXNSZW1Vbml0cyhmYWxzZSkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1f
c2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24oU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OmNy
ZWF0ZShkb2N1bWVudCkpCisjZW5kaWYKIHsKIH0KIApAQCAtMjI2LDE4NyArMjMzLDMwIEBAIHZv
aWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5v
ZGUoTm9kZSogbm9kZSwgYm9vbCBjCiB7CiAgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBVbnRpbCB0aGUgPGJvZHk+IGV4aXN0cywgd2Ug
aGF2ZSBubyBjaG9pY2UgYnV0IHRvIGNvbXBhcmUgZG9jdW1lbnQgcG9zaXRpb25zLAotICAgIC8v
IHNpbmNlIHN0eWxlcyBvdXRzaWRlIG9mIHRoZSBib2R5IGFuZCBoZWFkIGNvbnRpbnVlIHRvIGJl
IHNodW50ZWQgaW50byB0aGUgaGVhZAotICAgIC8vIChhbmQgdGh1cyBjYW4gc2hpZnQgdG8gZW5k
IHVwIGJlZm9yZSBkeW5hbWljYWxseSBhZGRlZCBET00gY29udGVudCB0aGF0IGlzIGFsc28KLSAg
ICAvLyBvdXRzaWRlIHRoZSBib2R5KS4KLSAgICBpZiAoKGNyZWF0ZWRCeVBhcnNlciAmJiBtX2Rv
Y3VtZW50LT5ib2R5KCkpIHx8IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmlzRW1wdHkoKSkg
ewotICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5hZGQobm9kZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKCFub2RlLT5p
c0luU2hhZG93VHJlZSgpIHx8ICFub2RlLT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkKKyAgICAgICAg
cmV0dXJuIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlVG9DYW5kaWRhdGVMaXN0KG1fc3R5bGVT
aGVldENhbmRpZGF0ZU5vZGVzLCBub2RlLCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgLy8gRGV0
ZXJtaW5lIGFuIGFwcHJvcHJpYXRlIGluc2VydGlvbiBwb2ludC4KLSAgICBTdHlsZVNoZWV0Q2Fu
ZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGJlZ2luID0gbV9zdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZXMuYmVnaW4oKTsKLSAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJh
dG9yIGVuZCA9IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOwotICAgIFN0eWxlU2hl
ZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBlbmQ7Ci0gICAgTm9kZSogZm9s
bG93aW5nTm9kZSA9IDA7Ci0gICAgZG8gewotICAgICAgICAtLWl0OwotICAgICAgICBOb2RlKiBu
ID0gKml0OwotICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IG4tPmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uKG5vZGUpOwotICAgICAgICBpZiAocG9zaXRpb24gPT0gTm9kZTo6RE9DVU1F
TlRfUE9TSVRJT05fRk9MTE9XSU5HKSB7Ci0gICAgICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRh
dGVOb2Rlcy5pbnNlcnRCZWZvcmUoZm9sbG93aW5nTm9kZSwgbm9kZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZm9sbG93aW5nTm9kZSA9IG47Ci0gICAgfSB3aGls
ZSAoaXQgIT0gYmVnaW4pOworICAgIGlmICghbV9zaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbikK
KyAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmlu
c2VydEJlZm9yZShmb2xsb3dpbmdOb2RlLCBub2RlKTsKKyAgICByZXR1cm4gbV9zaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbi0+YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUobm9kZSwgY3JlYXRl
ZEJ5UGFyc2VyKTsKKyNlbHNlCisgICAgcmV0dXJuIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rl
VG9DYW5kaWRhdGVMaXN0KG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLCBub2RlLCBjcmVhdGVk
QnlQYXJzZXIpOworI2VuZGlmCiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjo6cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9kZSogbm9kZSkKK3ZvaWQgRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9k
ZSogbm9kZSwgY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCiB7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisgICAgaWYgKCF0cmVlU2NvcGUgfHwgdHJlZVNjb3BlID09IG1fZG9jdW1lbnQgfHwg
IW5vZGUtPmhhc1RhZ05hbWUoc3R5bGVUYWcpKQorICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRh
dGVOb2Rlcy5yZW1vdmUobm9kZSk7CisgICAgZWxzZQorICAgICAgICBtX3NoYWRvd1N0eWxlU2hl
ZXRDb2xsZWN0aW9uLT5yZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShub2RlLCB0cmVlU2Nv
cGUpOworI2Vsc2UKICAgICBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5yZW1vdmUobm9kZSk7
Ci19Ci0KLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0
eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc2hlZXRzKQotewotICAgIGlm
IChtX2RvY3VtZW50LT5zZXR0aW5ncygpICYmICFtX2RvY3VtZW50LT5zZXR0aW5ncygpLT5hdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHlsZVNo
ZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGJlZ2luID0gbV9zdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZXMuYmVnaW4oKTsKLSAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6
Oml0ZXJhdG9yIGVuZCA9IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOwotICAgIGZv
ciAoU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OjppdGVyYXRvciBpdCA9IGJlZ2luOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgTm9kZSogbiA9ICppdDsKLSAgICAgICAgU3R5bGVT
aGVldCogc2hlZXQgPSAwOwotICAgICAgICBpZiAobi0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREUpIHsKLSAgICAgICAgICAgIC8vIFByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb24gKFhNTCBkb2N1bWVudHMgb25seSkuCi0gICAgICAgICAgICAvLyBXZSBkb24ndCBz
dXBwb3J0IGxpbmtpbmcgdG8gZW1iZWRkZWQgQ1NTIHN0eWxlc2hlZXRzLCBzZWUgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI4MT4gZm9yIGRpc2N1c3Npb24uCi0g
ICAgICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBpID0gc3RhdGljX2Nhc3Q8UHJvY2Vz
c2luZ0luc3RydWN0aW9uKj4obik7Ci0gICAgICAgICAgICBzaGVldCA9IHBpLT5zaGVldCgpOwot
I2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgLy8gRG9uJ3QgYXBwbHkgWFNMIHRyYW5zZm9y
bXMgdG8gYWxyZWFkeSB0cmFuc2Zvcm1lZCBkb2N1bWVudHMgLS0gPHJkYXI6Ly9wcm9ibGVtLzQx
MzI4MDY+Ci0gICAgICAgICAgICBpZiAocGktPmlzWFNMKCkgJiYgIW1fZG9jdW1lbnQtPnRyYW5z
Zm9ybVNvdXJjZURvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBhcHBseSBY
U0wgdHJhbnNmb3JtcyB1bnRpbCBsb2FkaW5nIGlzIGZpbmlzaGVkLgotICAgICAgICAgICAgICAg
IGlmICghbV9kb2N1bWVudC0+cGFyc2luZygpKQotICAgICAgICAgICAgICAgICAgICBtX2RvY3Vt
ZW50LT5hcHBseVhTTFRyYW5zZm9ybShwaSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQorICAgIFVOVVNFRF9QQVJBTSh0cmVlU2NvcGUpOwogI2VuZGlmCi0gICAgICAg
IH0gZWxzZSBpZiAoKG4tPmlzSFRNTEVsZW1lbnQoKSAmJiAobi0+aGFzVGFnTmFtZShsaW5rVGFn
KSB8fCBuLT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkpCi0jaWYgRU5BQkxFKFNWRykKLSAgICAgICAg
ICAgICAgICAgICB8fCAgKG4tPmlzU1ZHRWxlbWVudCgpICYmIG4tPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnN0eWxlVGFnKSkKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICkgewotICAgICAgICAg
ICAgRWxlbWVudCogZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgIEF0
b21pY1N0cmluZyB0aXRsZSA9IGUtPmdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOwotICAgICAgICAg
ICAgYm9vbCBlbmFibGVkVmlhU2NyaXB0ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZS0+aGFz
TG9jYWxOYW1lKGxpbmtUYWcpKSB7Ci0gICAgICAgICAgICAgICAgLy8gPExJTks+IGVsZW1lbnQK
LSAgICAgICAgICAgICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTExpbmtFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmtFbGVtZW50
LT5pc0Rpc2FibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGVuYWJsZWRWaWFTY3JpcHQgPSBsaW5rRWxlbWVudC0+aXNFbmFibGVkVmlhU2NyaXB0
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmtFbGVtZW50LT5zdHlsZVNoZWV0SXNMb2FkaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gaXQgaXMgbG9hZGluZyBidXQgd2Ugc2hvdWxk
IHN0aWxsIGRlY2lkZSB3aGljaCBzdHlsZSBzaGVldCBzZXQgdG8gdXNlCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghZW5hYmxlZFZpYVNjcmlwdCAmJiAhdGl0bGUuaXNFbXB0eSgpICYmIG1fcHJl
ZmVycmVkU3R5bGVzaGVldFNldE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlbCA9IGUtPmdldEF0dHJpYnV0ZShyZWxBdHRyKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5h
bWUgPSB0aXRsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NlbGVjdGVkU3R5bGVz
aGVldFNldE5hbWUgPSB0aXRsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFsaW5rRWxlbWVudC0+c2hlZXQoKSkKLSAgICAg
ICAgICAgICAgICAgICAgdGl0bGUgPSBudWxsQXRvbTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIC8vIEdldCB0aGUgY3VycmVudCBwcmVmZXJyZWQgc3R5bGVzZXQuIFRoaXMgaXMgdGhlCi0g
ICAgICAgICAgICAvLyBzZXQgb2Ygc2hlZXRzIHRoYXQgd2lsbCBiZSBlbmFibGVkLgotI2lmIEVO
QUJMRShTVkcpCi0gICAgICAgICAgICBpZiAobi0+aXNTVkdFbGVtZW50KCkgJiYgbi0+aGFzVGFn
TmFtZShTVkdOYW1lczo6c3R5bGVUYWcpKQotICAgICAgICAgICAgICAgIHNoZWV0ID0gc3RhdGlj
X2Nhc3Q8U1ZHU3R5bGVFbGVtZW50Kj4obiktPnNoZWV0KCk7Ci0gICAgICAgICAgICBlbHNlCi0j
ZW5kaWYKLSAgICAgICAgICAgIGlmIChlLT5oYXNMb2NhbE5hbWUobGlua1RhZykpCi0gICAgICAg
ICAgICAgICAgc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihuKS0+c2hlZXQo
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAvLyA8U1RZTEU+IGVsZW1lbnQK
LSAgICAgICAgICAgICAgICBzaGVldCA9IHN0YXRpY19jYXN0PEhUTUxTdHlsZUVsZW1lbnQqPihu
KS0+c2hlZXQoKTsKLSAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIHNoZWV0IGJl
bG9uZ3MgdG8gYSBzdHlsZXNldAotICAgICAgICAgICAgLy8gKHRodXMgbWFraW5nIGl0IFBSRUZF
UlJFRCBvciBBTFRFUk5BVEUgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgIC8vIFBFUlNJU1RFTlQp
LgotICAgICAgICAgICAgQXRvbWljU3RyaW5nIHJlbCA9IGUtPmdldEF0dHJpYnV0ZShyZWxBdHRy
KTsKLSAgICAgICAgICAgIGlmICghZW5hYmxlZFZpYVNjcmlwdCAmJiAhdGl0bGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gWWVzLCB3ZSBoYXZlIGEgdGl0bGUuCi0gICAgICAgICAg
ICAgICAgaWYgKG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIE5vIHByZWZlcnJlZCBzZXQgaGFzIGJlZW4gZXN0YWJsaXNoZWQu
IElmCi0gICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBOT1QgYW4gYWx0ZXJuYXRlIHNoZWV0
LCB0aGVuIGVzdGFibGlzaAotICAgICAgICAgICAgICAgICAgICAvLyB1cyBhcyB0aGUgcHJlZmVy
cmVkIHNldC4gT3RoZXJ3aXNlLCBqdXN0IGlnbm9yZQotICAgICAgICAgICAgICAgICAgICAvLyB0
aGlzIHNoZWV0LgotICAgICAgICAgICAgICAgICAgICBpZiAoZS0+aGFzTG9jYWxOYW1lKHN0eWxl
VGFnKSB8fCAhcmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUgPSBtX3NlbGVjdGVkU3R5bGVzaGVldFNl
dE5hbWUgPSB0aXRsZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRp
dGxlICE9IG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUpCi0gICAgICAgICAgICAgICAgICAg
IHNoZWV0ID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHJlbC5jb250YWlu
cygiYWx0ZXJuYXRlIikgJiYgdGl0bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHNoZWV0
ID0gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2hlZXQpCi0gICAgICAgICAgICBzaGVldHMu
YXBwZW5kKHNoZWV0KTsKLSAgICB9Ci19Ci0KLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoVXBkYXRlRmxhZyB1cGRhdGVGbGFnLCBjb25z
dCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBTdHlsZVJl
c29sdmVyVXBkYXRlVHlwZSYgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIGJvb2wmIHJlcXVpcmVz
RnVsbFN0eWxlUmVjYWxjKQotewotICAgIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID0gUmVjb25z
dHJ1Y3Q7Ci0gICAgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSB0cnVlOwotICAgIAotICAgIC8v
IFN0eWxlc2hlZXRzIG9mIDxzdHlsZT4gZWxlbWVudHMgdGhhdCBAaW1wb3J0IHN0eWxlc2hlZXRz
IGFyZSBhY3RpdmUgYnV0IGxvYWRpbmcuIFdlIG5lZWQgdG8gdHJpZ2dlciBhIGZ1bGwgcmVjYWxj
IHdoZW4gc3VjaCBsb2FkcyBhcmUgZG9uZS4KLSAgICBib29sIGhhc0FjdGl2ZUxvYWRpbmdTdHls
ZXNoZWV0ID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbmV3U3R5bGVzaGVldENvdW50ID0gbmV3U3R5
bGVzaGVldHMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZXdTdHlsZXNo
ZWV0Q291bnQ7ICsraSkgewotICAgICAgICBpZiAobmV3U3R5bGVzaGVldHNbaV0tPmlzTG9hZGlu
ZygpKQotICAgICAgICAgICAgaGFzQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQgPSB0cnVlOwotICAg
IH0KLSAgICBpZiAobV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCAmJiAhaGFzQWN0aXZlTG9h
ZGluZ1N0eWxlc2hlZXQpIHsKLSAgICAgICAgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCA9
IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1faGFkQWN0aXZlTG9hZGluZ1N0
eWxlc2hlZXQgPSBoYXNBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsKLQotICAgIGlmICh1cGRhdGVG
bGFnICE9IE9wdGltaXplZFVwZGF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9kb2N1
bWVudC0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZpbmQgb3V0IHdoaWNoIHN0eWxlc2hlZXRzIGFyZSBuZXcuCi0gICAgdW5zaWduZWQgb2xkU3R5
bGVzaGVldENvdW50ID0gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7Ci0gICAgaWYg
KG5ld1N0eWxlc2hlZXRDb3VudCA8IG9sZFN0eWxlc2hlZXRDb3VudCkKLSAgICAgICAgcmV0dXJu
OwotICAgIFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiBhZGRlZFNoZWV0czsKLSAgICB1bnNp
Z25lZCBuZXdJbmRleCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBvbGRJbmRleCA9IDA7IG9sZElu
ZGV4IDwgb2xkU3R5bGVzaGVldENvdW50OyArK29sZEluZGV4KSB7Ci0gICAgICAgIGlmIChuZXdJ
bmRleCA+PSBuZXdTdHlsZXNoZWV0Q291bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHdoaWxlIChtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzW29sZEluZGV4XSAhPSBuZXdTdHlsZXNo
ZWV0c1tuZXdJbmRleF0pIHsKLSAgICAgICAgICAgIGFkZGVkU2hlZXRzLmFwcGVuZChuZXdTdHls
ZXNoZWV0c1tuZXdJbmRleF0tPmNvbnRlbnRzKCkpOwotICAgICAgICAgICAgKytuZXdJbmRleDsK
LSAgICAgICAgICAgIGlmIChuZXdJbmRleCA9PSBuZXdTdHlsZXNoZWV0Q291bnQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICsrbmV3SW5kZXg7Ci0gICAgfQot
ICAgIGJvb2wgaGFzSW5zZXJ0aW9ucyA9ICFhZGRlZFNoZWV0cy5pc0VtcHR5KCk7Ci0gICAgd2hp
bGUgKG5ld0luZGV4IDwgbmV3U3R5bGVzaGVldENvdW50KSB7Ci0gICAgICAgIGFkZGVkU2hlZXRz
LmFwcGVuZChuZXdTdHlsZXNoZWV0c1tuZXdJbmRleF0tPmNvbnRlbnRzKCkpOwotICAgICAgICAr
K25ld0luZGV4OwotICAgIH0KLSAgICAvLyBJZiBhbGwgbmV3IHNoZWV0cyB3ZXJlIGFkZGVkIGF0
IHRoZSBlbmQgb2YgdGhlIGxpc3Qgd2UgY2FuIGp1c3QgYWRkIHRoZW0gdG8gZXhpc3RpbmcgU3R5
bGVSZXNvbHZlci4KLSAgICAvLyBJZiB0aGVyZSB3ZXJlIGluc2VydGlvbnMgd2UgbmVlZCB0byBy
ZS1hZGQgYWxsIHRoZSBzdHlsZXNoZWV0cyBzbyBydWxlcyBhcmUgb3JkZXJlZCBjb3JyZWN0bHku
Ci0gICAgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPSBoYXNJbnNlcnRpb25zID8gUmVzZXQgOiBB
ZGRpdGl2ZTsKLQotICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IHBhcnNpbmcgdGhlIGJvZHkgYW5k
IHNvIG1heSBoYXZlIHNpZ25pZmljYW50IGFtb3VudCBvZiBlbGVtZW50cywgcHV0IHNvbWUgZWZm
b3J0IGludG8gdHJ5aW5nIHRvIGF2b2lkIHN0eWxlIHJlY2FsY3MuCi0gICAgaWYgKCFtX2RvY3Vt
ZW50LT5ib2R5KCkgfHwgbV9kb2N1bWVudC0+aGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSgp
KQotICAgICAgICByZXR1cm47Ci0gICAgU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcyBpbnZhbGlk
YXRpb25BbmFseXNpcyhhZGRlZFNoZWV0cyk7Ci0gICAgaWYgKGludmFsaWRhdGlvbkFuYWx5c2lz
LmRpcnRpZXNBbGxTdHlsZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaW52YWxpZGF0aW9uQW5h
bHlzaXMuaW52YWxpZGF0ZVN0eWxlKG1fZG9jdW1lbnQpOwotICAgIHJlcXVpcmVzRnVsbFN0eWxl
UmVjYWxjID0gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29sIHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMo
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMpCkBAIC00MTgsMTcg
KzI2OCw2IEBAIHN0YXRpYyBib29sIHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMoY29uc3QgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGF0aWMgdm9pZCBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiA+JiByZXN1bHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4g
PiYgc2hlZXRzKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaGVldHMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgaWYgKCFzaGVldHNbaV0tPmlzQ1NTU3R5bGVTaGVldCgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzaGVldHNbaV0tPmRpc2FibGVkKCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxD
U1NTdHlsZVNoZWV0Kj4oc2hlZXRzW2ldLmdldCgpKSk7Ci0gICAgfQotfQotCiBzdGF0aWMgdm9p
ZCBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRzLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAg
SFRNTElGcmFtZUVsZW1lbnQqIHNlYW1sZXNzUGFyZW50SUZyYW1lID0gZG9jdW1lbnQtPnNlYW1s
ZXNzUGFyZW50SUZyYW1lKCk7CkBAIC00NDMsNiArMjgyLDkgQEAgdm9pZCBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVTdHlsZVJlc29sdmVyKFN0eWxlUmVzb2x2ZXJVcGRhdGVU
eXBlIHUKICAgICAgICAgbV9kb2N1bWVudC0+Y2xlYXJTdHlsZVJlc29sdmVyKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgaWYgKHVwZGF0ZVR5cGUgPT0gTm9VcGRhdGUpCisgICAgICAg
IHJldHVybjsKKwogICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBtX2RvY3VtZW50
LT5zdHlsZVJlc29sdmVyKCk7CiAgICAgdW5zaWduZWQgZmlyc3ROZXdJbmRleDsKICAgICBpZiAo
dXBkYXRlVHlwZSA9PSBSZXNldCkgewpAQCAtNDUzLDYgKzI5NSwxMiBAQCB2b2lkIERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZVN0eWxlUmVzb2x2ZXIoU3R5bGVSZXNvbHZlclVw
ZGF0ZVR5cGUgdQogICAgICAgICBmaXJzdE5ld0luZGV4ID0gbV9hY3RpdmVBdXRob3JTdHlsZVNo
ZWV0cy5zaXplKCk7CiAgICAgfQogICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxl
U2hlZXRzKGZpcnN0TmV3SW5kZXgsIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKK30KKwordm9p
ZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVDU1NGZWF0dXJlcygpCit7Cisg
ICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2
ZXIoKTsKKyAgICBzdHlsZVJlc29sdmVyLT51cGRhdGVBZnRlckFwcGVuZEF1dGhvclN0eWxlU2hl
ZXRzKCk7CiAgICAgcmVzZXRDU1NGZWF0dXJlRmxhZ3MoKTsKIH0KIApAQCAtNDcxLDcgKzMxOSw3
IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVT
aGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiBkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzOwot
ICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKTsK
KyAgICBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHNGcm9tQ2FuZGlkYXRlTGlzdChtX3N0eWxlU2hl
ZXRDYW5kaWRhdGVOb2RlcywgZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cyk7CiAKICAgICBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gYWN0aXZlQXV0aG9yU3R5bGVTaGVldHM7CiAgICAg
YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMo
KSk7CkBAIC00ODksMTAgKzMzNywxNyBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogCiAgICAg
U3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGU7CiAgICAgYm9v
bCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKLSAgICBhbmFseXplU3R5bGVTaGVldENoYW5nZSh1
cGRhdGVGbGFnLCBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cywgc3R5bGVSZXNvbHZlclVwZGF0ZVR5
cGUsIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKLQorICAgIGFuYWx5emVTdHlsZVNoZWV0Q2hh
bmdlKG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMsIHVwZGF0ZUZsYWcsIGFjdGl2ZUF1dGhvclN0
eWxlU2hlZXRzLCBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgcmVxdWlyZXNGdWxsU3R5bGVSZWNh
bGMpOwogICAgIHVwZGF0ZVN0eWxlUmVzb2x2ZXIoc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIGFj
dGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKLSAgICAKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
ICAgIGlmIChtX3NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uKQorICAgICAgICBtX3NoYWRvd1N0
eWxlU2hlZXRDb2xsZWN0aW9uLT51cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyh1cGRhdGVGbGFnLCBz
dHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9PSBSZWNvbnN0cnVjdCk7CisjZW5kaWYKKyAgICAvLyBT
b21lIHN0eWxlIGluIGEgc2hhZG93IGRvbSB0cmVlIG9yIGluIGEgZG9jdW1lbnQgdHJlZSBpcyB1
cGRhdGVkLgorICAgIGlmIChzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSAhPSBSZWNvbnN0cnVjdCkK
KyAgICAgICAgdXBkYXRlQ1NTRmVhdHVyZXMoKTsKKwogICAgIG1fYWN0aXZlQXV0aG9yU3R5bGVT
aGVldHMuc3dhcChhY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CiAgICAgbV9hY3RpdmVVc2VyU3R5
bGVTaGVldHMuc3dhcChhY3RpdmVVc2VyU3R5bGVTaGVldHMpOwogICAgIG1fc3R5bGVTaGVldHNG
b3JTdHlsZVNoZWV0TGlzdC5zd2FwKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMpOwpAQCAtNTA1
LDYgKzM2MCwzNiBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFj
dGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgIHJldHVybiByZXF1aXJl
c0Z1bGxTdHlsZVJlY2FsYzsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQordm9pZCBEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphcHBlbmRBbGxBY3RpdmVBdXRob3JTaGFkb3dTdHls
ZVNoZWV0cyhTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQoreworICAgIGlmIChtX3NoYWRv
d1N0eWxlU2hlZXRDb2xsZWN0aW9uKQorICAgICAgICBtX3NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0
aW9uLT5hcHBlbmRBbGxBY3RpdmVBdXRob3JTdHlsZVNoZWV0cyhzdHlsZVJlc29sdmVyKTsKK30K
KyNlbmRpZgorCitTdHlsZVNoZWV0KiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xs
ZWN0QWN0aXZlU3R5bGVTaGVldEZyb21JbnN0cnVjdGlvbk5vZGUoTm9kZSogbiwgYm9vbCYgY29u
dGludWVDb2xsZWN0aW5nKQoreworICAgIEFTU0VSVChuICYmIG4tPm5vZGVUeXBlKCkgPT0gTm9k
ZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKTsKKworICAgIC8vIFByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb24gKFhNTCBkb2N1bWVudHMgb25seSkuCisgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBs
aW5raW5nIHRvIGVtYmVkZGVkIENTUyBzdHlsZXNoZWV0cywgc2VlIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyODE+IGZvciBkaXNjdXNzaW9uLgorICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbiogcGkgPSBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
PihuKTsKKyAgICBTdHlsZVNoZWV0KiBzaGVldCA9IHBpLT5zaGVldCgpOworI2lmIEVOQUJMRShY
U0xUKQorICAgIC8vIERvbid0IGFwcGx5IFhTTCB0cmFuc2Zvcm1zIHRvIGFscmVhZHkgdHJhbnNm
b3JtZWQgZG9jdW1lbnRzIC0tIDxyZGFyOi8vcHJvYmxlbS80MTMyODA2PgorICAgIGlmIChwaS0+
aXNYU0woKSAmJiAhbV9kb2N1bWVudC0+dHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkgeworICAg
ICAgICAvLyBEb24ndCBhcHBseSBYU0wgdHJhbnNmb3JtcyB1bnRpbCBsb2FkaW5nIGlzIGZpbmlz
aGVkLgorICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPnBhcnNpbmcoKSkKKyAgICAgICAgICAgIG1f
ZG9jdW1lbnQtPmFwcGx5WFNMVHJhbnNmb3JtKHBpKTsKKyAgICAgICAgY29udGludWVDb2xsZWN0
aW5nID0gZmFsc2U7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgorICAgIGNvbnRp
bnVlQ29sbGVjdGluZyA9IHRydWU7CisgICAgcmV0dXJuIHNoZWV0OworfQorCiB2b2lkIERvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwpAQCAtNTE4
LDYgKzQwMyw5IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqCiAgICAgaW5mby5hZGRNZW1iZXIo
bV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJlZmVy
cmVkU3R5bGVzaGVldFNldE5hbWUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc2VsZWN0ZWRTdHls
ZXNoZWV0U2V0TmFtZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaW5mby5hZGRNZW1i
ZXIobV9zaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbik7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKaW5kZXgg
OGIyZTVhYjI2YjhmZjEzMTBlZDMxZjU3NjQ5YWY3NDgxOTUxNDg3Mi4uZjQwZmQyOWEwMWQyYjMx
NjkwNmVlMjQwMTI4MmUyYmRmMzdhOWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCkBAIC0yOCw4ICsyOCwxMSBAQAogI2lmbmRl
ZiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uX2gKICNkZWZpbmUgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbl9oCiAKKyNpbmNsdWRlICJTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM5LDExICs0MiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBOb2RlOwor
Y2xhc3MgU2hhZG93Um9vdDsKK2NsYXNzIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOworY2xh
c3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0Q29u
dGVudHM7CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKK2NsYXNzIFRyZWVTY29wZTsKIAotY2xhc3Mg
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiB7CitjbGFzcyBEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uIDogcHVibGljIFN0eWxlU2hlZXRDb2xsZWN0aW9uIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KSB7IHJldHVybiBh
ZG9wdFB0cihuZXcgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbihkb2N1bWVudCkpOyB9CkBA
IC01Niw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+ID4mIGFjdGl2ZVVzZXJTdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
VXNlclN0eWxlU2hlZXRzOyB9CiAKICAgICB2b2lkIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rl
KE5vZGUqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7Ci0gICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZShOb2RlKik7CisgICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZShOb2RlKiwgY29uc3QgVHJlZVNjb3BlKiA9IDApOwogCiAgICAgdm9pZCBjbGVhclBhZ2VV
c2VyU3R5bGVTaGVldCgpOwogICAgIHZvaWQgdXBkYXRlUGFnZVVzZXJTdHlsZVNoZWV0KCk7CkBA
IC02Nyw3ICs3NCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbmVlZHNVcGRhdGVBY3RpdmVTdHls
ZXNoZWV0c09uU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBtX25lZWRzVXBkYXRlQWN0aXZl
U3R5bGVzaGVldHNPblN0eWxlUmVjYWxjOyB9CiAKLSAgICBlbnVtIFVwZGF0ZUZsYWcgeyBGdWxs
VXBkYXRlLCBPcHRpbWl6ZWRVcGRhdGUgfTsKICAgICBib29sIHVwZGF0ZUFjdGl2ZVN0eWxlU2hl
ZXRzKFVwZGF0ZUZsYWcpOwogCiAgICAgU3RyaW5nIHByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsgfQpAQCAtOTYs
MTkgKzEwMiwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbWJpbmVDU1NGZWF0dXJlRmxhZ3Mo
KTsKICAgICB2b2lkIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CisgICAgdm9pZCB1cGRhdGVDU1NG
ZWF0dXJlcygpOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgdm9pZCBhcHBlbmRBbGxB
Y3RpdmVBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyhTdHlsZVJlc29sdmVyKik7CisjZW5kaWYKIAog
ICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqKTsKIAot
ICAgIHZvaWQgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVl
dD4gPiYpOwotICAgIGVudW0gU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgewotICAgICAgICBSZWNv
bnN0cnVjdCwKLSAgICAgICAgUmVzZXQsCi0gICAgICAgIEFkZGl0aXZlCi0gICAgfTsKLSAgICB2
b2lkIGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVU
eXBlJiwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOwogICAgIHZvaWQgdXBkYXRlU3R5
bGVSZXNvbHZlcihTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CiAKICAgICBDU1NTdHls
ZVNoZWV0KiBwYWdlVXNlclN0eWxlU2hlZXQoKTsKQEAgLTExNiw3ICsxMjAsNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRVc2Vy
U3R5bGVTaGVldHMoKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+ID4mIGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSBjb25zdDsKIAotICAgIERvY3VtZW50
KiBtX2RvY3VtZW50OworICAgIHZpcnR1YWwgU3R5bGVTaGVldCogY29sbGVjdEFjdGl2ZVN0eWxl
U2hlZXRGcm9tSW5zdHJ1Y3Rpb25Ob2RlKE5vZGUqLCBib29sJiBjb250aW51ZUNvbGxlY3Rpbmcp
IE9WRVJSSURFOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+IG1fc3R5bGVTaGVl
dHNGb3JTdHlsZVNoZWV0TGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4g
bV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsKQEAgLTEzOSw3ICsxNDMsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsKICAgICBib29sIG1fbmVlZHNV
cGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGM7CiAKLSAgICB0eXBlZGVmIExpc3RI
YXNoU2V0PE5vZGUqLCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OwogICAgIFN0
eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldCBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2RlczsK
IAogICAgIFN0cmluZyBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lOwpAQCAtMTUyLDYgKzE1
NSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzQmVmb3JlQWZ0ZXJSdWxlczsKICAgICBi
b29sIG1fdXNlc0JlZm9yZUFmdGVyUnVsZXNPdmVycmlkZTsKICAgICBib29sIG1fdXNlc1JlbVVu
aXRzOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgT3duUHRyPFNoYWRvd1N0eWxlU2hl
ZXRDb2xsZWN0aW9uPiBtX3NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOworI2VuZGlmCiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93U3R5bGVTaGVldENvbGxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YmRhMjI4ZWI0NWU1ZmJhNTgzNmRiMmUxNWNjNDg1MDJmMGRiYzky
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1N0eWxlU2hlZXRD
b2xsZWN0aW9uLmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDAxIERpcmsg
TXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQ
cm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC0yMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCIKKworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorCisjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTZWxlY3RvckNoZWNr
ZXIuaCIKKyNpbmNsdWRlICJTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgiCisjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgorI2luY2x1
ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOworCitTaGFkb3dTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqIGRvY3Vt
ZW50KQorICAgIDogU3R5bGVTaGVldENvbGxlY3Rpb24oZG9jdW1lbnQpCit7Cit9CisKK3ZvaWQg
U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OnJlbW92ZUFsbFN0eWxlU2hlZXRzRm9yKGNvbnN0
IFRyZWVTY29wZSogdHJlZVNjb3BlKQoreworICAgIG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVz
SW5TaGFkb3cucmVtb3ZlKHRyZWVTY29wZSk7CisgICAgbV9yZW1vdmVkVHJlZVNjb3Blcy5hZGQo
dHJlZVNjb3BlKTsKK30KKwordm9pZCBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkU3R5
bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9kZSogbm9kZSwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpCit7
CisgICAgQVNTRVJUKG5vZGUpOworICAgIEFTU0VSVChub2RlLT5pbkRvY3VtZW50KCkpOworICAg
IEFTU0VSVChub2RlLT5pc0luU2hhZG93VHJlZSgpKTsKKworICAgIGNvbnN0IFRyZWVTY29wZSog
dHJlZVNjb3BlID0gbm9kZS0+dHJlZVNjb3BlKCk7CisgICAgU3R5bGVTaGVldENhbmRpZGF0ZUxp
c3RIYXNoU2V0TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9zdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZXNJblNoYWRvdy5hZGQodHJlZVNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0
cihuZXcgU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0KTsKKyAgICBhZGRTdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZVRvQ2FuZGlkYXRlTGlzdCgqYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5n
ZXQoKSwgbm9kZSwgY3JlYXRlZEJ5UGFyc2VyKTsKKworICAgIG1fcmVtb3ZlZFRyZWVTY29wZXMu
cmVtb3ZlKHRyZWVTY29wZSk7Cit9CisKK3ZvaWQgU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246
OnJlbW92ZVN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqIG5vZGUsIGNvbnN0IFRyZWVTY29w
ZSogdHJlZVNjb3BlKQoreworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldE1hcDo6
aXRlcmF0b3IgaXQgPSBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlc0luU2hhZG93LmZpbmQodHJl
ZVNjb3BlKTsKKyAgICBpZiAoaXQgPT0gbV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXNJblNoYWRv
dy5lbmQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXQtPnZhbHVlLT5yZW1vdmUobm9kZSk7
CisgICAgaWYgKGl0LT52YWx1ZS0+aXNFbXB0eSgpKSB7CisgICAgICAgIG1fc3R5bGVTaGVldENh
bmRpZGF0ZU5vZGVzSW5TaGFkb3cucmVtb3ZlKHRyZWVTY29wZSk7CisgICAgICAgIG1fcmVtb3Zl
ZFRyZWVTY29wZXMuYWRkKHRyZWVTY29wZSk7CisgICAgfQorfQorCitWZWN0b3I8UmVmUHRyPENT
U1N0eWxlU2hlZXQ+ID4qIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjplbnN1cmVBY3RpdmVB
dXRob3JTdHlsZVNoZWV0c0Zvcihjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSkKK3sKKyAgICBT
aGFkb3dDU1NTdHlsZVNoZWV0TWFwOjpBZGRSZXN1bHQgYWRkUmVzdWx0ID0gbV9hY3RpdmVBdXRo
b3JTdHlsZVNoZWV0cy5hZGQodHJlZVNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0
cihuZXcgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+KTsKKyAgICByZXR1cm4gYWRkUmVz
dWx0Lml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKK30KKworVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0
PiA+KiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6ZW5zdXJlQXV0aG9yU3R5bGVTaGVldHNG
b3IoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCit7CisgICAgU2hhZG93U3R5bGVTaGVldE1h
cDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fc3R5bGVTaGVldHNGb3JTdHlsZVNoZWV0TGlzdC5h
ZGQodHJlZVNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0LmlzTmV3RW50cnkpCisg
ICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0cihuZXcgVmVjdG9yPFJl
ZlB0cjxTdHlsZVNoZWV0PiA+KTsKKyAgICByZXR1cm4gYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1
ZS5nZXQoKTsKK30KKworLy8gKE1FTU8pIGludm9rZWQgZnJvbSBTdHlsZVJlc29sdmVyOjpTdHls
ZVJlc29sdmVyLgorLy8gRG9uJ3QgaW52b2tlIGFueSBtZXRob2Qgd2hpY2ggY29udGFpbnMgRG9j
dW1lbnQ6OmNsZWFyU3R5bGVSZXNvbHZlci4KK3ZvaWQgU2hhZG93U3R5bGVTaGVldENvbGxlY3Rp
b246OmFwcGVuZEFsbEFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKFN0eWxlUmVzb2x2ZXIqIHN0eWxl
UmVzb2x2ZXIpCit7CisgICAgU2hhZG93Q1NTU3R5bGVTaGVldE1hcDo6aXRlcmF0b3IgYmVnaW4g
PSBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLmJlZ2luKCk7CisgICAgU2hhZG93Q1NTU3R5bGVT
aGVldE1hcDo6aXRlcmF0b3IgZW5kID0gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5lbmQoKTsK
KyAgICBmb3IgKFNoYWRvd0NTU1N0eWxlU2hlZXRNYXA6Oml0ZXJhdG9yIGl0ID0gYmVnaW47IGl0
ICE9IGVuZDsgKytpdCkgeworICAgICAgICBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSA9IGl0
LT5rZXk7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogYWN0aXZlU3R5
bGVTaGVldHMgPSBpdC0+dmFsdWUuZ2V0KCk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVu
ZEF1dGhvclNoYWRvd1N0eWxlU2hlZXRzKHRyZWVTY29wZSwgMCwgKmFjdGl2ZVN0eWxlU2hlZXRz
KTsKKyAgICB9Cit9CisKK3ZvaWQgU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZVN0
eWxlUmVzb2x2ZXIoU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciwgY29uc3QgVHJlZVNjb3Bl
KiB0cmVlU2NvcGUsIFVwZGF0ZUZsYWcgdXBkYXRlRmxhZywgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+JiBvbGRBY3RpdmVTdHlsZVNoZWV0cywgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+JiBuZXdBY3RpdmVTdHlsZVNoZWV0cykKK3sKKyAgICBpZiAoIXN0eWxlUmVzb2x2ZXIp
CisgICAgICAgIHJldHVybjsKKworICAgIFN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlIHN0eWxlUmVz
b2x2ZXJVcGRhdGVUeXBlOworICAgIGJvb2wgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGM7CisKKyAg
ICBhbmFseXplU3R5bGVTaGVldENoYW5nZShvbGRBY3RpdmVTdHlsZVNoZWV0cywgdXBkYXRlRmxh
ZywgbmV3QWN0aXZlU3R5bGVTaGVldHMsIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlLCByZXF1aXJl
c0Z1bGxTdHlsZVJlY2FsYyk7CisKKyAgICBzd2l0Y2ggKHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBl
KSB7CisgICAgY2FzZSBSZWNvbnN0cnVjdDoKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+cmVzZXRB
dXRob3JTaGFkb3dTdHlsZSh0cmVlU2NvcGUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJl
c2V0OgorICAgICAgICBzdHlsZVJlc29sdmVyLT5yZXNldEF1dGhvclNoYWRvd1N0eWxlKHRyZWVT
Y29wZSk7CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclNoYWRvd1N0eWxlU2hl
ZXRzKHRyZWVTY29wZSwgMCwgbmV3QWN0aXZlU3R5bGVTaGVldHMpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEFkZGl0aXZlOgorICAgICAgICBzdHlsZVJlc29sdmVyLT5hcHBlbmRBdXRob3JT
aGFkb3dTdHlsZVNoZWV0cyh0cmVlU2NvcGUsIG9sZEFjdGl2ZVN0eWxlU2hlZXRzLnNpemUoKSwg
bmV3QWN0aXZlU3R5bGVTaGVldHMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE5vVXBkYXRl
OgorICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKKyAgICB9Cit9CisKK3ZvaWQgU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0
ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZywgYm9vbCBzdHlsZVJlc29s
dmVyUmVjb25zdHJ1Y3RlZCkKK3sKKyAgICBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyID0g
IXN0eWxlUmVzb2x2ZXJSZWNvbnN0cnVjdGVkID8KKyAgICAgICAgbV9kb2N1bWVudC0+c3R5bGVS
ZXNvbHZlcigpIDogMDsKKworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldE1hcDo6
aXRlcmF0b3IgYmVnaW4gPSBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlc0luU2hhZG93LmJlZ2lu
KCk7CisgICAgU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0TWFwOjppdGVyYXRvciBlbmQg
PSBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlc0luU2hhZG93LmVuZCgpOworICAgIGZvciAoU3R5
bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0TWFwOjppdGVyYXRvciBpdCA9IGJlZ2luOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBpdC0+
a2V5OworICAgICAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQqIHN0eWxlU2hlZXRD
YW5kaWRhdGVMaXN0ID0gaXQtPnZhbHVlLmdldCgpOworCisgICAgICAgIFZlY3RvcjxSZWZQdHI8
U3R5bGVTaGVldD4gPiBhdXRob3JTaGFkb3dTdHlsZVNoZWV0czsKKyAgICAgICAgY29sbGVjdEFj
dGl2ZVN0eWxlU2hlZXRzRnJvbUNhbmRpZGF0ZUxpc3QoKnN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0
LCBhdXRob3JTaGFkb3dTdHlsZVNoZWV0cyk7CisgICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5
bGVTaGVldD4gPiBhY3RpdmVTdHlsZVNoZWV0czsKKyAgICAgICAgZmlsdGVyRW5hYmxlZENTU1N0
eWxlU2hlZXRzKGFjdGl2ZVN0eWxlU2hlZXRzLCBhdXRob3JTaGFkb3dTdHlsZVNoZWV0cyk7Cisg
ICAgICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogY3VyckFjdGl2ZVN0eWxlU2hl
ZXRzID0gZW5zdXJlQWN0aXZlQXV0aG9yU3R5bGVTaGVldHNGb3IodHJlZVNjb3BlKTsKKworICAg
ICAgICB1cGRhdGVTdHlsZVJlc29sdmVyKHN0eWxlUmVzb2x2ZXIsIHRyZWVTY29wZSwgdXBkYXRl
RmxhZywgKmN1cnJBY3RpdmVTdHlsZVNoZWV0cywgYWN0aXZlU3R5bGVTaGVldHMpOworCisgICAg
ICAgIGN1cnJBY3RpdmVTdHlsZVNoZWV0cy0+c3dhcChhY3RpdmVTdHlsZVNoZWV0cyk7CisgICAg
ICAgIGVuc3VyZUF1dGhvclN0eWxlU2hlZXRzRm9yKHRyZWVTY29wZSktPnN3YXAoYXV0aG9yU2hh
ZG93U3R5bGVTaGVldHMpOworICAgIH0KKworICAgIGZvciAoSGFzaFNldDxjb25zdCBUcmVlU2Nv
cGUqPjo6aXRlcmF0b3IgaXQgPSBtX3JlbW92ZWRUcmVlU2NvcGVzLmJlZ2luKCk7IGl0ICE9IG1f
cmVtb3ZlZFRyZWVTY29wZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgY29uc3QgVHJlZVNjb3Bl
KiB0cmVlU2NvcGUgPSAqaXQ7CisgICAgICAgIGlmIChzdHlsZVJlc29sdmVyKQorICAgICAgICAg
ICAgc3R5bGVSZXNvbHZlci0+cmVzZXRBdXRob3JTaGFkb3dTdHlsZSh0cmVlU2NvcGUpOworICAg
ICAgICBtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLnJlbW92ZSh0cmVlU2NvcGUpOworICAgICAg
ICBtX3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3QucmVtb3ZlKHRyZWVTY29wZSk7CisgICAg
fQorICAgIG1fcmVtb3ZlZFRyZWVTY29wZXMuY2xlYXIoKTsKK30KKwordm9pZCBTaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVt
b3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1vcnlP
YmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkRPTSk7CisgICAgaW5mby5hZGRN
ZW1iZXIobV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9z
dHlsZVNoZWV0c0ZvclN0eWxlU2hlZXRMaXN0KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3N0eWxl
U2hlZXRDYW5kaWRhdGVOb2Rlc0luU2hhZG93KTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3JlbW92
ZWRUcmVlU2NvcGVzKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmY2MTg0ODEwM2M2ZjI3OWYzNGJlZmQ2YzlhY2M1YmVmOTI1YmE3ZjQKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24u
aApAQCAtMCwwICsxLDkyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVs
bGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAo
YXBAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMCwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
CisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lm
bmRlZiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbl9oCisjZGVmaW5lIFNoYWRvd1N0eWxlU2hl
ZXRDb2xsZWN0aW9uX2gKKworI2luY2x1ZGUgIlN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCisjaW5j
bHVkZSA8d3RmL0Zhc3RBbGxvY0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyNpZiBFTkFCTEUo
U0hBRE9XX0RPTSkKKworY2xhc3MgQ1NTU3R5bGVTaGVldDsKK2NsYXNzIERvY3VtZW50OworY2xh
c3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jvb3Q7CitjbGFzcyBTdHlsZVJlc29sdmVyOworY2xhc3Mg
U3R5bGVTaGVldDsKK2NsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKK2NsYXNzIFN0eWxlU2hlZXRM
aXN0OworY2xhc3MgVHJlZVNjb3BlOworCitjbGFzcyBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlv
biA6IHB1YmxpYyBTdHlsZVNoZWV0Q29sbGVjdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NPd25QdHI8U2hhZG93U3R5bGVTaGVldENv
bGxlY3Rpb24+IGNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpIHsgcmV0dXJuIGFkb3B0UHRyKG5l
dyBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbihkb2N1bWVudCkpOyB9CisKKyAgICB2b2lkIGFk
ZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlKE5vZGUqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7Cisg
ICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShOb2RlKiwgY29uc3QgVHJlZVNj
b3BlKik7CisgICAgdm9pZCByZW1vdmVBbGxTdHlsZVNoZWV0c0Zvcihjb25zdCBUcmVlU2NvcGUq
KTsKKworICAgIHZvaWQgdXBkYXRlQWN0aXZlU3R5bGVTaGVldHMoVXBkYXRlRmxhZywgYm9vbCBz
dHlsZVJlc29sdmVyUmVjb25zdHJ1Y3RlZCk7CisgICAgdm9pZCBhcHBlbmRBbGxBY3RpdmVBdXRo
b3JTdHlsZVNoZWV0cyhTdHlsZVJlc29sdmVyKik7CisKKyAgICB2b2lkIHJlcG9ydE1lbW9yeVVz
YWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbihEb2N1bWVudCopOworCisgICAgVmVjdG9yPFJlZlB0cjxDU1NTdHls
ZVNoZWV0PiA+KiBlbnN1cmVBY3RpdmVBdXRob3JTdHlsZVNoZWV0c0Zvcihjb25zdCBUcmVlU2Nv
cGUqKTsKKyAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4qIGVuc3VyZUF1dGhvclN0eWxl
U2hlZXRzRm9yKGNvbnN0IFRyZWVTY29wZSopOworCisgICAgdm9pZCB1cGRhdGVTdHlsZVJlc29s
dmVyKFN0eWxlUmVzb2x2ZXIqLCBjb25zdCBUcmVlU2NvcGUqLCBVcGRhdGVGbGFnLCBWZWN0b3I8
UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIG9sZEFjdGl2ZVN0eWxlU2hlZXRzLCBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4mIG5ld0FjdGl2ZVN0eWxlU2hlZXRzKTsKKworICAgIHR5cGVk
ZWYgSGFzaE1hcDxjb25zdCBUcmVlU2NvcGUqLCBPd25QdHI8VmVjdG9yPFJlZlB0cjxTdHlsZVNo
ZWV0PiA+ID4gPiBTaGFkb3dTdHlsZVNoZWV0TWFwOworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25z
dCBUcmVlU2NvcGUqLCBPd25QdHI8VmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+ID4gPiBT
aGFkb3dDU1NTdHlsZVNoZWV0TWFwOworCisgICAgU2hhZG93U3R5bGVTaGVldE1hcCBtX3N0eWxl
U2hlZXRzRm9yU3R5bGVTaGVldExpc3Q7CisgICAgU2hhZG93Q1NTU3R5bGVTaGVldE1hcCBtX2Fj
dGl2ZUF1dGhvclN0eWxlU2hlZXRzOworCisgICAgdHlwZWRlZiBIYXNoTWFwPGNvbnN0IFRyZWVT
Y29wZSosIE93blB0cjxTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ+ID4gU3R5bGVTaGVl
dENhbmRpZGF0ZUxpc3RIYXNoU2V0TWFwOworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFz
aFNldE1hcCBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlc0luU2hhZG93OworCisgICAgSGFzaFNl
dDxjb25zdCBUcmVlU2NvcGUqPiBtX3JlbW92ZWRUcmVlU2NvcGVzOworfTsKKworI2VuZGlmIC8v
IEVOQUJMRShTSEFET1dfRE9NKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQu
Y3BwCmluZGV4IGZmMjJmZTlkYjg4YWI5YTIyNmUwMjAyY2YyYjQ0NzZjZmUwMDVmMGUuLjFhYWM5
ODY4MDhiYzFmMzkxYjMzMWQyZWU5NTExNTlkMzMwMmZiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZUVsZW1lbnQuY3BwCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNp
bmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmgiCiAjaW5jbHVkZSAiU2NyaXB0YWJsZURvY3VtZW50UGFyc2VyLmgiCkBAIC03MSwxOCArNzMs
MjcgQEAgdm9pZCBTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3VtZW50KERvY3VtZW50KiBk
b2N1bWVudCwgRWxlbWVudCogZWxlbWVudCkKICAgICBwcm9jZXNzKGVsZW1lbnQpOwogfQogCi12
b2lkIFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQs
IEVsZW1lbnQqIGVsZW1lbnQpCit2b2lkIFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZyb21Eb2N1bWVu
dChEb2N1bWVudCogZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFRyZWVTY29wZSog
dHJlZVNjb3BlKQogewogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgQVNTRVJUKGVsZW1lbnQp
OwotICAgIGRvY3VtZW50LT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLT5yZW1vdmVTdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZShlbGVtZW50KTsKKyAgICBkb2N1bWVudC0+c3R5bGVTaGVldENvbGxlY3Rp
b24oKS0+cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoZWxlbWVudCwgdHJlZVNjb3BlKTsK
IAogICAgIGlmIChtX3NoZWV0KQogICAgICAgICBjbGVhclNoZWV0KCk7CiAKICAgICAvLyBJZiB3
ZSdyZSBpbiBkb2N1bWVudCB0ZWFyZG93biwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGRvIGFueSBu
b3RpZmljYXRpb24gb2Ygb3VyIHNoZWV0J3MgcmVtb3ZhbC4KLSAgICBpZiAoZG9jdW1lbnQtPnJl
bmRlcmVyKCkpCi0gICAgICAgIGRvY3VtZW50LT5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJl
Y2FsY1N0eWxlKTsKKyAgICBpZiAoIWRvY3VtZW50LT5yZW5kZXJlcigpKQorICAgICAgICByZXR1
cm47CisKKyAgICBTdHlsZVJlc29sdmVyVXBkYXRlRmxhZyB1cGRhdGVGbGFnID0gRGVmZXJSZWNh
bGNTdHlsZTsKKyAgICAvLyBJZiA8c3R5bGU+IGlzIGluIGEgc2hhZG93IHNjb3BlZCBzdHlsZSB0
cmVlLCB3ZSBjYW4gYXZvaWQgZnVsbCBzdHlsZQorICAgIC8vIHJlY2FsYy4KKyAgICBpZiAodHJl
ZVNjb3BlICYmIHRyZWVTY29wZSAhPSBkb2N1bWVudAorICAgICAgICAmJiBlbGVtZW50LT5oYXNU
YWdOYW1lKEhUTUxOYW1lczo6c3R5bGVUYWcpCisgICAgICAgICYmICFzdGF0aWNfY2FzdDxIVE1M
U3R5bGVFbGVtZW50Kj4oZWxlbWVudCktPnNjb3BlZCgpKQorICAgICAgICB1cGRhdGVGbGFnID0g
UmVjYWxjU3R5bGVJZk5lZWRlZDsKKyAgICBkb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQo
dXBkYXRlRmxhZyk7CiB9CiAKIHZvaWQgU3R5bGVFbGVtZW50OjpjbGVhckRvY3VtZW50RGF0YShE
b2N1bWVudCogZG9jdW1lbnQsIEVsZW1lbnQqIGVsZW1lbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVt
ZW50LmgKaW5kZXggNmRkNDhlY2JiNDU0YjVlYWQzMjllMDM5MDlhMjczYTZjMjUyYjBmMi4uN2Q1
NDZmMzI1NGY3NTFhNDQwMmYzMmVhOGYzNDcxOTM4MWZjNTBhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZUVsZW1lbnQuaApAQCAtMjgsNiArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKK2NsYXNzIFRyZWVTY29wZTsKIAogY2xhc3MgU3R5
bGVFbGVtZW50IHsKIHB1YmxpYzoKQEAgLTQ1LDcgKzQ2LDcgQEAgcHJvdGVjdGVkOgogICAgIHZv
aWQgc3RhcnRMb2FkaW5nRHluYW1pY1NoZWV0KERvY3VtZW50Kik7CiAKICAgICB2b2lkIGluc2Vy
dGVkSW50b0RvY3VtZW50KERvY3VtZW50KiwgRWxlbWVudCopOwotICAgIHZvaWQgcmVtb3ZlZEZy
b21Eb2N1bWVudChEb2N1bWVudCosIEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZWRGcm9tRG9j
dW1lbnQoRG9jdW1lbnQqLCBFbGVtZW50KiwgY29uc3QgVHJlZVNjb3BlKiA9IDApOwogICAgIHZv
aWQgY2xlYXJEb2N1bWVudERhdGEoRG9jdW1lbnQqLCBFbGVtZW50Kik7CiAgICAgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoRWxlbWVudCopOwogICAgIHZvaWQgZmluaXNoUGFyc2luZ0NoaWxkcmVuKEVs
ZW1lbnQqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZVNoZWV0Q29sbGVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmQ2ZWIzYzE3YTJhMGI0OWY1NjAyMTllNzk0MjIyNzIxYjZlYzE2M2YKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVldENvbGxlY3Rpb24uY3Bw
CkBAIC0wLDAgKzEsMjY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwg
KGtub2xsQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtv
aXZpc3RvQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVs
bGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDYgQWxleGV5IFByb3NrdXJ5YWtvdiAo
YXBAd2Via2l0Lm9yZykKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4gKGh0dHA6Ly93d3cudG9yY2htb2JpbGUuY29tLykKKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAwOSwgMjAxMSwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lk
aWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAy
MDEwLTIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU3R5bGVTaGVldENvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MSUZyYW1lRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxMaW5rRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJQYWdlLmgiCisjaW5jbHVkZSAiUGFnZUdyb3VwLmgiCisjaW5jbHVkZSAiUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmgiCisjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKKyNpbmNsdWRlICJTVkdTdHlsZUVs
ZW1lbnQuaCIKKyNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKKyNpbmNsdWRlICJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgIlN0eWxlSW52YWxpZGF0aW9uQW5hbHlzaXMuaCIKKyNpbmNsdWRlICJT
dHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiU3R5bGVTaGVldENvbnRlbnRzLmgiCisjaW5jbHVk
ZSAiU3R5bGVTaGVldExpc3QuaCIKKyNpbmNsdWRlICJVc2VyQ29udGVudFVSTFBhdHRlcm4uaCIK
KyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8d3Rm
L01lbW9yeUluc3RydW1lbnRhdGlvbkxpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL01lbW9y
eUluc3RydW1lbnRhdGlvblZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CisKK1N0eWxlU2hlZXRDb2xsZWN0aW9uOjpTdHlsZVNoZWV0
Q29sbGVjdGlvbihEb2N1bWVudCogZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50
KQorICAgICwgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldChmYWxzZSkKK3sKK30KKwordm9p
ZCBTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGVUb0NhbmRp
ZGF0ZUxpc3QoU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0JiBzdHlsZVNoZWV0Q2FuZGlk
YXRlTm9kZXMsIE5vZGUqIG5vZGUsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQoreworICAgIEFTU0VS
VChub2RlKTsKKyAgICBBU1NFUlQobm9kZS0+aW5Eb2N1bWVudCgpKTsKKyAgICAKKyAgICAvLyBV
bnRpbCB0aGUgPGJvZHk+IGV4aXN0cywgd2UgaGF2ZSBubyBjaG9pY2UgYnV0IHRvIGNvbXBhcmUg
ZG9jdW1lbnQgcG9zaXRpb25zLAorICAgIC8vIHNpbmNlIHN0eWxlcyBvdXRzaWRlIG9mIHRoZSBi
b2R5IGFuZCBoZWFkIGNvbnRpbnVlIHRvIGJlIHNodW50ZWQgaW50byB0aGUgaGVhZAorICAgIC8v
IChhbmQgdGh1cyBjYW4gc2hpZnQgdG8gZW5kIHVwIGJlZm9yZSBkeW5hbWljYWxseSBhZGRlZCBE
T00gY29udGVudCB0aGF0IGlzIGFsc28KKyAgICAvLyBvdXRzaWRlIHRoZSBib2R5KS4KKyAgICBp
ZiAoKGNyZWF0ZWRCeVBhcnNlciAmJiBtX2RvY3VtZW50LT5ib2R5KCkpIHx8IHN0eWxlU2hlZXRD
YW5kaWRhdGVOb2Rlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgc3R5bGVTaGVldENhbmRpZGF0ZU5v
ZGVzLmFkZChub2RlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIERldGVybWlu
ZSBhbiBhcHByb3ByaWF0ZSBpbnNlcnRpb24gcG9pbnQuCisgICAgU3R5bGVTaGVldENhbmRpZGF0
ZUxpc3RIYXNoU2V0OjppdGVyYXRvciBiZWdpbiA9IHN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5i
ZWdpbigpOworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgZW5k
ID0gc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOworICAgIFN0eWxlU2hlZXRDYW5kaWRh
dGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBlbmQ7CisgICAgTm9kZSogZm9sbG93aW5nTm9k
ZSA9IDA7CisgICAgZG8geworICAgICAgICAtLWl0OworICAgICAgICBOb2RlKiBuID0gKml0Owor
ICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IG4tPmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKG5vZGUpOworICAgICAgICBpZiAocG9zaXRpb24gPT0gTm9kZTo6RE9DVU1FTlRfUE9TSVRJ
T05fRk9MTE9XSU5HKSB7CisgICAgICAgICAgICBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaW5z
ZXJ0QmVmb3JlKGZvbGxvd2luZ05vZGUsIG5vZGUpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisgICAgICAgIGZvbGxvd2luZ05vZGUgPSBuOworICAgIH0gd2hpbGUgKGl0ICE9IGJl
Z2luKTsKKyAgICAKKyAgICBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaW5zZXJ0QmVmb3JlKGZv
bGxvd2luZ05vZGUsIG5vZGUpOworfQorCit2b2lkIFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphbmFs
eXplU3R5bGVTaGVldENoYW5nZShWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIGFjdGl2
ZUF1dGhvclN0eWxlU2hlZXRzLCBVcGRhdGVGbGFnIHVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxS
ZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRh
dGVUeXBlJiBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVS
ZWNhbGMpCit7CisgICAgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPSBSZWNvbnN0cnVjdDsKKyAg
ICByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyA9IHRydWU7CisgICAgCisgICAgLy8gU3R5bGVzaGVl
dHMgb2YgPHN0eWxlPiBlbGVtZW50cyB0aGF0IEBpbXBvcnQgc3R5bGVzaGVldHMgYXJlIGFjdGl2
ZSBidXQgbG9hZGluZy4gV2UgbmVlZCB0byB0cmlnZ2VyIGEgZnVsbCByZWNhbGMgd2hlbiBzdWNo
IGxvYWRzIGFyZSBkb25lLgorICAgIGJvb2wgaGFzQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQgPSBm
YWxzZTsKKyAgICB1bnNpZ25lZCBuZXdTdHlsZXNoZWV0Q291bnQgPSBuZXdTdHlsZXNoZWV0cy5z
aXplKCk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG5ld1N0eWxlc2hlZXRDb3VudDsg
KytpKSB7CisgICAgICAgIGlmIChuZXdTdHlsZXNoZWV0c1tpXS0+aXNMb2FkaW5nKCkpCisgICAg
ICAgICAgICBoYXNBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCA9IHRydWU7CisgICAgfQorICAgIGlm
IChtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0ICYmICFoYXNBY3RpdmVMb2FkaW5nU3R5bGVz
aGVldCkgeworICAgICAgICBtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0ID0gZmFsc2U7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCA9
IGhhc0FjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0OworCisgICAgaWYgKHVwZGF0ZUZsYWcgIT0gT3B0
aW1pemVkVXBkYXRlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKCFtX2RvY3VtZW50LT5zdHls
ZVJlc29sdmVySWZFeGlzdHMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRmluZCBvdXQg
d2hpY2ggc3R5bGVzaGVldHMgYXJlIG5ldy4KKyAgICB1bnNpZ25lZCBvbGRTdHlsZXNoZWV0Q291
bnQgPSBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7CisgICAgaWYgKG5ld1N0eWxlc2hl
ZXRDb3VudCA8IG9sZFN0eWxlc2hlZXRDb3VudCkKKyAgICAgICAgcmV0dXJuOworICAgIFZlY3Rv
cjxTdHlsZVNoZWV0Q29udGVudHMqPiBhZGRlZFNoZWV0czsKKyAgICB1bnNpZ25lZCBuZXdJbmRl
eCA9IDA7CisgICAgZm9yICh1bnNpZ25lZCBvbGRJbmRleCA9IDA7IG9sZEluZGV4IDwgb2xkU3R5
bGVzaGVldENvdW50OyArK29sZEluZGV4KSB7CisgICAgICAgIGlmIChuZXdJbmRleCA+PSBuZXdT
dHlsZXNoZWV0Q291bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHdoaWxlIChhY3Rp
dmVBdXRob3JTdHlsZVNoZWV0c1tvbGRJbmRleF0gIT0gbmV3U3R5bGVzaGVldHNbbmV3SW5kZXhd
KSB7CisgICAgICAgICAgICBhZGRlZFNoZWV0cy5hcHBlbmQobmV3U3R5bGVzaGVldHNbbmV3SW5k
ZXhdLT5jb250ZW50cygpKTsKKyAgICAgICAgICAgICsrbmV3SW5kZXg7CisgICAgICAgICAgICBp
ZiAobmV3SW5kZXggPT0gbmV3U3R5bGVzaGVldENvdW50KQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQorICAgICAgICArK25ld0luZGV4OworICAgIH0KKyAgICBib29sIGhhc0lu
c2VydGlvbnMgPSAhYWRkZWRTaGVldHMuaXNFbXB0eSgpOworICAgIHdoaWxlIChuZXdJbmRleCA8
IG5ld1N0eWxlc2hlZXRDb3VudCkgeworICAgICAgICBhZGRlZFNoZWV0cy5hcHBlbmQobmV3U3R5
bGVzaGVldHNbbmV3SW5kZXhdLT5jb250ZW50cygpKTsKKyAgICAgICAgKytuZXdJbmRleDsKKyAg
ICB9CisgICAgLy8gSWYgYWxsIG5ldyBzaGVldHMgd2VyZSBhZGRlZCBhdCB0aGUgZW5kIG9mIHRo
ZSBsaXN0IHdlIGNhbiBqdXN0IGFkZCB0aGVtIHRvIGV4aXN0aW5nIFN0eWxlUmVzb2x2ZXIuCisg
ICAgLy8gSWYgdGhlcmUgd2VyZSBpbnNlcnRpb25zIHdlIG5lZWQgdG8gcmUtYWRkIGFsbCB0aGUg
c3R5bGVzaGVldHMgc28gcnVsZXMgYXJlIG9yZGVyZWQgY29ycmVjdGx5LgorICAgIHN0eWxlUmVz
b2x2ZXJVcGRhdGVUeXBlID0gaGFzSW5zZXJ0aW9ucyA/IFJlc2V0IDogIWFkZGVkU2hlZXRzLmlz
RW1wdHkoKSA/IEFkZGl0aXZlIDogTm9VcGRhdGU7CisKKyAgICAvLyBJZiB3ZSBhcmUgYWxyZWFk
eSBwYXJzaW5nIHRoZSBib2R5IGFuZCBzbyBtYXkgaGF2ZSBzaWduaWZpY2FudCBhbW91bnQgb2Yg
ZWxlbWVudHMsIHB1dCBzb21lIGVmZm9ydCBpbnRvIHRyeWluZyB0byBhdm9pZCBzdHlsZSByZWNh
bGNzLgorICAgIGlmICghbV9kb2N1bWVudC0+Ym9keSgpIHx8IG1fZG9jdW1lbnQtPmhhc05vZGVz
V2l0aFBsYWNlaG9sZGVyU3R5bGUoKSkKKyAgICAgICAgcmV0dXJuOworICAgIFN0eWxlSW52YWxp
ZGF0aW9uQW5hbHlzaXMgaW52YWxpZGF0aW9uQW5hbHlzaXMoYWRkZWRTaGVldHMpOworICAgIGlm
IChpbnZhbGlkYXRpb25BbmFseXNpcy5kaXJ0aWVzQWxsU3R5bGUoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIGludmFsaWRhdGlvbkFuYWx5c2lzLmludmFsaWRhdGVTdHlsZShtX2RvY3VtZW50KTsK
KyAgICByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYyA9IGZhbHNlOworfQorCitTdHlsZVNoZWV0KiBT
dHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRGcm9tSW5zdHJ1Y3Rp
b25Ob2RlKE5vZGUqIG4sIGJvb2wmIGNvbnRpbnVlQ29sbGVjdGluZykKK3sKKyAgICBBU1NFUlQo
biAmJiBuLT5ub2RlVHlwZSgpID09IE5vZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSk7
CisgICAgY29udGludWVDb2xsZWN0aW5nID0gdHJ1ZTsKKyAgICByZXR1cm4gMDsKKyAgICBVTlVT
RURfUEFSQU0obik7Cit9CisKK1N0eWxlU2hlZXQqIFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xs
ZWN0QWN0aXZlU3R5bGVTaGVldEZyb21Ob2RlKE5vZGUqIG4pCit7CisgICAgaWYgKCEobi0+aXNI
VE1MRWxlbWVudCgpICYmIChuLT5oYXNUYWdOYW1lKGxpbmtUYWcpIHx8IG4tPmhhc1RhZ05hbWUo
c3R5bGVUYWcpKSkKKyNpZiBFTkFCTEUoU1ZHKQorICAgICAgICAmJiAhKG4tPmlzU1ZHRWxlbWVu
dCgpICYmIG4tPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN0eWxlVGFnKSkKKyNlbmRpZgorICAgICAg
ICApCisgICAgICAgIHJldHVybiAwOworCisgICAgU3R5bGVTaGVldCogc2hlZXQgPSAwOworICAg
IEVsZW1lbnQqIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CisgICAgQXRvbWljU3RyaW5n
IHRpdGxlID0gZS0+Z2V0QXR0cmlidXRlKHRpdGxlQXR0cik7CisgICAgYm9vbCBlbmFibGVkVmlh
U2NyaXB0ID0gZmFsc2U7CisgICAgaWYgKGUtPmhhc0xvY2FsTmFtZShsaW5rVGFnKSkgeworICAg
ICAgICAvLyA8TElOSz4gZWxlbWVudAorICAgICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4obik7CisgICAgICAgIGlmIChsaW5r
RWxlbWVudC0+aXNEaXNhYmxlZCgpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGVu
YWJsZWRWaWFTY3JpcHQgPSBsaW5rRWxlbWVudC0+aXNFbmFibGVkVmlhU2NyaXB0KCk7CisgICAg
ICAgIGlmIChsaW5rRWxlbWVudC0+c3R5bGVTaGVldElzTG9hZGluZygpKSB7CisgICAgICAgICAg
ICAvLyBpdCBpcyBsb2FkaW5nIGJ1dCB3ZSBzaG91bGQgc3RpbGwgZGVjaWRlIHdoaWNoIHN0eWxl
IHNoZWV0IHNldCB0byB1c2UKKyAgICAgICAgICAgIGlmICghZW5hYmxlZFZpYVNjcmlwdCAmJiAh
dGl0bGUuaXNFbXB0eSgpICYmIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUuaXNFbXB0eSgp
KSB7CisgICAgICAgICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiByZWwgPSBlLT5nZXRBdHRy
aWJ1dGUocmVsQXR0cik7CisgICAgICAgICAgICAgICAgaWYgKCFyZWwuY29udGFpbnMoImFsdGVy
bmF0ZSIpKSB7CisgICAgICAgICAgICAgICAgICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5h
bWUgPSB0aXRsZTsKKyAgICAgICAgICAgICAgICAgICAgbV9zZWxlY3RlZFN0eWxlc2hlZXRTZXRO
YW1lID0gdGl0bGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFsaW5rRWxlbWVudC0+c2hlZXQo
KSkKKyAgICAgICAgICAgIHRpdGxlID0gbnVsbEF0b207CisgICAgfQorICAgIC8vIEdldCB0aGUg
Y3VycmVudCBwcmVmZXJyZWQgc3R5bGVzZXQuIFRoaXMgaXMgdGhlCisgICAgLy8gc2V0IG9mIHNo
ZWV0cyB0aGF0IHdpbGwgYmUgZW5hYmxlZC4KKyNpZiBFTkFCTEUoU1ZHKQorICAgIGlmIChuLT5p
c1NWR0VsZW1lbnQoKSAmJiBuLT5oYXNUYWdOYW1lKFNWR05hbWVzOjpzdHlsZVRhZykpCisgICAg
ICAgIHNoZWV0ID0gc3RhdGljX2Nhc3Q8U1ZHU3R5bGVFbGVtZW50Kj4obiktPnNoZWV0KCk7Cisg
ICAgZWxzZQorI2VuZGlmCisgICAgaWYgKGUtPmhhc0xvY2FsTmFtZShsaW5rVGFnKSkKKyAgICAg
ICAgc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihuKS0+c2hlZXQoKTsKKyAg
ICBlbHNlCisgICAgICAgIC8vIDxTVFlMRT4gZWxlbWVudAorICAgICAgICBzaGVldCA9IHN0YXRp
Y19jYXN0PEhUTUxTdHlsZUVsZW1lbnQqPihuKS0+c2hlZXQoKTsKKyAgICAvLyBDaGVjayB0byBz
ZWUgaWYgdGhpcyBzaGVldCBiZWxvbmdzIHRvIGEgc3R5bGVzZXQKKyAgICAvLyAodGh1cyBtYWtp
bmcgaXQgUFJFRkVSUkVEIG9yIEFMVEVSTkFURSByYXRoZXIgdGhhbgorICAgIC8vIFBFUlNJU1RF
TlQpLgorICAgIEF0b21pY1N0cmluZyByZWwgPSBlLT5nZXRBdHRyaWJ1dGUocmVsQXR0cik7Cisg
ICAgaWYgKCFlbmFibGVkVmlhU2NyaXB0ICYmICF0aXRsZS5pc0VtcHR5KCkpIHsKKyAgICAgICAg
Ly8gWWVzLCB3ZSBoYXZlIGEgdGl0bGUuCisgICAgICAgIGlmIChtX3ByZWZlcnJlZFN0eWxlc2hl
ZXRTZXROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTm8gcHJlZmVycmVkIHNldCBo
YXMgYmVlbiBlc3RhYmxpc2hlZC4gSWYKKyAgICAgICAgICAgIC8vIHdlIGFyZSBOT1QgYW4gYWx0
ZXJuYXRlIHNoZWV0LCB0aGVuIGVzdGFibGlzaAorICAgICAgICAgICAgLy8gdXMgYXMgdGhlIHBy
ZWZlcnJlZCBzZXQuIE90aGVyd2lzZSwganVzdCBpZ25vcmUKKyAgICAgICAgICAgIC8vIHRoaXMg
c2hlZXQuCisgICAgICAgICAgICBpZiAoZS0+aGFzTG9jYWxOYW1lKHN0eWxlVGFnKSB8fCAhcmVs
LmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkKKyAgICAgICAgICAgICAgICBtX3ByZWZlcnJlZFN0eWxl
c2hlZXRTZXROYW1lID0gbV9zZWxlY3RlZFN0eWxlc2hlZXRTZXROYW1lID0gdGl0bGU7CisgICAg
ICAgIH0KKyAgICAgICAgaWYgKHRpdGxlICE9IG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUp
CisgICAgICAgICAgICBzaGVldCA9IDA7CisgICAgfQorICAgIAorICAgIGlmIChyZWwuY29udGFp
bnMoImFsdGVybmF0ZSIpICYmIHRpdGxlLmlzRW1wdHkoKSkKKyAgICAgICAgc2hlZXQgPSAwOwor
CisgICAgcmV0dXJuIHNoZWV0OworfQorCit2b2lkIFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xs
ZWN0QWN0aXZlU3R5bGVTaGVldHNGcm9tQ2FuZGlkYXRlTGlzdChTdHlsZVNoZWV0Q2FuZGlkYXRl
TGlzdEhhc2hTZXQmIHN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlcywgVmVjdG9yPFJlZlB0cjxTdHls
ZVNoZWV0PiA+JiBzaGVldHMpCit7CisgICAgaWYgKG1fZG9jdW1lbnQtPnNldHRpbmdzKCkgJiYg
IW1fZG9jdW1lbnQtPnNldHRpbmdzKCktPmF1dGhvckFuZFVzZXJTdHlsZXNFbmFibGVkKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRl
cmF0b3IgYmVnaW4gPSBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuYmVnaW4oKTsKKyAgICBTdHls
ZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGVuZCA9IHN0eWxlU2hlZXRDYW5k
aWRhdGVOb2Rlcy5lbmQoKTsKKyAgICBmb3IgKFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNl
dDo6aXRlcmF0b3IgaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIE5vZGUq
IG4gPSAqaXQ7CisgICAgICAgIFN0eWxlU2hlZXQqIHNoZWV0ID0gMDsKKyAgICAgICAgaWYgKG4t
Pm5vZGVUeXBlKCkgPT0gTm9kZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKSB7CisgICAg
ICAgICAgICBib29sIGNvbnRpbnVlUHJvY2Vzc2luZyA9IHRydWU7CisgICAgICAgICAgICBzaGVl
dCA9IGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0RnJvbUluc3RydWN0aW9uTm9kZShuLCBjb250aW51
ZVByb2Nlc3NpbmcpOworICAgICAgICAgICAgaWYgKCFjb250aW51ZVByb2Nlc3NpbmcpCisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9IGVsc2UgCisgICAgICAgICAgICBzaGVldCA9
IGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0RnJvbU5vZGUobik7CisgICAgICAgIAorICAgICAgICBp
ZiAoc2hlZXQpCisgICAgICAgICAgICBzaGVldHMuYXBwZW5kKHNoZWV0KTsKKyAgICB9Cit9CisK
K3ZvaWQgU3R5bGVTaGVldENvbGxlY3Rpb246OmZpbHRlckVuYWJsZWRDU1NTdHlsZVNoZWV0cyhW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIHJlc3VsdCwgY29uc3QgVmVjdG9yPFJlZlB0
cjxTdHlsZVNoZWV0PiA+JiBzaGVldHMpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHNoZWV0cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIXNoZWV0c1tpXS0+aXNDU1NTdHls
ZVNoZWV0KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKHNoZWV0c1tpXS0+
ZGlzYWJsZWQoKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICByZXN1bHQuYXBwZW5k
KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihzaGVldHNbaV0uZ2V0KCkpKTsKKyAgICB9Cit9
CisKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlU2hlZXRDb2xsZWN0
aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVldENvbGxlY3Rpb24uaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi40NjNiMzQ3NzYyZTMzMGRiMWVkZTFiOTY0MjkxOGVkNGU1ZDBjY2ZmCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmgKQEAgLTAs
MCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBr
ZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0Br
ZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQorICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQHdlYmtp
dC5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIw
MDksIDIwMTAsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
IChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVS
Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo
ZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz
LgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBz
ZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBT
b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgU3R5
bGVTaGVldENvbGxlY3Rpb25faAorI2RlZmluZSBTdHlsZVNoZWV0Q29sbGVjdGlvbl9oCisKKyNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0xpc3RIYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ1NT
U3R5bGVTaGVldDsKK2NsYXNzIERvY3VtZW50OworY2xhc3MgTm9kZTsKK2NsYXNzIFNoYWRvd1Jv
b3Q7CitjbGFzcyBTdHlsZVNoZWV0OworY2xhc3MgU3R5bGVTaGVldENvbnRlbnRzOworY2xhc3Mg
U3R5bGVTaGVldExpc3Q7CitjbGFzcyBUcmVlU2NvcGU7CisKK2NsYXNzIFN0eWxlU2hlZXRDb2xs
ZWN0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBlbnVt
IFVwZGF0ZUZsYWcgeyBGdWxsVXBkYXRlLCBPcHRpbWl6ZWRVcGRhdGUgfTsKKworICAgIHZpcnR1
YWwgflN0eWxlU2hlZXRDb2xsZWN0aW9uKCkgeyB9CisKK3Byb3RlY3RlZDoKKyAgICBTdHlsZVNo
ZWV0Q29sbGVjdGlvbihEb2N1bWVudCopOworCisgICAgdHlwZWRlZiBMaXN0SGFzaFNldDxOb2Rl
KiwgMzI+IFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDsKKyAgICB2b2lkIGFkZFN0eWxl
U2hlZXRDYW5kaWRhdGVOb2RlVG9DYW5kaWRhdGVMaXN0KFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0
SGFzaFNldCYsIE5vZGUqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7CisKKyAgICBlbnVtIFN0eWxl
UmVzb2x2ZXJVcGRhdGVUeXBlIHsKKyAgICAgICAgUmVjb25zdHJ1Y3QsCisgICAgICAgIFJlc2V0
LAorICAgICAgICBBZGRpdGl2ZSwKKyAgICAgICAgTm9VcGRhdGUKKyAgICB9OworCisgICAgdm9p
ZCBhbmFseXplU3R5bGVTaGVldENoYW5nZShWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4m
IGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzLCBVcGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8UmVmUHRy
PENTU1N0eWxlU2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBTdHlsZVJlc29sdmVyVXBkYXRlVHlw
ZSYsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKKworICAgIHZpcnR1YWwgU3R5bGVT
aGVldCogY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRGcm9tSW5zdHJ1Y3Rpb25Ob2RlKE5vZGUqLCBi
b29sJiBjb250aW51ZUNvbGxlY3RpbmcpOworICAgIFN0eWxlU2hlZXQqIGNvbGxlY3RBY3RpdmVT
dHlsZVNoZWV0RnJvbU5vZGUoTm9kZSopOworICAgIHZvaWQgY29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRzRnJvbUNhbmRpZGF0ZUxpc3QoU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0JiwgVmVj
dG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+Jik7CisKKyAgICBzdGF0aWMgdm9pZCBmaWx0ZXJFbmFi
bGVkQ1NTU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiByZXN1bHQs
IGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc2hlZXRzKTsKKworICAgIERvY3Vt
ZW50KiBtX2RvY3VtZW50OworCisgICAgYm9vbCBtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0
OworICAgIFN0cmluZyBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lOworICAgIFN0cmluZyBt
X3NlbGVjdGVkU3R5bGVzaGVldFNldE5hbWU7Cit9OworCit9CisKKyNlbmRpZgorCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAppbmRleCBkYjkxYzk5ZjRjY2I3ZWM5YjY0
ZDQ4MzA5NGI3NTI3Y2YyY2FiMDAyLi5mM2UzNzdlYjcwNmRmMzU5NjhhN2E0MTc4N2I4MTM0Mjkx
M2UzZDMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKQEAgLTk3
LDExICs5Nyw4IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6c2NvcGVkQXR0cmlidXRlQ2hhbmdl
ZChib29sIHNjb3BlZCkKICAgICBpZiAoc2NvcGVkKSB7CiAgICAgICAgIC8vIEFzIGFueSA8c3R5
bGU+IGluIGEgc2hhZG93IHRyZWUgaXMgdHJlYXRlZCBhcyAic2NvcGVkIiwKICAgICAgICAgLy8g
bmVlZCB0byByZW1vdmUgdGhlIDxzdHlsZT4gZnJvbSBpdHMgc2hhZG93IHJvb3QuCi0gICAgICAg
IGlmIChtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgPT0gUmVnaXN0ZXJlZEluU2hhZG93
Um9vdCkKLSAgICAgICAgICAgIHVucmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoc2hhZG93Um9vdCgp
KTsKLQogICAgICAgICBpZiAobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlICE9IFJlZ2lz
dGVyZWRBc1Njb3BlZCkKLSAgICAgICAgICAgIHJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKHRydWUp
OworICAgICAgICAgICAgcmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTA5LDExICsxMDYsNiBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnNj
b3BlZEF0dHJpYnV0ZUNoYW5nZWQoYm9vbCBzY29wZWQpCiAgICAgLy8gZWxlbWVudCwgaS5lLiB0
aGUgcGFyZW50IG5vZGUuCiAgICAgaWYgKG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0ZSA9
PSBSZWdpc3RlcmVkQXNTY29wZWQpCiAgICAgICAgIHVucmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUo
cGFyZW50Tm9kZSgpKTsKLQotICAgIC8vIEFzIGFueSA8c3R5bGU+IGluIGEgc2hhZG93IHRyZWUg
aXMgdHJlYXRlZCBhcyAic2NvcGVkIiwKLSAgICAvLyBuZWVkIHRvIGFkZCB0aGUgPHN0eWxlPiB0
byBpdHMgc2hhZG93IHJvb3QuCi0gICAgaWYgKGlzSW5TaGFkb3dUcmVlKCkgJiYgbV9zY29wZWRT
dHlsZVJlZ2lzdHJhdGlvblN0YXRlICE9IFJlZ2lzdGVyZWRJblNoYWRvd1Jvb3QpCi0gICAgICAg
IHJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKGZhbHNlKTsKIH0KIAogdm9pZCBIVE1MU3R5bGVFbGVt
ZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQpAQCAtMTIyLDcgKzExNCw3IEBAIHZvaWQgSFRN
TFN0eWxlRWxlbWVudDo6ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCkKICAgICBIVE1MRWxlbWVudDo6
ZmluaXNoUGFyc2luZ0NoaWxkcmVuKCk7CiB9CiAKLXZvaWQgSFRNTFN0eWxlRWxlbWVudDo6cmVn
aXN0ZXJXaXRoU2NvcGluZ05vZGUoYm9vbCBzY29wZWQpCit2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6
OnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKCkKIHsKICAgICAvLyBOb3RlOiBXZSBjYW5ub3QgcmVs
eSBvbiB0aGUgJ3Njb3BlZCcgZWxlbWVudCBhbHJlYWR5IGJlaW5nIHByZXNlbnQgd2hlbiB0aGlz
IG1ldGhvZCBpcyBpbnZva2VkLgogICAgIC8vIFRoZXJlZm9yZSB3ZSBjYW5ub3QgcmVseSBvbiBz
Y29wZWQoKSEKQEAgLTEzMSw3ICsxMjMsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJlZ2lz
dGVyV2l0aFNjb3BpbmdOb2RlKGJvb2wgc2NvcGVkKQogICAgIGlmIChtX3Njb3BlZFN0eWxlUmVn
aXN0cmF0aW9uU3RhdGUgIT0gTm90UmVnaXN0ZXJlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
Q29udGFpbmVyTm9kZSogc2NvcGUgPSBzY29wZWQgPyBwYXJlbnROb2RlKCkgOiBzaGFkb3dSb290
KCk7CisgICAgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBwYXJlbnROb2RlKCk7CiAgICAgaWYgKCFz
Y29wZSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmICghc2NvcGUtPmlzRWxlbWVudE5vZGUoKSAm
JiAhc2NvcGUtPmlzU2hhZG93Um9vdCgpKSB7CkBAIC0xNDYsNyArMTM4LDcgQEAgdm9pZCBIVE1M
U3R5bGVFbGVtZW50OjpyZWdpc3RlcldpdGhTY29waW5nTm9kZShib29sIHNjb3BlZCkKICAgICBp
ZiAoaW5Eb2N1bWVudCgpICYmICFkb2N1bWVudCgpLT5wYXJzaW5nKCkgJiYgZG9jdW1lbnQoKS0+
cmVuZGVyZXIoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVm
ZXJSZWNhbGNTdHlsZSk7CiAKLSAgICBtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgPSBz
Y29wZWQgPyBSZWdpc3RlcmVkQXNTY29wZWQgOiBSZWdpc3RlcmVkSW5TaGFkb3dSb290OworICAg
IG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0ZSA9IFJlZ2lzdGVyZWRBc1Njb3BlZDsKIH0K
IAogdm9pZCBIVE1MU3R5bGVFbGVtZW50Ojp1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKENvbnRh
aW5lck5vZGUqIHNjb3BlKQpAQCAtMTcyLDggKzE2NCwxNSBAQCBOb2RlOjpJbnNlcnRpb25Ob3Rp
ZmljYXRpb25SZXF1ZXN0IEhUTUxTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50byhDb250YWluZXJO
b2RlKgogICAgIEhUTUxFbGVtZW50OjppbnNlcnRlZEludG8oaW5zZXJ0aW9uUG9pbnQpOwogICAg
IGlmIChpbnNlcnRpb25Qb2ludC0+aW5Eb2N1bWVudCgpKSB7CiAgICAgICAgIFN0eWxlRWxlbWVu
dDo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoZG9jdW1lbnQoKSwgdGhpcyk7Ci0gICAgICAgIGlmICht
X3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgPT0gTm90UmVnaXN0ZXJlZCAmJiAoc2NvcGVk
KCkgfHwgaXNJblNoYWRvd1RyZWUoKSkpCi0gICAgICAgICAgICByZWdpc3RlcldpdGhTY29waW5n
Tm9kZShzY29wZWQoKSk7CisgICAgICAgIGlmIChtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3Rh
dGUgPT0gTm90UmVnaXN0ZXJlZCkgeworICAgICAgICAgICAgaWYgKHNjb3BlZCgpKQorICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKCk7CisgICAgICAgICAgICBlbHNlIGlm
IChpbnNlcnRpb25Qb2ludC0+aXNJblNoYWRvd1RyZWUoKSkgeworICAgICAgICAgICAgICAgIFNo
YWRvd1Jvb3QqIHNjb3BlID0gc2hhZG93Um9vdCgpOworICAgICAgICAgICAgICAgIGlmIChFbGVt
ZW50KiBob3N0ID0gc2NvcGUtPmhvc3QoKSkKKyAgICAgICAgICAgICAgICAgICAgaG9zdC0+c2V0
TmVlZHNTdHlsZVJlY2FsYygpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAg
ICAgcmV0dXJuIEluc2VydGlvbkRvbmU7CkBAIC0xODgsMTggKzE4NywxOSBAQCB2b2lkIEhUTUxT
dHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUqIGluc2VydGlvblBvaW50KQog
ICAgIC8vIE5vdywgaWYgd2Ugd2FudCB0byByZWdpc3RlciA8c3R5bGUgc2NvcGVkPiBldmVuIGlm
IGl0J3Mgbm90IGluRG9jdW1lbnQsCiAgICAgLy8gd2UnZCBuZWVkIHRvIGZpbmQgYSB3YXkgdG8g
ZGlzY2VybiB3aGV0aGVyIHRoYXQgaXMgdGhlIGNhc2UsIG9yIHdoZXRoZXIgPHN0eWxlIHNjb3Bl
ZD4gaXRzZWxmIGlzIGFib3V0IHRvIGJlIHJlbW92ZWQuCiAgICAgaWYgKG1fc2NvcGVkU3R5bGVS
ZWdpc3RyYXRpb25TdGF0ZSAhPSBOb3RSZWdpc3RlcmVkKSB7Ci0gICAgICAgIENvbnRhaW5lck5v
ZGUqIHNjb3BlOwotICAgICAgICBpZiAobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID09
IFJlZ2lzdGVyZWRJblNoYWRvd1Jvb3QpIHsKLSAgICAgICAgICAgIHNjb3BlID0gc2hhZG93Um9v
dCgpOwotICAgICAgICAgICAgaWYgKCFzY29wZSkKLSAgICAgICAgICAgICAgICBzY29wZSA9IGlu
c2VydGlvblBvaW50LT5zaGFkb3dSb290KCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAg
c2NvcGUgPSBwYXJlbnROb2RlKCkgPyBwYXJlbnROb2RlKCkgOiBpbnNlcnRpb25Qb2ludDsKKyAg
ICAgICAgQ29udGFpbmVyTm9kZSogc2NvcGUgPSBwYXJlbnROb2RlKCkgPyBwYXJlbnROb2RlKCkg
OiBpbnNlcnRpb25Qb2ludDsKICAgICAgICAgdW5yZWdpc3RlcldpdGhTY29waW5nTm9kZShzY29w
ZSk7CiAgICAgfQogCisgICAgU2hhZG93Um9vdCogc2NvcGUgPSBzaGFkb3dSb290KCk7CisgICAg
aWYgKCFzY29wZSkKKyAgICAgICAgc2NvcGUgPSBpbnNlcnRpb25Qb2ludC0+c2hhZG93Um9vdCgp
OworICAgIGlmIChzY29wZSkKKyAgICAgICAgaWYgKEVsZW1lbnQqIGhvc3QgPSBzY29wZS0+c2hh
ZG93SG9zdCgpKQorICAgICAgICAgICAgaG9zdC0+c2V0TmVlZHNTdHlsZVJlY2FsYygpOworCiAg
ICAgaWYgKGluc2VydGlvblBvaW50LT5pbkRvY3VtZW50KCkpCi0gICAgICAgIFN0eWxlRWxlbWVu
dDo6cmVtb3ZlZEZyb21Eb2N1bWVudChkb2N1bWVudCgpLCB0aGlzKTsKKyAgICAgICAgU3R5bGVF
bGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KGRvY3VtZW50KCksIHRoaXMsIHNjb3BlKTsKIH0K
IAogdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQ
YXJzZXIsIE5vZGUqIGJlZm9yZUNoYW5nZSwgTm9kZSogYWZ0ZXJDaGFuZ2UsIGludCBjaGlsZENv
dW50RGVsdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCmluZGV4IGQzZTk5
ZTQ3ZjNlZmJkZTdlMWYwYmQ1YjRhOTcxMTkyNWMyYzdhNjUuLjc0YTYzY2JlZGY5MDdlOTExMDc3
NWU5ZTY1YTE4MjIxOGNlNjdjMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFN0eWxlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVu
dC5oCkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmcmIHR5cGUoKSBjb25zdDsKIAogICAgIHZvaWQgc2NvcGVkQXR0cmlidXRlQ2hhbmdlZChi
b29sKTsKLSAgICB2b2lkIHJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKGJvb2wpOworICAgIHZvaWQg
cmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoKTsKICAgICB2b2lkIHVucmVnaXN0ZXJXaXRoU2NvcGlu
Z05vZGUoQ29udGFpbmVyTm9kZSopOwogCiAgICAgYm9vbCBtX2ZpcmVkTG9hZDsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAy
MGUwZTQ5YTI4MzcyMGYyOTYxNmFlNTg3NmM5ZmY5MjYwMzk0NDM4Li5lNzk2YmQyYmE0NDJiMjcw
ZmI2ZmI5NjlkNjE5ZTcyNzViYmMyMWIyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEt
MjEgIFRha2FzaGkgU2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgorCisgICAgICAgIFtTaGFk
b3cgRE9NXSBpbXBsZW1lbnQgYSBuZXcgc3R5bGUgcmVzb2x2ZXIgZm9yIHNoYWRvdyBkb20gdHJl
ZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMjY2
OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFz
dC9jc3Mvc3R5bGUtc2NvcGVkL3JlZ2lzdGVyaW5nLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3BlZC9yZWdpc3RlcmluZy1zaGFkb3dyb290Lmh0
bWw6CisgICAgICAgIE5vdyB1bnNjb3BlZCBzdHlsZXMgaW4gYSBzaGFkb3cgZG9tIHRyZWUgYXJl
IG5vdCByZWdpc3RlcmVkIGFzCisgICAgICAgIHN0eWxlIHNjb3BlZC4KKwogMjAxMi0xMS0yMCAg
Unlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIx
MzExMDYpOiBtYWduaXR1ZGUtcGVyZi5qcyBjYWxscyBiaW5kIG9uIHVuZGVmaW5lZApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3JlZ2lzdGVyaW5nLXNoYWRv
d3Jvb3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3Jl
Z2lzdGVyaW5nLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0CmluZGV4IGFiYmJiZTRhNmI2Y2RjYWIw
NWViMDlhMjAzNTAyOThhZGIwYzViYWMuLjg0MmU5OGY3MTE3NjI0MDA1ZWQzMTM0OWVlMDc3YjNj
YjA5NDczZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9y
ZWdpc3RlcmluZy1zaGFkb3dyb290LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHlsZS1zY29wZWQvcmVnaXN0ZXJpbmctc2hhZG93cm9vdC1leHBlY3RlZC50eHQKQEAg
LTE0LDcgKzE0LDcgQEAgUEFTUyBpbnRlcm5hbHMubnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGls
ZHJlbihob3N0KSBpcyAwCiBQQVNTIGludGVybmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNo
aWxkcmVuKHNyKSBpcyAxCiAtLS0gVW5zZXR0aW5nIEBzY29wZWQgLS0tCiBQQVNTIGludGVybmFs
cy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGhvc3QpIGlzIDAKLVBBU1MgaW50ZXJu
YWxzLm51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oc3IpIGlzIDEKK1BBU1MgaW50ZXJu
YWxzLm51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oc3IpIGlzIDAKIC0tLSBTZXR0aW5n
IEBzY29wZWQgLS0tCiBQQVNTIGludGVybmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxk
cmVuKGhvc3QpIGlzIDAKIFBBU1MgaW50ZXJuYWxzLm51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hp
bGRyZW4oc3IpIGlzIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNj
b3BlZC9yZWdpc3RlcmluZy1zaGFkb3dyb290Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9z
dHlsZS1zY29wZWQvcmVnaXN0ZXJpbmctc2hhZG93cm9vdC5odG1sCmluZGV4IDMyOWM4MjIwYzVm
NDBiZWY0Y2VhYTg3NDczYTUyNzQ2NjA0YTMxYTkuLjliNGM1NDczNGNiMTZhMDRmZTZmN2NhZDEx
OTU5NjFlNWQ4MDY4ODUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNj
b3BlZC9yZWdpc3RlcmluZy1zaGFkb3dyb290Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9j
c3Mvc3R5bGUtc2NvcGVkL3JlZ2lzdGVyaW5nLXNoYWRvd3Jvb3QuaHRtbApAQCAtNDgsNyArNDgs
NyBAQAogICAgICAgICAgICAgZGVidWcoIi0tLSBVbnNldHRpbmcgQHNjb3BlZCAtLS0iKTsKICAg
ICAgICAgICAgIHN0eWxlLnNjb3BlZCA9IGZhbHNlOwogICAgICAgICAgICAgc2hvdWxkQmUoImlu
dGVybmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKGhvc3QpIiwgIjAiKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlKCJpbnRlcm5hbHMubnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGls
ZHJlbihzcikiLCAiMSIpOyAvKiA8c3R5bGU+IGluIHNoYWRvdywgbm90IHNjb3BlZCAqLworICAg
ICAgICAgICAgc2hvdWxkQmUoImludGVybmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxk
cmVuKHNyKSIsICIwIik7IC8qIDxzdHlsZT4gaW4gc2hhZG93LCBub3Qgc2NvcGVkICovCiAKICAg
ICAgICAgICAgIGRlYnVnKCItLS0gU2V0dGluZyBAc2NvcGVkIC0tLSIpOwogICAgICAgICAgICAg
c3R5bGUuc2NvcGVkID0gdHJ1ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175395</attachid>
            <date>2012-11-21 02:48:27 -0800</date>
            <delta_ts>2012-11-21 02:48:27 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-102669-20121121194614.patch</filename>
            <type>text/plain</type>
            <size>93313</size>
            <attacher name="Takashi Sakamoto">tasak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3ZTgxNWU2ZTA2NWYxMDRhNzUxYWMwNTdlMzI2OTg3ZDAwMGNmY2I0Li4x
YzRmMDdjYjBhYmIwOWU0ODc4YzQ2MDRjYWE2NmJkNGY1NjM4Mjg5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTEyIEBACisyMDEyLTExLTIxICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29vZ2xl
LmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0gaW1wbGVtZW50IGEgbmV3IHN0eWxlIHJlc29s
dmVyIGZvciBzaGFkb3cgZG9tIHRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDI2NjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDcmVhdGVkIHRoZSBzZWNvbmQgV0lQIHBhdGNoLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBUYXJnZXQucHJpOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogY3NzL0NTU0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJlc29sdmVyOjpTdHlsZVJlc29sdmVyKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9y
U2hhZG93U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6YXBwZW5kQXV0
aG9yU2hhZG93U3R5bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSZXNvbHZlcjo6
dXBkYXRlQWZ0ZXJBcHBlbmRBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3JlOjpT
dHlsZVJlc29sdmVyOjptYXRjaEF1dGhvclNoYWRvd1J1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlUmVzb2x2ZXI6Om1hdGNoQXV0aG9yUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAqIGNzcy9TdHlsZVJlc29s
dmVyLmg6CisgICAgICAgIChTdHlsZVJlc29sdmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
UmVzb2x2ZXI6OmVuc3VyZVNoYWRvd1Jlc29sdmVyKToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGFk
b3dSZXNvbHZlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjpTaGFkb3dSdWxlRGF0YTo6cGFyZW50Rm9yU3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGFkb3dSZXNvbHZlcjo6ZW5zdXJlU2hhZG93UnVsZURhdGFGb3IpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVTaGFkb3dSZXNvbHZlcjo6c2V0dXBTaGFkb3dSdWxlRGF0YVBhcmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjplbnN1cmVSdWxlU2V0Rm9y
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hhZG93UmVzb2x2ZXI6OmZpbmRNYXRjaGVkUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGFkb3dSZXNvbHZlcjo6cmVzZXRBdXRob3JT
dHlsZUZvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjpjb2xsZWN0
RmVhdHVyZXNUbyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoYWRvd1Jlc29sdmVyOjpyZXBv
cnRNZW1vcnlVc2FnZSk6CisgICAgICAgICogY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1J1bGVEYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNoYWRvd1J1bGVEYXRhOjpTaGFkb3dSdWxlRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6c2V0UGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNo
YWRvd1J1bGVEYXRhOjpwYXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93UnVsZURhdGE6
OnRyZWVTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6cnVsZVNldCk6
CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6ZW5zdXJlUnVsZVNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dSdWxlRGF0YTo6cmVzZXRSdWxlU2V0KToKKyAgICAgICAgKFN0
eWxlU2hhZG93UmVzb2x2ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlU3R5
bGVTaGVldENhbmRpZGF0ZU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbjo6dXBkYXRlU3R5bGVSZXNvbHZlcik6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUNT
U0ZlYXR1cmVzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OmFwcGVuZEFsbEFjdGl2ZUF1dGhvclNoYWRvd1N0eWxlU2hl
ZXRzKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OmNv
bGxlY3RBY3RpdmVTdHlsZVNoZWV0RnJvbUluc3RydWN0aW9uTm9kZSk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZXBvcnRNZW1vcnlVc2FnZSk6Cisg
ICAgICAgICogZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaDoKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAg
ICogZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjpT
aGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlQWxsU3R5bGVTaGVldHNGb3IpOgorICAgICAgICAoV2Vi
Q29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVO
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZW1v
dmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbjo6ZW5zdXJlQWN0aXZlQXV0aG9yU3R5bGVTaGVldHNGb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OmVuc3VyZUF1dGhvclN0
eWxlU2hlZXRzRm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0
aW9uOjphcHBlbmRBbGxBY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlU3R5bGVSZXNvbHZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5
bGVTaGVldHMpOgorICAgICAgICAoV2ViQ29yZTo6U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246
OnJlcG9ydE1lbW9yeVVzYWdlKToKKyAgICAgICAgKiBkb20vU2hhZG93U3R5bGVTaGVldENvbGxl
Y3Rpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNoYWRvd1N0eWxl
U2hlZXRDb2xsZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNoYWRvd1N0eWxlU2hlZXRDb2xs
ZWN0aW9uOjpjcmVhdGUpOgorICAgICAgICAqIGRvbS9TdHlsZUVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVFbGVtZW50OjpyZW1vdmVkRnJvbURvY3VtZW50KToKKyAgICAgICAg
KiBkb20vU3R5bGVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFN0eWxl
RWxlbWVudCk6CisgICAgICAgICogZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb2xsZWN0
aW9uOjpTdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVNoZWV0
Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGVUb0NhbmRpZGF0ZUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbGxlY3Rpb246OmFuYWx5emVTdHlsZVNoZWV0
Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xsZWN0
QWN0aXZlU3R5bGVTaGVldEZyb21JbnN0cnVjdGlvbk5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0RnJvbU5vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENvbGxlY3Rpb246OmNvbGxlY3RBY3RpdmVTdHls
ZVNoZWV0c0Zyb21DYW5kaWRhdGVMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlU2hlZXRD
b2xsZWN0aW9uOjpmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMpOgorICAgICAgICAqIGRvbS9T
dHlsZVNoZWV0Q29sbGVjdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoU3R5bGVTaGVldENvbGxlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVTaGVldENv
bGxlY3Rpb246On5TdHlsZVNoZWV0Q29sbGVjdGlvbik6CisgICAgICAgICogaHRtbC9IVE1MU3R5
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnNjb3Bl
ZEF0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6
cmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6
OnJlbW92ZWRGcm9tKToKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuaDoKKyAgICAg
ICAgKEhUTUxTdHlsZUVsZW1lbnQpOgorCiAyMDEyLTExLTIwICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBNb3ZlIGNvbnRyb2wgb2YgdHJh
bnNhY3Rpb24gY29tcGxldGlvbiB0byBmcm9udCBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXgg
ODAwYTUxMDJkMDc4ZjBhMWRkOTlkNWU0NGNjMjVjYjE4Y2MwYTU5ZC4uMzM4MGQwY2NiNGM2YmZj
MTk5YmRkZTJmZTdiZGVjZjlmMzEzYjA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTEwODIs
NiArMTA4Miw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBjc3MvU3R5bGVSdWxlLmNwcAog
ICAgIGNzcy9TdHlsZVJ1bGVJbXBvcnQuY3BwCiAgICAgY3NzL1N0eWxlU2NvcGVSZXNvbHZlci5j
cHAKKyAgICBjc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5jcHAKICAgICBjc3MvU3R5bGVTaGVldC5j
cHAKICAgICBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcAogICAgIGNzcy9TdHlsZVNoZWV0TGlz
dC5jcHAKQEAgLTEyMTIsNiArMTIxMyw3IEBAIFNFVChXZWJDb3JlX1NPVVJDRVMKICAgICBkb20v
U2NyaXB0UnVubmVyLmNwcAogICAgIGRvbS9TZWN1cml0eUNvbnRleHQuY3BwCiAgICAgZG9tL1Nl
bGVjdG9yUXVlcnkuY3BwCisgICAgZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAog
ICAgIGRvbS9TaGFkb3dSb290LmNwcAogICAgIGRvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcAogICAg
IGRvbS9TdGF0aWNIYXNoU2V0Tm9kZUxpc3QuY3BwCkBAIC0xMjE5LDYgKzEyMjEsNyBAQCBTRVQo
V2ViQ29yZV9TT1VSQ0VTCiAgICAgZG9tL1N0cmluZ0NhbGxiYWNrLmNwcAogICAgIGRvbS9TdHls
ZWRFbGVtZW50LmNwcAogICAgIGRvbS9TdHlsZUVsZW1lbnQuY3BwCisgICAgZG9tL1N0eWxlU2hl
ZXRDb2xsZWN0aW9uLmNwcAogICAgIGRvbS9UYWdOb2RlTGlzdC5jcHAKICAgICBkb20vVGV4dC5j
cHAKICAgICBkb20vVGV4dEV2ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5k
ZXggMWU3YWMxZDViY2NiZTUzOGYzMGYxYWNkNjIwZGQ5YzhjYzJjZDFmZS4uN2VkYjQxODRhZTAx
MWI0ZDY1NzBjNDU0ODZmNDc4YzQ2OTcyYzExMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0yNjM2LDYgKzI2MzYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCBcCiAJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
U2NvcGVSZXNvbHZlci5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNjb3BlUmVzb2x2
ZXIuaCBcCisJU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuY3BwIFwKKwlT
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVTaGVldC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Lmgg
XAogCVNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwIFwKQEAgLTI3NTQs
OCArMjc1Niw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50T3JkZXJlZE1hcC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIu
Y3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBcCi0gICAgU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIFwKLSAgICBTb3Vy
Y2UvV2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIFwKKwlTb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgXAorCVNvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmggXAogCVNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFRpbWluZy5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRU
eXBlLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50VHlwZS5oIFwKQEAgLTI5MjQs
NiArMjkyNiw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1Nl
Y3VyaXR5Q29udGV4dC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2VsZWN0b3JRdWVyeS5jcHAg
XAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TZWxlY3RvclF1ZXJ5LmggXAorCVNvdXJjZS9XZWJDb3Jl
L2RvbS9TaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2Rv
bS9TaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vU2hh
ZG93Um9vdC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TaGFkb3dSb290LmggXAogCVNvdXJj
ZS9XZWJDb3JlL2RvbS9TcGFjZVNwbGl0U3RyaW5nLmNwcCBcCkBAIC0yOTM4LDYgKzI5NDIsOCBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50
LmggXAogCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZUVsZW1lbnQuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vU3R5bGVFbGVtZW50LmggXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZVNoZWV0
Q29sbGVjdGlvbi5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZVNoZWV0Q29sbGVjdGlv
bi5oIFwKIAlTb3VyY2UvV2ViQ29yZS9kb20vVGFnTm9kZUxpc3QuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9kb20vVGFnTm9kZUxpc3QuaCBcCiAJU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIFwK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkgYi9Tb3VyY2UvV2ViQ29yZS9U
YXJnZXQucHJpCmluZGV4IGY2NjkxODA4NmUxM2FjNWM2NWExYmU5YWMyMGM2MzIxZjVlNjk0ZGMu
LmM2YTllMTg1Y2FiMGQ0MDg5ODQ4MGNiYWE4Y2Q2NDQ3YjVhODlkODUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQpA
QCAtMzI0LDYgKzMyNCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIGNzcy9TdHlsZVJ1bGUuY3BwIFwK
ICAgICBjc3MvU3R5bGVSdWxlSW1wb3J0LmNwcCBcCiAgICAgY3NzL1N0eWxlU2NvcGVSZXNvbHZl
ci5jcHAgXAorICAgIGNzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCBcCiAgICAgY3NzL1N0eWxl
U2hlZXQuY3BwIFwKICAgICBjc3MvU3R5bGVTaGVldENvbnRlbnRzLmNwcCBcCiAgICAgY3NzL1N0
eWxlU2hlZXRMaXN0LmNwcCBcCkBAIC00NTQsMTEgKzQ1NSwxMyBAQCBTT1VSQ0VTICs9IFwKICAg
ICBkb20vU2NyaXB0UnVubmVyLmNwcCBcCiAgICAgZG9tL1NlY3VyaXR5Q29udGV4dC5jcHAgXAog
ICAgIGRvbS9TZWxlY3RvclF1ZXJ5LmNwcCBcCisgICAgZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xs
ZWN0aW9uLmNwcCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuY3BwIFwKICAgICBkb20vU3BhY2VTcGxp
dFN0cmluZy5jcHAgXAogICAgIGRvbS9TdGF0aWNOb2RlTGlzdC5jcHAgXAogICAgIGRvbS9TdHls
ZWRFbGVtZW50LmNwcCBcCiAgICAgZG9tL1N0eWxlRWxlbWVudC5jcHAgXAorICAgIGRvbS9TdHls
ZVNoZWV0Q29sbGVjdGlvbi5jcHAgXAogICAgIGRvbS9UYWdOb2RlTGlzdC5jcHAgXAogICAgIGRv
bS9UZXh0LmNwcCBcCiAgICAgZG9tL1RleHRFdmVudC5jcHAgXApAQCAtMTYyMiwxMSArMTYyNSwx
MyBAQCBIRUFERVJTICs9IFwKICAgICBkb20vU2NyaXB0RWxlbWVudC5oIFwKICAgICBkb20vU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dC5oIFwKICAgICBkb20vU2VsZWN0b3JRdWVyeS5oIFwKKyAgICBk
b20vU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCBcCiAgICAgZG9tL1NoYWRvd1Jvb3QuaCBc
CiAgICAgZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCBcCiAgICAgZG9tL1N0YXRpY05vZGVMaXN0Lmgg
XAogICAgIGRvbS9TdHlsZWRFbGVtZW50LmggXAogICAgIGRvbS9TdHlsZUVsZW1lbnQuaCBcCisg
ICAgZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmggXAogICAgIGRvbS9UYWdOb2RlTGlzdC5oIFwK
ICAgICBkb20vVGV4dEV2ZW50LmggXAogICAgIGRvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLmd5cGkKaW5kZXggYThiM2ZlZGI2NDIyNWVmYTQ0OWE4YTIwNzgxZjQ4Mzg5NzZiNDVi
OC4uOTFlMTljYWU3YzJhMjNkZjk3YTI5NGViOWY2NzljNDFkZTQ5NDIzMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
Z3lwaQpAQCAtNjkwLDcgKzY5MCw5IEBACiAgICAgICAgICAgICAnZG9tL1NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCcsCiAgICAgICAgICAgICAnZG9tL1NjcmlwdFJ1bm5lci5oJywKICAgICAgICAg
ICAgICdkb20vU2hhZG93Um9vdC5oJywKKyAgICAgICAgICAgICdkb20vU2hhZG93U3R5bGVTaGVl
dENvbGxlY3Rpb24uaCcsCiAgICAgICAgICAgICAnZG9tL1NwYWNlU3BsaXRTdHJpbmcuaCcsCisg
ICAgICAgICAgICAnZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmgnLAogICAgICAgICAgICAgJ2Rv
bS9TdHlsZWRFbGVtZW50LmgnLAogICAgICAgICAgICAgJ2RvbS9UZXh0LmgnLAogICAgICAgICAg
ICAgJ2RvbS9UZXh0RXZlbnRJbnB1dFR5cGUuaCcsCkBAIC0yNjI3LDYgKzI2MjksOCBAQAogICAg
ICAgICAgICAgJ2Nzcy9TdHlsZVJ1bGVJbXBvcnQuaCcsCiAgICAgICAgICAgICAnY3NzL1N0eWxl
U2NvcGVSZXNvbHZlci5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9TdHlsZVNjb3BlUmVzb2x2ZXIu
aCcsCisgICAgICAgICAgICAnY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuY3BwJywKKyAgICAgICAg
ICAgICdjc3MvU3R5bGVTaGFkb3dSZXNvbHZlci5oJywKICAgICAgICAgICAgICdjc3MvU3R5bGVT
aGVldC5jcHAnLAogICAgICAgICAgICAgJ2Nzcy9TdHlsZVNoZWV0LmgnLAogICAgICAgICAgICAg
J2Nzcy9TdHlsZVNoZWV0Q29udGVudHMuY3BwJywKQEAgLTM5NjEsNiArMzk2NSw3IEBACiAgICAg
ICAgICAgICAnZG9tL1NlbGVjdG9yUXVlcnkuaCcsCiAgICAgICAgICAgICAnZG9tL1NoYWRvd1Jv
b3QuY3BwJywKICAgICAgICAgICAgICdkb20vU2hhZG93Um9vdC5oJywKKyAgICAgICAgICAgICdk
b20vU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwJywKICAgICAgICAgICAgICdkb20vU3Bh
Y2VTcGxpdFN0cmluZy5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TdGF0aWNIYXNoU2V0Tm9kZUxp
c3QuY3BwJywKICAgICAgICAgICAgICdkb20vU3RhdGljSGFzaFNldE5vZGVMaXN0LmgnLApAQCAt
Mzk3MCw2ICszOTc1LDcgQEAKICAgICAgICAgICAgICdkb20vU3RyaW5nQ2FsbGJhY2suaCcsCiAg
ICAgICAgICAgICAnZG9tL1N0eWxlRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ2RvbS9TdHls
ZUVsZW1lbnQuaCcsCisgICAgICAgICAgICAnZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCcs
CiAgICAgICAgICAgICAnZG9tL1N0eWxlZEVsZW1lbnQuY3BwJywKICAgICAgICAgICAgICdkb20v
VGFnTm9kZUxpc3QuY3BwJywKICAgICAgICAgICAgICdkb20vVGFnTm9kZUxpc3QuaCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGUwMDQ4NDAz
ZGMzZTkyMmNjZWE4MjM5MTU5YWY1NjExZmJjZjcxY2YuLjFjYmU1MWQxZTFlNjZhZDJjYzY5ZGY1
YzcwNGYwYzQzZmM5N2Y1NWEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCkBAIC01NDczNyw2ICs1NDczNywxNCBAQAogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cZG9tXFN0eWxlRWxlbWVudC5oIgogCQkJCT4KIAkJCTwvRmlsZT4KKyAJCQk8RmlsZQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCIKKwkJCQk+CisJ
CQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFN0eWxlU2hlZXRD
b2xsZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgogCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBh
dGg9Ii4uXGRvbVxUYWdOb2RlTGlzdC5jcHAiCiAJCQkJPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGM3YmZmZWEwMjM5NmZiYzkz
ZWZhMWMxNWRjNGVlMDEwZmUzNmMyYzAuLmViZmY5OWI5YzA5MGQ3MjYwYjIxYmIzYzkyMTA5MzI0
NTAzNDkzMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKQEAgLTYzNzMsNiArNjM3MywxMiBAQAogCQlGQUJFNzJGOTEwNTlDMUVCMDBE
OTk5REQgLyogTWF0aE1MTWF0aEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkYyMTA1OUMxRUIwMEQ5OTlERCAvKiBNYXRoTUxNYXRo
RWxlbWVudC5oICovOyB9OwogCQlGQUJFNzJGRDEwNTlDMjExMDBEOTk5REQgLyogTWF0aE1MRWxl
bWVudEZhY3RvcnkuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkFCRTcyRkIxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmNw
cCAqLzsgfTsKIAkJRkFCRTcyRkUxMDU5QzIxMTAwRDk5OUREIC8qIE1hdGhNTE5hbWVzLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZBQkU3MkZDMTA1
OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi87IH07CisJCUZCMEUyQ0I5MTY1QTM3
RDQwMDg2NDMxMiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGQjI2QTEzRjE2NUEwQjU2MDA1MDFD
QUIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwICovOyB9OworCQlGQjBFMkNCQTE2
NUEzN0Q0MDA4NjQzMTIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTQwMTY1QTBCNTYwMDUw
MUNBQiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCMEUyQ0JCMTY1QTM3RTQwMDg2NDMxMiAv
KiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGQjI2QTE0MTE2NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVTaGVldENv
bGxlY3Rpb24uY3BwICovOyB9OworCQlGQjBFMkNCQzE2NUEzN0VBMDA4NjQzMTIgLyogU3R5bGVT
aGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZCMjZBMTQyMTY1QTBCNjYwMDUwMUNBQiAvKiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUZCMEUy
Q0JEMTY1QTM4MDUwMDg2NDMxMiAvKiBTdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTNDMTY1QTBCMjcwMDUw
MUNBQiAvKiBTdHlsZVNoYWRvd1Jlc29sdmVyLmNwcCAqLzsgfTsKKwkJRkIwRTJDQkUxNjVBMzgw
NTAwODY0MzEyIC8qIFN0eWxlU2hhZG93UmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZCMjZBMTNEMTY1QTBCMjcwMDUwMUNBQiAvKiBTdHls
ZVNoYWRvd1Jlc29sdmVyLmggKi87IH07CiAJCUZCNzhBRDJFMTUxQkY1RTYwMEZFNTREMyAvKiBD
U1NQYXJzZXJNb2RlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGQjc4QUQyQzE1MUJGNUQyMDBGRTU0RDMgLyogQ1NTUGFyc2VyTW9kZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUZCOTJERjRCMTVGRUQw
ODcwMDk5NDQzMyAvKiBDbGlwUGF0aE9wZXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkI5MkRGNDkxNUZFRDA4NzAwOTk0NDMzIC8qIENsaXBQ
YXRoT3BlcmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJRkJDMjIwREYxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNET3Bl
bkdMLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZC
QzIyMERFMTIzN0ZCRUIwMEJDRjc4OCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTC5jcHAgKi87
IH07CkBAIC0xMzg2MCw2ICsxMzg2NiwxMiBAQAogCQlGQUJFNzJGMzEwNTlDMUVCMDBEOTk5REQg
LyogbWF0aHRhZ3MuaW4gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWF0aHRhZ3MuaW47IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZBQkU3MkZCMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRo
TUxFbGVtZW50RmFjdG9yeS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBNYXRoTUxFbGVtZW50RmFjdG9yeS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZBQkU3MkZDMTA1OUMyMTEwMEQ5OTlERCAvKiBNYXRoTUxOYW1lcy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNYXRoTUxOYW1lcy5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZCMjZBMTNDMTY1QTBCMjcwMDUwMUNBQiAvKiBTdHlsZVNoYWRvd1Jl
c29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0eWxlU2hh
ZG93UmVzb2x2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjI2QTEzRDE2
NUEwQjI3MDA1MDFDQUIgLyogU3R5bGVTaGFkb3dSZXNvbHZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTdHlsZVNoYWRvd1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZCMjZBMTNGMTY1QTBCNTYwMDUwMUNBQiAvKiBTaGFkb3dTdHlsZVNoZWV0
Q29sbGVjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTaGFk
b3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZCMjZBMTQwMTY1QTBCNTYwMDUwMUNBQiAvKiBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTaGFkb3dTdHlsZVNoZWV0Q29sbGVj
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGQjI2QTE0MTE2NUEwQjY2MDA1
MDFDQUIgLyogU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGQjI2QTE0MjE2NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVTaGVldENvbGxl
Y3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5bGVTaGVldENvbGxl
Y3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkI3OEFEMkMxNTFCRjVEMjAw
RkU1NEQzIC8qIENTU1BhcnNlck1vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ1NTUGFyc2VyTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGQjkyREY0
OTE1RkVEMDg3MDA5OTQ0MzMgLyogQ2xpcFBhdGhPcGVyYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQ2xpcFBhdGhPcGVyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRkJDMjIwREUxMjM3RkJFQjAwQkNGNzg4IC8qIEdyYXBoaWNzQ29udGV4dDNE
T3BlbkdMLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdyYXBoaWNz
Q29udGV4dDNET3BlbkdMLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDUy
LDYgKzIxNDY0LDggQEAKIAkJCQlFNDk0NkVBRDE1NkU2NEREMDBEMzI5N0YgLyogU3R5bGVSdWxl
SW1wb3J0LmggKi8sCiAJCQkJQTdCNzYxOUUxNjFFRTUyNjAwMjA4M0QzIC8qIFN0eWxlU2NvcGVS
ZXNvbHZlci5jcHAgKi8sCiAJCQkJQTdCNzYxOUYxNjFFRTUyNjAwMjA4M0QzIC8qIFN0eWxlU2Nv
cGVSZXNvbHZlci5oICovLAorCQkJCUZCMjZBMTNDMTY1QTBCMjcwMDUwMUNBQiAvKiBTdHlsZVNo
YWRvd1Jlc29sdmVyLmNwcCAqLywKKwkJCQlGQjI2QTEzRDE2NUEwQjI3MDA1MDFDQUIgLyogU3R5
bGVTaGFkb3dSZXNvbHZlci5oICovLAogCQkJCUE4RUE4MDA1MEExOTUxNkUwMEE4RUY1RiAvKiBT
dHlsZVNoZWV0LmNwcCAqLywKIAkJCQlBOEVBODAwNDBBMTk1MTZFMDBBOEVGNUYgLyogU3R5bGVT
aGVldC5oICovLAogCQkJCTg1MDY1NkRDMEFBQjQ0RDkwMDJEMTVDMCAvKiBTdHlsZVNoZWV0Lmlk
bCAqLywKQEAgLTIyMDY5LDYgKzIyMDgzLDggQEAKIAkJCQk5NzZGMzZFOTE0Njg2MjI1MDA1RTkz
QjQgLyogU2VjdXJpdHlDb250ZXh0LmggKi8sCiAJCQkJRTQ1MzIyQTkxNDBDRTI2NzAwNUEwRjky
IC8qIFNlbGVjdG9yUXVlcnkuY3BwICovLAogCQkJCUU0NTMyMkFBMTQwQ0UyNjcwMDVBMEY5MiAv
KiBTZWxlY3RvclF1ZXJ5LmggKi8sCisJCQkJRkIyNkExM0YxNjVBMEI1NjAwNTAxQ0FCIC8qIFNo
YWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCAqLywKKwkJCQlGQjI2QTE0MDE2NUEwQjU2MDA1
MDFDQUIgLyogU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLywKIAkJCQlBNkQxNjk2MTEz
NDZCNDlCMDAwRUI3NzAgLyogU2hhZG93Um9vdC5jcHAgKi8sCiAJCQkJQTZEMTY5NjMxMzQ2QjRD
MTAwMEVCNzcwIC8qIFNoYWRvd1Jvb3QuaCAqLywKIAkJCQlBN0RCNDE4MTE0Q0UxRjBBMDBBMkUz
MTYgLyogU2hhZG93Um9vdC5pZGwgKi8sCkBAIC0yMjA4NSw2ICsyMjEwMSw4IEBACiAJCQkJQThD
NEE3RUIwOUQ1NjMyNzAwMDNBQzhEIC8qIFN0eWxlZEVsZW1lbnQuaCAqLywKIAkJCQlBQTRDM0E3
NDBCMkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmNwcCAqLywKIAkJCQlBQTRDM0E3NTBC
MkIxNjc5MDAyMzM0QTIgLyogU3R5bGVFbGVtZW50LmggKi8sCisJCQkJRkIyNkExNDExNjVBMEI2
NjAwNTAxQ0FCIC8qIFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCAqLywKKwkJCQlGQjI2QTE0MjE2
NUEwQjY2MDA1MDFDQUIgLyogU3R5bGVTaGVldENvbGxlY3Rpb24uaCAqLywKIAkJCQlCQ0UzQkVD
MDBEMjIyQjFEMDA3RTA2RTQgLyogVGFnTm9kZUxpc3QuY3BwICovLAogCQkJCUJDRTNCRUMxMEQy
MjJCMUQwMDdFMDZFNCAvKiBUYWdOb2RlTGlzdC5oICovLAogCQkJCTY1NTBCNjlCMDk5REYwMjcw
MDkwRDc4MSAvKiBUZXh0LmNwcCAqLywKQEAgLTI1NzgxLDYgKzI1Nzk5LDkgQEAKIAkJCQkxRTUw
MDg0NzE2NTE2QUQ4MDBCN0UwOTggLyogUmVuZGVyVGhlbWVNYWNTaGFyZWQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTUzRUY3NjZCMTY1MzBBNjEwMDRDQkU0OSAvKiBTZXR0aW5nc01hY3Jvcy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNDQ3OTU4MDQxNjQzQjQ5QTAwMUUwQTdGIC8qIFBhcnNlZENvbnRl
bnRUeXBlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGQjBFMkNCQTE2NUEzN0Q0MDA4NjQzMTIgLyog
U2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZCMEUyQ0JD
MTY1QTM3RUEwMDg2NDMxMiAvKiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkIwRTJDQkUxNjVBMzgwNTAwODY0MzEyIC8qIFN0eWxlU2hhZG93UmVzb2x2ZXIuaCBp
biBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtMjg4NzgsNiArMjg4OTksOSBAQAogCQkJCTFFNTAwODQ4MTY1MTZB
RDgwMEI3RTA5OCAvKiBSZW5kZXJUaGVtZU1hY1NoYXJlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUNEN0UwNTIyMTY1MUMyODIwMEMxMjAxRiAvKiBXZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0g
aW4gU291cmNlcyAqLywKIAkJCQk0NDc5NTgwNTE2NDNCNEIyMDAxRTBBN0YgLyogUGFyc2VkQ29u
dGVudFR5cGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkIwRTJDQjkxNjVBMzdENDAwODY0MzEy
IC8qIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZC
MEUyQ0JCMTY1QTM3RTQwMDg2NDMxMiAvKiBTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGQjBFMkNCRDE2NUEzODA1MDA4NjQzMTIgLyogU3R5bGVTaGFkb3dSZXNv
bHZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQWxsSW5PbmUuY3BwCmluZGV4
IDQ3OWQ4ZGVmNzhjOWQzNzQwOTdjMGM0ZTk5OTEzNzEzZTJhMjMxMDUuLmVlNmFmN2VhMzY0ZjJk
OWY5ZTdiYzAzMGUwMjU2NTRlOTUwMGE3N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0FsbEluT25lLmNw
cApAQCAtNzMsNCArNzMsNSBAQAogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuY3Bw
IgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuY3BwIgogI2luY2x1ZGUgIlN0eWxlU2NvcGVSZXNv
bHZlci5jcHAiCisjaW5jbHVkZSAiU3R5bGVTaGFkb3dSZXNvbHZlci5jcHAiCiAjaW5jbHVkZSAi
Vmlld3BvcnRTdHlsZVJlc29sdmVyLmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNw
cAppbmRleCAwNzY3MDQxZmExNmI3NmI0OWUyNjYyMWVhOWU3MzEyNTFjNGJlMWRlLi44NzI5YWUz
ODA0ZjJhYWI2NjM4MDQ3ZGU3N2FjMDk4ZjA1ZDM3OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCkBAIC0zMjAsNiArMzIwLDEwIEBAIFN0eWxlUmVzb2x2ZXI6OlN0eWxlUmVz
b2x2ZXIoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIG1hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykK
ICAgICBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uKiBzdHlsZVNoZWV0Q29sbGVjdGlvbiA9
IGRvY3VtZW50LT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpOwogICAgIGNvbGxlY3RSdWxlc0Zyb21V
c2VyU3R5bGVTaGVldHMoc3R5bGVTaGVldENvbGxlY3Rpb24tPmFjdGl2ZVVzZXJTdHlsZVNoZWV0
cygpKTsKICAgICBhcHBlbmRBdXRob3JTdHlsZVNoZWV0cygwLCBzdHlsZVNoZWV0Q29sbGVjdGlv
bi0+YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoKSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisg
ICAgc3R5bGVTaGVldENvbGxlY3Rpb24tPmFwcGVuZEFsbEFjdGl2ZUF1dGhvclNoYWRvd1N0eWxl
U2hlZXRzKHRoaXMpOworI2VuZGlmCisgICAgdXBkYXRlQWZ0ZXJBcHBlbmRBdXRob3JTdHlsZVNo
ZWV0cygpOwogfQogCiB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RSdWxlc0Zyb21Vc2VyU3R5
bGVTaGVldHMoY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiB1c2VyU2hlZXRz
KQpAQCAtMzU1LDYgKzM1OSwxMCBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJl
cygpCiAgICAgbV9mZWF0dXJlcy5hZGQobV9hdXRob3JTdHlsZS0+ZmVhdHVyZXMoKSk7CiAgICAg
aWYgKG1fc2NvcGVSZXNvbHZlcikKICAgICAgICAgbV9zY29wZVJlc29sdmVyLT5jb2xsZWN0RmVh
dHVyZXNUbyhtX2ZlYXR1cmVzKTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBpZiAobV9z
aGFkb3dSZXNvbHZlcikKKyAgICAgICAgbV9zaGFkb3dSZXNvbHZlci0+Y29sbGVjdEZlYXR1cmVz
VG8obV9mZWF0dXJlcyk7CisjZW5kaWYKICAgICBpZiAobV91c2VyU3R5bGUpCiAgICAgICAgIG1f
ZmVhdHVyZXMuYWRkKG1fdXNlclN0eWxlLT5mZWF0dXJlcygpKTsKIApAQCAtMzkxLDggKzM5OSw0
NiBAQCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGVuZEF1dGhvclN0eWxlU2hlZXRzKHVuc2lnbmVk
IGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUAogICAgICAgICAgICAgY29sbGVjdENTU09NV3Jh
cHBlcnMobV9zdHlsZVJ1bGVUb0NTU09NV3JhcHBlck1hcCwgY3NzU2hlZXQpOwogICAgIH0KICAg
ICBtX2F1dGhvclN0eWxlLT5zaHJpbmtUb0ZpdCgpOworfQorCisjaWYgRU5BQkxFKFNIQURPV19E
T00pCit2b2lkIFN0eWxlUmVzb2x2ZXI6OnJlc2V0QXV0aG9yU2hhZG93U3R5bGUoY29uc3QgVHJl
ZVNjb3BlKiBzY29wZSkKK3sKKyAgICBpZiAoIW1fc2hhZG93UmVzb2x2ZXIpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX3NoYWRvd1Jlc29sdmVyLT5yZXNldEF1dGhvclN0eWxlRm9yKHNjb3BlKTsK
K30KKwordm9pZCBTdHlsZVJlc29sdmVyOjphcHBlbmRBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyhj
b25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSwgdW5zaWduZWQgZmlyc3ROZXcsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgc3R5bGVTaGVldHMpCit7CisgICAgdW5zaWduZWQg
c2l6ZSA9IHN0eWxlU2hlZXRzLnNpemUoKTsKKyAgICBpZiAoZmlyc3ROZXcgPj0gc2l6ZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgUnVsZVNldCogc2hhZG93UnVsZVNldCA9IGVuc3VyZVNoYWRv
d1Jlc29sdmVyKCktPmVuc3VyZVJ1bGVTZXRGb3IodHJlZVNjb3BlKTsKKyAgICBmb3IgKHVuc2ln
bmVkIGkgPSBmaXJzdE5ldzsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBDU1NTdHlsZVNoZWV0
KiBjc3NTaGVldCA9IHN0eWxlU2hlZXRzW2ldLmdldCgpOworICAgICAgICBBU1NFUlQoIWNzc1No
ZWV0LT5kaXNhYmxlZCgpKTsKKyAgICAgICAgaWYgKGNzc1NoZWV0LT5tZWRpYVF1ZXJpZXMoKSAm
JiAhbV9tZWRpdW0tPmV2YWwoY3NzU2hlZXQtPm1lZGlhUXVlcmllcygpLCB0aGlzKSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworICAgICAgICBTdHlsZVNoZWV0Q29udGVudHMqIHNoZWV0ID0gY3Nz
U2hlZXQtPmNvbnRlbnRzKCk7CisgICAgICAgIGNvbnN0IENvbnRhaW5lck5vZGUqIHNjb3BlID0g
U3R5bGVTY29wZVJlc29sdmVyOjpzY29wZUZvcihjc3NTaGVldCk7CisjaWYgRU5BQkxFKFNUWUxF
X1NDT1BFRCkKKyAgICAgICAgaWYgKHNjb3BlICYmICFzY29wZS0+aXNTaGFkb3dSb290KCkpIHsK
KyAgICAgICAgICAgIGVuc3VyZVNjb3BlUmVzb2x2ZXIoKS0+ZW5zdXJlUnVsZVNldEZvcihzY29w
ZSktPmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCAqbV9tZWRpdW0sIHRoaXMsIHNjb3BlKTsKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgLy8gbmVlZCBz
Y29wZSBmb3IgQGhvc3QgQC1ydWxlcy4KKyAgICAgICAgc2hhZG93UnVsZVNldC0+YWRkUnVsZXNG
cm9tU2hlZXQoc2hlZXQsICptX21lZGl1bSwgdGhpcywgc2NvcGUpOworICAgIH0KKyAgICBzaGFk
b3dSdWxlU2V0LT5zaHJpbmtUb0ZpdCgpOworfQorI2VuZGlmCisKK3ZvaWQgU3R5bGVSZXNvbHZl
cjo6dXBkYXRlQWZ0ZXJBcHBlbmRBdXRob3JTdHlsZVNoZWV0cygpCit7CiAgICAgY29sbGVjdEZl
YXR1cmVzKCk7Ci0gICAgCiAgICAgaWYgKGRvY3VtZW50KCktPnJlbmRlcmVyKCkgJiYgZG9jdW1l
bnQoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKSkKICAgICAgICAgZG9jdW1lbnQoKS0+cmVuZGVyZXIo
KS0+c3R5bGUoKS0+Zm9udCgpLnVwZGF0ZShmb250U2VsZWN0b3IoKSk7CiAKQEAgLTc5Myw2ICs4
MzksMjcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYg
cmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogI2VuZGlmCiB9CiAKK3ZvaWQgU3R5bGVS
ZXNvbHZlcjo6bWF0Y2hBdXRob3JTaGFkb3dSdWxlcyhNYXRjaFJlc3VsdCYgcmVzdWx0LCBib29s
IGluY2x1ZGVFbXB0eVJ1bGVzKQoreworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorICAgIGlmICgh
bV9zaGFkb3dSZXNvbHZlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgVmVjdG9yPFN0eWxlU2hh
ZG93UmVzb2x2ZXI6OlRyZWVTY29wZVJ1bGVTZXRQYWlyPiBtYXRjaGVkUnVsZXM7CisgICAgbV9z
aGFkb3dSZXNvbHZlci0+ZmluZE1hdGNoZWRSdWxlcyhtX2VsZW1lbnQsIG1hdGNoZWRSdWxlcyk7
CisgICAgZm9yIChpbnQgaSA9IG1hdGNoZWRSdWxlcy5zaXplKCkgLSAxOyBpID49IDA7IC0taSkg
eworICAgICAgICBjb25zdCBTaGFkb3dSb290KiBzY29wZSA9IHN0YXRpY19jYXN0PGNvbnN0IFNo
YWRvd1Jvb3QqPihtYXRjaGVkUnVsZXNbaV0uZmlyc3QpOworICAgICAgICBSdWxlU2V0KiBydWxl
U2V0ID0gbWF0Y2hlZFJ1bGVzW2ldLnNlY29uZDsKKyAgICAgICAgTWF0Y2hPcHRpb25zIG9wdGlv
bnMoaW5jbHVkZUVtcHR5UnVsZXMsIHNjb3BlKTsKKyAgICAgICAgY29sbGVjdE1hdGNoaW5nUnVs
ZXMocnVsZVNldCwgcmVzdWx0LnJhbmdlcy5maXJzdEF1dGhvclJ1bGUsIHJlc3VsdC5yYW5nZXMu
bGFzdEF1dGhvclJ1bGUsIG9wdGlvbnMpOworICAgICAgICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0Zv
clJlZ2lvbihydWxlU2V0LCByZXN1bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJh
bmdlcy5sYXN0QXV0aG9yUnVsZSwgb3B0aW9ucyk7CisgICAgfQorI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocmVzdWx0KTsKKyAgICBVTlVTRURfUEFSQU0oaW5jbHVkZUVtcHR5UnVsZXMpOworI2Vu
ZGlmCit9CisKIHZvaWQgU3R5bGVSZXNvbHZlcjo6bWF0Y2hBdXRob3JSdWxlcyhNYXRjaFJlc3Vs
dCYgcmVzdWx0LCBib29sIGluY2x1ZGVFbXB0eVJ1bGVzKQogewogICAgIG1fbWF0Y2hlZFJ1bGVz
LmNsZWFyKCk7CkBAIC04MDcsNiArODc0LDcgQEAgdm9pZCBTdHlsZVJlc29sdmVyOjptYXRjaEF1
dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiByZXN1bHQsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMKICAg
ICBjb2xsZWN0TWF0Y2hpbmdSdWxlc0ZvclJlZ2lvbihtX2F1dGhvclN0eWxlLmdldCgpLCByZXN1
bHQucmFuZ2VzLmZpcnN0QXV0aG9yUnVsZSwgcmVzdWx0LnJhbmdlcy5sYXN0QXV0aG9yUnVsZSwg
b3B0aW9ucyk7CiAKICAgICBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKHJlc3VsdCwgaW5jbHVkZUVt
cHR5UnVsZXMpOworICAgIG1hdGNoQXV0aG9yU2hhZG93UnVsZXMocmVzdWx0LCBpbmNsdWRlRW1w
dHlSdWxlcyk7CiAKICAgICBzb3J0QW5kVHJhbnNmZXJNYXRjaGVkUnVsZXMocmVzdWx0KTsKIH0K
QEAgLTUxOTYsNiArNTI2NCw3IEBAIHZvaWQgU3R5bGVSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKICAgICBpbmZvLmFk
ZE1lbWJlcihtX3BlbmRpbmdTVkdEb2N1bWVudHMpOwogI2VuZGlmCiAgICAgaW5mby5hZGRNZW1i
ZXIobV9zY29wZVJlc29sdmVyKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3NoYWRvd1Jlc29sdmVy
KTsKIAogICAgIC8vIEZJWE1FOiBtb3ZlIHRoaXMgdG8gYSBwbGFjZSB3aGVyZSBpdCB3b3VsZCBi
ZSBjYWxsZWQgb25seSBvbmNlPwogICAgIGluZm8uYWRkTWVtYmVyKGRlZmF1bHRTdHlsZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oIGIvU291cmNlL1dl
YkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCAwNTVkODEzZWRiNTZiMDUwY2I2MTMzNzI0
NTQ4NTExZGM2MGZiMjJiLi5iMmU5NjBiYzNkZTc5NDJjYjNmMDFjOWY3OTY0NDUxZDczZjUyY2Mx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNs
dWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIK
ICNpbmNsdWRlICJTdHlsZVNjb3BlUmVzb2x2ZXIuaCIKKyNpbmNsdWRlICJTdHlsZVNoYWRvd1Jl
c29sdmVyLmgiCiAjaW5jbHVkZSAiVmlld3BvcnRTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtODksNiArOTAsNyBA
QCBjbGFzcyBTdHlsZVJ1bGVLZXlmcmFtZXM7CiBjbGFzcyBTdHlsZVJ1bGVQYWdlOwogY2xhc3Mg
U3R5bGVSdWxlUmVnaW9uOwogY2xhc3MgU3R5bGVTaGFkZXI7CitjbGFzcyBTdHlsZVNoYWRvd1Jl
c29sdmVyOwogY2xhc3MgU3R5bGVTaGVldDsKIGNsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKIGNs
YXNzIFN0eWxlU2hlZXRMaXN0OwpAQCAtMTY5LDYgKzE3MSwxMSBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHJlc2V0QXV0aG9yU3R5bGUoKTsKICAgICB2b2lkIGFwcGVuZEF1dGhvclN0eWxlU2hlZXRz
KHVuc2lnbmVkIGZpcnN0TmV3LCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4m
KTsKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICB2b2lkIHJlc2V0QXV0aG9yU2hhZG93U3R5
bGUoY29uc3QgVHJlZVNjb3BlKik7CisgICAgdm9pZCBhcHBlbmRBdXRob3JTaGFkb3dTdHlsZVNo
ZWV0cyhjb25zdCBUcmVlU2NvcGUqLCB1bnNpZ25lZCBmaXJzdE5ldywgY29uc3QgVmVjdG9yPFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiA+Jik7CisjZW5kaWYKKyAgICB2b2lkIHVwZGF0ZUFmdGVyQXBw
ZW5kQXV0aG9yU3R5bGVTaGVldHMoKTsKIAogcHJpdmF0ZToKICNpZiBFTkFCTEUoU1RZTEVfU0NP
UEVEKSB8fCBFTkFCTEUoU0hBRE9XX0RPTSkKQEAgLTE4OCw2ICsxOTUsMTUgQEAgcHJpdmF0ZToK
ICAgICAgICAgcmV0dXJuIG1fc2NvcGVSZXNvbHZlci5nZXQoKTsKICAgICB9CiAjZW5kaWYKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICBTdHlsZVNoYWRvd1Jlc29sdmVyKiBlbnN1cmVTaGFk
b3dSZXNvbHZlcigpCisgICAgeworICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6c2hhZG93RE9NRW5hYmxlZCgpKTsKKyAgICAgICAgaWYgKCFtX3NoYWRvd1Jlc29sdmVyKQor
ICAgICAgICAgICAgbV9zaGFkb3dSZXNvbHZlciA9IGFkb3B0UHRyKG5ldyBTdHlsZVNoYWRvd1Jl
c29sdmVyKCkpOworICAgICAgICByZXR1cm4gbV9zaGFkb3dSZXNvbHZlci5nZXQoKTsKKyAgICB9
CisjZW5kaWYKIAogICAgIHZvaWQgaW5pdEZvclN0eWxlUmVzb2x2ZShFbGVtZW50KiwgUmVuZGVy
U3R5bGUqIHBhcmVudFN0eWxlID0gMCwgUHNldWRvSWQgPSBOT1BTRVVETyk7CiAgICAgdm9pZCBp
bml0RWxlbWVudChFbGVtZW50Kik7CkBAIC0zNTMsNiArMzY5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIG1hdGNoVXNlclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNsdWRlRW1wdHlSdWxlcyk7
CiAgICAgdm9pZCBtYXRjaFNjb3BlZEF1dGhvclJ1bGVzKE1hdGNoUmVzdWx0JiwgYm9vbCBpbmNs
dWRlRW1wdHlSdWxlcyk7CiAgICAgdm9pZCBtYXRjaEhvc3RSdWxlcyhNYXRjaFJlc3VsdCYsIGJv
b2wgaW5jbHVkZUVtcHR5UnVsZXMpOworICAgIHZvaWQgbWF0Y2hBdXRob3JTaGFkb3dSdWxlcyhN
YXRjaFJlc3VsdCYsIGJvb2wgaW5jbHVkZUVtcHR5UnVsZXMpOwogICAgIHZvaWQgY29sbGVjdE1h
dGNoaW5nUnVsZXMoUnVsZVNldCosIGludCYgZmlyc3RSdWxlSW5kZXgsIGludCYgbGFzdFJ1bGVJ
bmRleCwgY29uc3QgTWF0Y2hPcHRpb25zJik7CiAgICAgdm9pZCBjb2xsZWN0TWF0Y2hpbmdSdWxl
c0ZvclJlZ2lvbihSdWxlU2V0KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50JiBsYXN0UnVsZUlu
ZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKICAgICB2b2lkIGNvbGxlY3RNYXRjaGluZ1J1bGVz
Rm9yTGlzdChjb25zdCBWZWN0b3I8UnVsZURhdGE+KiwgaW50JiBmaXJzdFJ1bGVJbmRleCwgaW50
JiBsYXN0UnVsZUluZGV4LCBjb25zdCBNYXRjaE9wdGlvbnMmKTsKQEAgLTUxOCw2ICs1MzUsNyBA
QCBwcml2YXRlOgogI2VuZGlmCiAKICAgICBPd25QdHI8U3R5bGVTY29wZVJlc29sdmVyPiBtX3Nj
b3BlUmVzb2x2ZXI7CisgICAgT3duUHRyPFN0eWxlU2hhZG93UmVzb2x2ZXI+IG1fc2hhZG93UmVz
b2x2ZXI7CiAgICAgQ1NTVG9TdHlsZU1hcCBtX3N0eWxlTWFwOwogCiAgICAgZnJpZW5kIGNsYXNz
IFN0eWxlQnVpbGRlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRv
d1Jlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmNw
cApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi45NWNiMWJlN2ZiOTgzZWM4MjdlODQ5MTcxYTgyNzExMjY0ZGU4OTE2Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIu
Y3BwCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25v
bGwgKGtub2xsQGtkZS5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIw
MDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU3R5bGVT
aGFkb3dSZXNvbHZlci5oIgorCisjaW5jbHVkZSAiQ1NTU3R5bGVSdWxlLmgiCisjaW5jbHVkZSAi
Q1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUgIkNvbnRleHRGZWF0dXJlcy5oIgorI2luY2x1ZGUg
IkVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MU3R5bGVF
bGVtZW50LmgiCisjaW5jbHVkZSAiUnVsZUZlYXR1cmUuaCIKKyNpbmNsdWRlICJUcmVlU2NvcGUu
aCIKKyNpbmNsdWRlICJXZWJDb3JlTWVtb3J5SW5zdHJ1bWVudGF0aW9uLmgiCisjaW5jbHVkZSA8
d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTWVtb3J5
SW5zdHJ1bWVudGF0aW9uSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25WZWN0b3IuaD4KKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2lubGluZSBTaGFkb3dSdWxlRGF0YSogU2hhZG93UnVsZURhdGE6OnBhcmVudEZv
clN0eWxlKCkKK3sKKyAgICByZXR1cm4gbV90cmVlU2NvcGUtPmFwcGx5QXV0aG9yU3R5bGVzKCkg
PyBtX3BhcmVudFJ1bGVEYXRhIDogMDsKK30KKworU2hhZG93UnVsZURhdGEqIFN0eWxlU2hhZG93
UmVzb2x2ZXI6OmVuc3VyZVNoYWRvd1J1bGVEYXRhRm9yKGNvbnN0IFRyZWVTY29wZSogdHJlZVNj
b3BlKQoreworICAgIFRyZWVTY29wZVJ1bGVTZXRNYXA6OkFkZFJlc3VsdCBhZGRSZXN1bHQgPSBt
X2F1dGhvclN0eWxlcy5hZGQodHJlZVNjb3BlLCBudWxscHRyKTsKKyAgICBpZiAoYWRkUmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBhZG9wdFB0
cihuZXcgU2hhZG93UnVsZURhdGEodHJlZVNjb3BlKSk7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5p
dGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKK3ZvaWQgU3R5bGVTaGFkb3dSZXNvbHZlcjo6c2V0
dXBTaGFkb3dSdWxlRGF0YVBhcmVudChTaGFkb3dSdWxlRGF0YSogcnVsZURhdGEpCit7CisgICAg
QVNTRVJUKHJ1bGVEYXRhKTsKKyAgICBpZiAocnVsZURhdGEtPnBhcmVudCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSA9IHJ1bGVEYXRhLT50cmVl
U2NvcGUoKTsKKyAgICBpZiAoIXRyZWVTY29wZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgZm9y
IChjb25zdCBUcmVlU2NvcGUqIHBhcmVudFRyZWVTY29wZSA9IHRyZWVTY29wZS0+cGFyZW50VHJl
ZVNjb3BlKCk7IHBhcmVudFRyZWVTY29wZTsgcGFyZW50VHJlZVNjb3BlID0gcGFyZW50VHJlZVNj
b3BlLT5wYXJlbnRUcmVlU2NvcGUoKSkgeworICAgICAgICBTaGFkb3dSdWxlRGF0YSogcGFyZW50
UnVsZURhdGEgPSBlbnN1cmVTaGFkb3dSdWxlRGF0YUZvcihwYXJlbnRUcmVlU2NvcGUpOworICAg
ICAgICBydWxlRGF0YS0+c2V0UGFyZW50KHBhcmVudFJ1bGVEYXRhKTsKKyAgICAgICAgcnVsZURh
dGEgPSBwYXJlbnRSdWxlRGF0YTsKKyAgICB9Cit9CisKK1J1bGVTZXQqIFN0eWxlU2hhZG93UmVz
b2x2ZXI6OmVuc3VyZVJ1bGVTZXRGb3IoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCit7Cisg
ICAgQVNTRVJUKHRyZWVTY29wZSk7CisgICAgU2hhZG93UnVsZURhdGEqIHJ1bGVEYXRhID0gZW5z
dXJlU2hhZG93UnVsZURhdGFGb3IodHJlZVNjb3BlKTsKKyAgICBzZXR1cFNoYWRvd1J1bGVEYXRh
UGFyZW50KHJ1bGVEYXRhKTsKKyAgICByZXR1cm4gcnVsZURhdGEtPmVuc3VyZVJ1bGVTZXQoKTsK
K30KKwordm9pZCBTdHlsZVNoYWRvd1Jlc29sdmVyOjpmaW5kTWF0Y2hlZFJ1bGVzKGNvbnN0IEVs
ZW1lbnQqIGVsZW1lbnQsIFZlY3RvcjxUcmVlU2NvcGVSdWxlU2V0UGFpcj4mIG1hdGNoZWRSdWxl
cykKK3sKKyAgICBpZiAoIWVsZW1lbnQtPmlzSW5TaGFkb3dUcmVlKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGNvbnN0IFRyZWVTY29wZSogdHJlZVNjb3BlID0gZWxlbWVudC0+dHJlZVNjb3Bl
KCk7CisgICAgU2hhZG93UnVsZURhdGEqIHJ1bGVEYXRhID0gZW5zdXJlU2hhZG93UnVsZURhdGFG
b3IodHJlZVNjb3BlKTsKKyAgICBzZXR1cFNoYWRvd1J1bGVEYXRhUGFyZW50KHJ1bGVEYXRhKTsK
KyAgICBmb3IgKDsgcnVsZURhdGE7IHJ1bGVEYXRhID0gcnVsZURhdGEtPnBhcmVudEZvclN0eWxl
KCkpCisgICAgICAgIGlmIChSdWxlU2V0KiBydWxlU2V0ID0gcnVsZURhdGEtPnJ1bGVTZXQoKSkK
KyAgICAgICAgICAgIG1hdGNoZWRSdWxlcy5hcHBlbmQoVHJlZVNjb3BlUnVsZVNldFBhaXIocnVs
ZURhdGEtPnRyZWVTY29wZSgpLCBydWxlU2V0KSk7Cit9CisKK3ZvaWQgU3R5bGVTaGFkb3dSZXNv
bHZlcjo6cmVzZXRBdXRob3JTdHlsZUZvcihjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSkKK3sK
KyAgICBBU1NFUlQodHJlZVNjb3BlKTsKKyAgICBUcmVlU2NvcGVSdWxlU2V0TWFwOjppdGVyYXRv
ciBpdCA9IG1fYXV0aG9yU3R5bGVzLmZpbmQodHJlZVNjb3BlKTsKKyAgICBpZiAoaXQgPT0gbV9h
dXRob3JTdHlsZXMuZW5kKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpdC0+dmFsdWUtPnJlc2V0
UnVsZVNldCgpOworfQorCit2b2lkIFN0eWxlU2hhZG93UmVzb2x2ZXI6OmNvbGxlY3RGZWF0dXJl
c1RvKFJ1bGVGZWF0dXJlU2V0JiBmZWF0dXJlcykKK3sKKyAgICBmb3IgKFRyZWVTY29wZVJ1bGVT
ZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9hdXRob3JTdHlsZXMuYmVnaW4oKTsgaXQgIT0gbV9hdXRo
b3JTdHlsZXMuZW5kKCk7ICsraXQpCisgICAgICAgIGlmIChSdWxlU2V0KiBydWxlU2V0ID0gaXQt
PnZhbHVlLT5ydWxlU2V0KCkpCisgICAgICAgICAgICBmZWF0dXJlcy5hZGQocnVsZVNldC0+ZmVh
dHVyZXMoKSk7Cit9CisKK3ZvaWQgU3R5bGVTaGFkb3dSZXNvbHZlcjo6cmVwb3J0TWVtb3J5VXNh
Z2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKK3sKKyAgICBNZW1v
cnlDbGFzc0luZm8gaW5mbyhtZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlw
ZXM6OkNTUyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9hdXRob3JTdHlsZXMpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RPTSkKKwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlU2hhZG93UmVzb2x2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDM1ZDAxZTY0
NDZjYjU5YmVmMjkwMmQzYzBlZTNlNGFhMzEwMGRiNQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9TdHlsZVNoYWRvd1Jlc29sdmVyLmgKQEAgLTAsMCArMSwxMDAgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqIENv
cHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAx
MCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgU3R5bGVTaGFkb3dSZXNvbHZlcl9oCisjZGVmaW5lIFN0eWxlU2hhZG93UmVzb2x2ZXJfaAor
CisjaW5jbHVkZSAiUnVsZVNldC5oIgorI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUg
PHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ29udGFpbmVyTm9kZTsKK2NsYXNzIENTU1N0eWxlU2hlZXQ7CitjbGFz
cyBFbGVtZW50OworY2xhc3MgUnVsZVNldDsKK2NsYXNzIFNoYWRvd1Jvb3Q7CitjbGFzcyBUcmVl
U2NvcGU7CitzdHJ1Y3QgUnVsZUZlYXR1cmVTZXQ7CisKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkK
KworY2xhc3MgU2hhZG93UnVsZURhdGEgeworcHVibGljOgorICAgIFNoYWRvd1J1bGVEYXRhKGNv
bnN0IFRyZWVTY29wZSogdHJlZVNjb3BlKSA6IG1fdHJlZVNjb3BlKHRyZWVTY29wZSksIG1fcGFy
ZW50UnVsZURhdGEoMCkgeyB9CisKKyAgICB2b2lkIHNldFBhcmVudChTaGFkb3dSdWxlRGF0YSog
cGFyZW50UnVsZURhdGEpIHsgbV9wYXJlbnRSdWxlRGF0YSA9IHBhcmVudFJ1bGVEYXRhOyB9Cisg
ICAgU2hhZG93UnVsZURhdGEqIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50UnVsZURhdGE7IH0K
KyAgICBTaGFkb3dSdWxlRGF0YSogcGFyZW50Rm9yU3R5bGUoKTsKKyAgICBjb25zdCBUcmVlU2Nv
cGUqIHRyZWVTY29wZSgpIHsgcmV0dXJuIG1fdHJlZVNjb3BlOyB9CisgICAgUnVsZVNldCogcnVs
ZVNldCgpIHsgcmV0dXJuIG1fcnVsZVNldC5nZXQoKTsgfQorICAgIFJ1bGVTZXQqIGVuc3VyZVJ1
bGVTZXQoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3J1bGVTZXQpCisgICAgICAgICAgICBtX3J1
bGVTZXQgPSBSdWxlU2V0OjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIG1fcnVsZVNldC5nZXQo
KTsKKyAgICB9CisgICAgdm9pZCByZXNldFJ1bGVTZXQoKSB7IG1fcnVsZVNldC5jbGVhcigpOyB9
CisKK3ByaXZhdGU6CisgICAgY29uc3QgVHJlZVNjb3BlKiBtX3RyZWVTY29wZTsKKyAgICBPd25Q
dHI8UnVsZVNldD4gbV9ydWxlU2V0OworICAgIFNoYWRvd1J1bGVEYXRhKiBtX3BhcmVudFJ1bGVE
YXRhOworfTsKKworY2xhc3MgU3R5bGVTaGFkb3dSZXNvbHZlciB7CitwdWJsaWM6CisgICAgLy8g
VHJlZVNjb3BlKiAtPiBSdWxlU2V0Li4uPworICAgIFJ1bGVTZXQqIGVuc3VyZVJ1bGVTZXRGb3Io
Y29uc3QgVHJlZVNjb3BlKik7CisKKyAgICB0eXBlZGVmIHN0ZDo6cGFpcjxjb25zdCBUcmVlU2Nv
cGUqLCBSdWxlU2V0Kj4gVHJlZVNjb3BlUnVsZVNldFBhaXI7CisgICAgdm9pZCBmaW5kTWF0Y2hl
ZFJ1bGVzKGNvbnN0IEVsZW1lbnQqLCBWZWN0b3I8VHJlZVNjb3BlUnVsZVNldFBhaXI+JiBtYXRj
aGVkUnVsZXMpOworICAgIHZvaWQgcmVzZXRBdXRob3JTdHlsZUZvcihjb25zdCBUcmVlU2NvcGUq
KTsKKyAgICB2b2lkIGNvbGxlY3RGZWF0dXJlc1RvKFJ1bGVGZWF0dXJlU2V0Jik7CisKKyAgICB2
b2lkIHJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qKSBjb25zdDsKKworcHJpdmF0
ZToKKyAgICBTaGFkb3dSdWxlRGF0YSogZW5zdXJlU2hhZG93UnVsZURhdGFGb3IoY29uc3QgVHJl
ZVNjb3BlKik7CisgICAgdm9pZCBzZXR1cFNoYWRvd1J1bGVEYXRhUGFyZW50KFNoYWRvd1J1bGVE
YXRhKik7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgVHJlZVNjb3BlKiwgT3duUHRyPFNo
YWRvd1J1bGVEYXRhPiA+IFRyZWVTY29wZVJ1bGVTZXRNYXA7CisgICAgVHJlZVNjb3BlUnVsZVNl
dE1hcCBtX2F1dGhvclN0eWxlczsKK307CisKKyNlbHNlCisKK2NsYXNzIFN0eWxlU2hhZG93UmVz
b2x2ZXIgeyB9OworCisjZW5kaWYgLy8gRU5BQkxFKFNIQURPV19ET00pCisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN0eWxlU2hhZG93UmVzb2x2ZXJfaApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uY3BwCmluZGV4
IGZkNjRkM2IwODk4NTQ4ZGY0ZTRkMDljMmRjYWU4ODg3YWNlNjYxOTAuLjcwNWY3YWFhNTljNGM3
Y2U5Njg4OTNjMmUzNjJmYmUwZjNkMDdlYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9u
LmgiCiAKKyNpbmNsdWRlICJDU1NGb250U2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNo
ZWV0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVtZW50LmgiCkBAIC0z
OCwxNiArMzksMTkgQEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUGFnZUdyb3VwLmgi
CiAjaW5jbHVkZSAiUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgiCisjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdTdHlsZUVsZW1lbnQu
aCIKICNpbmNsdWRlICJTZWxlY3RvckNoZWNrZXIuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIlNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmgiCiAjaW5jbHVkZSAiU3R5bGVJ
bnZhbGlkYXRpb25BbmFseXNpcy5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJTdHlsZVNoZWV0TGlzdC5oIgog
I2luY2x1ZGUgIlVzZXJDb250ZW50VVJMUGF0dGVybi5oIgogI2luY2x1ZGUgIldlYkNvcmVNZW1v
cnlJbnN0cnVtZW50YXRpb24uaCIKKyNpbmNsdWRlIDx3dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9u
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25MaXN0SGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25WZWN0b3IuaD4KIApAQCAt
NTYsNyArNjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwogCiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKLSAgICA6IG1fZG9jdW1lbnQoZG9jdW1lbnQp
CisgICAgOiBTdHlsZVNoZWV0Q29sbGVjdGlvbihkb2N1bWVudCkKICAgICAsIG1fcGVuZGluZ1N0
eWxlc2hlZXRzKDApCiAgICAgLCBtX2luamVjdGVkU3R5bGVTaGVldENhY2hlVmFsaWQoZmFsc2Up
CiAgICAgLCBtX2hhZEFjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0KGZhbHNlKQpAQCAtNjgsNiArNzIs
OSBAQCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpEb2N1bWVudFN0eWxlU2hlZXRDb2xs
ZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAsIG1fdXNlc0JlZm9yZUFmdGVyUnVsZXMo
ZmFsc2UpCiAgICAgLCBtX3VzZXNCZWZvcmVBZnRlclJ1bGVzT3ZlcnJpZGUoZmFsc2UpCiAgICAg
LCBtX3VzZXNSZW1Vbml0cyhmYWxzZSkKKyNpZiBFTkFCTEUoU0hBRE9XX0RPTSkKKyAgICAsIG1f
c2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24oU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OmNy
ZWF0ZShkb2N1bWVudCkpCisjZW5kaWYKIHsKIH0KIApAQCAtMjI2LDE4NyArMjMzLDMwIEBAIHZv
aWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5v
ZGUoTm9kZSogbm9kZSwgYm9vbCBjCiB7CiAgICAgaWYgKCFub2RlLT5pbkRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBVbnRpbCB0aGUgPGJvZHk+IGV4aXN0cywgd2Ug
aGF2ZSBubyBjaG9pY2UgYnV0IHRvIGNvbXBhcmUgZG9jdW1lbnQgcG9zaXRpb25zLAotICAgIC8v
IHNpbmNlIHN0eWxlcyBvdXRzaWRlIG9mIHRoZSBib2R5IGFuZCBoZWFkIGNvbnRpbnVlIHRvIGJl
IHNodW50ZWQgaW50byB0aGUgaGVhZAotICAgIC8vIChhbmQgdGh1cyBjYW4gc2hpZnQgdG8gZW5k
IHVwIGJlZm9yZSBkeW5hbWljYWxseSBhZGRlZCBET00gY29udGVudCB0aGF0IGlzIGFsc28KLSAg
ICAvLyBvdXRzaWRlIHRoZSBib2R5KS4KLSAgICBpZiAoKGNyZWF0ZWRCeVBhcnNlciAmJiBtX2Rv
Y3VtZW50LT5ib2R5KCkpIHx8IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmlzRW1wdHkoKSkg
ewotICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5hZGQobm9kZSk7Ci0gICAgICAg
IHJldHVybjsKLSAgICB9CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaWYgKCFub2RlLT5p
c0luU2hhZG93VHJlZSgpIHx8ICFub2RlLT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkKKyAgICAgICAg
cmV0dXJuIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlVG9DYW5kaWRhdGVMaXN0KG1fc3R5bGVT
aGVldENhbmRpZGF0ZU5vZGVzLCBub2RlLCBjcmVhdGVkQnlQYXJzZXIpOwogCi0gICAgLy8gRGV0
ZXJtaW5lIGFuIGFwcHJvcHJpYXRlIGluc2VydGlvbiBwb2ludC4KLSAgICBTdHlsZVNoZWV0Q2Fu
ZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGJlZ2luID0gbV9zdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZXMuYmVnaW4oKTsKLSAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJh
dG9yIGVuZCA9IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOwotICAgIFN0eWxlU2hl
ZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRlcmF0b3IgaXQgPSBlbmQ7Ci0gICAgTm9kZSogZm9s
bG93aW5nTm9kZSA9IDA7Ci0gICAgZG8gewotICAgICAgICAtLWl0OwotICAgICAgICBOb2RlKiBu
ID0gKml0OwotICAgICAgICB1bnNpZ25lZCBzaG9ydCBwb3NpdGlvbiA9IG4tPmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uKG5vZGUpOwotICAgICAgICBpZiAocG9zaXRpb24gPT0gTm9kZTo6RE9DVU1F
TlRfUE9TSVRJT05fRk9MTE9XSU5HKSB7Ci0gICAgICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRh
dGVOb2Rlcy5pbnNlcnRCZWZvcmUoZm9sbG93aW5nTm9kZSwgbm9kZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZm9sbG93aW5nTm9kZSA9IG47Ci0gICAgfSB3aGls
ZSAoaXQgIT0gYmVnaW4pOworICAgIGlmICghbV9zaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbikK
KyAgICAgICAgcmV0dXJuOwogICAgIAotICAgIG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmlu
c2VydEJlZm9yZShmb2xsb3dpbmdOb2RlLCBub2RlKTsKKyAgICByZXR1cm4gbV9zaGFkb3dTdHls
ZVNoZWV0Q29sbGVjdGlvbi0+YWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUobm9kZSwgY3JlYXRl
ZEJ5UGFyc2VyKTsKKyNlbHNlCisgICAgcmV0dXJuIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rl
VG9DYW5kaWRhdGVMaXN0KG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLCBub2RlLCBjcmVhdGVk
QnlQYXJzZXIpOworI2VuZGlmCiB9CiAKLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlv
bjo6cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9kZSogbm9kZSkKK3ZvaWQgRG9jdW1l
bnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9k
ZSogbm9kZSwgY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCiB7CisjaWYgRU5BQkxFKFNIQURP
V19ET00pCisgICAgaWYgKCF0cmVlU2NvcGUgfHwgdHJlZVNjb3BlID09IG1fZG9jdW1lbnQgfHwg
IW5vZGUtPmhhc1RhZ05hbWUoc3R5bGVUYWcpKQorICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRh
dGVOb2Rlcy5yZW1vdmUobm9kZSk7CisgICAgZWxzZQorICAgICAgICBtX3NoYWRvd1N0eWxlU2hl
ZXRDb2xsZWN0aW9uLT5yZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZShub2RlLCB0cmVlU2Nv
cGUpOworI2Vsc2UKICAgICBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5yZW1vdmUobm9kZSk7
Ci19Ci0KLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0
eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc2hlZXRzKQotewotICAgIGlm
IChtX2RvY3VtZW50LT5zZXR0aW5ncygpICYmICFtX2RvY3VtZW50LT5zZXR0aW5ncygpLT5hdXRo
b3JBbmRVc2VyU3R5bGVzRW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTdHlsZVNo
ZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGJlZ2luID0gbV9zdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZXMuYmVnaW4oKTsKLSAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6
Oml0ZXJhdG9yIGVuZCA9IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmVuZCgpOwotICAgIGZv
ciAoU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OjppdGVyYXRvciBpdCA9IGJlZ2luOyBp
dCAhPSBlbmQ7ICsraXQpIHsKLSAgICAgICAgTm9kZSogbiA9ICppdDsKLSAgICAgICAgU3R5bGVT
aGVldCogc2hlZXQgPSAwOwotICAgICAgICBpZiAobi0+bm9kZVR5cGUoKSA9PSBOb2RlOjpQUk9D
RVNTSU5HX0lOU1RSVUNUSU9OX05PREUpIHsKLSAgICAgICAgICAgIC8vIFByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb24gKFhNTCBkb2N1bWVudHMgb25seSkuCi0gICAgICAgICAgICAvLyBXZSBkb24ndCBz
dXBwb3J0IGxpbmtpbmcgdG8gZW1iZWRkZWQgQ1NTIHN0eWxlc2hlZXRzLCBzZWUgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00OTI4MT4gZm9yIGRpc2N1c3Npb24uCi0g
ICAgICAgICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24qIHBpID0gc3RhdGljX2Nhc3Q8UHJvY2Vz
c2luZ0luc3RydWN0aW9uKj4obik7Ci0gICAgICAgICAgICBzaGVldCA9IHBpLT5zaGVldCgpOwot
I2lmIEVOQUJMRShYU0xUKQotICAgICAgICAgICAgLy8gRG9uJ3QgYXBwbHkgWFNMIHRyYW5zZm9y
bXMgdG8gYWxyZWFkeSB0cmFuc2Zvcm1lZCBkb2N1bWVudHMgLS0gPHJkYXI6Ly9wcm9ibGVtLzQx
MzI4MDY+Ci0gICAgICAgICAgICBpZiAocGktPmlzWFNMKCkgJiYgIW1fZG9jdW1lbnQtPnRyYW5z
Zm9ybVNvdXJjZURvY3VtZW50KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBhcHBseSBY
U0wgdHJhbnNmb3JtcyB1bnRpbCBsb2FkaW5nIGlzIGZpbmlzaGVkLgotICAgICAgICAgICAgICAg
IGlmICghbV9kb2N1bWVudC0+cGFyc2luZygpKQotICAgICAgICAgICAgICAgICAgICBtX2RvY3Vt
ZW50LT5hcHBseVhTTFRyYW5zZm9ybShwaSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICAgICAgfQorICAgIFVOVVNFRF9QQVJBTSh0cmVlU2NvcGUpOwogI2VuZGlmCi0gICAgICAg
IH0gZWxzZSBpZiAoKG4tPmlzSFRNTEVsZW1lbnQoKSAmJiAobi0+aGFzVGFnTmFtZShsaW5rVGFn
KSB8fCBuLT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkpCi0jaWYgRU5BQkxFKFNWRykKLSAgICAgICAg
ICAgICAgICAgICB8fCAgKG4tPmlzU1ZHRWxlbWVudCgpICYmIG4tPmhhc1RhZ05hbWUoU1ZHTmFt
ZXM6OnN0eWxlVGFnKSkKLSNlbmRpZgotICAgICAgICAgICAgICAgICAgICkgewotICAgICAgICAg
ICAgRWxlbWVudCogZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAgICAgICAgICAgIEF0
b21pY1N0cmluZyB0aXRsZSA9IGUtPmdldEF0dHJpYnV0ZSh0aXRsZUF0dHIpOwotICAgICAgICAg
ICAgYm9vbCBlbmFibGVkVmlhU2NyaXB0ID0gZmFsc2U7Ci0gICAgICAgICAgICBpZiAoZS0+aGFz
TG9jYWxOYW1lKGxpbmtUYWcpKSB7Ci0gICAgICAgICAgICAgICAgLy8gPExJTks+IGVsZW1lbnQK
LSAgICAgICAgICAgICAgICBIVE1MTGlua0VsZW1lbnQqIGxpbmtFbGVtZW50ID0gc3RhdGljX2Nh
c3Q8SFRNTExpbmtFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmtFbGVtZW50
LT5pc0Rpc2FibGVkKCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgICAgIGVuYWJsZWRWaWFTY3JpcHQgPSBsaW5rRWxlbWVudC0+aXNFbmFibGVkVmlhU2NyaXB0
KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGxpbmtFbGVtZW50LT5zdHlsZVNoZWV0SXNMb2FkaW5n
KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gaXQgaXMgbG9hZGluZyBidXQgd2Ugc2hvdWxk
IHN0aWxsIGRlY2lkZSB3aGljaCBzdHlsZSBzaGVldCBzZXQgdG8gdXNlCi0gICAgICAgICAgICAg
ICAgICAgIGlmICghZW5hYmxlZFZpYVNjcmlwdCAmJiAhdGl0bGUuaXNFbXB0eSgpICYmIG1fcHJl
ZmVycmVkU3R5bGVzaGVldFNldE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHJlbCA9IGUtPmdldEF0dHJpYnV0ZShyZWxBdHRyKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5h
bWUgPSB0aXRsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3NlbGVjdGVkU3R5bGVz
aGVldFNldE5hbWUgPSB0aXRsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFsaW5rRWxlbWVudC0+c2hlZXQoKSkKLSAgICAg
ICAgICAgICAgICAgICAgdGl0bGUgPSBudWxsQXRvbTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIC8vIEdldCB0aGUgY3VycmVudCBwcmVmZXJyZWQgc3R5bGVzZXQuIFRoaXMgaXMgdGhlCi0g
ICAgICAgICAgICAvLyBzZXQgb2Ygc2hlZXRzIHRoYXQgd2lsbCBiZSBlbmFibGVkLgotI2lmIEVO
QUJMRShTVkcpCi0gICAgICAgICAgICBpZiAobi0+aXNTVkdFbGVtZW50KCkgJiYgbi0+aGFzVGFn
TmFtZShTVkdOYW1lczo6c3R5bGVUYWcpKQotICAgICAgICAgICAgICAgIHNoZWV0ID0gc3RhdGlj
X2Nhc3Q8U1ZHU3R5bGVFbGVtZW50Kj4obiktPnNoZWV0KCk7Ci0gICAgICAgICAgICBlbHNlCi0j
ZW5kaWYKLSAgICAgICAgICAgIGlmIChlLT5oYXNMb2NhbE5hbWUobGlua1RhZykpCi0gICAgICAg
ICAgICAgICAgc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MTGlua0VsZW1lbnQqPihuKS0+c2hlZXQo
KTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAvLyA8U1RZTEU+IGVsZW1lbnQK
LSAgICAgICAgICAgICAgICBzaGVldCA9IHN0YXRpY19jYXN0PEhUTUxTdHlsZUVsZW1lbnQqPihu
KS0+c2hlZXQoKTsKLSAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB0aGlzIHNoZWV0IGJl
bG9uZ3MgdG8gYSBzdHlsZXNldAotICAgICAgICAgICAgLy8gKHRodXMgbWFraW5nIGl0IFBSRUZF
UlJFRCBvciBBTFRFUk5BVEUgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgIC8vIFBFUlNJU1RFTlQp
LgotICAgICAgICAgICAgQXRvbWljU3RyaW5nIHJlbCA9IGUtPmdldEF0dHJpYnV0ZShyZWxBdHRy
KTsKLSAgICAgICAgICAgIGlmICghZW5hYmxlZFZpYVNjcmlwdCAmJiAhdGl0bGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgICAgICAgICAgLy8gWWVzLCB3ZSBoYXZlIGEgdGl0bGUuCi0gICAgICAgICAg
ICAgICAgaWYgKG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUuaXNFbXB0eSgpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIC8vIE5vIHByZWZlcnJlZCBzZXQgaGFzIGJlZW4gZXN0YWJsaXNoZWQu
IElmCi0gICAgICAgICAgICAgICAgICAgIC8vIHdlIGFyZSBOT1QgYW4gYWx0ZXJuYXRlIHNoZWV0
LCB0aGVuIGVzdGFibGlzaAotICAgICAgICAgICAgICAgICAgICAvLyB1cyBhcyB0aGUgcHJlZmVy
cmVkIHNldC4gT3RoZXJ3aXNlLCBqdXN0IGlnbm9yZQotICAgICAgICAgICAgICAgICAgICAvLyB0
aGlzIHNoZWV0LgotICAgICAgICAgICAgICAgICAgICBpZiAoZS0+aGFzTG9jYWxOYW1lKHN0eWxl
VGFnKSB8fCAhcmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUgPSBtX3NlbGVjdGVkU3R5bGVzaGVldFNl
dE5hbWUgPSB0aXRsZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHRp
dGxlICE9IG1fcHJlZmVycmVkU3R5bGVzaGVldFNldE5hbWUpCi0gICAgICAgICAgICAgICAgICAg
IHNoZWV0ID0gMDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHJlbC5jb250YWlu
cygiYWx0ZXJuYXRlIikgJiYgdGl0bGUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIHNoZWV0
ID0gMDsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2hlZXQpCi0gICAgICAgICAgICBzaGVldHMu
YXBwZW5kKHNoZWV0KTsKLSAgICB9Ci19Ci0KLXZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVj
dGlvbjo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFuZ2UoVXBkYXRlRmxhZyB1cGRhdGVGbGFnLCBjb25z
dCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBTdHlsZVJl
c29sdmVyVXBkYXRlVHlwZSYgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIGJvb2wmIHJlcXVpcmVz
RnVsbFN0eWxlUmVjYWxjKQotewotICAgIHN0eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID0gUmVjb25z
dHJ1Y3Q7Ci0gICAgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMgPSB0cnVlOwotICAgIAotICAgIC8v
IFN0eWxlc2hlZXRzIG9mIDxzdHlsZT4gZWxlbWVudHMgdGhhdCBAaW1wb3J0IHN0eWxlc2hlZXRz
IGFyZSBhY3RpdmUgYnV0IGxvYWRpbmcuIFdlIG5lZWQgdG8gdHJpZ2dlciBhIGZ1bGwgcmVjYWxj
IHdoZW4gc3VjaCBsb2FkcyBhcmUgZG9uZS4KLSAgICBib29sIGhhc0FjdGl2ZUxvYWRpbmdTdHls
ZXNoZWV0ID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgbmV3U3R5bGVzaGVldENvdW50ID0gbmV3U3R5
bGVzaGVldHMuc2l6ZSgpOwotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuZXdTdHlsZXNo
ZWV0Q291bnQ7ICsraSkgewotICAgICAgICBpZiAobmV3U3R5bGVzaGVldHNbaV0tPmlzTG9hZGlu
ZygpKQotICAgICAgICAgICAgaGFzQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQgPSB0cnVlOwotICAg
IH0KLSAgICBpZiAobV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCAmJiAhaGFzQWN0aXZlTG9h
ZGluZ1N0eWxlc2hlZXQpIHsKLSAgICAgICAgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCA9
IGZhbHNlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIG1faGFkQWN0aXZlTG9hZGluZ1N0
eWxlc2hlZXQgPSBoYXNBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsKLQotICAgIGlmICh1cGRhdGVG
bGFnICE9IE9wdGltaXplZFVwZGF0ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGlmICghbV9kb2N1
bWVudC0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8v
IEZpbmQgb3V0IHdoaWNoIHN0eWxlc2hlZXRzIGFyZSBuZXcuCi0gICAgdW5zaWduZWQgb2xkU3R5
bGVzaGVldENvdW50ID0gbV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0cy5zaXplKCk7Ci0gICAgaWYg
KG5ld1N0eWxlc2hlZXRDb3VudCA8IG9sZFN0eWxlc2hlZXRDb3VudCkKLSAgICAgICAgcmV0dXJu
OwotICAgIFZlY3RvcjxTdHlsZVNoZWV0Q29udGVudHMqPiBhZGRlZFNoZWV0czsKLSAgICB1bnNp
Z25lZCBuZXdJbmRleCA9IDA7Ci0gICAgZm9yICh1bnNpZ25lZCBvbGRJbmRleCA9IDA7IG9sZElu
ZGV4IDwgb2xkU3R5bGVzaGVldENvdW50OyArK29sZEluZGV4KSB7Ci0gICAgICAgIGlmIChuZXdJ
bmRleCA+PSBuZXdTdHlsZXNoZWV0Q291bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IHdoaWxlIChtX2FjdGl2ZUF1dGhvclN0eWxlU2hlZXRzW29sZEluZGV4XSAhPSBuZXdTdHlsZXNo
ZWV0c1tuZXdJbmRleF0pIHsKLSAgICAgICAgICAgIGFkZGVkU2hlZXRzLmFwcGVuZChuZXdTdHls
ZXNoZWV0c1tuZXdJbmRleF0tPmNvbnRlbnRzKCkpOwotICAgICAgICAgICAgKytuZXdJbmRleDsK
LSAgICAgICAgICAgIGlmIChuZXdJbmRleCA9PSBuZXdTdHlsZXNoZWV0Q291bnQpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgICsrbmV3SW5kZXg7Ci0gICAgfQot
ICAgIGJvb2wgaGFzSW5zZXJ0aW9ucyA9ICFhZGRlZFNoZWV0cy5pc0VtcHR5KCk7Ci0gICAgd2hp
bGUgKG5ld0luZGV4IDwgbmV3U3R5bGVzaGVldENvdW50KSB7Ci0gICAgICAgIGFkZGVkU2hlZXRz
LmFwcGVuZChuZXdTdHlsZXNoZWV0c1tuZXdJbmRleF0tPmNvbnRlbnRzKCkpOwotICAgICAgICAr
K25ld0luZGV4OwotICAgIH0KLSAgICAvLyBJZiBhbGwgbmV3IHNoZWV0cyB3ZXJlIGFkZGVkIGF0
IHRoZSBlbmQgb2YgdGhlIGxpc3Qgd2UgY2FuIGp1c3QgYWRkIHRoZW0gdG8gZXhpc3RpbmcgU3R5
bGVSZXNvbHZlci4KLSAgICAvLyBJZiB0aGVyZSB3ZXJlIGluc2VydGlvbnMgd2UgbmVlZCB0byBy
ZS1hZGQgYWxsIHRoZSBzdHlsZXNoZWV0cyBzbyBydWxlcyBhcmUgb3JkZXJlZCBjb3JyZWN0bHku
Ci0gICAgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgPSBoYXNJbnNlcnRpb25zID8gUmVzZXQgOiBB
ZGRpdGl2ZTsKLQotICAgIC8vIElmIHdlIGFyZSBhbHJlYWR5IHBhcnNpbmcgdGhlIGJvZHkgYW5k
IHNvIG1heSBoYXZlIHNpZ25pZmljYW50IGFtb3VudCBvZiBlbGVtZW50cywgcHV0IHNvbWUgZWZm
b3J0IGludG8gdHJ5aW5nIHRvIGF2b2lkIHN0eWxlIHJlY2FsY3MuCi0gICAgaWYgKCFtX2RvY3Vt
ZW50LT5ib2R5KCkgfHwgbV9kb2N1bWVudC0+aGFzTm9kZXNXaXRoUGxhY2Vob2xkZXJTdHlsZSgp
KQotICAgICAgICByZXR1cm47Ci0gICAgU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcyBpbnZhbGlk
YXRpb25BbmFseXNpcyhhZGRlZFNoZWV0cyk7Ci0gICAgaWYgKGludmFsaWRhdGlvbkFuYWx5c2lz
LmRpcnRpZXNBbGxTdHlsZSgpKQotICAgICAgICByZXR1cm47Ci0gICAgaW52YWxpZGF0aW9uQW5h
bHlzaXMuaW52YWxpZGF0ZVN0eWxlKG1fZG9jdW1lbnQpOwotICAgIHJlcXVpcmVzRnVsbFN0eWxl
UmVjYWxjID0gZmFsc2U7CiB9CiAKIHN0YXRpYyBib29sIHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMo
Y29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMpCkBAIC00MTgsMTcg
KzI2OCw2IEBAIHN0YXRpYyBib29sIHN0eWxlU2hlZXRzVXNlUmVtVW5pdHMoY29uc3QgVmVjdG9y
PFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBzaGVldHMpCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGF0aWMgdm9pZCBmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiA+JiByZXN1bHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4g
PiYgc2hlZXRzKQotewotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaGVldHMuc2l6ZSgp
OyArK2kpIHsKLSAgICAgICAgaWYgKCFzaGVldHNbaV0tPmlzQ1NTU3R5bGVTaGVldCgpKQotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlmIChzaGVldHNbaV0tPmRpc2FibGVkKCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxD
U1NTdHlsZVNoZWV0Kj4oc2hlZXRzW2ldLmdldCgpKSk7Ci0gICAgfQotfQotCiBzdGF0aWMgdm9p
ZCBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHNGcm9tU2VhbWxlc3NQYXJlbnRzKFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gPiYgc2hlZXRzLCBEb2N1bWVudCogZG9jdW1lbnQpCiB7CiAgICAg
SFRNTElGcmFtZUVsZW1lbnQqIHNlYW1sZXNzUGFyZW50SUZyYW1lID0gZG9jdW1lbnQtPnNlYW1s
ZXNzUGFyZW50SUZyYW1lKCk7CkBAIC00NDMsNiArMjgyLDkgQEAgdm9pZCBEb2N1bWVudFN0eWxl
U2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVTdHlsZVJlc29sdmVyKFN0eWxlUmVzb2x2ZXJVcGRhdGVU
eXBlIHUKICAgICAgICAgbV9kb2N1bWVudC0+Y2xlYXJTdHlsZVJlc29sdmVyKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CisgICAgaWYgKHVwZGF0ZVR5cGUgPT0gTm9VcGRhdGUpCisgICAgICAg
IHJldHVybjsKKwogICAgIFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBtX2RvY3VtZW50
LT5zdHlsZVJlc29sdmVyKCk7CiAgICAgdW5zaWduZWQgZmlyc3ROZXdJbmRleDsKICAgICBpZiAo
dXBkYXRlVHlwZSA9PSBSZXNldCkgewpAQCAtNDUzLDYgKzI5NSwxMiBAQCB2b2lkIERvY3VtZW50
U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZVN0eWxlUmVzb2x2ZXIoU3R5bGVSZXNvbHZlclVw
ZGF0ZVR5cGUgdQogICAgICAgICBmaXJzdE5ld0luZGV4ID0gbV9hY3RpdmVBdXRob3JTdHlsZVNo
ZWV0cy5zaXplKCk7CiAgICAgfQogICAgIHN0eWxlUmVzb2x2ZXItPmFwcGVuZEF1dGhvclN0eWxl
U2hlZXRzKGZpcnN0TmV3SW5kZXgsIGFjdGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKK30KKwordm9p
ZCBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVDU1NGZWF0dXJlcygpCit7Cisg
ICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2
ZXIoKTsKKyAgICBzdHlsZVJlc29sdmVyLT51cGRhdGVBZnRlckFwcGVuZEF1dGhvclN0eWxlU2hl
ZXRzKCk7CiAgICAgcmVzZXRDU1NGZWF0dXJlRmxhZ3MoKTsKIH0KIApAQCAtNDcxLDcgKzMxOSw3
IEBAIGJvb2wgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6dXBkYXRlQWN0aXZlU3R5bGVT
aGVldHMoVXBkYXRlRmxhZyB1cGRhdGVGbGFnCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiBkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzOwot
ICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0cyhkb2N1bWVudEF1dGhvclN0eWxlU2hlZXRzKTsK
KyAgICBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldHNGcm9tQ2FuZGlkYXRlTGlzdChtX3N0eWxlU2hl
ZXRDYW5kaWRhdGVOb2RlcywgZG9jdW1lbnRBdXRob3JTdHlsZVNoZWV0cyk7CiAKICAgICBWZWN0
b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gYWN0aXZlQXV0aG9yU3R5bGVTaGVldHM7CiAgICAg
YWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYXBwZW5kKGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMo
KSk7CkBAIC00ODksMTAgKzMzNywxNyBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rp
b246OnVwZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogCiAgICAg
U3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGU7CiAgICAgYm9v
bCByZXF1aXJlc0Z1bGxTdHlsZVJlY2FsYzsKLSAgICBhbmFseXplU3R5bGVTaGVldENoYW5nZSh1
cGRhdGVGbGFnLCBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cywgc3R5bGVSZXNvbHZlclVwZGF0ZVR5
cGUsIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKTsKLQorICAgIGFuYWx5emVTdHlsZVNoZWV0Q2hh
bmdlKG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMsIHVwZGF0ZUZsYWcsIGFjdGl2ZUF1dGhvclN0
eWxlU2hlZXRzLCBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgcmVxdWlyZXNGdWxsU3R5bGVSZWNh
bGMpOwogICAgIHVwZGF0ZVN0eWxlUmVzb2x2ZXIoc3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUsIGFj
dGl2ZUF1dGhvclN0eWxlU2hlZXRzKTsKLSAgICAKKworI2lmIEVOQUJMRShTSEFET1dfRE9NKQor
ICAgIGlmIChtX3NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uKQorICAgICAgICBtX3NoYWRvd1N0
eWxlU2hlZXRDb2xsZWN0aW9uLT51cGRhdGVBY3RpdmVTdHlsZVNoZWV0cyh1cGRhdGVGbGFnLCBz
dHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9PSBSZWNvbnN0cnVjdCk7CisjZW5kaWYKKyAgICAvLyBT
b21lIHN0eWxlIGluIGEgc2hhZG93IGRvbSB0cmVlIG9yIGluIGEgZG9jdW1lbnQgdHJlZSBpcyB1
cGRhdGVkLgorICAgIGlmIChzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSAhPSBSZWNvbnN0cnVjdCkK
KyAgICAgICAgdXBkYXRlQ1NTRmVhdHVyZXMoKTsKKwogICAgIG1fYWN0aXZlQXV0aG9yU3R5bGVT
aGVldHMuc3dhcChhY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CiAgICAgbV9hY3RpdmVVc2VyU3R5
bGVTaGVldHMuc3dhcChhY3RpdmVVc2VyU3R5bGVTaGVldHMpOwogICAgIG1fc3R5bGVTaGVldHNG
b3JTdHlsZVNoZWV0TGlzdC5zd2FwKGRvY3VtZW50QXV0aG9yU3R5bGVTaGVldHMpOwpAQCAtNTA1
LDYgKzM2MCwzNiBAQCBib29sIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnVwZGF0ZUFj
dGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcgdXBkYXRlRmxhZwogICAgIHJldHVybiByZXF1aXJl
c0Z1bGxTdHlsZVJlY2FsYzsKIH0KIAorI2lmIEVOQUJMRShTSEFET1dfRE9NKQordm9pZCBEb2N1
bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjphcHBlbmRBbGxBY3RpdmVBdXRob3JTaGFkb3dTdHls
ZVNoZWV0cyhTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQoreworICAgIGlmIChtX3NoYWRv
d1N0eWxlU2hlZXRDb2xsZWN0aW9uKQorICAgICAgICBtX3NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0
aW9uLT5hcHBlbmRBbGxBY3RpdmVBdXRob3JTdHlsZVNoZWV0cyhzdHlsZVJlc29sdmVyKTsKK30K
KyNlbmRpZgorCitTdHlsZVNoZWV0KiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uOjpjb2xs
ZWN0QWN0aXZlU3R5bGVTaGVldEZyb21JbnN0cnVjdGlvbk5vZGUoTm9kZSogbiwgYm9vbCYgY29u
dGludWVDb2xsZWN0aW5nKQoreworICAgIEFTU0VSVChuICYmIG4tPm5vZGVUeXBlKCkgPT0gTm9k
ZTo6UFJPQ0VTU0lOR19JTlNUUlVDVElPTl9OT0RFKTsKKworICAgIC8vIFByb2Nlc3NpbmcgaW5z
dHJ1Y3Rpb24gKFhNTCBkb2N1bWVudHMgb25seSkuCisgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBs
aW5raW5nIHRvIGVtYmVkZGVkIENTUyBzdHlsZXNoZWV0cywgc2VlIDxodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDkyODE+IGZvciBkaXNjdXNzaW9uLgorICAgIFByb2Nl
c3NpbmdJbnN0cnVjdGlvbiogcGkgPSBzdGF0aWNfY2FzdDxQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24q
PihuKTsKKyAgICBTdHlsZVNoZWV0KiBzaGVldCA9IHBpLT5zaGVldCgpOworI2lmIEVOQUJMRShY
U0xUKQorICAgIC8vIERvbid0IGFwcGx5IFhTTCB0cmFuc2Zvcm1zIHRvIGFscmVhZHkgdHJhbnNm
b3JtZWQgZG9jdW1lbnRzIC0tIDxyZGFyOi8vcHJvYmxlbS80MTMyODA2PgorICAgIGlmIChwaS0+
aXNYU0woKSAmJiAhbV9kb2N1bWVudC0+dHJhbnNmb3JtU291cmNlRG9jdW1lbnQoKSkgeworICAg
ICAgICAvLyBEb24ndCBhcHBseSBYU0wgdHJhbnNmb3JtcyB1bnRpbCBsb2FkaW5nIGlzIGZpbmlz
aGVkLgorICAgICAgICBpZiAoIW1fZG9jdW1lbnQtPnBhcnNpbmcoKSkKKyAgICAgICAgICAgIG1f
ZG9jdW1lbnQtPmFwcGx5WFNMVHJhbnNmb3JtKHBpKTsKKyAgICAgICAgY29udGludWVDb2xsZWN0
aW5nID0gZmFsc2U7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyNlbmRpZgorICAgIGNvbnRp
bnVlQ29sbGVjdGluZyA9IHRydWU7CisgICAgcmV0dXJuIHNoZWV0OworfQorCiB2b2lkIERvY3Vt
ZW50U3R5bGVTaGVldENvbGxlY3Rpb246OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdElu
Zm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8o
bWVtb3J5T2JqZWN0SW5mbywgdGhpcywgV2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOwpAQCAtNTE4
LDYgKzQwMyw5IEBAIHZvaWQgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbjo6cmVwb3J0TWVt
b3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyogbWVtb3J5T2JqCiAgICAgaW5mby5hZGRNZW1iZXIo
bV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fcHJlZmVy
cmVkU3R5bGVzaGVldFNldE5hbWUpOwogICAgIGluZm8uYWRkTWVtYmVyKG1fc2VsZWN0ZWRTdHls
ZXNoZWV0U2V0TmFtZSk7CisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgaW5mby5hZGRNZW1i
ZXIobV9zaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbik7CisjZW5kaWYKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uLmgKaW5kZXgg
OGIyZTVhYjI2YjhmZjEzMTBlZDMxZjU3NjQ5YWY3NDgxOTUxNDg3Mi4uZjQwZmQyOWEwMWQyYjMx
NjkwNmVlMjQwMTI4MmUyYmRmMzdhOWZiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbi5oCkBAIC0yOCw4ICsyOCwxMSBAQAogI2lmbmRl
ZiBEb2N1bWVudFN0eWxlU2hlZXRDb2xsZWN0aW9uX2gKICNkZWZpbmUgRG9jdW1lbnRTdHlsZVNo
ZWV0Q29sbGVjdGlvbl9oCiAKKyNpbmNsdWRlICJTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTM5LDExICs0MiwxNSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBOb2RlOwor
Y2xhc3MgU2hhZG93Um9vdDsKK2NsYXNzIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOworY2xh
c3MgU3R5bGVSZXNvbHZlcjsKIGNsYXNzIFN0eWxlU2hlZXQ7CiBjbGFzcyBTdHlsZVNoZWV0Q29u
dGVudHM7CiBjbGFzcyBTdHlsZVNoZWV0TGlzdDsKK2NsYXNzIFRyZWVTY29wZTsKIAotY2xhc3Mg
RG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbiB7CitjbGFzcyBEb2N1bWVudFN0eWxlU2hlZXRD
b2xsZWN0aW9uIDogcHVibGljIFN0eWxlU2hlZXRDb2xsZWN0aW9uIHsKICAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc093blB0cjxEb2N1bWVudFN0
eWxlU2hlZXRDb2xsZWN0aW9uPiBjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50KSB7IHJldHVybiBh
ZG9wdFB0cihuZXcgRG9jdW1lbnRTdHlsZVNoZWV0Q29sbGVjdGlvbihkb2N1bWVudCkpOyB9CkBA
IC01Niw3ICs2Myw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxl
U2hlZXQ+ID4mIGFjdGl2ZVVzZXJTdHlsZVNoZWV0cygpIGNvbnN0IHsgcmV0dXJuIG1fYWN0aXZl
VXNlclN0eWxlU2hlZXRzOyB9CiAKICAgICB2b2lkIGFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rl
KE5vZGUqLCBib29sIGNyZWF0ZWRCeVBhcnNlcik7Ci0gICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZShOb2RlKik7CisgICAgdm9pZCByZW1vdmVTdHlsZVNoZWV0Q2FuZGlkYXRl
Tm9kZShOb2RlKiwgY29uc3QgVHJlZVNjb3BlKiA9IDApOwogCiAgICAgdm9pZCBjbGVhclBhZ2VV
c2VyU3R5bGVTaGVldCgpOwogICAgIHZvaWQgdXBkYXRlUGFnZVVzZXJTdHlsZVNoZWV0KCk7CkBA
IC02Nyw3ICs3NCw2IEBAIHB1YmxpYzoKIAogICAgIGJvb2wgbmVlZHNVcGRhdGVBY3RpdmVTdHls
ZXNoZWV0c09uU3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBtX25lZWRzVXBkYXRlQWN0aXZl
U3R5bGVzaGVldHNPblN0eWxlUmVjYWxjOyB9CiAKLSAgICBlbnVtIFVwZGF0ZUZsYWcgeyBGdWxs
VXBkYXRlLCBPcHRpbWl6ZWRVcGRhdGUgfTsKICAgICBib29sIHVwZGF0ZUFjdGl2ZVN0eWxlU2hl
ZXRzKFVwZGF0ZUZsYWcpOwogCiAgICAgU3RyaW5nIHByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1l
KCkgY29uc3QgeyByZXR1cm4gbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsgfQpAQCAtOTYs
MTkgKzEwMiwxNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbWJpbmVDU1NGZWF0dXJlRmxhZ3Mo
KTsKICAgICB2b2lkIHJlc2V0Q1NTRmVhdHVyZUZsYWdzKCk7CisgICAgdm9pZCB1cGRhdGVDU1NG
ZWF0dXJlcygpOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgdm9pZCBhcHBlbmRBbGxB
Y3RpdmVBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyhTdHlsZVJlc29sdmVyKik7CisjZW5kaWYKIAog
ICAgIHZvaWQgcmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyopIGNvbnN0OwogCiBw
cml2YXRlOgogICAgIERvY3VtZW50U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1lbnQqKTsKIAot
ICAgIHZvaWQgY29sbGVjdEFjdGl2ZVN0eWxlU2hlZXRzKFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVl
dD4gPiYpOwotICAgIGVudW0gU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUgewotICAgICAgICBSZWNv
bnN0cnVjdCwKLSAgICAgICAgUmVzZXQsCi0gICAgICAgIEFkZGl0aXZlCi0gICAgfTsKLSAgICB2
b2lkIGFuYWx5emVTdHlsZVNoZWV0Q2hhbmdlKFVwZGF0ZUZsYWcsIGNvbnN0IFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gPiYgbmV3U3R5bGVzaGVldHMsIFN0eWxlUmVzb2x2ZXJVcGRhdGVU
eXBlJiwgYm9vbCYgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMpOwogICAgIHZvaWQgdXBkYXRlU3R5
bGVSZXNvbHZlcihTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgY29uc3QgVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHlsZVNoZWV0cyk7CiAKICAgICBDU1NTdHls
ZVNoZWV0KiBwYWdlVXNlclN0eWxlU2hlZXQoKTsKQEAgLTExNiw3ICsxMjAsNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgaW5qZWN0ZWRVc2Vy
U3R5bGVTaGVldHMoKSBjb25zdDsKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+ID4mIGluamVjdGVkQXV0aG9yU3R5bGVTaGVldHMoKSBjb25zdDsKIAotICAgIERvY3VtZW50
KiBtX2RvY3VtZW50OworICAgIHZpcnR1YWwgU3R5bGVTaGVldCogY29sbGVjdEFjdGl2ZVN0eWxl
U2hlZXRGcm9tSW5zdHJ1Y3Rpb25Ob2RlKE5vZGUqLCBib29sJiBjb250aW51ZUNvbGxlY3Rpbmcp
IE9WRVJSSURFOwogCiAgICAgVmVjdG9yPFJlZlB0cjxTdHlsZVNoZWV0PiA+IG1fc3R5bGVTaGVl
dHNGb3JTdHlsZVNoZWV0TGlzdDsKICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4g
bV9hY3RpdmVBdXRob3JTdHlsZVNoZWV0czsKQEAgLTEzOSw3ICsxNDMsNiBAQCBwcml2YXRlOgog
ICAgIGJvb2wgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsKICAgICBib29sIG1fbmVlZHNV
cGRhdGVBY3RpdmVTdHlsZXNoZWV0c09uU3R5bGVSZWNhbGM7CiAKLSAgICB0eXBlZGVmIExpc3RI
YXNoU2V0PE5vZGUqLCAzMj4gU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0OwogICAgIFN0
eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldCBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2RlczsK
IAogICAgIFN0cmluZyBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lOwpAQCAtMTUyLDYgKzE1
NSwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV91c2VzQmVmb3JlQWZ0ZXJSdWxlczsKICAgICBi
b29sIG1fdXNlc0JlZm9yZUFmdGVyUnVsZXNPdmVycmlkZTsKICAgICBib29sIG1fdXNlc1JlbVVu
aXRzOworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisgICAgT3duUHRyPFNoYWRvd1N0eWxlU2hl
ZXRDb2xsZWN0aW9uPiBtX3NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOworI2VuZGlmCiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2hhZG93U3R5bGVTaGVldENvbGxl
Y3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9u
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mNDhhOTM3NGIxYTYwYWIzYWZjMTdlOTM3ODNhOTk5MWUyNjg1NGMw
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NoYWRvd1N0eWxlU2hlZXRD
b2xsZWN0aW9uLmNwcApAQCAtMCwwICsxLDE5MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQorICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDAxIERpcmsg
TXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQ
cm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUs
IDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTEsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQv
b3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90
aW9uIExpbWl0ZWQgMjAxMC0yMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaCIKKworI2lmIEVO
QUJMRShTSEFET1dfRE9NKQorCisjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgorI2luY2x1ZGUg
IkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5o
IgorI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQuaCIKKyNpbmNsdWRlICJTZWxlY3RvckNoZWNr
ZXIuaCIKKyNpbmNsdWRlICJTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgiCisjaW5jbHVkZSAi
U3R5bGVSZXNvbHZlci5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgorI2luY2x1
ZGUgIlN0eWxlU2hlZXRMaXN0LmgiCisjaW5jbHVkZSAiV2ViQ29yZU1lbW9yeUluc3RydW1lbnRh
dGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL01lbW9yeUluc3RydW1lbnRhdGlvbkhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3
dGYvTWVtb3J5SW5zdHJ1bWVudGF0aW9uTGlzdEhhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvTWVt
b3J5SW5zdHJ1bWVudGF0aW9uVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKKworU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OlNo
YWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKKyAgICA6IFN0eWxl
U2hlZXRDb2xsZWN0aW9uKGRvY3VtZW50KQoreworfQorCit2b2lkIFNoYWRvd1N0eWxlU2hlZXRD
b2xsZWN0aW9uOjpyZW1vdmVBbGxTdHlsZVNoZWV0c0Zvcihjb25zdCBUcmVlU2NvcGUqIHRyZWVT
Y29wZSkKK3sKKyAgICBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlc0luU2hhZG93LnJlbW92ZSh0
cmVlU2NvcGUpOworICAgIG1fcmVtb3ZlZFRyZWVTY29wZXMuYWRkKHRyZWVTY29wZSk7Cit9CisK
K3ZvaWQgU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246OmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVO
b2RlKE5vZGUqIG5vZGUsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQoreworICAgIEFTU0VSVChub2Rl
KTsKKyAgICBBU1NFUlQobm9kZS0+aW5Eb2N1bWVudCgpKTsKKyAgICBBU1NFUlQobm9kZS0+aXNJ
blNoYWRvd1RyZWUoKSk7CisKKyAgICBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSA9IG5vZGUt
PnRyZWVTY29wZSgpOworICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldE1hcDo6QWRk
UmVzdWx0IGFkZFJlc3VsdCA9IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzSW5TaGFkb3cuYWRk
KHRyZWVTY29wZSwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IFN0eWxlU2hlZXRD
YW5kaWRhdGVMaXN0SGFzaFNldCk7CisgICAgYWRkU3R5bGVTaGVldENhbmRpZGF0ZU5vZGVUb0Nh
bmRpZGF0ZUxpc3QoKmFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCksIG5vZGUsIGNyZWF0
ZWRCeVBhcnNlcik7CisKKyAgICBtX3JlbW92ZWRUcmVlU2NvcGVzLnJlbW92ZSh0cmVlU2NvcGUp
OworfQorCit2b2lkIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjpyZW1vdmVTdHlsZVNoZWV0
Q2FuZGlkYXRlTm9kZShOb2RlKiBub2RlLCBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSkKK3sK
KyAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXRNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
dHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXNJblNoYWRvdy5maW5kKHRyZWVTY29wZSk7CisgICAgaWYg
KGl0ID09IG1fc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzSW5TaGFkb3cuZW5kKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGl0LT52YWx1ZS0+cmVtb3ZlKG5vZGUpOworICAgIGlmIChpdC0+dmFs
dWUtPmlzRW1wdHkoKSkgeworICAgICAgICBtX3N0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlc0luU2hh
ZG93LnJlbW92ZSh0cmVlU2NvcGUpOworICAgICAgICBtX3JlbW92ZWRUcmVlU2NvcGVzLmFkZCh0
cmVlU2NvcGUpOworICAgIH0KK30KKworVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+KiBT
aGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbjo6ZW5zdXJlQWN0aXZlQXV0aG9yU3R5bGVTaGVldHNG
b3IoY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUpCit7CisgICAgU2hhZG93Q1NTU3R5bGVTaGVl
dE1hcDo6QWRkUmVzdWx0IGFkZFJlc3VsdCA9IG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuYWRk
KHRyZWVTY29wZSwgbnVsbHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAg
ICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQ
dHI8Q1NTU3R5bGVTaGVldD4gPik7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFs
dWUuZ2V0KCk7Cit9CisKK1ZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiogU2hhZG93U3R5bGVT
aGVldENvbGxlY3Rpb246OmVuc3VyZUF1dGhvclN0eWxlU2hlZXRzRm9yKGNvbnN0IFRyZWVTY29w
ZSogdHJlZVNjb3BlKQoreworICAgIFNoYWRvd1N0eWxlU2hlZXRNYXA6OkFkZFJlc3VsdCBhZGRS
ZXN1bHQgPSBtX3N0eWxlU2hlZXRzRm9yU3R5bGVTaGVldExpc3QuYWRkKHRyZWVTY29wZSwgbnVs
bHB0cik7CisgICAgaWYgKGFkZFJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICBhZGRSZXN1bHQu
aXRlcmF0b3ItPnZhbHVlID0gYWRvcHRQdHIobmV3IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4g
Pik7CisgICAgcmV0dXJuIGFkZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUuZ2V0KCk7Cit9CisKKy8v
IChNRU1PKSBpbnZva2VkIGZyb20gU3R5bGVSZXNvbHZlcjo6U3R5bGVSZXNvbHZlci4KKy8vIERv
bid0IGludm9rZSBhbnkgbWV0aG9kIHdoaWNoIGNvbnRhaW5zIERvY3VtZW50OjpjbGVhclN0eWxl
UmVzb2x2ZXIuCit2b2lkIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjphcHBlbmRBbGxBY3Rp
dmVBdXRob3JTdHlsZVNoZWV0cyhTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyKQoreworICAg
IFNoYWRvd0NTU1N0eWxlU2hlZXRNYXA6Oml0ZXJhdG9yIGJlZ2luID0gbV9hY3RpdmVBdXRob3JT
dHlsZVNoZWV0cy5iZWdpbigpOworICAgIFNoYWRvd0NTU1N0eWxlU2hlZXRNYXA6Oml0ZXJhdG9y
IGVuZCA9IG1fYWN0aXZlQXV0aG9yU3R5bGVTaGVldHMuZW5kKCk7CisgICAgZm9yIChTaGFkb3dD
U1NTdHlsZVNoZWV0TWFwOjppdGVyYXRvciBpdCA9IGJlZ2luOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgY29uc3QgVHJlZVNjb3BlKiB0cmVlU2NvcGUgPSBpdC0+a2V5OworICAgICAgICBW
ZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4qIGFjdGl2ZVN0eWxlU2hlZXRzID0gaXQtPnZh
bHVlLmdldCgpOworICAgICAgICBzdHlsZVJlc29sdmVyLT5hcHBlbmRBdXRob3JTaGFkb3dTdHls
ZVNoZWV0cyh0cmVlU2NvcGUsIDAsICphY3RpdmVTdHlsZVNoZWV0cyk7CisgICAgfQorfQorCit2
b2lkIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVTdHlsZVJlc29sdmVyKFN0eWxl
UmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIsIGNvbnN0IFRyZWVTY29wZSogdHJlZVNjb3BlLCBVcGRh
dGVGbGFnIHVwZGF0ZUZsYWcsIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgb2xkQWN0
aXZlU3R5bGVTaGVldHMsIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgbmV3QWN0aXZl
U3R5bGVTaGVldHMpCit7CisgICAgaWYgKCFzdHlsZVJlc29sdmVyKQorICAgICAgICByZXR1cm47
CisKKyAgICBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZTsK
KyAgICBib29sIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjOworCisgICAgYW5hbHl6ZVN0eWxlU2hl
ZXRDaGFuZ2Uob2xkQWN0aXZlU3R5bGVTaGVldHMsIHVwZGF0ZUZsYWcsIG5ld0FjdGl2ZVN0eWxl
U2hlZXRzLCBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSwgcmVxdWlyZXNGdWxsU3R5bGVSZWNhbGMp
OworCisgICAgc3dpdGNoIChzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSkgeworICAgIGNhc2UgUmVj
b25zdHJ1Y3Q6CisgICAgICAgIHN0eWxlUmVzb2x2ZXItPnJlc2V0QXV0aG9yU2hhZG93U3R5bGUo
dHJlZVNjb3BlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSZXNldDoKKyAgICAgICAgc3R5
bGVSZXNvbHZlci0+cmVzZXRBdXRob3JTaGFkb3dTdHlsZSh0cmVlU2NvcGUpOworICAgICAgICBz
dHlsZVJlc29sdmVyLT5hcHBlbmRBdXRob3JTaGFkb3dTdHlsZVNoZWV0cyh0cmVlU2NvcGUsIDAs
IG5ld0FjdGl2ZVN0eWxlU2hlZXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBZGRpdGl2
ZToKKyAgICAgICAgc3R5bGVSZXNvbHZlci0+YXBwZW5kQXV0aG9yU2hhZG93U3R5bGVTaGVldHMo
dHJlZVNjb3BlLCBvbGRBY3RpdmVTdHlsZVNoZWV0cy5zaXplKCksIG5ld0FjdGl2ZVN0eWxlU2hl
ZXRzKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOb1VwZGF0ZToKKyAgICAgICAgYnJlYWs7
CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorfQor
Cit2b2lkIFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uOjp1cGRhdGVBY3RpdmVTdHlsZVNoZWV0
cyhVcGRhdGVGbGFnIHVwZGF0ZUZsYWcsIGJvb2wgc3R5bGVSZXNvbHZlclJlY29uc3RydWN0ZWQp
Cit7CisgICAgU3R5bGVSZXNvbHZlciogc3R5bGVSZXNvbHZlciA9ICFzdHlsZVJlc29sdmVyUmVj
b25zdHJ1Y3RlZCA/CisgICAgICAgIG1fZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXIoKSA6IDA7CisK
KyAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXRNYXA6Oml0ZXJhdG9yIGJlZ2luID0g
bV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXNJblNoYWRvdy5iZWdpbigpOworICAgIFN0eWxlU2hl
ZXRDYW5kaWRhdGVMaXN0SGFzaFNldE1hcDo6aXRlcmF0b3IgZW5kID0gbV9zdHlsZVNoZWV0Q2Fu
ZGlkYXRlTm9kZXNJblNoYWRvdy5lbmQoKTsKKyAgICBmb3IgKFN0eWxlU2hlZXRDYW5kaWRhdGVM
aXN0SGFzaFNldE1hcDo6aXRlcmF0b3IgaXQgPSBiZWdpbjsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIGNvbnN0IFRyZWVTY29wZSogdHJlZVNjb3BlID0gaXQtPmtleTsKKyAgICAgICAgU3R5
bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0KiBzdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdCA9IGl0
LT52YWx1ZS5nZXQoKTsKKworICAgICAgICBWZWN0b3I8UmVmUHRyPFN0eWxlU2hlZXQ+ID4gYXV0
aG9yU2hhZG93U3R5bGVTaGVldHM7CisgICAgICAgIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0c0Zy
b21DYW5kaWRhdGVMaXN0KCpzdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdCwgYXV0aG9yU2hhZG93U3R5
bGVTaGVldHMpOworICAgICAgICBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hlZXQ+ID4gYWN0aXZl
U3R5bGVTaGVldHM7CisgICAgICAgIGZpbHRlckVuYWJsZWRDU1NTdHlsZVNoZWV0cyhhY3RpdmVT
dHlsZVNoZWV0cywgYXV0aG9yU2hhZG93U3R5bGVTaGVldHMpOworICAgICAgICBWZWN0b3I8UmVm
UHRyPENTU1N0eWxlU2hlZXQ+ID4qIGN1cnJBY3RpdmVTdHlsZVNoZWV0cyA9IGVuc3VyZUFjdGl2
ZUF1dGhvclN0eWxlU2hlZXRzRm9yKHRyZWVTY29wZSk7CisKKyAgICAgICAgdXBkYXRlU3R5bGVS
ZXNvbHZlcihzdHlsZVJlc29sdmVyLCB0cmVlU2NvcGUsIHVwZGF0ZUZsYWcsICpjdXJyQWN0aXZl
U3R5bGVTaGVldHMsIGFjdGl2ZVN0eWxlU2hlZXRzKTsKKworICAgICAgICBjdXJyQWN0aXZlU3R5
bGVTaGVldHMtPnN3YXAoYWN0aXZlU3R5bGVTaGVldHMpOworICAgICAgICBlbnN1cmVBdXRob3JT
dHlsZVNoZWV0c0Zvcih0cmVlU2NvcGUpLT5zd2FwKGF1dGhvclNoYWRvd1N0eWxlU2hlZXRzKTsK
KyAgICB9CisKKyAgICBmb3IgKEhhc2hTZXQ8Y29uc3QgVHJlZVNjb3BlKj46Oml0ZXJhdG9yIGl0
ID0gbV9yZW1vdmVkVHJlZVNjb3Blcy5iZWdpbigpOyBpdCAhPSBtX3JlbW92ZWRUcmVlU2NvcGVz
LmVuZCgpOyArK2l0KSB7CisgICAgICAgIGNvbnN0IFRyZWVTY29wZSogdHJlZVNjb3BlID0gKml0
OworICAgICAgICBpZiAoc3R5bGVSZXNvbHZlcikKKyAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXIt
PnJlc2V0QXV0aG9yU2hhZG93U3R5bGUodHJlZVNjb3BlKTsKKyAgICAgICAgbV9hY3RpdmVBdXRo
b3JTdHlsZVNoZWV0cy5yZW1vdmUodHJlZVNjb3BlKTsKKyAgICAgICAgbV9zdHlsZVNoZWV0c0Zv
clN0eWxlU2hlZXRMaXN0LnJlbW92ZSh0cmVlU2NvcGUpOworICAgIH0KKyAgICBtX3JlbW92ZWRU
cmVlU2NvcGVzLmNsZWFyKCk7Cit9CisKK3ZvaWQgU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb246
OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNv
bnN0Cit7CisgICAgTWVtb3J5Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywg
V2ViQ29yZU1lbW9yeVR5cGVzOjpET00pOworICAgIGluZm8uYWRkTWVtYmVyKG1fYWN0aXZlQXV0
aG9yU3R5bGVTaGVldHMpOworICAgIGluZm8uYWRkTWVtYmVyKG1fc3R5bGVTaGVldHNGb3JTdHls
ZVNoZWV0TGlzdCk7CisgICAgaW5mby5hZGRNZW1iZXIobV9zdHlsZVNoZWV0Q2FuZGlkYXRlTm9k
ZXNJblNoYWRvdyk7CisgICAgaW5mby5hZGRNZW1iZXIobV9yZW1vdmVkVHJlZVNjb3Blcyk7Cit9
CisKK30KKworI2VuZGlmIC8vIEVOQUJMRShTSEFET1dfRE9NKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNjE4NDgxMDNj
NmYyNzlmMzRiZWZkNmM5YWNjNWJlZjkyNWJhN2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uLmgKQEAgLTAsMCArMSw5MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQor
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQor
ICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgU2hhZG93U3R5bGVT
aGVldENvbGxlY3Rpb25faAorI2RlZmluZSBTaGFkb3dTdHlsZVNoZWV0Q29sbGVjdGlvbl9oCisK
KyNpbmNsdWRlICJTdHlsZVNoZWV0Q29sbGVjdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9GYXN0QWxs
b2NCYXNlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTGlzdEhh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgRU5BQkxFKFNIQURPV19ET00pCisKK2Ns
YXNzIENTU1N0eWxlU2hlZXQ7CitjbGFzcyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBT
aGFkb3dSb290OworY2xhc3MgU3R5bGVSZXNvbHZlcjsKK2NsYXNzIFN0eWxlU2hlZXQ7CitjbGFz
cyBTdHlsZVNoZWV0Q29udGVudHM7CitjbGFzcyBTdHlsZVNoZWV0TGlzdDsKK2NsYXNzIFRyZWVT
Y29wZTsKKworY2xhc3MgU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24gOiBwdWJsaWMgU3R5bGVT
aGVldENvbGxlY3Rpb24geworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFNoYWRvd1N0eWxlU2hlZXRDb2xsZWN0aW9uPiBjcmVhdGUo
RG9jdW1lbnQqIGRvY3VtZW50KSB7IHJldHVybiBhZG9wdFB0cihuZXcgU2hhZG93U3R5bGVTaGVl
dENvbGxlY3Rpb24oZG9jdW1lbnQpKTsgfQorCisgICAgdm9pZCBhZGRTdHlsZVNoZWV0Q2FuZGlk
YXRlTm9kZShOb2RlKiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOworICAgIHZvaWQgcmVtb3ZlU3R5
bGVTaGVldENhbmRpZGF0ZU5vZGUoTm9kZSosIGNvbnN0IFRyZWVTY29wZSopOworICAgIHZvaWQg
cmVtb3ZlQWxsU3R5bGVTaGVldHNGb3IoY29uc3QgVHJlZVNjb3BlKik7CisKKyAgICB2b2lkIHVw
ZGF0ZUFjdGl2ZVN0eWxlU2hlZXRzKFVwZGF0ZUZsYWcsIGJvb2wgc3R5bGVSZXNvbHZlclJlY29u
c3RydWN0ZWQpOworICAgIHZvaWQgYXBwZW5kQWxsQWN0aXZlQXV0aG9yU3R5bGVTaGVldHMoU3R5
bGVSZXNvbHZlciopOworCisgICAgdm9pZCByZXBvcnRNZW1vcnlVc2FnZShNZW1vcnlPYmplY3RJ
bmZvKikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgU2hhZG93U3R5bGVTaGVldENvbGxlY3Rpb24o
RG9jdW1lbnQqKTsKKworICAgIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiogZW5zdXJl
QWN0aXZlQXV0aG9yU3R5bGVTaGVldHNGb3IoY29uc3QgVHJlZVNjb3BlKik7CisgICAgVmVjdG9y
PFJlZlB0cjxTdHlsZVNoZWV0PiA+KiBlbnN1cmVBdXRob3JTdHlsZVNoZWV0c0Zvcihjb25zdCBU
cmVlU2NvcGUqKTsKKworICAgIHZvaWQgdXBkYXRlU3R5bGVSZXNvbHZlcihTdHlsZVJlc29sdmVy
KiwgY29uc3QgVHJlZVNjb3BlKiwgVXBkYXRlRmxhZywgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNo
ZWV0PiA+JiBvbGRBY3RpdmVTdHlsZVNoZWV0cywgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0
PiA+JiBuZXdBY3RpdmVTdHlsZVNoZWV0cyk7CisKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3Qg
VHJlZVNjb3BlKiwgT3duUHRyPFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiA+ID4gU2hhZG93
U3R5bGVTaGVldE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8Y29uc3QgVHJlZVNjb3BlKiwgT3du
UHRyPFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiA+ID4gU2hhZG93Q1NTU3R5bGVTaGVl
dE1hcDsKKworICAgIFNoYWRvd1N0eWxlU2hlZXRNYXAgbV9zdHlsZVNoZWV0c0ZvclN0eWxlU2hl
ZXRMaXN0OworICAgIFNoYWRvd0NTU1N0eWxlU2hlZXRNYXAgbV9hY3RpdmVBdXRob3JTdHlsZVNo
ZWV0czsKKworICAgIHR5cGVkZWYgSGFzaE1hcDxjb25zdCBUcmVlU2NvcGUqLCBPd25QdHI8U3R5
bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0PiA+IFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFz
aFNldE1hcDsKKyAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXRNYXAgbV9zdHlsZVNo
ZWV0Q2FuZGlkYXRlTm9kZXNJblNoYWRvdzsKKworICAgIEhhc2hTZXQ8Y29uc3QgVHJlZVNjb3Bl
Kj4gbV9yZW1vdmVkVHJlZVNjb3BlczsKK307CisKKyNlbmRpZiAvLyBFTkFCTEUoU0hBRE9XX0RP
TSkKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gU2hhZG93U3R5bGVTaGVl
dENvbGxlY3Rpb25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcAppbmRleCBmZjIyZmU5
ZGI4OGFiOWEyMjZlMDIwMmNmMmI0NDc2Y2ZlMDA1ZjBlLi4xYWFjOTg2ODA4YmMxZjM5MWIzMzFk
MmVlOTUxMTU5ZDMzMDJmYjM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmNwcApAQCAt
MjYsNiArMjYsOCBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRT
dHlsZVNoZWV0Q29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiTWVk
aWFMaXN0LmgiCiAjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogI2luY2x1ZGUgIlNj
cmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgpAQCAtNzEsMTggKzczLDI3IEBAIHZvaWQgU3R5bGVF
bGVtZW50OjppbnNlcnRlZEludG9Eb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQsIEVsZW1lbnQq
IGVsZW1lbnQpCiAgICAgcHJvY2VzcyhlbGVtZW50KTsKIH0KIAotdm9pZCBTdHlsZUVsZW1lbnQ6
OnJlbW92ZWRGcm9tRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBFbGVtZW50KiBlbGVtZW50
KQordm9pZCBTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBFbGVtZW50KiBlbGVtZW50LCBjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29wZSkKIHsKICAg
ICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBkb2N1bWVudC0+
c3R5bGVTaGVldENvbGxlY3Rpb24oKS0+cmVtb3ZlU3R5bGVTaGVldENhbmRpZGF0ZU5vZGUoZWxl
bWVudCk7CisgICAgZG9jdW1lbnQtPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCktPnJlbW92ZVN0eWxl
U2hlZXRDYW5kaWRhdGVOb2RlKGVsZW1lbnQsIHRyZWVTY29wZSk7CiAKICAgICBpZiAobV9zaGVl
dCkKICAgICAgICAgY2xlYXJTaGVldCgpOwogCiAgICAgLy8gSWYgd2UncmUgaW4gZG9jdW1lbnQg
dGVhcmRvd24sIHRoZW4gd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgbm90aWZpY2F0aW9uIG9mIG91
ciBzaGVldCdzIHJlbW92YWwuCi0gICAgaWYgKGRvY3VtZW50LT5yZW5kZXJlcigpKQotICAgICAg
ICBkb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoRGVmZXJSZWNhbGNTdHlsZSk7CisgICAg
aWYgKCFkb2N1bWVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3R5bGVS
ZXNvbHZlclVwZGF0ZUZsYWcgdXBkYXRlRmxhZyA9IERlZmVyUmVjYWxjU3R5bGU7CisgICAgLy8g
SWYgPHN0eWxlPiBpcyBpbiBhIHNoYWRvdyBzY29wZWQgc3R5bGUgdHJlZSwgd2UgY2FuIGF2b2lk
IGZ1bGwgc3R5bGUKKyAgICAvLyByZWNhbGMuCisgICAgaWYgKHRyZWVTY29wZSAmJiB0cmVlU2Nv
cGUgIT0gZG9jdW1lbnQKKyAgICAgICAgJiYgZWxlbWVudC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6
OnN0eWxlVGFnKQorICAgICAgICAmJiAhc3RhdGljX2Nhc3Q8SFRNTFN0eWxlRWxlbWVudCo+KGVs
ZW1lbnQpLT5zY29wZWQoKSkKKyAgICAgICAgdXBkYXRlRmxhZyA9IFJlY2FsY1N0eWxlSWZOZWVk
ZWQ7CisgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKHVwZGF0ZUZsYWcpOwogfQog
CiB2b2lkIFN0eWxlRWxlbWVudDo6Y2xlYXJEb2N1bWVudERhdGEoRG9jdW1lbnQqIGRvY3VtZW50
LCBFbGVtZW50KiBlbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxl
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL1N0eWxlRWxlbWVudC5oCmluZGV4IDZkZDQ4
ZWNiYjQ1NGI1ZWFkMzI5ZTAzOTA5YTI3M2E2YzI1MmIwZjIuLjdkNTQ2ZjMyNTRmNzUxYTQ0MDJm
MzJlYThmMzQ3MTkzODFmYzUwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHls
ZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVFbGVtZW50LmgKQEAgLTI4
LDYgKzI4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBEb2N1bWVudDsKIGNsYXNz
IEVsZW1lbnQ7CitjbGFzcyBUcmVlU2NvcGU7CiAKIGNsYXNzIFN0eWxlRWxlbWVudCB7CiBwdWJs
aWM6CkBAIC00NSw3ICs0Niw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN0YXJ0TG9hZGluZ0R5
bmFtaWNTaGVldChEb2N1bWVudCopOwogCiAgICAgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudChE
b2N1bWVudCosIEVsZW1lbnQqKTsKLSAgICB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoRG9jdW1l
bnQqLCBFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVkRnJvbURvY3VtZW50KERvY3VtZW50Kiwg
RWxlbWVudCosIGNvbnN0IFRyZWVTY29wZSogPSAwKTsKICAgICB2b2lkIGNsZWFyRG9jdW1lbnRE
YXRhKERvY3VtZW50KiwgRWxlbWVudCopOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKEVsZW1l
bnQqKTsKICAgICB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbihFbGVtZW50Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVTaGVldENvbGxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNmViM2Mx
N2EyYTBiNDlmNTYwMjE5ZTc5NDIyMjcyMWI2ZWMxNjNmCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmNwcApAQCAtMCwwICsxLDI2NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQor
ICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQor
ICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICog
ICAgICAgICAgIChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQHdlYmtpdC5vcmcpCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEs
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIChodHRwOi8v
d3d3LnRvcmNobW9iaWxlLmNvbS8pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTEs
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKyAqIENv
cHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMC0yMDExLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqLworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXRDb2xs
ZWN0aW9uLmgiCisKKyNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCisjaW5jbHVkZSAiRG9jdW1l
bnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTElGcmFtZUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MTGlua0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTmFtZXMuaCIK
KyNpbmNsdWRlICJIVE1MU3R5bGVFbGVtZW50LmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1
ZGUgIlBhZ2VHcm91cC5oIgorI2luY2x1ZGUgIlByb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIgorI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCisjaW5jbHVkZSAiU1ZHU3R5bGVFbGVtZW50LmgiCisjaW5jbHVk
ZSAiU2VsZWN0b3JDaGVja2VyLmgiCisjaW5jbHVkZSAiU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJT
dHlsZUludmFsaWRhdGlvbkFuYWx5c2lzLmgiCisjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgor
I2luY2x1ZGUgIlN0eWxlU2hlZXRDb250ZW50cy5oIgorI2luY2x1ZGUgIlN0eWxlU2hlZXRMaXN0
LmgiCisjaW5jbHVkZSAiVXNlckNvbnRlbnRVUkxQYXR0ZXJuLmgiCisjaW5jbHVkZSAiV2ViQ29y
ZU1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50
YXRpb25MaXN0SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9NZW1vcnlJbnN0cnVtZW50YXRpb25W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOworCitTdHlsZVNoZWV0Q29sbGVjdGlvbjo6U3R5bGVTaGVldENvbGxlY3Rpb24oRG9jdW1l
bnQqIGRvY3VtZW50KQorICAgIDogbV9kb2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1faGFkQWN0
aXZlTG9hZGluZ1N0eWxlc2hlZXQoZmFsc2UpCit7Cit9CisKK3ZvaWQgU3R5bGVTaGVldENvbGxl
Y3Rpb246OmFkZFN0eWxlU2hlZXRDYW5kaWRhdGVOb2RlVG9DYW5kaWRhdGVMaXN0KFN0eWxlU2hl
ZXRDYW5kaWRhdGVMaXN0SGFzaFNldCYgc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLCBOb2RlKiBu
b2RlLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKK3sKKyAgICBBU1NFUlQobm9kZSk7CisgICAgQVNT
RVJUKG5vZGUtPmluRG9jdW1lbnQoKSk7CisgICAgCisgICAgLy8gVW50aWwgdGhlIDxib2R5PiBl
eGlzdHMsIHdlIGhhdmUgbm8gY2hvaWNlIGJ1dCB0byBjb21wYXJlIGRvY3VtZW50IHBvc2l0aW9u
cywKKyAgICAvLyBzaW5jZSBzdHlsZXMgb3V0c2lkZSBvZiB0aGUgYm9keSBhbmQgaGVhZCBjb250
aW51ZSB0byBiZSBzaHVudGVkIGludG8gdGhlIGhlYWQKKyAgICAvLyAoYW5kIHRodXMgY2FuIHNo
aWZ0IHRvIGVuZCB1cCBiZWZvcmUgZHluYW1pY2FsbHkgYWRkZWQgRE9NIGNvbnRlbnQgdGhhdCBp
cyBhbHNvCisgICAgLy8gb3V0c2lkZSB0aGUgYm9keSkuCisgICAgaWYgKChjcmVhdGVkQnlQYXJz
ZXIgJiYgbV9kb2N1bWVudC0+Ym9keSgpKSB8fCBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuaXNF
bXB0eSgpKSB7CisgICAgICAgIHN0eWxlU2hlZXRDYW5kaWRhdGVOb2Rlcy5hZGQobm9kZSk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBEZXRlcm1pbmUgYW4gYXBwcm9wcmlhdGUg
aW5zZXJ0aW9uIHBvaW50LgorICAgIFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldDo6aXRl
cmF0b3IgYmVnaW4gPSBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuYmVnaW4oKTsKKyAgICBTdHls
ZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGVuZCA9IHN0eWxlU2hlZXRDYW5k
aWRhdGVOb2Rlcy5lbmQoKTsKKyAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0
ZXJhdG9yIGl0ID0gZW5kOworICAgIE5vZGUqIGZvbGxvd2luZ05vZGUgPSAwOworICAgIGRvIHsK
KyAgICAgICAgLS1pdDsKKyAgICAgICAgTm9kZSogbiA9ICppdDsKKyAgICAgICAgdW5zaWduZWQg
c2hvcnQgcG9zaXRpb24gPSBuLT5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihub2RlKTsKKyAgICAg
ICAgaWYgKHBvc2l0aW9uID09IE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORykgewor
ICAgICAgICAgICAgc3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmluc2VydEJlZm9yZShmb2xsb3dp
bmdOb2RlLCBub2RlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBm
b2xsb3dpbmdOb2RlID0gbjsKKyAgICB9IHdoaWxlIChpdCAhPSBiZWdpbik7CisgICAgCisgICAg
c3R5bGVTaGVldENhbmRpZGF0ZU5vZGVzLmluc2VydEJlZm9yZShmb2xsb3dpbmdOb2RlLCBub2Rl
KTsKK30KKwordm9pZCBTdHlsZVNoZWV0Q29sbGVjdGlvbjo6YW5hbHl6ZVN0eWxlU2hlZXRDaGFu
Z2UoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHlsZVNoZWV0
cywgVXBkYXRlRmxhZyB1cGRhdGVGbGFnLCBjb25zdCBWZWN0b3I8UmVmUHRyPENTU1N0eWxlU2hl
ZXQ+ID4mIG5ld1N0eWxlc2hlZXRzLCBTdHlsZVJlc29sdmVyVXBkYXRlVHlwZSYgc3R5bGVSZXNv
bHZlclVwZGF0ZVR5cGUsIGJvb2wmIHJlcXVpcmVzRnVsbFN0eWxlUmVjYWxjKQoreworICAgIHN0
eWxlUmVzb2x2ZXJVcGRhdGVUeXBlID0gUmVjb25zdHJ1Y3Q7CisgICAgcmVxdWlyZXNGdWxsU3R5
bGVSZWNhbGMgPSB0cnVlOworICAgIAorICAgIC8vIFN0eWxlc2hlZXRzIG9mIDxzdHlsZT4gZWxl
bWVudHMgdGhhdCBAaW1wb3J0IHN0eWxlc2hlZXRzIGFyZSBhY3RpdmUgYnV0IGxvYWRpbmcuIFdl
IG5lZWQgdG8gdHJpZ2dlciBhIGZ1bGwgcmVjYWxjIHdoZW4gc3VjaCBsb2FkcyBhcmUgZG9uZS4K
KyAgICBib29sIGhhc0FjdGl2ZUxvYWRpbmdTdHlsZXNoZWV0ID0gZmFsc2U7CisgICAgdW5zaWdu
ZWQgbmV3U3R5bGVzaGVldENvdW50ID0gbmV3U3R5bGVzaGVldHMuc2l6ZSgpOworICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBuZXdTdHlsZXNoZWV0Q291bnQ7ICsraSkgeworICAgICAgICBp
ZiAobmV3U3R5bGVzaGVldHNbaV0tPmlzTG9hZGluZygpKQorICAgICAgICAgICAgaGFzQWN0aXZl
TG9hZGluZ1N0eWxlc2hlZXQgPSB0cnVlOworICAgIH0KKyAgICBpZiAobV9oYWRBY3RpdmVMb2Fk
aW5nU3R5bGVzaGVldCAmJiAhaGFzQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQpIHsKKyAgICAgICAg
bV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldCA9IGZhbHNlOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIG1faGFkQWN0aXZlTG9hZGluZ1N0eWxlc2hlZXQgPSBoYXNBY3RpdmVMb2FkaW5n
U3R5bGVzaGVldDsKKworICAgIGlmICh1cGRhdGVGbGFnICE9IE9wdGltaXplZFVwZGF0ZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIGlmICghbV9kb2N1bWVudC0+c3R5bGVSZXNvbHZlcklmRXhpc3Rz
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZpbmQgb3V0IHdoaWNoIHN0eWxlc2hlZXRz
IGFyZSBuZXcuCisgICAgdW5zaWduZWQgb2xkU3R5bGVzaGVldENvdW50ID0gYWN0aXZlQXV0aG9y
U3R5bGVTaGVldHMuc2l6ZSgpOworICAgIGlmIChuZXdTdHlsZXNoZWV0Q291bnQgPCBvbGRTdHls
ZXNoZWV0Q291bnQpCisgICAgICAgIHJldHVybjsKKyAgICBWZWN0b3I8U3R5bGVTaGVldENvbnRl
bnRzKj4gYWRkZWRTaGVldHM7CisgICAgdW5zaWduZWQgbmV3SW5kZXggPSAwOworICAgIGZvciAo
dW5zaWduZWQgb2xkSW5kZXggPSAwOyBvbGRJbmRleCA8IG9sZFN0eWxlc2hlZXRDb3VudDsgKytv
bGRJbmRleCkgeworICAgICAgICBpZiAobmV3SW5kZXggPj0gbmV3U3R5bGVzaGVldENvdW50KQor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB3aGlsZSAoYWN0aXZlQXV0aG9yU3R5bGVTaGVl
dHNbb2xkSW5kZXhdICE9IG5ld1N0eWxlc2hlZXRzW25ld0luZGV4XSkgeworICAgICAgICAgICAg
YWRkZWRTaGVldHMuYXBwZW5kKG5ld1N0eWxlc2hlZXRzW25ld0luZGV4XS0+Y29udGVudHMoKSk7
CisgICAgICAgICAgICArK25ld0luZGV4OworICAgICAgICAgICAgaWYgKG5ld0luZGV4ID09IG5l
d1N0eWxlc2hlZXRDb3VudCkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgKytuZXdJbmRleDsKKyAgICB9CisgICAgYm9vbCBoYXNJbnNlcnRpb25zID0gIWFkZGVk
U2hlZXRzLmlzRW1wdHkoKTsKKyAgICB3aGlsZSAobmV3SW5kZXggPCBuZXdTdHlsZXNoZWV0Q291
bnQpIHsKKyAgICAgICAgYWRkZWRTaGVldHMuYXBwZW5kKG5ld1N0eWxlc2hlZXRzW25ld0luZGV4
XS0+Y29udGVudHMoKSk7CisgICAgICAgICsrbmV3SW5kZXg7CisgICAgfQorICAgIC8vIElmIGFs
bCBuZXcgc2hlZXRzIHdlcmUgYWRkZWQgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCB3ZSBjYW4ganVz
dCBhZGQgdGhlbSB0byBleGlzdGluZyBTdHlsZVJlc29sdmVyLgorICAgIC8vIElmIHRoZXJlIHdl
cmUgaW5zZXJ0aW9ucyB3ZSBuZWVkIHRvIHJlLWFkZCBhbGwgdGhlIHN0eWxlc2hlZXRzIHNvIHJ1
bGVzIGFyZSBvcmRlcmVkIGNvcnJlY3RseS4KKyAgICBzdHlsZVJlc29sdmVyVXBkYXRlVHlwZSA9
IGhhc0luc2VydGlvbnMgPyBSZXNldCA6ICFhZGRlZFNoZWV0cy5pc0VtcHR5KCkgPyBBZGRpdGl2
ZSA6IE5vVXBkYXRlOworCisgICAgLy8gSWYgd2UgYXJlIGFscmVhZHkgcGFyc2luZyB0aGUgYm9k
eSBhbmQgc28gbWF5IGhhdmUgc2lnbmlmaWNhbnQgYW1vdW50IG9mIGVsZW1lbnRzLCBwdXQgc29t
ZSBlZmZvcnQgaW50byB0cnlpbmcgdG8gYXZvaWQgc3R5bGUgcmVjYWxjcy4KKyAgICBpZiAoIW1f
ZG9jdW1lbnQtPmJvZHkoKSB8fCBtX2RvY3VtZW50LT5oYXNOb2Rlc1dpdGhQbGFjZWhvbGRlclN0
eWxlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBTdHlsZUludmFsaWRhdGlvbkFuYWx5c2lzIGlu
dmFsaWRhdGlvbkFuYWx5c2lzKGFkZGVkU2hlZXRzKTsKKyAgICBpZiAoaW52YWxpZGF0aW9uQW5h
bHlzaXMuZGlydGllc0FsbFN0eWxlKCkpCisgICAgICAgIHJldHVybjsKKyAgICBpbnZhbGlkYXRp
b25BbmFseXNpcy5pbnZhbGlkYXRlU3R5bGUobV9kb2N1bWVudCk7CisgICAgcmVxdWlyZXNGdWxs
U3R5bGVSZWNhbGMgPSBmYWxzZTsKK30KKworU3R5bGVTaGVldCogU3R5bGVTaGVldENvbGxlY3Rp
b246OmNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0RnJvbUluc3RydWN0aW9uTm9kZShOb2RlKiBuLCBi
b29sJiBjb250aW51ZUNvbGxlY3RpbmcpCit7CisgICAgQVNTRVJUKG4gJiYgbi0+bm9kZVR5cGUo
KSA9PSBOb2RlOjpQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUpOworICAgIGNvbnRpbnVlQ29s
bGVjdGluZyA9IHRydWU7CisgICAgcmV0dXJuIDA7CisgICAgVU5VU0VEX1BBUkFNKG4pOworfQor
CitTdHlsZVNoZWV0KiBTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRGcm9tTm9kZShOb2RlKiBuKQoreworICAgIGlmICghKG4tPmlzSFRNTEVsZW1lbnQoKSAmJiAo
bi0+aGFzVGFnTmFtZShsaW5rVGFnKSB8fCBuLT5oYXNUYWdOYW1lKHN0eWxlVGFnKSkpCisjaWYg
RU5BQkxFKFNWRykKKyAgICAgICAgJiYgIShuLT5pc1NWR0VsZW1lbnQoKSAmJiBuLT5oYXNUYWdO
YW1lKFNWR05hbWVzOjpzdHlsZVRhZykpCisjZW5kaWYKKyAgICAgICAgKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIFN0eWxlU2hlZXQqIHNoZWV0ID0gMDsKKyAgICBFbGVtZW50KiBlID0gc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KG4pOworICAgIEF0b21pY1N0cmluZyB0aXRsZSA9IGUtPmdldEF0
dHJpYnV0ZSh0aXRsZUF0dHIpOworICAgIGJvb2wgZW5hYmxlZFZpYVNjcmlwdCA9IGZhbHNlOwor
ICAgIGlmIChlLT5oYXNMb2NhbE5hbWUobGlua1RhZykpIHsKKyAgICAgICAgLy8gPExJTks+IGVs
ZW1lbnQKKyAgICAgICAgSFRNTExpbmtFbGVtZW50KiBsaW5rRWxlbWVudCA9IHN0YXRpY19jYXN0
PEhUTUxMaW5rRWxlbWVudCo+KG4pOworICAgICAgICBpZiAobGlua0VsZW1lbnQtPmlzRGlzYWJs
ZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBlbmFibGVkVmlhU2NyaXB0ID0g
bGlua0VsZW1lbnQtPmlzRW5hYmxlZFZpYVNjcmlwdCgpOworICAgICAgICBpZiAobGlua0VsZW1l
bnQtPnN0eWxlU2hlZXRJc0xvYWRpbmcoKSkgeworICAgICAgICAgICAgLy8gaXQgaXMgbG9hZGlu
ZyBidXQgd2Ugc2hvdWxkIHN0aWxsIGRlY2lkZSB3aGljaCBzdHlsZSBzaGVldCBzZXQgdG8gdXNl
CisgICAgICAgICAgICBpZiAoIWVuYWJsZWRWaWFTY3JpcHQgJiYgIXRpdGxlLmlzRW1wdHkoKSAm
JiBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lLmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgcmVsID0gZS0+Z2V0QXR0cmlidXRlKHJlbEF0dHIpOwor
ICAgICAgICAgICAgICAgIGlmICghcmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSkgeworICAgICAg
ICAgICAgICAgICAgICBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lID0gdGl0bGU7CisgICAg
ICAgICAgICAgICAgICAgIG1fc2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZSA9IHRpdGxlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAwOworICAg
ICAgICB9CisgICAgICAgIGlmICghbGlua0VsZW1lbnQtPnNoZWV0KCkpCisgICAgICAgICAgICB0
aXRsZSA9IG51bGxBdG9tOworICAgIH0KKyAgICAvLyBHZXQgdGhlIGN1cnJlbnQgcHJlZmVycmVk
IHN0eWxlc2V0LiBUaGlzIGlzIHRoZQorICAgIC8vIHNldCBvZiBzaGVldHMgdGhhdCB3aWxsIGJl
IGVuYWJsZWQuCisjaWYgRU5BQkxFKFNWRykKKyAgICBpZiAobi0+aXNTVkdFbGVtZW50KCkgJiYg
bi0+aGFzVGFnTmFtZShTVkdOYW1lczo6c3R5bGVUYWcpKQorICAgICAgICBzaGVldCA9IHN0YXRp
Y19jYXN0PFNWR1N0eWxlRWxlbWVudCo+KG4pLT5zaGVldCgpOworICAgIGVsc2UKKyNlbmRpZgor
ICAgIGlmIChlLT5oYXNMb2NhbE5hbWUobGlua1RhZykpCisgICAgICAgIHNoZWV0ID0gc3RhdGlj
X2Nhc3Q8SFRNTExpbmtFbGVtZW50Kj4obiktPnNoZWV0KCk7CisgICAgZWxzZQorICAgICAgICAv
LyA8U1RZTEU+IGVsZW1lbnQKKyAgICAgICAgc2hlZXQgPSBzdGF0aWNfY2FzdDxIVE1MU3R5bGVF
bGVtZW50Kj4obiktPnNoZWV0KCk7CisgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIHRoaXMgc2hlZXQg
YmVsb25ncyB0byBhIHN0eWxlc2V0CisgICAgLy8gKHRodXMgbWFraW5nIGl0IFBSRUZFUlJFRCBv
ciBBTFRFUk5BVEUgcmF0aGVyIHRoYW4KKyAgICAvLyBQRVJTSVNURU5UKS4KKyAgICBBdG9taWNT
dHJpbmcgcmVsID0gZS0+Z2V0QXR0cmlidXRlKHJlbEF0dHIpOworICAgIGlmICghZW5hYmxlZFZp
YVNjcmlwdCAmJiAhdGl0bGUuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIFllcywgd2UgaGF2ZSBh
IHRpdGxlLgorICAgICAgICBpZiAobV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZS5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIC8vIE5vIHByZWZlcnJlZCBzZXQgaGFzIGJlZW4gZXN0YWJsaXNo
ZWQuIElmCisgICAgICAgICAgICAvLyB3ZSBhcmUgTk9UIGFuIGFsdGVybmF0ZSBzaGVldCwgdGhl
biBlc3RhYmxpc2gKKyAgICAgICAgICAgIC8vIHVzIGFzIHRoZSBwcmVmZXJyZWQgc2V0LiBPdGhl
cndpc2UsIGp1c3QgaWdub3JlCisgICAgICAgICAgICAvLyB0aGlzIHNoZWV0LgorICAgICAgICAg
ICAgaWYgKGUtPmhhc0xvY2FsTmFtZShzdHlsZVRhZykgfHwgIXJlbC5jb250YWlucygiYWx0ZXJu
YXRlIikpCisgICAgICAgICAgICAgICAgbV9wcmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZSA9IG1f
c2VsZWN0ZWRTdHlsZXNoZWV0U2V0TmFtZSA9IHRpdGxlOworICAgICAgICB9CisgICAgICAgIGlm
ICh0aXRsZSAhPSBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXROYW1lKQorICAgICAgICAgICAgc2hl
ZXQgPSAwOworICAgIH0KKyAgICAKKyAgICBpZiAocmVsLmNvbnRhaW5zKCJhbHRlcm5hdGUiKSAm
JiB0aXRsZS5pc0VtcHR5KCkpCisgICAgICAgIHNoZWV0ID0gMDsKKworICAgIHJldHVybiBzaGVl
dDsKK30KKwordm9pZCBTdHlsZVNoZWV0Q29sbGVjdGlvbjo6Y29sbGVjdEFjdGl2ZVN0eWxlU2hl
ZXRzRnJvbUNhbmRpZGF0ZUxpc3QoU3R5bGVTaGVldENhbmRpZGF0ZUxpc3RIYXNoU2V0JiBzdHls
ZVNoZWV0Q2FuZGlkYXRlTm9kZXMsIFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYgc2hlZXRz
KQoreworICAgIGlmIChtX2RvY3VtZW50LT5zZXR0aW5ncygpICYmICFtX2RvY3VtZW50LT5zZXR0
aW5ncygpLT5hdXRob3JBbmRVc2VyU3R5bGVzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGJlZ2luID0gc3R5
bGVTaGVldENhbmRpZGF0ZU5vZGVzLmJlZ2luKCk7CisgICAgU3R5bGVTaGVldENhbmRpZGF0ZUxp
c3RIYXNoU2V0OjppdGVyYXRvciBlbmQgPSBzdHlsZVNoZWV0Q2FuZGlkYXRlTm9kZXMuZW5kKCk7
CisgICAgZm9yIChTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQ6Oml0ZXJhdG9yIGl0ID0g
YmVnaW47IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBOb2RlKiBuID0gKml0OworICAgICAg
ICBTdHlsZVNoZWV0KiBzaGVldCA9IDA7CisgICAgICAgIGlmIChuLT5ub2RlVHlwZSgpID09IE5v
ZGU6OlBST0NFU1NJTkdfSU5TVFJVQ1RJT05fTk9ERSkgeworICAgICAgICAgICAgYm9vbCBjb250
aW51ZVByb2Nlc3NpbmcgPSB0cnVlOworICAgICAgICAgICAgc2hlZXQgPSBjb2xsZWN0QWN0aXZl
U3R5bGVTaGVldEZyb21JbnN0cnVjdGlvbk5vZGUobiwgY29udGludWVQcm9jZXNzaW5nKTsKKyAg
ICAgICAgICAgIGlmICghY29udGludWVQcm9jZXNzaW5nKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfSBlbHNlIAorICAgICAgICAgICAgc2hlZXQgPSBjb2xsZWN0QWN0aXZlU3R5
bGVTaGVldEZyb21Ob2RlKG4pOworICAgICAgICAKKyAgICAgICAgaWYgKHNoZWV0KQorICAgICAg
ICAgICAgc2hlZXRzLmFwcGVuZChzaGVldCk7CisgICAgfQorfQorCit2b2lkIFN0eWxlU2hlZXRD
b2xsZWN0aW9uOjpmaWx0ZXJFbmFibGVkQ1NTU3R5bGVTaGVldHMoVmVjdG9yPFJlZlB0cjxDU1NT
dHlsZVNoZWV0PiA+JiByZXN1bHQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8U3R5bGVTaGVldD4gPiYg
c2hlZXRzKQoreworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzaGVldHMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgaWYgKCFzaGVldHNbaV0tPmlzQ1NTU3R5bGVTaGVldCgpKQorICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgIGlmIChzaGVldHNbaV0tPmRpc2FibGVkKCkpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChzdGF0aWNfY2FzdDxDU1NT
dHlsZVNoZWV0Kj4oc2hlZXRzW2ldLmdldCgpKSk7CisgICAgfQorfQorCit9CisKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TdHlsZVNoZWV0Q29sbGVjdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlU2hlZXRDb2xsZWN0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDYzYjM0Nzc2MmUz
MzBkYjFlZGUxYjk2NDI5MThlZDRlNWQwY2NmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TdHlsZVNoZWV0Q29sbGVjdGlvbi5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKKyAqICAgICAg
ICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKKyAqICAgICAg
ICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAg
ICAoQykgMjAwNiBBbGV4ZXkgUHJvc2t1cnlha292IChhcEB3ZWJraXQub3JnKQorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEyIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAw
OSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3Jj
aG1vYmlsZS5jb20vKQorICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFu
ZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICog
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv
dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJ
TkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEg
MDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFN0eWxlU2hlZXRDb2xsZWN0aW9u
X2gKKyNkZWZpbmUgU3R5bGVTaGVldENvbGxlY3Rpb25faAorCisjaW5jbHVkZSA8d3RmL0Zhc3RB
bGxvY0Jhc2UuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9MaXN0
SGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIENTU1N0eWxlU2hlZXQ7CitjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIE5vZGU7CitjbGFzcyBTaGFkb3dSb290OworY2xhc3MgU3R5bGVT
aGVldDsKK2NsYXNzIFN0eWxlU2hlZXRDb250ZW50czsKK2NsYXNzIFN0eWxlU2hlZXRMaXN0Owor
Y2xhc3MgVHJlZVNjb3BlOworCitjbGFzcyBTdHlsZVNoZWV0Q29sbGVjdGlvbiB7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZW51bSBVcGRhdGVGbGFnIHsgRnVs
bFVwZGF0ZSwgT3B0aW1pemVkVXBkYXRlIH07CisKKyAgICB2aXJ0dWFsIH5TdHlsZVNoZWV0Q29s
bGVjdGlvbigpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgU3R5bGVTaGVldENvbGxlY3Rpb24oRG9j
dW1lbnQqKTsKKworICAgIHR5cGVkZWYgTGlzdEhhc2hTZXQ8Tm9kZSosIDMyPiBTdHlsZVNoZWV0
Q2FuZGlkYXRlTGlzdEhhc2hTZXQ7CisgICAgdm9pZCBhZGRTdHlsZVNoZWV0Q2FuZGlkYXRlTm9k
ZVRvQ2FuZGlkYXRlTGlzdChTdHlsZVNoZWV0Q2FuZGlkYXRlTGlzdEhhc2hTZXQmLCBOb2RlKiwg
Ym9vbCBjcmVhdGVkQnlQYXJzZXIpOworCisgICAgZW51bSBTdHlsZVJlc29sdmVyVXBkYXRlVHlw
ZSB7CisgICAgICAgIFJlY29uc3RydWN0LAorICAgICAgICBSZXNldCwKKyAgICAgICAgQWRkaXRp
dmUsCisgICAgICAgIE5vVXBkYXRlCisgICAgfTsKKworICAgIHZvaWQgYW5hbHl6ZVN0eWxlU2hl
ZXRDaGFuZ2UoVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+JiBhY3RpdmVBdXRob3JTdHls
ZVNoZWV0cywgVXBkYXRlRmxhZywgY29uc3QgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVNoZWV0PiA+
JiBuZXdTdHlsZXNoZWV0cywgU3R5bGVSZXNvbHZlclVwZGF0ZVR5cGUmLCBib29sJiByZXF1aXJl
c0Z1bGxTdHlsZVJlY2FsYyk7CisKKyAgICB2aXJ0dWFsIFN0eWxlU2hlZXQqIGNvbGxlY3RBY3Rp
dmVTdHlsZVNoZWV0RnJvbUluc3RydWN0aW9uTm9kZShOb2RlKiwgYm9vbCYgY29udGludWVDb2xs
ZWN0aW5nKTsKKyAgICBTdHlsZVNoZWV0KiBjb2xsZWN0QWN0aXZlU3R5bGVTaGVldEZyb21Ob2Rl
KE5vZGUqKTsKKyAgICB2b2lkIGNvbGxlY3RBY3RpdmVTdHlsZVNoZWV0c0Zyb21DYW5kaWRhdGVM
aXN0KFN0eWxlU2hlZXRDYW5kaWRhdGVMaXN0SGFzaFNldCYsIFZlY3RvcjxSZWZQdHI8U3R5bGVT
aGVldD4gPiYpOworCisgICAgc3RhdGljIHZvaWQgZmlsdGVyRW5hYmxlZENTU1N0eWxlU2hlZXRz
KFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVTaGVldD4gPiYgcmVzdWx0LCBjb25zdCBWZWN0b3I8UmVm
UHRyPFN0eWxlU2hlZXQ+ID4mIHNoZWV0cyk7CisKKyAgICBEb2N1bWVudCogbV9kb2N1bWVudDsK
KworICAgIGJvb2wgbV9oYWRBY3RpdmVMb2FkaW5nU3R5bGVzaGVldDsKKyAgICBTdHJpbmcgbV9w
cmVmZXJyZWRTdHlsZXNoZWV0U2V0TmFtZTsKKyAgICBTdHJpbmcgbV9zZWxlY3RlZFN0eWxlc2hl
ZXRTZXROYW1lOworfTsKKworfQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN0
eWxlRWxlbWVudC5jcHAKaW5kZXggZGI5MWM5OWY0Y2NiN2VjOWI2NGQ0ODMwOTRiNzUyN2NmMmNh
YjAwMi4uZjNlMzc3ZWI3MDZkZjM1OTY4YTdhNDE3ODdiODEzNDI5MTNlM2QzMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCkBAIC05NywxMSArOTcsOCBAQCB2b2lk
IEhUTUxTdHlsZUVsZW1lbnQ6OnNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQoYm9vbCBzY29wZWQpCiAg
ICAgaWYgKHNjb3BlZCkgewogICAgICAgICAvLyBBcyBhbnkgPHN0eWxlPiBpbiBhIHNoYWRvdyB0
cmVlIGlzIHRyZWF0ZWQgYXMgInNjb3BlZCIsCiAgICAgICAgIC8vIG5lZWQgdG8gcmVtb3ZlIHRo
ZSA8c3R5bGU+IGZyb20gaXRzIHNoYWRvdyByb290LgotICAgICAgICBpZiAobV9zY29wZWRTdHls
ZVJlZ2lzdHJhdGlvblN0YXRlID09IFJlZ2lzdGVyZWRJblNoYWRvd1Jvb3QpCi0gICAgICAgICAg
ICB1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKHNoYWRvd1Jvb3QoKSk7Ci0KICAgICAgICAgaWYg
KG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0ZSAhPSBSZWdpc3RlcmVkQXNTY29wZWQpCi0g
ICAgICAgICAgICByZWdpc3RlcldpdGhTY29waW5nTm9kZSh0cnVlKTsKKyAgICAgICAgICAgIHJl
Z2lzdGVyV2l0aFNjb3BpbmdOb2RlKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEw
OSwxMSArMTA2LDYgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpzY29wZWRBdHRyaWJ1dGVDaGFu
Z2VkKGJvb2wgc2NvcGVkKQogICAgIC8vIGVsZW1lbnQsIGkuZS4gdGhlIHBhcmVudCBub2RlLgog
ICAgIGlmIChtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUgPT0gUmVnaXN0ZXJlZEFzU2Nv
cGVkKQogICAgICAgICB1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKHBhcmVudE5vZGUoKSk7Ci0K
LSAgICAvLyBBcyBhbnkgPHN0eWxlPiBpbiBhIHNoYWRvdyB0cmVlIGlzIHRyZWF0ZWQgYXMgInNj
b3BlZCIsCi0gICAgLy8gbmVlZCB0byBhZGQgdGhlIDxzdHlsZT4gdG8gaXRzIHNoYWRvdyByb290
LgotICAgIGlmIChpc0luU2hhZG93VHJlZSgpICYmIG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25T
dGF0ZSAhPSBSZWdpc3RlcmVkSW5TaGFkb3dSb290KQotICAgICAgICByZWdpc3RlcldpdGhTY29w
aW5nTm9kZShmYWxzZSk7CiB9CiAKIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6ZmluaXNoUGFyc2lu
Z0NoaWxkcmVuKCkKQEAgLTEyMiw3ICsxMTQsNyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmZp
bmlzaFBhcnNpbmdDaGlsZHJlbigpCiAgICAgSFRNTEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGls
ZHJlbigpOwogfQogCi12b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnJlZ2lzdGVyV2l0aFNjb3BpbmdO
b2RlKGJvb2wgc2NvcGVkKQordm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZWdpc3RlcldpdGhTY29w
aW5nTm9kZSgpCiB7CiAgICAgLy8gTm90ZTogV2UgY2Fubm90IHJlbHkgb24gdGhlICdzY29wZWQn
IGVsZW1lbnQgYWxyZWFkeSBiZWluZyBwcmVzZW50IHdoZW4gdGhpcyBtZXRob2QgaXMgaW52b2tl
ZC4KICAgICAvLyBUaGVyZWZvcmUgd2UgY2Fubm90IHJlbHkgb24gc2NvcGVkKCkhCkBAIC0xMzEs
NyArMTIzLDcgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZWdpc3RlcldpdGhTY29waW5nTm9k
ZShib29sIHNjb3BlZCkKICAgICBpZiAobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlICE9
IE5vdFJlZ2lzdGVyZWQpCiAgICAgICAgIHJldHVybjsKIAotICAgIENvbnRhaW5lck5vZGUqIHNj
b3BlID0gc2NvcGVkID8gcGFyZW50Tm9kZSgpIDogc2hhZG93Um9vdCgpOworICAgIENvbnRhaW5l
ck5vZGUqIHNjb3BlID0gcGFyZW50Tm9kZSgpOwogICAgIGlmICghc2NvcGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBpZiAoIXNjb3BlLT5pc0VsZW1lbnROb2RlKCkgJiYgIXNjb3BlLT5pc1NoYWRv
d1Jvb3QoKSkgewpAQCAtMTQ2LDcgKzEzOCw3IEBAIHZvaWQgSFRNTFN0eWxlRWxlbWVudDo6cmVn
aXN0ZXJXaXRoU2NvcGluZ05vZGUoYm9vbCBzY29wZWQpCiAgICAgaWYgKGluRG9jdW1lbnQoKSAm
JiAhZG9jdW1lbnQoKS0+cGFyc2luZygpICYmIGRvY3VtZW50KCktPnJlbmRlcmVyKCkpCiAgICAg
ICAgIGRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwog
Ci0gICAgbV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID0gc2NvcGVkID8gUmVnaXN0ZXJl
ZEFzU2NvcGVkIDogUmVnaXN0ZXJlZEluU2hhZG93Um9vdDsKKyAgICBtX3Njb3BlZFN0eWxlUmVn
aXN0cmF0aW9uU3RhdGUgPSBSZWdpc3RlcmVkQXNTY29wZWQ7CiB9CiAKIHZvaWQgSFRNTFN0eWxl
RWxlbWVudDo6dW5yZWdpc3RlcldpdGhTY29waW5nTm9kZShDb250YWluZXJOb2RlKiBzY29wZSkK
QEAgLTE3Miw4ICsxNjQsMTUgQEAgTm9kZTo6SW5zZXJ0aW9uTm90aWZpY2F0aW9uUmVxdWVzdCBI
VE1MU3R5bGVFbGVtZW50OjppbnNlcnRlZEludG8oQ29udGFpbmVyTm9kZSoKICAgICBIVE1MRWxl
bWVudDo6aW5zZXJ0ZWRJbnRvKGluc2VydGlvblBvaW50KTsKICAgICBpZiAoaW5zZXJ0aW9uUG9p
bnQtPmluRG9jdW1lbnQoKSkgewogICAgICAgICBTdHlsZUVsZW1lbnQ6Omluc2VydGVkSW50b0Rv
Y3VtZW50KGRvY3VtZW50KCksIHRoaXMpOwotICAgICAgICBpZiAobV9zY29wZWRTdHlsZVJlZ2lz
dHJhdGlvblN0YXRlID09IE5vdFJlZ2lzdGVyZWQgJiYgKHNjb3BlZCgpIHx8IGlzSW5TaGFkb3dU
cmVlKCkpKQotICAgICAgICAgICAgcmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoc2NvcGVkKCkpOwor
ICAgICAgICBpZiAobV9zY29wZWRTdHlsZVJlZ2lzdHJhdGlvblN0YXRlID09IE5vdFJlZ2lzdGVy
ZWQpIHsKKyAgICAgICAgICAgIGlmIChzY29wZWQoKSkKKyAgICAgICAgICAgICAgICByZWdpc3Rl
cldpdGhTY29waW5nTm9kZSgpOworICAgICAgICAgICAgZWxzZSBpZiAoaW5zZXJ0aW9uUG9pbnQt
PmlzSW5TaGFkb3dUcmVlKCkpIHsKKyAgICAgICAgICAgICAgICBTaGFkb3dSb290KiBzY29wZSA9
IHNoYWRvd1Jvb3QoKTsKKyAgICAgICAgICAgICAgICBpZiAoRWxlbWVudCogaG9zdCA9IHNjb3Bl
LT5ob3N0KCkpCisgICAgICAgICAgICAgICAgICAgIGhvc3QtPnNldE5lZWRzU3R5bGVSZWNhbGMo
KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIHJldHVybiBJbnNlcnRp
b25Eb25lOwpAQCAtMTg4LDE4ICsxODcsMTkgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpyZW1v
dmVkRnJvbShDb250YWluZXJOb2RlKiBpbnNlcnRpb25Qb2ludCkKICAgICAvLyBOb3csIGlmIHdl
IHdhbnQgdG8gcmVnaXN0ZXIgPHN0eWxlIHNjb3BlZD4gZXZlbiBpZiBpdCdzIG5vdCBpbkRvY3Vt
ZW50LAogICAgIC8vIHdlJ2QgbmVlZCB0byBmaW5kIGEgd2F5IHRvIGRpc2Nlcm4gd2hldGhlciB0
aGF0IGlzIHRoZSBjYXNlLCBvciB3aGV0aGVyIDxzdHlsZSBzY29wZWQ+IGl0c2VsZiBpcyBhYm91
dCB0byBiZSByZW1vdmVkLgogICAgIGlmIChtX3Njb3BlZFN0eWxlUmVnaXN0cmF0aW9uU3RhdGUg
IT0gTm90UmVnaXN0ZXJlZCkgewotICAgICAgICBDb250YWluZXJOb2RlKiBzY29wZTsKLSAgICAg
ICAgaWYgKG1fc2NvcGVkU3R5bGVSZWdpc3RyYXRpb25TdGF0ZSA9PSBSZWdpc3RlcmVkSW5TaGFk
b3dSb290KSB7Ci0gICAgICAgICAgICBzY29wZSA9IHNoYWRvd1Jvb3QoKTsKLSAgICAgICAgICAg
IGlmICghc2NvcGUpCi0gICAgICAgICAgICAgICAgc2NvcGUgPSBpbnNlcnRpb25Qb2ludC0+c2hh
ZG93Um9vdCgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHNjb3BlID0gcGFyZW50Tm9k
ZSgpID8gcGFyZW50Tm9kZSgpIDogaW5zZXJ0aW9uUG9pbnQ7CisgICAgICAgIENvbnRhaW5lck5v
ZGUqIHNjb3BlID0gcGFyZW50Tm9kZSgpID8gcGFyZW50Tm9kZSgpIDogaW5zZXJ0aW9uUG9pbnQ7
CiAgICAgICAgIHVucmVnaXN0ZXJXaXRoU2NvcGluZ05vZGUoc2NvcGUpOwogICAgIH0KIAorICAg
IFNoYWRvd1Jvb3QqIHNjb3BlID0gc2hhZG93Um9vdCgpOworICAgIGlmICghc2NvcGUpCisgICAg
ICAgIHNjb3BlID0gaW5zZXJ0aW9uUG9pbnQtPnNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoc2NvcGUp
CisgICAgICAgIGlmIChFbGVtZW50KiBob3N0ID0gc2NvcGUtPnNoYWRvd0hvc3QoKSkKKyAgICAg
ICAgICAgIGhvc3QtPnNldE5lZWRzU3R5bGVSZWNhbGMoKTsKKwogICAgIGlmIChpbnNlcnRpb25Q
b2ludC0+aW5Eb2N1bWVudCgpKQotICAgICAgICBTdHlsZUVsZW1lbnQ6OnJlbW92ZWRGcm9tRG9j
dW1lbnQoZG9jdW1lbnQoKSwgdGhpcyk7CisgICAgICAgIFN0eWxlRWxlbWVudDo6cmVtb3ZlZEZy
b21Eb2N1bWVudChkb2N1bWVudCgpLCB0aGlzLCBzY29wZSk7CiB9CiAKIHZvaWQgSFRNTFN0eWxl
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyLCBOb2RlKiBiZWZv
cmVDaGFuZ2UsIE5vZGUqIGFmdGVyQ2hhbmdlLCBpbnQgY2hpbGRDb3VudERlbHRhKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAppbmRleCBkM2U5OWU0N2YzZWZiZGU3ZTFmMGJk
NWI0YTk3MTE5MjVjMmM3YTY1Li43NGE2M2NiZWRmOTA3ZTkxMTA3NzVlOWU2NWExODIyMThjZTY3
YzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaApAQCAtODMsNyArODMs
NyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKCkgY29u
c3Q7CiAKICAgICB2b2lkIHNjb3BlZEF0dHJpYnV0ZUNoYW5nZWQoYm9vbCk7Ci0gICAgdm9pZCBy
ZWdpc3RlcldpdGhTY29waW5nTm9kZShib29sKTsKKyAgICB2b2lkIHJlZ2lzdGVyV2l0aFNjb3Bp
bmdOb2RlKCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyV2l0aFNjb3BpbmdOb2RlKENvbnRhaW5lck5v
ZGUqKTsKIAogICAgIGJvb2wgbV9maXJlZExvYWQ7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjBlMGU0OWEyODM3MjBmMjk2
MTZhZTU4NzZjOWZmOTI2MDM5NDQzOC4uZTc5NmJkMmJhNDQyYjI3MGZiNmZiOTY5ZDYxOWU3Mjc1
YmJjMjFiMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTExLTIxICBUYWthc2hpIFNha2Ft
b3RvICA8dGFzYWtAZ29vZ2xlLmNvbT4KKworICAgICAgICBbU2hhZG93IERPTV0gaW1wbGVtZW50
IGEgbmV3IHN0eWxlIHJlc29sdmVyIGZvciBzaGFkb3cgZG9tIHRyZWVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDI2NjkKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvY3NzL3N0eWxlLXNjb3Bl
ZC9yZWdpc3RlcmluZy1zaGFkb3dyb290LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L2Nz
cy9zdHlsZS1zY29wZWQvcmVnaXN0ZXJpbmctc2hhZG93cm9vdC5odG1sOgorICAgICAgICBOb3cg
dW5zY29wZWQgc3R5bGVzIGluIGEgc2hhZG93IGRvbSB0cmVlIGFyZSBub3QgcmVnaXN0ZXJlZCBh
cworICAgICAgICBzdHlsZSBzY29wZWQuCisKIDIwMTItMTEtMjAgIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMTMxMTA2KTogbWFnbml0dWRl
LXBlcmYuanMgY2FsbHMgYmluZCBvbiB1bmRlZmluZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9yZWdpc3RlcmluZy1zaGFkb3dyb290LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9yZWdpc3RlcmluZy1zaGFkb3dy
b290LWV4cGVjdGVkLnR4dAppbmRleCBhYmJiYmU0YTZiNmNkY2FiMDVlYjA5YTIwMzUwMjk4YWRi
MGM1YmFjLi44NDJlOThmNzExNzYyNDAwNWVkMzEzNDllZTA3N2IzY2IwOTQ3M2Q0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvcmVnaXN0ZXJpbmctc2hhZG93
cm9vdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVk
L3JlZ2lzdGVyaW5nLXNoYWRvd3Jvb3QtZXhwZWN0ZWQudHh0CkBAIC0xNCw3ICsxNCw3IEBAIFBB
U1MgaW50ZXJuYWxzLm51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oaG9zdCkgaXMgMAog
UEFTUyBpbnRlcm5hbHMubnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihzcikgaXMgMQog
LS0tIFVuc2V0dGluZyBAc2NvcGVkIC0tLQogUEFTUyBpbnRlcm5hbHMubnVtYmVyT2ZTY29wZWRI
VE1MU3R5bGVDaGlsZHJlbihob3N0KSBpcyAwCi1QQVNTIGludGVybmFscy5udW1iZXJPZlNjb3Bl
ZEhUTUxTdHlsZUNoaWxkcmVuKHNyKSBpcyAxCitQQVNTIGludGVybmFscy5udW1iZXJPZlNjb3Bl
ZEhUTUxTdHlsZUNoaWxkcmVuKHNyKSBpcyAwCiAtLS0gU2V0dGluZyBAc2NvcGVkIC0tLQogUEFT
UyBpbnRlcm5hbHMubnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihob3N0KSBpcyAwCiBQ
QVNTIGludGVybmFscy5udW1iZXJPZlNjb3BlZEhUTUxTdHlsZUNoaWxkcmVuKHNyKSBpcyAxCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvcmVnaXN0ZXJpbmct
c2hhZG93cm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3R5bGUtc2NvcGVkL3JlZ2lz
dGVyaW5nLXNoYWRvd3Jvb3QuaHRtbAppbmRleCAzMjljODIyMGM1ZjQwYmVmNGNlYWE4NzQ3M2E1
Mjc0NjYwNGEzMWE5Li45YjRjNTQ3MzRjYjE2YTA0ZmU2ZjdjYWQxMTk1OTYxZTVkODA2ODg1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHlsZS1zY29wZWQvcmVnaXN0ZXJpbmct
c2hhZG93cm9vdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0eWxlLXNjb3BlZC9y
ZWdpc3RlcmluZy1zaGFkb3dyb290Lmh0bWwKQEAgLTQ4LDcgKzQ4LDcgQEAKICAgICAgICAgICAg
IGRlYnVnKCItLS0gVW5zZXR0aW5nIEBzY29wZWQgLS0tIik7CiAgICAgICAgICAgICBzdHlsZS5z
Y29wZWQgPSBmYWxzZTsKICAgICAgICAgICAgIHNob3VsZEJlKCJpbnRlcm5hbHMubnVtYmVyT2ZT
Y29wZWRIVE1MU3R5bGVDaGlsZHJlbihob3N0KSIsICIwIik7Ci0gICAgICAgICAgICBzaG91bGRC
ZSgiaW50ZXJuYWxzLm51bWJlck9mU2NvcGVkSFRNTFN0eWxlQ2hpbGRyZW4oc3IpIiwgIjEiKTsg
LyogPHN0eWxlPiBpbiBzaGFkb3csIG5vdCBzY29wZWQgKi8KKyAgICAgICAgICAgIHNob3VsZEJl
KCJpbnRlcm5hbHMubnVtYmVyT2ZTY29wZWRIVE1MU3R5bGVDaGlsZHJlbihzcikiLCAiMCIpOyAv
KiA8c3R5bGU+IGluIHNoYWRvdywgbm90IHNjb3BlZCAqLwogCiAgICAgICAgICAgICBkZWJ1Zygi
LS0tIFNldHRpbmcgQHNjb3BlZCAtLS0iKTsKICAgICAgICAgICAgIHN0eWxlLnNjb3BlZCA9IHRy
dWU7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>